基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

逗逗班学Python發表於2024-04-05

摘要:本文深入研究了基於YOLOv8/v7/v6/v5的日常場景下的人臉檢測,核心採用YOLOv8並整合了YOLOv7、YOLOv6、YOLOv5演算法,進行效能指標對比;詳述了國內外研究現狀資料集處理演算法原理模型構建與訓練程式碼,及基於Streamlit的互動式Web應用介面設計。在Web網頁中可以支援影像、影片和實時攝像頭進行日常場景下的人臉檢測,可上傳不同訓練模型(YOLOv8/v7/v6/v5)進行推理預測,介面可方便修改。本文附帶了完整的網頁設計、深度學習模型程式碼和訓練資料集的下載連結。

@

目錄
  • 1. 網頁功能與效果
  • 2. 緒論
    • 2.1 研究背景及意義
    • 2.2 國內外研究現狀
    • 2.3 要解決的問題及其方案
      • 2.3.1 要解決的問題
      • 2.3.2 解決方案
    • 2.4 博文貢獻與組織結構
  • 3. 資料集處理
  • 4. 原理與程式碼介紹
    • 4.1 YOLOv8演算法原理
    • 4.2 模型構建
    • 4.3 訓練程式碼
  • 5. 實驗結果與分析
    • 5.1 訓練曲線
    • 5.2 PR曲線圖
    • 5.3 YOLOv8/v7/v6/v5對比實驗
  • 6. 系統設計與實現
    • 6.1 系統架構概覽
    • 6.2 系統流程
  • 程式碼下載連結
  • 7. 結論與未來工作

➷點選跳轉至文末所有涉及的完整程式碼檔案下載頁☇


完整資源中包含資料集及訓練程式碼,環境配置與介面中文字、圖片、logo等的修改方法請見影片,專案完整檔案下載請見演示與介紹影片的簡介處給出:➷➷➷
演示與介紹影片https://www.bilibili.com/video/BV1RZ421v77g/
YOLOv8/v7/v6/v5專案合集下載:https://mbd.pub/o/bread/mbd-ZZ2YmJ1t
YOLOv8和v5專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2Ylp1w
YOLOv7專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2Yl5tp
YOLOv6專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2YmJdt

若您想獲得博文中涉及的實現完整全部資原始檔(包括測試圖片、影片,py, UI檔案,訓練資料集、訓練程式碼、介面程式碼等),這裡已打包上傳至博主的麵包多平臺,見可參考部落格與影片,已將所有涉及的檔案同時打包到裡面,點選即可執行,完整檔案截圖如下:

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

1. 網頁功能與效果

(1)開啟攝像頭實時檢測:本系統允許使用者透過網頁直接開啟攝像頭,實現對實時影片流中日常場景下的人臉的檢測。系統將自動識別並分析畫面中的日常場景下的人臉,並將檢測結果實時顯示在使用者介面上,為使用者提供即時的反饋。

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

(2)選擇圖片檢測:使用者可以上傳本地的圖片檔案到系統中進行日常場景下的人臉檢測。系統會分析上傳的圖片,識別出圖片中的日常場景下的人臉,並在介面上展示帶有日常場景下的人臉標籤和置信度的檢測結果,讓使用者能夠清晰地瞭解到每個日常場景下的人臉狀態。

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

(3)選擇影片檔案檢測:系統支援使用者上傳影片檔案進行日常場景下的人臉檢測。上傳的影片將被系統逐幀分析,以識別和標記影片中每一幀的日常場景下的人臉。使用者可以觀看帶有日常場景下的人臉標記的影片,瞭解影片中日常場景下的人臉的變化。

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

(4)選擇不同訓練好的模型檔案:系統整合了多個版本的YOLO模型(如YOLOv8/v7/v6/v5),使用者可以根據自己的需求選擇不同的模型進行日常場景下的人臉檢測。這一功能使得使用者能夠靈活地比較不同模型的表現,以選擇最適合當前任務的模型。

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

在“網頁功能與效果”的章節中,我們詳細介紹了一個基於最新的YOLOv8/v7/v6/v5模型構建的人臉檢測系統。該系統透過一個基於Streamlit的互動式Web應用,為使用者提供了一系列高階功能和最佳化的使用者互動體驗。

首先,實時攝像頭人臉檢測功能允許使用者直接開啟攝像頭進行實時的人臉檢測,其中檢測畫面與原始畫面可以同時或單獨顯示,便於使用者進行比較分析。接著,系統提供了圖片人臉檢測影片檔案檢測的功能,使用者可以上傳圖片或影片檔案進行人臉檢測,支援標記檢測結果,並可將標記後的圖片或影片檢測結果以avi格式匯出。

此外,系統還引入了模型選擇與比較的功能,透過提供不同訓練好的模型檔案(YOLOv8/v7/v6/v5)供使用者選擇,使使用者能夠根據不同的檢測精度需求選擇合適的模型,並透過下拉框對比不同模型的檢測效果。

在結果展示方面,系統支援點選下拉框單獨標記特定目標,並在介面上直觀顯示檢測結果。檢測結果會實時更新並在頁面的表格中顯示,使用者還可以透過提供的功能動態調整檢測演算法的置信度閾值和IOU閾值,以最佳化檢測準確性和速度。最後,提供了將檢測的表格結果輸出到CSV檔案的功能,方便使用者進行資料分析和報告製作。

整個系統的介面設計簡潔直觀,確保使用者可以輕鬆訪問所有功能,並提供了詳細的使用指南和幫助文件,幫助使用者快速上手。支援多種檔案格式的匯入匯出功能,增強了系統的適用性和靈活性,展現了該人臉檢測系統的技術優勢和良好的使用者體驗。


2. 緒論

2.1 研究背景及意義

在現代社會,隨著智慧技術的飛速發展,人臉檢測技術已經成為計算機視覺領域的重要研究方向,並廣泛應用於多個領域,如安全監控、人機互動、智慧推薦系統、身份認證等。特別是在日常場景下,人臉檢測技術更是展現出了其獨特的價值和廣泛的應用前景。不同於受控環境下的人臉識別,日常場景下的人臉檢測面臨著更多的挑戰,包括光照條件的多變性、面部表情的多樣性、遮擋物的干擾以及拍攝角度的不確定性等。這些因素大大增加了人臉檢測的難度,也促使研究者們不斷探索更為高效、準確的檢測演算法。

近年來,深度學習技術的崛起為解決這一問題提供了新的思路和方法。尤其是YOLO(You Only Look Once)系列演算法的出現,以其快速、高效的檢測效能在學術界和工業界引起了廣泛關注。從最初的YOLOv1到最新的YOLOv8[1],每個版本的更新都在嘗試提高檢測的精度和速度,以更好地應對日常場景下的人臉檢測任務。YOLO演算法之所以能夠在人臉檢測任務中表現出色,主要得益於其獨特的網路架構和檢測機制,它將檢測任務視為一個單一的迴歸問題來解決,直接從影像畫素到邊界框座標和類別機率的對映,這一創新大幅提升了檢測的速度,同時也保證了較高的準確率。

儘管YOLO演算法取得了顯著的成就,日常場景下的人臉檢測仍面臨著一些挑戰。例如,在極端光照條件或複雜背景下的人臉檢測準確性仍有待提高。此外,隨著技術的發展,新的檢測演算法和模型不斷湧現,如Scale-Aware Trident Networks (SATN)、EfficientDet等,這些演算法在提高檢測精度、降低模型複雜度等方面做出了新的嘗試。因此,如何在保證檢測速度的同時進一步提高檢測的準確性,成為了研究者們亟待解決的問題。

2.2 國內外研究現狀

在人臉檢測領域,隨著深度學習技術的不斷進步,眾多研究者致力於提高演算法的準確性、速度及魯棒性,以適應日常場景下的複雜環境。近年來,一系列基於深度學習的人臉檢測演算法不斷湧現,展現出了卓越的效能和廣泛的應用前景。

YOLO系列作為目標檢測領域的重要演算法之一,以其實時性和高效性在人臉檢測任務中取得了顯著的成果。自從YOLOv1問世以來,其後續版本不斷最佳化和改進,尤其是YOLOv4、YOLOv5[2]、YOLOv6[3]、YOLOv7[4]在保持高速檢測的同時,進一步提升了檢測的精度。YOLOv4透過引入新的特徵融合機制和資料增強技術,顯著提高了模型在複雜場景下的泛化能力。YOLOv5則在此基礎上進一步最佳化,透過更高效的網路結構和訓練策略,實現了更快的檢測速度和更高的準確率。

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

除了YOLO系列,Transformer在計算機視覺領域的應用也引起了廣泛關注。Vision Transformer (ViT)作為一種新型的視覺模型,透過將影像切分成多個patches,再利用自注意力機制進行特徵提取,展現出了與卷積神經網路相媲美甚至超越的效能。其成功證明了Transformer結構在視覺任務中的有效性,為後續的研究提供了新的方向。

RetinaFace是一個專門針對人臉檢測設計的演算法,它透過多工學習的方式,不僅能夠檢測出人臉,還能同時識別出面部的關鍵點。RetinaFace的出現,對於複雜環境下的精準人臉檢測具有重要意義。此外,FairFace演算法透過引入公平性考量,特別注重在不同人種、性別和年齡組之間實現準確的人臉檢測,體現了演算法設計中的社會責任感。

注意力機制作為提升模型感知能力的重要技術,已被廣泛應用於各種目標檢測演算法中。例如,DETR利用Transformer的編碼器-解碼器結構,直接對目標進行編碼和解碼,這種基於注意力的端到端目標檢測方法簡化了傳統目標檢測流程,避免了複雜的後處理步驟,顯示出了良好的效能。

RetinaNet和Faster R-CNN作為目標檢測領域的經典演算法,依然在新的研究中佔有一席之地。RetinaNet透過引入Focal Loss解決了類別不平衡的問題,顯著提高了小目標的檢測效能。Faster R-CNN則透過RPN(Region Proposal Network)有效地生成高質量的候選區域,進一步提高了檢測的精度和速度。

近期,一些新的演算法和框架如Glod-YOLO和MMDetection也為目標檢測領域帶來了新的思路和方法。Glod-YOLO[5]在保持YOLO系列高速檢測特點的同時,透過引入全域性和區域性特徵融合機制,有效提升了模型對小目標的檢測能力。MMDetection作為一個開源的目標檢測工具箱,彙集了眾多最新的目標檢測演算法,為研究者和開發者提供了一個方便快捷的實驗平臺,加速了演算法的迭代和創新。

2.3 要解決的問題及其方案

2.3.1 要解決的問題

在開發基於YOLOv8/v7/v6/v5的日常場景下的人臉檢測系統時,我們面臨著一系列技術挑戰和需求,涵蓋了從深度學習模型的選擇和訓練,到將這些模型整合到一個使用者友好的網頁應用中。以下是我們在這一過程中需要解決的主要問題以及相應的解決方案:

  1. 模型選擇與效能最佳化:在眾多的目標檢測模型中,選擇合適的模型以滿足高準確率和快速響應的需求是首要任務。此外,針對日常場景下多變的環境條件,如何最佳化模型以提高其魯棒性和準確性,也是我們需要解決的問題。

  2. 模型訓練與推理檢測:如何有效地訓練深度學習模型,以及在實際應用中如何實現快速準確的推理檢測,是另一個關鍵問題。

  3. 多模型整合與對比:使用者可能需要根據不同的應用場景選擇不同的檢測模型。如何在同一平臺上整合多個模型,並提供便捷的模型切換功能,是我們需要解決的挑戰。

  4. 網頁應用設計與互動:為了讓使用者能夠輕鬆地使用這一系統,我們需要設計一個直觀、美觀的網頁應用。這包括實現圖片、影片和攝像頭的實時人臉檢測功能,以及使用者介面的美化。

2.3.2 解決方案

針對本系統面臨的挑戰,我們將採取一系列綜合措施來設計和實現基於YOLOv8/v7/v6/v5的日常場景下的人臉檢測系統,確保它既準確又高效,同時提供良好的使用者體驗和強大的資料處理能力。

  1. 模型選擇與效能最佳化:基於YOLOv8/v7/v6/v5系列模型的高速檢測能力和良好的效能表現,我們選擇這些模型作為我們系統的基礎。透過PyTorch框架進行模型訓練和最佳化,利用現有的資料增強技術和調整網路結構的策略,來適應不同的場景並提高模型的泛化能力。

  2. 模型訓練與推理檢測:利用PyTorch,我們可以高效地訓練深度學習模型,並實現快速的推理檢測。透過GPU加速和模型量化技術,進一步提高檢測的速度,滿足實時檢測的需求。

  3. 多模型整合與對比:在基於streamlit的網頁應用中,我們提供了一個直觀的介面,允許使用者上傳不同的模型檔案並進行切換。這一功能不僅讓使用者可以根據需求選擇最合適的模型,還能直觀地比較不同模型的效能。

  4. 網頁應用設計與互動:使用streamlit框架,我們能夠快速開發出功能豐富的網頁應用。透過整合深度學習的檢測演算法,並利用CSS進行美化,我們為使用者提供了一個既美觀又實用的互動介面。使用者可以透過這一平臺,輕鬆地進行圖片、影片和實時攝像頭的人臉檢測,同時也可以調整檢測演算法的引數,如置信度閾值和IOU閾值等。

在Pycharm這一開發工具的幫助下,我們能夠高效地進行程式碼編寫、除錯和管理,使得整個開發過程更為順暢。透過上述解決方案的實施,我們期待能夠為使用者提供一個高效能、易用且功能強大的日常場景下的人臉檢測系統。

2.4 博文貢獻與組織結構

本文在日常場景下的人臉檢測領域做出了重要貢獻,系統地介紹了從文獻綜述、資料集處理,到深度學習模型的選擇與訓練,以及基於Streamlit的互動式網頁設計等多個方面的研究成果和實踐經驗。透過詳盡的分析和對比,本文不僅提供了YOLOv8、YOLOv7、YOLOv6、YOLOv5等目標檢測演算法在人臉檢測任務中的應用例項,還展示瞭如何利用Streamlit快速開發出既美觀又友好的網頁應用,使得使用者可以輕鬆地進行人臉檢測實驗和模型效果的對比。本文的主要貢獻包括:

  1. 綜合文獻綜述:提供了一個關於日常場景下人臉檢測的全面文獻綜述,包括最新的目標檢測演算法如YOLOv8、YOLOv7等的發展歷程、效能評估以及它們在人臉檢測中的應用情況。

  2. 資料集處理方法:詳細介紹了用於訓練人臉檢測模型的資料集處理技術,包括資料清洗、標註以及資料增強等步驟,為深度學習模型的訓練提供了堅實的資料基礎。

  3. 演算法選擇與最佳化:探討了YOLOv8/v7/v6/v5等多個版本的演算法在人臉檢測任務中的優缺點,並提供了效能對比,幫助讀者選擇最適合其需求的模型。

  4. Streamlit網頁設計:展示瞭如何使用Streamlit框架設計和實現一個互動式的人臉檢測網頁應用,包括介面佈局、功能實現和使用者互動設計等。

  5. 完整資源包:提供了完整的資料集和程式碼資源包,包括預處理資料、模型訓練與預測的程式碼,以及基於Streamlit的網頁應用程式碼,使讀者能夠輕鬆復現實驗結果,並在此基礎上進行進一步的研究和開發。

後續章節的組織結構如下: 緒論:介紹研究背景、目的和本文的主要貢獻;演算法原理:詳細介紹YOLOv8/v7/v6/v5等演算法的工作原理及其在日常場景下的人臉檢測中的應用;資料集處理:討論使用的資料集及其預處理、增強方法。程式碼介紹:提供模型訓練和預測的詳細程式碼說明,包括環境搭建、引數配置和執行步驟。實驗結果與分析:展示不同模型在日常場景下的人臉檢測任務上的實驗結果,並進行比較分析。系統設計與實現:介紹基於Streamlit的日常場景下的人臉檢測系統的設計與實現細節。結論與未來工作:總結本文的研究成果,並討論未來的研究方向和潛在的改進空間。


3. 資料集處理

在構建一個深度學習模型,尤其是面向日常場景下的人臉檢測系統時,一個高質量的資料集是至關重要的。在我們的研究中,資料集的質和量直接影響了最終模型的效能。本研究使用了一個包含16,103張影像的資料集,分佈為10,877張訓練影像、3,226張驗證影像和2,000張測試影像,這樣的資料量足以訓練出一個魯棒的深度學習模型。每張影像都經過了細緻的預處理,包括自動校正畫素資料的方向並剝離EXIF資訊,以確保影像的方向一致性和資料的純淨性。此外,所有影像都被調整到了統一的640x640解析度,這一操作旨在標準化輸入大小,減少模型訓練和推理時的計算量,同時保持影像內容的完整性。博主使用的類別如下:

Chinese_name = {"AlcoholPercentage": "酒精濃度", "Appellation AOC DOC AVARegion": "產區 AOC DOC AVA",
                "Appellation QualityLevel": "產區質量等級", "CountryCountry": "國家", "Distinct Logo": "特有標誌",
                "Established YearYear": "建立年份", "Maker-Name": "製造商名稱", "TypeWine Type": "酒類型別",
                "VintageYear": "年份"}
基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

從提供的資料集分佈圖可以看出,類別分佈上,資料集專注於單一類別——人臉,數量上達到了一個讓模型在多樣化環境中學習到足夠特徵的規模。在分佈圖中,我們可以看到大部分標記的人臉在影像中的位置較為集中,這可能意味著大多數人臉出現在影像的中心區域。這種分佈對於訓練模型來說是有利的,因為模型可以學習到大多數情況下人臉出現的位置,從而提高檢測的準確性。然而,這也暗示了在訓練資料中可能存在一定程度的偏置,即模型可能在檢測影像邊緣區域的人臉時表現不佳。

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

影像尺寸的分佈圖反映出在資料集中人臉大小的多樣性。我們觀察到大部分人臉在影像中佔據的寬度和高度比例是相對較小的,這指出資料集包含了大量的遠距離或小尺寸人臉,這對模型而言是一個挑戰,因為檢測小尺寸的物件通常比大尺寸的物件更為困難。因此,我們的模型需要能夠識別和定位各種尺寸的人臉,確保即便在複雜場景中也能維持高準確率。

總之,這個資料集的設計旨在透過廣泛的樣本覆蓋日常場景下可能遇到的各種情形。精心的預處理和增強處理確保了資料的質量,為模型訓練提供了堅實的基礎。資料的標註質量、影像的多樣性以及人臉在影像中的尺寸分佈,都是訓練出一個高效且準確的人臉檢測模型的關鍵因素。透過這樣的資料集介紹,我們為讀者提供了對模型訓練背景的深入理解,為後續章節中對模型效能的深入分析和討論奠定了基礎。


4. 原理與程式碼介紹

4.1 YOLOv8演算法原理

YOLOv8作為YOLO系列中的新一代演算法,繼承並最佳化了前代模型的眾多特性,具備了更加卓越的效能和效率。它的核心原理在於直接在輸出層進行預測,大大簡化了目標檢測流程,提高了速度和準確度,使其在實時應用中表現出色。

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

首先,YOLOv8沿用了YOLO系列一貫的端到端單一網路架構,這意味著它可以在單個前向傳播過程中預測出影像中的目標位置和類別。這種設計減少了作為中間步驟的區域提議階段,從而減少了計算量並提高了處理速度。相較於YOLOv5和YOLOv8的早期版本,YOLOv8在網路架構上做了進一步的最佳化,如結合了特徵金字塔和路徑聚合網路,這使得模型能夠更有效地利用多尺度資訊,增強了對小目標的檢測能力。

在檢測頭的設計上,YOLOv8採用了一個更加高效的Baseline,它能夠更精確地定位目標,並在計算資源有限的情況下仍然保持高效能。YOLOv8在目標定位的精確度上也做了重大的改進,引入了Anchor-Based和Anchor-Free的機制,結合了這兩種目標檢測方法的優點。它透過對Anchor點的位置進行最佳化,提高了對各種尺寸和形狀目標的適應性,同時,透過引入Task-Aligned Assigner,它可以更智慧地匹配預測框和真實框,減少了不必要的計算和複雜度。

進一步地,YOLOv8在損失函式的設計上也進行了改進。例如,它採用了CIoU損失來精確地衡量預測框和真實框之間的重疊度,這一改進使得模型在訓練過程中能夠更加關注於目標的幾何屬性。同時,它還利用了DFLloss,這是一種新的損失函式,能夠更加準確地預測目標的類別和位置,尤其是在目標尺寸和形狀多樣性較大的情況下。

最後,YOLOv8在訓練策略上也做出了創新。採用了Mosaic資料增強,它可以在一個影像中合成多個訓練樣本,提高了模型對複雜場景的適應性。這種方法可以極大地提升模型對不同尺寸、形狀和背景的目標的泛化能力。同時,Mosaic增強也有助於模型在訓練早期快速收斂,實現更高的準確度。

總而言之,YOLOv8透過一系列的技術革新,如CSP結構的引入、多尺度預測、改進的Head設計、以及複合損失函式的應用,為目標檢測領域帶來了新的突破。這些創新不僅提高了演算法的效能,而且保持了適用於實時場景的高效率,使得YOLOv8成為當前目標檢測技術的前沿之作。

4.2 模型構建

在本研究的“程式碼介紹”章節中,我們詳細探討了構建用於日常場景下人臉檢測的深度學習模型的關鍵程式碼。這些程式碼片段整合了模型的載入、預處理、預測和後處理等一系列關鍵步驟,並封裝在一個Python類中,提供了從影像輸入到最終檢測輸出的完整流程。

程式碼首先匯入必要的庫和模組。我們使用OpenCV處理影像,PyTorch進行深度學習計算,並利用QtFusion.models和ultralytics庫中的工具處理YOLO模型。選擇執行模型的裝置是重要的一步,我們使用torch.cuda.is_available()檢查GPU是否可用,以便利用GPU的計算能力。這對於加速模型訓練和推理過程至關重要。

import cv2
import torch
from QtFusion.models import Detector
from datasets.label_name import Chinese_name
from ultralytics import YOLO
from ultralytics.utils.torch_utils import select_device

ini_params字典設定了模型執行的基本引數。這些引數包括裝置型別、物體置信度閾值、IOU閾值以及類別過濾器。置信度閾值決定模型預測需達到的最小置信度,IOU閾值用於非極大值抑制過程,兩者的設定對模型效能有直接影響。

device = "cuda:0" if torch.cuda.is_available() else "cpu"
ini_params = {
    'device': device,
    'conf': 0.25,
    'iou': 0.5,
    'classes': None,
    'verbose': False
}

count_classes函式提供了一個統計檢測到各類別數量的實用工具,這對於後續分析模型的效能和檢測偏好非常重要。

def count_classes(det_info, class_names):
    count_dict = {name: 0 for name in class_names}
    for info in det_info:
        class_name = info['class_name']
        if class_name in count_dict:
            count_dict[class_name] += 1
    count_list = [count_dict[name] for name in class_names]
    return count_list

YOLOv8v5Detector類是構建模型的核心,繼承自抽象基類Detector。這個類包含了初始化方法、模型載入方法、影像預處理、預測及後處理方法。在load_model方法中,我們使用了select_device函式選擇最佳的裝置執行模型,並載入了預訓練的YOLO模型。載入模型是深度學習管道的第一步,關鍵在於確保模型能夠適應於當前硬體環境。在影像預處理階段,preprocess方法目前只是簡單地儲存影像,但它可以根據需要進行擴充套件,以包括各種影像處理步驟,比如歸一化、裁剪或尺寸調整等。predict方法利用已載入的模型對輸入影像進行預測。這是模型實際執行的地方,我們透過傳遞預處理的影像來獲取模型的預測結果。

class YOLOv8v5Detector(Detector):
    def __init__(self, params=None):
        super().__init__(params)
        self.model = None
        self.img = None
        self.names = list(Chinese_name.values())
        self.params = params if params else ini_params
	def load_model(self, model_path):
	    self.device = select_device(self.params['device'])
	    self.model = YOLO(model_path)
	    names_dict = self.model.names
	    self.names = [Chinese_name[v] if v in Chinese_name else v for v in names_dict.values()]
	    self.model(torch.zeros(1, 3, *[self.imgsz] * 2).to(self.device).type_as(next(self.model.model.parameters())))
	def preprocess(self, img):
	    self.img = img
	    return img
	
	def predict(self, img):
	    results = self.model(img, **ini_params)
	    return results
	
	def postprocess(self, pred):
	    results = []
	    for res in pred[0].boxes:
	        for box in res:
	            class_id = int(box.cls.cpu())
	            bbox = box.xyxy.cpu().squeeze().tolist()
	            bbox = [int(coord) for coord in bbox]
	            result = {
	                "class_name": self.names[class_id],
	                "bbox": bbox,
	                "score": box.conf.cpu().squeeze().item(),
	                "class_id": class_id,
	            }
	            results.append(result)
	    return results
	    
    def set_param(self, params):
        self.params.update(params)

在後處理步驟,postprocess方法將模型的預測結果轉換成易於理解和使用的格式。每個檢測結果都包括類別名稱、邊界框、置信度和類別ID。這個方法確保了輸出資訊的可用性,為終端使用者的決策提供了依據。set_param方法則允許動態更新模型引數。在實際應用中,我們可能需要根據不同場景調整引數,以達到最優的檢測效果。

整體而言,這些程式碼構成了日常場景下人臉檢測系統的核心,涵蓋了從模型選擇、裝置配置,到影像預處理、模型預測、結果後處理等關鍵環節。透過本部分的介紹,我們為讀者提供了一個深度學習模型構建的全面視角,解釋了每個程式碼段的功能和它們在整個人臉檢測流程中的作用,這些都是確保模型達到高準確度和高效率的關鍵因素。

4.3 訓練程式碼

在這一部分的部落格中,我們將詳細介紹如何使用YOLO模型進行日常場景下的人臉檢測的深度學習模型的訓練過程。我們將透過解釋訓練程式碼的每一部分來闡明整個訓練流程。以下表格詳細介紹了YOLOv8模型訓練中使用的一些重要超引數及其設定:

超引數 設定 說明
學習率(lr0 0.01 決定了模型權重調整的步長大小,在訓練初期有助於快速收斂。
學習率衰減(lrf 0.01 控制訓練過程中學習率的降低速度,有助於模型在訓練後期細緻調整。
動量(momentum 0.937 加速模型在正確方向上的學習,並減少震盪,加快收斂速度。
權重衰減(weight_decay 0.0005 防止過擬合,透過在損失函式中新增正則項減少模型複雜度。
熱身訓練週期(warmup_epochs 3.0 初始幾個週期內以較低的學習率開始訓練,逐漸增加到預定學習率。
批次大小(batch 16 每次迭代訓練中輸入模型的樣本數,影響GPU記憶體使用和模型效能。
輸入影像大小(imgsz 640 模型接受的輸入影像的尺寸,影響模型的識別能力和計算負擔。

環境設定與模型載入:首先,我們匯入必要的庫。os 用於作業系統路徑和檔案操作,torch 是PyTorch庫的核心,它為深度學習模型訓練提供支援,而 yaml 用於處理YAML檔案,這是一種常用於配置檔案的資料序列化格式。我們還從 ultralytics 包中匯入了 YOLO 類,這是用於載入和訓練YOLO模型的工具類。QtFusion.path 中的 abs_path 函式用於獲取檔案的絕對路徑。

import os
import torch
import yaml
from ultralytics import YOLO  # 用於載入YOLO模型
from QtFusion.path import abs_path  # 用於獲取檔案的絕對路徑

在這裡,我們檢查了CUDA(用於加速深度學習計算的GPU庫)是否可用,如果可以,就使用GPU進行訓練,否則退回到CPU。使用GPU可以大大加速訓練過程,是訓練大規模深度學習模型的首選方式。

device = "0" if torch.cuda.is_available() else "cpu"

資料集準備:workers定義了用於資料載入的程序數。batch設定了批次大小,這個引數影響模型訓練的記憶體佔用和速度。我們還定義了資料集的名稱,並構建了其YAML配置檔案的路徑。

workers = 1  # 工作程序數
batch = 8  # 每批處理的影像數量
data_name = "WiderFaceDetection"
data_path = abs_path(f'datasets/{data_name}/{data_name}.yaml', path_type='current')
unix_style_path = data_path.replace(os.sep, '/')

接下來,程式碼讀取了YAML檔案並進行了路徑的調整,以確保資料集路徑的準確性。這裡的YAML檔案包含了資料集的詳細配置資訊,如資料路徑、類別資訊等。程式碼確保了YAML檔案中的path項指向了正確的資料集目錄。

directory_path = os.path.dirname(unix_style_path)
with open(data_path, 'r') as file:
    data = yaml.load(file, Loader=yaml.FullLoader)

if 'path' in data:
    data['path'] = directory_path
    with open(data_path, 'w') as file:
        yaml.safe_dump(data, file, sort_keys=False)

訓練模型:最後,程式碼載入了預訓練的YOLO模型,並執行了訓練過程。在這一部分,我們使用YOLO類從ultralytics庫中載入了預訓練的YOLOv8模型,並使用train方法開始了訓練過程。imgsz=640設定了模型輸入影像的大小,epochs=120定義了訓練週期的總數,而name則為這次訓練任務指定了一個獨特的名稱,這對於之後的模型追蹤和識別非常有用。

model = YOLO(abs_path('./weights/yolov5nu.pt', path_type='current'), task='detect')  # 載入預訓練的YOLOv8模型
# model = YOLO('./weights/yolov5.yaml', task='detect').load('./weights/yolov5nu.pt')  # 載入預訓練的YOLOv8模型
# Training.
results = model.train(  # 開始訓練模型
    data=data_path,  # 指定訓練資料的配置檔案路徑
    device=device,  # 自動選擇進行訓練
    workers=workers,  # 指定使用2個工作程序載入資料
    imgsz=640,  # 指定輸入影像的大小為640x640
    epochs=120,  # 指定訓練100個epoch
    batch=batch,  # 指定每個批次的大小為8
    name='train_v5_' + data_name  # 指定訓練任務的名稱
)
model = YOLO(abs_path('./weights/yolov8n.pt'), task='detect')  # 載入預訓練的YOLOv8模型
results2 = model.train(  # 開始訓練模型
    data=data_path,  # 指定訓練資料的配置檔案路徑
    device=device,  # 自動選擇進行訓練
    workers=workers,  # 指定使用2個工作程序載入資料
    imgsz=640,  # 指定輸入影像的大小為640x640
    epochs=120,  # 指定訓練100個epoch
    batch=batch,  # 指定每個批次的大小為8
    name='train_v8_' + data_name  # 指定訓練任務的名稱
)

整個訓練程式碼塊以清晰的邏輯組織了模型訓練的流程,從裝置配置到資料集處理,再到模型載入和訓練的具體執行,每一步都被仔細地設計以保證訓練過程的順利進行。


5. 實驗結果與分析

5.1 訓練曲線

在深度學習模型的訓練過程中,損失函式的影像提供了關於模型效能的關鍵洞察。本文將對YOLOv8訓練期間產生的損失影像進行分析,這些影像揭示了模型在學習如何進行有效的人臉檢測時的表現。訓練過程中,損失影像是我們監控的重要元件,它幫助我們理解模型在訓練資料上的表現和在未知資料上的泛化能力。

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

損失函式影像展示了訓練損失和驗證損失隨著時間的變化情況。在我們的案例中,訓練和驗證損失包括邊界框損失(box_loss)、分類損失(cls_loss)和目標函式損失(dfl_loss)。初始的高損失值表明模型在訓練的早期階段對於任務的理解還不足。隨著訓練的進行,損失逐漸下降,這表明模型正在學習資料集中的特徵,並在人臉檢測任務上變得越來越精確。

觀察到的快速下降趨勢,尤其是在訓練的前幾個週期內,指示了快速的學習過程。在這些週期之後,損失曲線趨於平緩,表明模型開始收斂。在訓練損失和驗證損失都顯示出這一趨勢時,我們可以有信心地說,模型沒有出現過擬合,因為驗證損失沒有增加,這通常是過擬合的一個標誌。

除了損失函式,效能指標影像顯示了精確度(precision)、召回率(recall)、平均精確度均值(mAP@0.5)和廣泛平均精確度均值(mAP@0.5:0.95)。精確度衡量了檢測到的人臉中實際正確的比例,而召回率衡量了所有真實人臉被模型檢測出的比例。這兩個指標的上升趨勢顯示了模型檢測人臉的能力在不斷提高。

mAP指標衡量的是模型在多個閾值上的表現,是一個綜合性的指標。mAP@0.5關注於IoU閾值為0.5時模型的表現,而mAP@0.5:0.95則考慮了從0.5到0.95的所有IoU閾值。這些指標隨訓練週期的上升表明,模型對於人臉檢測的整體表現在提升,能夠穩定地識別和定點陣圖像中的人臉。

整體而言,從損失和效能指標的影像來看,YOLOv8模型表現出色。損失函式的下降趨勢以及效能指標的提高顯示了模型在訓練過程中的穩定進步。這些影像不僅顯示了模型在特定資料集上的表現,也預示著良好的泛化能力。然而,即使指標顯示積極的趨勢,我們仍需警惕過擬合的可能性,並繼續監控模型在更廣泛和更復雜資料上的表現。

5.2 PR曲線圖

在深度學習的目標檢測任務中,Precision-Recall (PR) 曲線是評估模型效能的重要工具,尤其是在資料集中存在類別不平衡時。本文分析了YOLOv8模型在人臉檢測任務上的PR曲線,這個曲線揭示了模型在不同置信度閾值下的精確度和召回率。

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

PR曲線圖顯示了精確度相對於召回率的變化。理想情況下,我們希望模型能夠同時達到高精確度和高召回率,這意味著模型能夠檢測出所有的正類(這裡是人臉),同時減少誤檢。圖中曲線開始時位於高精確度區域,隨著召回率的增加逐漸下降。這表明在較高的置信度閾值下,模型能夠以較高的精確度檢測到大多數的人臉,但隨著閾值的降低,雖然能夠檢測到更多的人臉(召回率提高),但同時也增加了誤檢的風險(精確度下降)。

在曲線的右端,我們看到一個明顯的下降,這表明在檢測幾乎所有的正類時,模型產生了相對較多的誤檢。儘管如此,mAP(平均精確度均值)的數值為0.664,表明模型在所有IoU(Intersection over Union)閾值為0.5的置信度水平上表現出了相對較好的檢測效能。mAP是目標檢測中一個重要的指標,因為它考慮了所有可能的精確度和召回率,並提供了一個單一的效能指標。

精確度和召回率的平衡是目標檢測任務的關鍵挑戰。較高的精確度意味著較少的誤檢,但可能會錯過一些實際的正類。相反,較高的召回率意味著檢測到了更多的正類,但同時可能會導致較多的誤檢。在實際應用中,這種平衡取決於任務的具體要求。例如,在安全關鍵的應用中,我們可能會傾向於更高的召回率,以確保不遺漏任何真實的檢測物件。

總結來說,YOLOv8模型的PR曲線顯示了其在人臉檢測任務上的良好效能。模型達到了相對較高的mAP,顯示了其良好的檢測能力。然而,模型在達到極高召回率時表現出了較低的精確度,這提醒我們在部署模型時需要仔細選擇操作點,確保既能檢測到大部分正類,又能保持誤檢在可接受的水平。

5.3 YOLOv8/v7/v6/v5對比實驗

(1)實驗設計
本實驗旨在評估和比較YOLOv5、YOLOv6、YOLOv7和YOLOv8幾種模型在日常場景下的人臉目標檢測任務上的效能。為了實現這一目標,博主分別使用使用相同的資料集訓練和測試了這四個模型,從而可以進行直接的效能比較。該資料集包含日常場景下的人臉的影像。本文將比較分析四種模型,旨在揭示每種模型的優缺點,探討它們在工業環境中實際應用的場景選擇。

模型 影像大小 (畫素) mAPval 50-95 CPU ONNX 速度 (毫秒) A100 TensorRT 速度 (毫秒) 引數數量 (百萬) FLOPs (十億)
YOLOv5nu 640 34.3 73.6 1.06 2.6 7.7
YOLOv8n 640 37.3 80.4 0.99 3.2 8.7
YOLOv6N 640 37.5 - - 4.7 11.4
YOLOv7-tiny 640 37.4 - - 6.01 13.1

(2)度量指標

  • F1-Score:F1-Score 作為衡量模型效能的重要指標,尤其在處理類別分佈不均的資料集時顯得尤為關鍵。它透過結合精確率與召回率,提供了一個單一的度量標準,能夠全面評價模型的效能。精確率衡量的是模型在所有被標記為正例中真正屬於正例的比例,而召回率則關注於模型能夠識別出的真正正例佔所有實際正例的比例。F1-Score透過兩者的調和平均,確保了只有當精確率和召回率同時高時,模型的效能評估才會高,從而確保了模型對於正例的預測既準確又完整。
  • mAP(Mean Average Precision):在目標檢測任務中,Mean Average Precision(mAP)是評估模型效能的重要標準。它不僅反映了模型對單個類別的識別精度,而且還考慮了所有類別的平均表現,因此提供了一個全域性的效能度量。在計算mAP時,模型對於每個類別的預測被單獨考慮,然後計算每個類別的平均精度(AP),最後這些AP值的平均數形成了mAP。
名稱 YOLOv5nu YOLOv6n YOLOv7-tiny YOLOv8n
mAP 0.653 0.648 0.694 0.664
F1-Score 0.68 0.69 0.73 0.69

(3)實驗結果分析

在這一系列實驗中,我們對YOLOv5nu、YOLOv6n、YOLOv7-tiny以及YOLOv8n四個模型在相同資料集上的人臉檢測任務進行了效能比較。實驗結果顯示,在平均精確度均值(mAP)上,YOLOv7-tiny以0.694的得分領先,其次是YOLOv8n、YOLOv5nu和YOLOv6n。而在F1-Score指標上,YOLOv7-tiny同樣以0.73的得分表現最好,其他三個模型的得分相近,均在0.68到0.69之間。

從mAP指標來看,YOLOv7-tiny之所以能夠取得最好的成績,可能是由於它在面對人臉這一特定型別的目標時,具有更好的特徵提取和邊界框定位能力。mAP是一個重要的效能指標,它考慮了不同閾值下模型的精確度和召回率,較高的mAP值表明YOLOv7-tiny在不犧牲太多召回率的情況下保持了較高的精確度。這或許得益於YOLOv7-tiny在架構上的最佳化,可能包括更有效的特徵提取網路,或是更合理的錨框設定,以適應人臉的尺寸和形狀。

在F1-Score的評價上,所有模型的表現都比較接近,但YOLOv7-tiny依舊保持了微弱的領先。F1-Score作為精確度和召回率的調和平均,提供了一個單一的度量來評估模型的整體效能。較高的F1-Score表明模型在檢測正確的人臉和不錯過任何實際人臉這兩方面取得了較好的平衡。儘管YOLOv8n在mAP上表現不錯,但其F1-Score沒有達到最優,這可能是因為YOLOv8n在某些情況下犧牲了一些精確度以提高召回率,或者是因為它在處理某些難以識別的人臉時遇到了困難。

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

需要指出的是,每個模型的表現都受到其內部架構和引數設定的影響。YOLOv7-tiny之所以在這兩個指標上表現出色,可能是由於其網路結構和訓練策略更適合處理我們資料集中的人臉影像。然而,這不意味著YOLOv7-tiny在所有場景下都是最佳選擇。實際應用時,應考慮模型的速度、大小以及適用的特定任務。

綜上所述,YOLOv7-tiny在我們的實驗中展現了最優的效能,不僅在mAP上取得了最高分,同時也在F1-Score上領先於其他模型。這表明了其在特定任務上的優越性,同時也啟示我們在選擇模型時應考慮任務特性和模型特點。在實際應用中,除了這兩個指標外,還需綜合考慮模型的速度、計算成本、易用性等其他因素,以便選出最適合具體場景的模型。


6. 系統設計與實現

6.1 系統架構概覽

在介紹日常場景下基於YOLOv8/v7/v6/v5的人臉檢測系統的架構設計時,我們以一種物件導向的方法組織我們的系統。該系統的設計旨在充分利用YOLO系列模型的高效率和準確性,同時提供靈活性以適應不同的使用場景和裝置效能要求。以下是系統的主要組成部分及其功能:

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)
  1. 核心元件
  • YOLOv8v5Detector: 這是系統的核心,負責載入預訓練的YOLO模型,並執行人臉檢測任務。該元件利用YOLOv8/v7/v6/v5模型的強大能力,透過load_model()方法載入模型,並透過predict()方法對輸入影像進行預測。

  • Detection_UI: 作為系統的使用者介面層,負責與使用者互動,包括設定檢測引數、選擇輸入源(攝像頭或檔案)、顯示檢測結果等。透過setup_sidebar()setupMainWindow()方法,使用者可以輕鬆配置模型引數(如置信度閾值、IOU閾值)、選擇輸入源並開始檢測過程。

  1. 輔助工具
  • ResultLogger: 用於記錄檢測過程中的各項指標,如檢測結果、位置、置信度和處理時間。這使得分析和調優模型效能變得容易。

  • LogTable: 提供一個框架來儲存和顯示檢測結果的歷史記錄,支援將結果匯出到CSV檔案,便於後續分析。

  1. 資料處理與展示
  • frame_process(): 這個方法是資料處理的核心,負責呼叫YOLO模型進行預測,處理預測結果,並將處理後的影像及其相關資訊返回給UI層。它展示瞭如何將深度學習模型的預測能力與影像處理技術結合起來,以提供豐富的視覺反饋。

  • toggle_comboBox(): 用於根據使用者的選擇過濾和顯示特定的檢測結果。這提高了系統的互動性,允許使用者專注於他們最感興趣的檢測物件。

6.2 系統流程

在本節中,我們將深入探討基於YOLOv8/v7/v6/v5的日常場景下的人臉檢測系統的詳細流程。此係統採用了一系列精心設計的步驟,以確保從使用者輸入到最終的檢測結果展示,每一環節都能高效、準確地執行。下面,我們將以程式流程圖的文字形式,逐步解析系統的工作流程。

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)
  1. 初始化: 系統啟動時,Detection_UI類的例項被建立。它初始化介面、載入模型並準備資料記錄工具。

  2. 配置: 使用者透過側邊欄選擇模型引數、輸入源和檔案型別。這些選擇透過setup_sidebar()方法進行配置。

  3. 執行檢測: 使用者點選"開始執行"按鈕後,系統根據選擇的輸入源呼叫process_camera_or_file()方法,開始檢測過程。

  4. 展示結果: 檢測結果透過frame_process()方法處理,並在主視窗中展示。使用者可以透過toggle_comboBox()方法篩選特定的結果。

  5. 結果記錄與匯出: ResultLoggerLogTable元件記錄檢測過程和結果,支援匯出到CSV檔案,方便使用者進行進一步分析。

透過上述設計,系統不僅利用了YOLO系列模型在人臉檢測領域的高效性和準確性,而且透過靈活的使用者介面和資料處理工具,為使用者提供了豐富的互動和分析功能。這樣的架構設計確保了系統的可擴充套件性和適用性,滿足了在不同場景下對人臉檢測系統的需求。


程式碼下載連結

如果您希望獲取部落格中提及的完整資源包,包含測試圖片、影片、Python檔案(*.py)、網頁配置檔案、訓練資料集、程式碼及介面設計等,可訪問博主在麵包多平臺的上傳內容。相關的部落格和影片資料提供了所有必要檔案的下載連結,以便一鍵執行。完整資源的預覽如下圖所示:

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

資源包中涵蓋了你需要的訓練測試資料集、訓練測試程式碼、UI介面程式碼等完整資源,完整專案檔案的下載連結可在下面的影片簡介中找到➷➷➷

演示與介紹影片https://www.bilibili.com/video/BV1RZ421v77g/
YOLOv8/v7/v6/v5專案合集下載:https://mbd.pub/o/bread/mbd-ZZ2YmJ1t
YOLOv8和v5專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2Ylp1w
YOLOv7專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2Yl5tp
YOLOv6專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2YmJdt

基於深度學習的日常場景下的人臉檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

完整安裝執行教程:

這個專案的執行需要用到Anaconda和Pycharm兩個軟體,下載到資原始碼後,您可以按照以下連結提供的詳細安裝教程操作即可執行成功,如仍有執行問題可私信博主解決:

  1. Pycharm和Anaconda的安裝教程https://deepcode.blog.csdn.net/article/details/136639378

軟體安裝好後需要為本專案新建Python環境、安裝依賴庫,並在Pycharm中設定環境,這幾步採用下面的教程可選線上安裝(pip install直接線上下載包)或離線依賴包(博主提供的離線包直接裝)安裝兩種方式之一:

  1. Python環境配置教程https://deepcode.blog.csdn.net/article/details/136639396(2,3方法可選一種);
  2. 離線依賴包的安裝指南https://deepcode.blog.csdn.net/article/details/136650641(2,3方法可選一種);

如使用離線包方式安裝,請下載離線依賴庫,下載地址:https://pan.baidu.com/s/1uHbU9YzSqN0YP_dTHBgpFw?pwd=mt8u (提取碼:mt8u)。


7. 結論與未來工作

本文深入研究並實踐了基於YOLOv8/v7/v6/v5的深度學習模型在日常場景下的人臉檢測領域的應用,成功開發了一個整合了這些先進演算法的人臉檢測系統。透過對多個版本的YOLO模型進行詳細的比較和最佳化,本研究不僅提升了日常場景下的人臉檢測的準確性和實時性,還透過Streamlit建立了一個直觀、美觀且易於使用的Web應用,讓使用者能夠輕鬆地在日常場景中進行人臉檢測,從而在實際應用中展現其重要價值。

經過一系列實驗驗證,我們所提出的方法在日常場景下進行人臉檢測的準確性和處理速度上均達到了令人滿意的水平。同時,我們提供了完整的資料集處理、模型訓練與預測的程式碼,以及基於Streamlit的系統設計和實現細節,為後續研究者和開發者復現和參考提供了便利。儘管已取得一定成就,但日常場景下的人臉檢測作為一個充滿挑戰的任務,仍有許多改進空間。在未來的工作中,我們計劃從以下幾個方向進行深入探索:

  • 模型最佳化:繼續研究更深層次的網路結構和最佳化策略,例如神經網路架構搜尋(NAS)技術,以提升模型的效能和效率。
  • 多模態融合:考慮結合語音、文字等其他模態資訊,採用多模態學習方法進行人臉檢測,以更全面地理解人類情感和意圖。
  • 跨域適應性:研究跨文化、跨年齡組的人臉檢測,透過領域自適應技術提高模型在不同人群和環境中的泛化能力。
  • 使用者互動體驗:進一步最佳化系統的使用者介面和互動設計,使其更加人性化、智慧化,滿足更廣泛使用者的需求。
  • 實際應用擴充:探索人臉檢測在更多實際應用場景中的應用,如線上教育、遠端會議、智慧客服等,發揮其最大的社會和經濟價值。

綜上所述,日常場景下的人臉檢測技術正處於快速發展之中,隨著技術的不斷進步和應用場景的不斷擴充,基於深度學習的人臉檢測預計將在人機互動、社會安全、醫療健康等領域發揮更加重要的作用。


  1. Qiu, Shi, et al. "Automated detection of railway defective fasteners based on YOLOv8-FAM and synthetic data using style transfer." Automation in Construction 162 (2024): 105363. ↩︎

  2. Yusof, Najiha‘Izzaty Mohd, et al. "Assessing the performance of YOLOv5, YOLOv6, and YOLOv7 in road defect detection and classification: a comparative study." Bulletin of Electrical Engineering and Informatics 13.1 (2024): 350-360. ↩︎

  3. Goel, Lavika, and Pankaj Patel. "Improving YOLOv6 using advanced PSO optimizer for weight selection in lung cancer detection and classification." Multimedia Tools and Applications (2024): 1-34. ↩︎

  4. Ge, Zihao, et al. "Lightweight YOLOv7 Algorithm for Multi-Object Recognition on Contrabands in Terahertz Images." Applied Sciences 14.4 (2024): 1398. ↩︎

  5. Wang, Chengcheng, et al. "Gold-YOLO: Efficient object detector via gather-and-distribute mechanism." Advances in Neural Information Processing Systems 36 (2024). ↩︎

相關文章