基於深度學習的人群密度檢測系統(網頁版+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 混淆矩陣
    • 5.3 YOLOv8/v7/v6/v5對比實驗
  • 6. 系統設計與實現
    • 6.1 系統架構概覽
    • 6.2 系統流程
  • 程式碼下載連結
  • 7. 結論與未來工作

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


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

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

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

1. 網頁功能與效果

(1)開啟攝像頭實時檢測:系統允許使用者透過網頁介面輕鬆開啟計算機攝像頭,實現實時人群密度的檢測。使用者可以直觀地在網頁上看到攝像頭捕獲的實時畫面及檢測結果,為實時監控提供便利。

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

(2)選擇圖片檢測:本系統支援使用者上傳本地圖片檔案進行人群密度檢測。使用者可以透過簡單的點選操作選擇圖片,系統將自動處理並展示檢測結果,方便使用者針對靜態影像進行快速檢測。

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

(3)選擇影片檔案檢測:除了靜態圖片,系統還提供了對影片檔案的檢測功能。使用者可以上傳本地儲存的影片檔案,系統將逐幀分析影片內容,展示包含檢測結果的影片流,幫助使用者分析和理解人群密度在動態場景中的表現。

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

(4)選擇不同訓練好的模型檔案:為了滿足不同使用者的需求,系統設計了模型選擇功能。使用者可以根據自己的需求,從多個預訓練好的模型檔案中選擇最適合的一個進行檢測,以獲得最佳的檢測效果。

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

在系統的介面設計上,我們提供了豐富的互動功能,以提高使用者體驗和檢測效率。檢測畫面和原始畫面可以根據使用者的需求,同時或單獨顯示。使用者可以透過可點選下拉框選擇是否只標記特定的目標,並在介面上直觀地顯示檢測結果。所有的檢測結果會實時儲存並在頁面的表格中顯示,便於使用者檢視和分析。

為了提高檢測的準確性和靈活性,使用者可以動態調整檢測演算法的置信度閾值和IOU閾值,以濾除不確定的檢測結果,確保結果的可靠性。此外,為了方便使用者儲存和分析檢測資料,系統提供了一個功能,允許使用者透過點選按鈕,將檢測的表格結果輸出到csv檔案。

針對需要儲存檢測結果的場景,我們還考慮到了使用者的實際需求,允許將標記過的圖片、影片以及攝像頭的實時畫面結果匯出為avi影像檔案,便於後續的檢視、分析或分享。這一系列的功能設計,旨在為使用者提供一個全面、高效、便捷的人群密度檢測平臺,滿足不同場景下的檢測需求。


2. 緒論

2.1 研究背景及意義

在當前快速發展的智慧監控與分析技術領域中,人群密度檢測已成為一個重要的研究方向,不僅因為其在公共安全、城市規劃、商業分析等多個領域的廣泛應用,也因為它在技術上面臨的諸多挑戰。隨著大型活動、城市廣場和交通樞紐等人流密集場所的增多,如何實時、準確地監測和分析人群密度,已經成為保障公共安全和提高城市管理效率的關鍵問題。傳統的監控方法依賴於人工觀察,不僅耗時耗力,而且效率低下,難以滿足當前對實時性和準確性的高要求。

隨著深度學習技術的發展,基於YOLO(You Only Look Once)系列演算法的人群密度檢測技術逐漸興起。YOLO演算法以其高效的單次檢測流程和較強的實時效能,在目標檢測領域獲得了廣泛的應用。近年來,隨著YOLOv5、YOLOv6、YOLOv7及最新的YOLOv8等版本的相繼釋出,其在檢測速度、準確性以及模型輕量化等方面都有了顯著的改進和最佳化,為人群密度檢測提供了更為強大和靈活的技術支援。

然而,儘管YOLO系列演算法在人群密度檢測方面取得了顯著的成果,但仍然面臨著一些挑戰,如在極端光照條件下的檢測穩定性、遮擋情況下的檢測準確性、以及不同國家和地區人群密度標準的多樣性等。針對這些問題,一些研究提出了改進方案,如引入注意力機制以提高模型對關鍵特徵的敏感度,使用資料增強和遷移學習技術來增強模型的泛化能力,以及開發適用於特定地區標準的定製化模型等。

此外,不斷更新的資料集和更為精細的評價指標也推動了人群密度檢測技術的進步。例如,最新的人群資料集不僅包含了更多樣化的場景,還提供了更加詳細的註釋,如人頭位置、人群數量等,這對於訓練更為精準的人群密度檢測模型至關重要。同時,效能改進不僅體現在提高檢測的準確率,也包括對於不同光照條件、遮擋情況下的魯棒性增強,以及對於動態場景中的實時跟蹤能力的最佳化。

這些技術進展不僅提高了人群密度檢測的實用性,也為研究人員和工程師提供了新的研究方向和挑戰,包括如何進一步提高檢測的準確性和實時性,如何最佳化模型以適應更加複雜的應用場景,以及如何透過演算法創新實現更好的效能平衡等。在此背景下,我們的研究意義重大,旨在透過深入分析和綜合最新的YOLO系列演算法,提出一種效能更優、應用範圍更廣的人群密度檢測系統,為智慧監控技術的發展貢獻力量。

2.2 國內外研究現狀

近年來,人群密度檢測技術隨著計算機視覺和深度學習領域的迅速發展而得到了顯著的進步。特別是基於深度學習的目標檢測演算法,在人群密度估計和監控領域表現出了優異的效能。YOLO系列作為其中的佼佼者,自從YOLOv1的推出以來,每一次版本迭代都在檢測速度、準確性以及模型的適應性方面帶來了突破。

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

YOLO系列作為目標檢測領域的重要演算法之一,從YOLOv5到最新的YOLOv8,不斷地在速度和準確度上進行最佳化。YOLOv5以其輕量級和高效性在實時應用場景中得到了廣泛的應用。隨後,YOLOv6、YOLOv7和YOLOv8透過引入更先進的特徵融合機制、注意力機制和更精細的邊界框預測方法,進一步提升了檢測的準確性和魯棒性[1][2]

除了YOLO系列,Transformer-based的目標檢測演算法如DETR和ViT透過自注意力機制有效捕獲全域性資訊,展現出在複雜場景下的優越檢測效能[3]。Glod-YOLO作為YOLO的一個改進版本,透過整合全域性上下文資訊和區域性細節資訊,有效提升了小目標檢測能力,特別是在不同人群密度場景中的應用表現出色[4]

另一方面,隨著演算法研究的深入,資料集的多樣性和質量也成為影響人群密度檢測效能的重要因素。最近,一些研究專注於透過生成對抗網路(GANs)來增強訓練資料集,模擬更加複雜多變的人群場景,從而提高模型的泛化能力[5]。此外,跨域學習的策略也被提出用於改善模型在不同型別資料集上的適應性和穩定性。

雖然當前基於深度學習的人群密度檢測技術已取得了顯著進步,但在實時性、準確性、模型泛化能力等方面仍面臨挑戰。未來的研究可能會集中在最佳化演算法結構、提高計算效率、增強模型對不同場景的適應性以及利用未標記資料進行半監督或無監督學習等方面。

2.3 要解決的問題及其方案

2.3.1 要解決的問題

在開發基於YOLOv8/v7/v6/v5的人群密度檢測系統時,我們面臨著一系列技術挑戰和需求,旨在實現高準確度、高實時性的人群監控,並提供使用者友好的互動介面。以下是針對這些挑戰的解決方案和系統設計考慮:

要解決的問題

  1. 人群密度檢測的準確性和速度: 人群密度檢測的核心挑戰在於如何準確、快速地處理和分析大規模人群資料。考慮到人群場景的多樣性以及個體之間的遮擋現象,本系統需要採用高效的深度學習模型來提取人群特徵,並實現對密集人群的準確識別。透過整合YOLOv8/v7/v6/v5系列演算法,我們能夠利用它們在速度和準確性上的優勢,實現實時的人群密度監控。

  2. 環境適應性和模型泛化能力: 考慮到不同的監控場景(如室內外環境、光照變化、天氣條件等)對人群密度檢測準確性的影響,本系統需要具備強大的環境適應性和泛化能力。透過在多樣化的資料集上訓練深度學習模型,並利用資料增強技術模擬不同環境條件,我們可以提高模型在各種場景下的準確性和魯棒性。

  3. 使用者互動介面的直觀性和功能性: 為了確保使用者能夠高效地使用人群密度檢測系統,我們採用基於streamlit的Web介面設計,提供直觀易用的操作介面。使用者可以透過簡單的點選操作,上傳圖片或影片進行檢測,甚至實時檢視攝像頭捕獲的畫面,並且能夠輕鬆切換不同的模型檔案,滿足不同的監控需求。介面透過CSS美化,進一步提升了使用者體驗。

  4. 資料處理能力和儲存效率: 面對大量的監控資料,本系統設計了高效的資料處理流程,確保了快速的資料載入、處理和分析能力。透過採用PyTorch框架,我們能夠利用其高效的計算圖和自動梯度計算,加速模型的訓練和推理過程。同時,系統採用了高效的資料儲存機制,最佳化了長期資料的管理和查詢效率,保障了資料的安全性和隱私保護。

  5. 系統的可擴充套件性和維護性: 本系統設計考慮了未來的可擴充套件性,支援無縫整合新的檢測模型或更新現有模型,以適應新的監控需求或技術進步。透過使用Pycharm作為開發IDE,我們確保了程式碼的高質量和可維護性,便於系統的持續迭代和升級。

2.3.2 解決方案

針對本系統旨在解決的人群密度檢測問題,我們提出了一系列綜合的解決方案。這些方案不僅涵蓋了深度學習模型的選擇和最佳化,還包括了技術框架、網頁設計、以及開發工具的應用,確保系統能夠準確、快速且穩定地執行。

深度學習模型的選擇和最佳化

  • 模型架構:選用YOLOv8/v7/v6/v5系列作為核心的深度學習模型,依據具體的應用場景和效能需求選擇最合適的版本。這些版本之間提供了速度和準確性的不同平衡點,能夠適應各種規模和需求的人群密度檢測任務。
  • 資料處理和增強:為提升模型的泛化能力和準確性,將採用多種資料增強技術,如隨機裁剪、縮放、旋轉和色彩調整等,以及針對特定場景的最佳化處理方法。
  • 遷移學習與模型最佳化:透過在大規模通用資料集上預訓練的模型作為基礎,使用人群密度檢測的特定資料集進行微調,快速提升效能。同時,探索模型壓縮和量化等技術,以提高模型在邊緣裝置上的執行效率。

技術框架和開發工具

  • PyTorch框架:選用PyTorch作為主要的深度學習框架,憑藉其靈活性和強大的GPU加速功能,適合進行快速的模型開發和迭代。
  • Streamlit網頁設計:採用Streamlit框架快速構建互動式Web應用。Streamlit的簡潔性和靈活性使得開發複雜的人群密度檢測應用成為可能,使用者能夠透過簡單的操作上傳影像、影片或直接連線實時攝像頭進行檢測。
  • CSS美化:利用CSS進一步最佳化Web介面的美觀度和使用者體驗,提供清晰、友好的操作介面。
  • PyCharm開發環境:使用PyCharm作為主要的整合開發環境(IDE),它提供了優秀的程式碼管理、除錯和測試功能,加速開發流程。

功能實現與系統設計

  • 多模型支援與切換:設計系統支援不同版本的YOLO模型,如YOLOv8/v7/v6/v5,使用者可以根據實際需要選擇最適合的模型進行人群密度檢測。
  • 多輸入源適應性:系統設計為支援多種輸入源,包括影像檔案、影片流和實時攝像頭輸入,以適應不同的應用場景和使用者需求。
  • 使用者互動介面:透過Streamlit實現直觀的使用者互動介面,使用者可以輕鬆上傳資料、切換模型、檢視檢測結果。

資料處理與效能最佳化

  • 高效資料載入:採用PyTorch高效的資料預處理和載入機制,確保了資料處理的速度和準確性。
  • 系統效能最佳化:對整個系統進行效能分析和調優,包括但不限於演算法最佳化、後端服務最佳化,以及前端互動的流暢性最佳化,確保使用者能夠獲得高效穩定的使用體驗。

2.4 博文貢獻與組織結構

本文深入探討了基於YOLOv8/v7/v6/v5的人群密度檢測系統,全面介紹了從演算法選擇、資料集處理到系統設計與實現的每一步驟。我們的工作不僅涉及了對現有目標檢測技術的深入分析,也包括了前沿技術的應用實踐。本研究的主要貢獻如下:

  1. 全面的文獻綜述:詳盡地回顧了人群密度檢測領域的相關文獻,包括但不限於YOLO系列演算法的發展歷程、其他目標檢測演算法的比較、以及人群密度檢測面臨的挑戰和解決策略。這為本文的研究提供了堅實的理論基礎。

  2. 精細的資料集處理:介紹了針對人群密度檢測任務所採用的資料集處理技術,包括資料增強、標註最佳化等策略,以提高模型的泛化能力和檢測精度。

  3. 演算法選擇與最佳化:深入分析了YOLOv8/v7/v6/v5等不同版本的優缺點,根據人群密度檢測的具體需求,提出了選擇和最佳化模型的策略。

  4. 互動式Web應用設計:利用Streamlit框架,設計並實現了一個美觀、友好、易於使用的網頁應用,使使用者能夠方便地上傳影像或影片進行人群密度檢測,並支援實時攝像頭輸入。

  5. 效能比較與分析:透過對YOLOv7、v6、v5等版本進行綜合對比,展示了各版本在不同場景下的檢測效果,為使用者選擇合適的模型提供了參考。

  6. 開放資源:提供了完整的資料集、預訓練模型和程式碼資源包下載連結,使得研究人員和開發者可以方便地復現和進一步研究本文的工作。

部落格後續章節的組織結構:

  • 緒論: 簡要介紹人群密度檢測的背景、意義和研究現狀,以及本研究的目標和主要貢獻。

  • 演算法原理: 詳細介紹YOLOv8/v7/v6/v5等演算法的原理、架構和關鍵技術,以及這些演算法在人群密度檢測任務中的應用和最佳化策略。

  • 資料集處理: 介紹資料集的選擇、預處理、增強等步驟,以及如何構建適合訓練和驗證的資料集。

  • 程式碼介紹: 提供模型訓練和預測的詳細程式碼介紹,包括環境配置、引數設定、訓練過程和結果評估等。

  • 實驗結果與分析: 展示不同模型在人群密度檢測任務上的實驗結果,包括準確率、檢測速度等指標的對比分析。

  • 系統設計與實現: 詳細介紹基於Streamlit的互動式web介面。


3. 資料集處理

在開發人群密度檢測系統的過程中,使用的資料集對於確保系統能夠準確識別和估計人群至關重要。我們的資料集是經過精心挑選和準備的,它包含了10,429張影像,涵蓋了從商場、交通樞紐到公共廣場等多種公共場所的實時監控影像。這些影像被分為8091張訓練集影像、1558張驗證集影像和780張測試集影像。這種分配確保了模型可以在充足的資料上進行訓練,同時有足夠的影像來驗證和測試模型的泛化能力和準確性。

Chinese_name = {'person': "行人"}

影像中的每一個行人都被精確的紅色邊框標註,標註的目的是識別出每個個體。所有影像均經過預處理,包括尺寸調整和標準化,以確保模型能夠在標準化的資料上訓練,從而減少因變化的環境條件帶來的影響。此外,我們還應用了多種資料增強技術,如隨機裁剪、旋轉、翻轉,以及可能的顏色抖動等,這些方法不僅提高了模型對不同環境變化的適應性,也提高了模型在處理不同人群密度時的準確性。

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

我們對資料集的分析揭示了一些關鍵的特徵。透過對邊界框分佈的視覺化,我們觀察到一個顯著的模式:多數邊界框傾向於出現在影像的中心區域。這可能表明拍攝場景中的人群經常聚集在中間區域,或者拍攝角度傾向於使人群位於影像中央。這樣的發現促使我們針對檢測模型進行特別的調整,如調整模型的空間注意力機制,確保即使人群聚集在影像中心時,模型也能有效地檢測到邊緣區域的人群。

邊界框的大小分佈進一步提示我們,大量的邊界框相對較小,這可能表明資料集中存在大量遠景影像,或者影像中的人相對較小。這對於確定模型中錨點的尺寸範圍至關重要,尤其是當我們使用基於YOLOv8/v7/v6/v5的演算法時。對於這些演算法,錨點尺寸需要精心設計,以便模型能夠有效地識別和定位小目標。

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

總的來說,我們的資料集是為實現高準確性的人群密度檢測而精心構建的。透過深入分析資料集的特點和挑戰,我們能夠調整和最佳化我們的深度學習模型,使其不僅能夠處理高密度的人群場景,也能夠準確地識別和計數分佈稀疏的個體。在接下來的章節中,我們將深入探討資料集的具體處理方法、模型架構的選擇與最佳化、以及我們的系統如何在多樣化的現實世界場景中表現出卓越的效能。


4. 原理與程式碼介紹

4.1 YOLOv8演算法原理

YOLOv8是目前YOLO系列中最新的一階段目標檢測演算法,相較於其他主流目標檢測演算法,速度更快,精度更高,效能更好,在眾多工上取得了SO他的成績。YOLOv8目前一共有5個版本,包括:YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l、YOLOv8x,考慮到計算速度、實時性、精度,本文選擇了YOLOv8s作為Baseline,在此基礎上改進和創新滿足小目標檢測的任務。相較於YOLOv5,YOLOv8主要有兩大改進,首先檢測頭部分換成了當前主流的解耦頭,同時從Anchor-Based變為Anchor-Free。其次拋棄了以往IOU匹配或者單邊比例的匹配方式,而是使用了Task-AlignedAssigner正負樣本匹配方式,並引入了DFLloss。在資料增強部分借鑑了YOLOX的思想,在最後10個epoch關閉Mosiac資料增強,有效提升精度。

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

YOLOv8在目標檢測技術領域的主要特點和改進主要集中在以下幾個方面:

  • 骨幹網路和Neck部分跨階段區域性網路(Cross Stage Partial Network, CSP)模組的預處理從三次卷積換成了兩次卷積,借鑑了YOLOv7 ELAN模組多堆疊的設計思想,將YOLOv5的C3結構換成了梯度流更豐富的C2f結構,並對不同尺度模型調整了不同的通道數,使網路能夠學習到更多的特徵,並且具有更強的魯棒性。CSP模組的預處理從三次卷積換成了兩次卷積,並且借鑑了YOLOv7的多堆疊結構。具體的實現方式是第一次卷積的通道數擴充為原來的兩倍,然後將卷積結果在通道上對半分割,這樣可以減少一次卷積的次數,加快網路的速度。
  • 檢測頭部分,YOLOv8採用無錨分體式檢測頭,與基於錨框的方法相比,有助於提高準確性和更高效的檢測過程。Head部分較YOLOv5而言有兩大改進。首先,換成了目前主流的解耦頭結構,將分類和檢測頭分離,用於緩解分類和定位任務之間存在的衝突;其次,參考YOLOX,從Anchor-Based換成了Anchor Free,面對長寬不規則的目標比較有優勢。
  • 損失函式計算部分,YOLOv8的Loss計算包括兩個部分:分類分支和迴歸分支。分類分支依然採用BCE Loss,迴歸分支需要和分散式聚焦損失函式(Distribution Focal Loss, DFL)中提出的積分形式表示法繫結,因此使用了DFL,同時還使用了(Complete Inter section over Union, CIoU)Loss。

4.2 模型構建

在本章節中,我們將深入介紹構建識別模型的程式碼流程和結構。本系統的模型構建過程利用了Python程式語言的高階功能,結合了計算機視覺庫OpenCV和機器學習庫PyTorch,透過精心設計的類和方法實現了一個高效且準確的目標識別模型。

首先,我們利用OpenCV,這是一個強大的計算機視覺庫,它為我們處理影像和影片提供了必要的工具。OpenCV在模型訓練和評估中的作用不可或缺,尤其是在進行影像的預處理和增強時。隨後,我們將模型的核心建立在PyTorch框架之上。PyTorch是目前深度學習研究和實踐中最受歡迎的框架之一,因其出色的靈活性和強大的功能被廣泛使用。在程式碼中,我們透過select_device函式選擇最合適的硬體裝置來執行我們的模型,這保證了無論在GPU還是CPU上,模型都能以最佳狀態執行。

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

在程式碼中,我們設定了使用GPU或CPU作為模型運算的裝置,這一選擇取決於PyTorch能否檢測到可用的GPU。在初始化(init)過程中,我們為模型設定了預設引數,並準備了類別名稱列表。這些名稱是用於在預測時標註出各個檢測到的物體的類別。我們使用Chinese_name字典將類別ID對映為對應的中文名稱,使得模型的輸出更易於理解。

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基類,體現了物件導向程式設計的一個優點——程式碼複用。透過繼承,我們能夠將通用的邏輯(如載入模型、預處理影像等)放在基類中,而將特定的邏輯(如呼叫YOLO模型進行預測)在子類中實現。在load_model方法中,模型從給定的路徑載入。載入後,我們對模型進行預熱,即在選擇的裝置上執行一個前向傳播,以確保模型執行時的效能。在preprocess方法中,我們將影像轉換為模型預期的格式,雖然這裡的程式碼保持原始影像不變,但這提供了進行如歸一化、縮放或裁剪等預處理步驟的可能性。

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)

predict方法是模型預測的核心,它將預處理後的影像作為輸入,呼叫YOLO模型進行物體檢測,並返回檢測結果。在postprocess方法中,我們對模型的輸出進行解析和格式化,將其轉換為包含類別名稱、邊界框座標、置信度分數以及類別ID的字典列表。這樣的輸出格式便於後續的分析和視覺化。透過呼叫set_param方法,使用者可以根據需要動態調整模型引數,如置信度閾值和IOU閾值,進一步最佳化模型的效能。

整體而言,這段程式碼透過精心設計的類結構和方法,實現了一個完整的目標識別流程,從影像輸入到預測輸出,每一個環節都經過了最佳化和定製,以確保模型能夠在實際應用中達到最佳的識別效果。

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,後者是構建深度學習模型的主要工具,提供了GPU加速及自動微分等強大功能。yaml用於處理配置檔案,這些檔案通常包含有關訓練資料、模型引數等重要資訊。YOLO類來自ultralytics庫,是針對YOLO模型訓練和推理流程的一個封裝。abs_path函式用於處理檔案路徑,確保無論在哪個工作環境中,程式碼都能正確地找到檔案位置。

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

接下來,我們定義了用於訓練過程的關鍵變數。device變數確保模型能夠利用GPU進行訓練,如果GPU不可用,則回退到CPU。

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

資料集準備:變數workers定義了在資料載入過程中用於加速讀取的程序數。而batch設定了每個批次處理的影像數量,這直接影響記憶體消耗和訓練速度。資料集的路徑是透過data_path變數指定的,它使用abs_path函式從相對路徑轉換為絕對路徑,並透過replace函式統一了路徑格式。在實際訓練過程中,這保證了模型能夠正確地訪問到資料集。

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

我們透過讀取並更新資料集的YAML配置檔案,來確保資料路徑的準確性。這個步驟對於訓練過程至關重要,因為所有的訓練影像、標籤和驗證影像都依賴於這些路徑的設定。

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模型,並呼叫其train方法開始訓練流程。這裡,我們指定了資料配置檔案、訓練裝置、工作程序數、輸入影像大小、訓練輪數、批次大小和訓練任務的名稱。這些引數共同構成了訓練環境的基礎,並直接影響到訓練效率和模型效能。

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  # 指定訓練任務的名稱
)

此程式碼段揭示瞭如何使用YOLO模型的訓練機制,其中包含了多個層面的設定。所有這些設定都被細緻地調整和最佳化,以期在實際應用中獲得最好的效果。透過該訓練流程,研究人員和實踐者可以對YOLO模型進行訓練和微調,進而在各種環境中實現準確的識別。


5. 實驗結果與分析

5.1 訓練曲線

在深度學習模型的訓練過程中,損失函式的變化和評價指標的變化是衡量模型效能的關鍵。透過觀察YOLOv8在訓練過程中各個損失函式和效能指標的變化趨勢,我們可以對模型的學習效率和潛在效能進行分析。

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

首先觀察損失函式的圖表,我們可以看到,無論是邊界框損失(box_loss)、分類損失(cls_loss)還是目標檢測損失(obj_confidence loss),所有的損失值隨著迭代次數的增加而顯著下降。這表明模型能夠從資料中學習,並不斷最佳化其預測邊界框的位置、大小、類別以及目標的置信度。值得注意的是,在初期訓練階段,損失函式的下降較為迅速,這通常是由於模型在學習過程中快速糾正其隨機初始化的權重。隨著訓練的進行,損失曲線趨於平穩,這表明模型開始收斂,並在提升細微改進上變得更為困難。

在效能指標方面,Precision和Recall的曲線表明模型對於人群密度檢測具有較高的準確性和回收率。精確度隨著迭代次數的增加而提高,這表明模型能夠減少假陽性的數量,即減少錯誤標記為人的檢測框。召回率也隨之增加,意味著模型錯過檢測真實人群的數量在減少。對於人群密度檢測任務而言,這兩個指標的提升顯著提高了系統的可靠性。

mAP(mean Average Precision)是衡量模型整體效能的重要指標,我們可以看到mAP@0.5和mAP@0.5:0.95均呈上升趨勢,其中mAP@0.5指標已經達到相對較高的水平。mAP@0.5較高的數值意味著模型在容忍較大IoU(交併比)閾值時效能良好,而mAP@0.5:0.95則更加全面地考察了模型在不同IoU閾值下的效能。這個指標的穩步提升表明模型對不同大小和形狀的人群都有著良好的檢測能力,這對於處理不同場景下的人群密度檢測至關重要。

總體而言,這些指標提供了對模型訓練效果的深入見解。損失函式的下降和效能指標的提升共同驗證了YOLOv8模型在處理人群密度檢測任務時的有效性。這些分析結果不僅證明了我們的訓練策略的有效性,也為未來進一步最佳化模型提供了資料支援。在隨後的部落格章節中,我們將詳細探討這些效能指標對模型選擇和調優的具體影響,以及如何利用這些見解來提高我們人群密度檢測系統的準確性和可靠性。

5.2 混淆矩陣

混淆矩陣是評估分類模型效能的重要工具,它顯示了模型預測與實際標籤之間的關係。本文中提供的混淆矩陣反映了我們的人群密度檢測模型在區分“人”與“背景”兩個類別時的效能。在該混淆矩陣中,橫軸表示真實標籤,縱軸表示模型預測。

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

從圖中我們可以觀察到,模型在將“人”正確分類方面表現出色,預測為“人”的例項中有91%是正確的,這反映在混淆矩陣左上角的數值上。同時,背景的識別幾乎是完美的,模型成功地將所有的背景例項識別為背景,如右下角的1.00所示。這表明模型具有極高的真負類率(True Negative Rate),幾乎沒有將背景誤判為“人”。

然而,模型的假負類率(False Negative Rate)是9%,意味著有9%的“人”被錯誤地分類為“背景”。雖然這個數值相對較低,但它提示我們模型在處理特定情況下可能會錯過一些行人,這在高密度人群或遮擋較多的場景中可能更為常見。

總體來說,混淆矩陣表明我們的模型在人群密度檢測任務上的表現是相當優秀的,特別是在正確識別背景方面。高的真正類率(True Positive Rate)和真負類率表明模型的準確性高,這對於人群監控和管理應用來說至關重要。不過,仍有改進的空間,特別是減少假負類的比例,我們可以透過進一步的模型調整或提供更多具有挑戰性場景的訓練樣本來解決這個問題。

這些分析結果提供了對模型效能的深入理解,並指導了進一步最佳化模型的方向。我們的目標是在保持高準確性的同時,進一步減少任何可能的誤判,以供建立一個可靠的人群密度檢測系統。未來的工作將側重於提升模型在各種複雜場景下的表現,包括提升其對遮擋和密集人群的檢測能力。透過對模型進行細緻的評估和調整,我們期望達到更高的精確度和更低的誤判率,使得我們的人群密度檢測系統能在各種環境中都表現出色。

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.940 0.941 0.940 0.942
F1-Score 0.89 0.89 0.89 0.89

(3)實驗結果分析

我們的實驗設計旨在公平、客觀地比較不同版本的YOLO演算法在人群密度檢測這一具體任務上的表現。考慮到人群密度檢測對實時效能和準確度都有較高的要求,我們選擇了F1-Score和mAP作為主要的評價指標。F1-Score平衡了精確度和召回率,而mAP(mean Average Precision)則提供了一個全面評價模型檢測精度的指標。實驗在相同條件下進行,以確保結果的公平性和可比性。

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

根據實驗結果,我們發現所有模型在F1-Score上均達到了0.89的水平,顯示出在平衡精確度和召回率方面,這些模型具有相似的效能。然而,在mAP指標上,雖然差異不大,但YOLOv8n以0.942的得分略微領先於其他模型。這表明在人群密度檢測任務中,YOLOv8n能夠更準確地識別和定位目標。

儘管YOLOv8n在mAP上表現略好,但所有模型在F1-Score上的一致表現也揭示了一個重要事實:在處理具有挑戰性的人群密度檢測任務時,模型的細微差異可能不會顯著影響其綜合效能(即精確度和召回率的平衡)。這表明,在實際應用中,選擇哪個版本的YOLO模型可能需要根據實際場景的具體需求來決定,如實時效能、資源消耗和易用性等因素。

綜上所述,雖然YOLOv8n在我們的實驗中略佔優勢,但不同版本的YOLO模型都展現了在人群密度檢測任務上的強大能力。未來的研究可以探討如何進一步最佳化模型以適應更多樣化的應用場景,例如透過自適應演算法或深度學習技術提高模型在極端條件下的魯棒性和準確度。我們也期待看到YOLO演算法在更廣泛的實時影片分析和計算機視覺任務中的應用,為研究和工業界帶來更多的創新和價值。


6. 系統設計與實現

6.1 系統架構概覽

在我們的研究中,我們專注於開發一個基於YOLOv5/v6/v7/v8深度學習模型的人群密度檢測系統。本系統旨在有效地處理和分析大量影片資料,實現高準確度和高效率的人群密度檢測。以下是系統架構設計的具體內容:

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)
  1. 資料預處理模組:負責對輸入的影片流進行預處理,包括影片幀提取、尺寸調整和歸一化等操作。此模組確保資料格式符合模型輸入要求,為後續的密度檢測提供準備。

  2. 模型訓練與最佳化模組:整合了YOLOv5/v6/v7/v8等多個版本的模型。透過對比實驗,我們選擇了表現最優的模型進行進一步最佳化。我們利用transfer learningdata augmentation等技術,提升模型在特定資料集上的效能。此外,還實現了一個自動化的模型選擇機制,能夠根據實際檢測需求動態選擇最合適的模型版本。

  3. 檢測與分析模組:是系統的核心,負責實際的人群密度檢測任務。該模組使用最佳化後的YOLO模型對預處理後的影片幀進行分析,透過識別和計數人群來估計密度。為了提高準確率和減少誤差,我們引入了post-processing技術,如非極大值抑制(Non-Maximum Suppression, NMS)來最佳化檢測結果。

  4. 使用者互動介面:我們採用Streamlit框架構建了一個直觀、美觀且易於使用的Web應用,使用者可以透過這個介面上傳影片檔案、實時檢視檢測結果和分析報告。介面設計考慮了使用者體驗,確保操作簡單明瞭。

6.2 系統流程

在設計基於YOLOv5/v6/v7/v8的人群密度檢測系統時,我們精心規劃了一套清晰、高效的處理流程,以確保系統既能提供高準確性的檢測結果,也能保持良好的使用者體驗。以下是該系統的主要流程步驟,詳細介紹了從影片輸入到結果輸出的全過程:

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)
  1. 影片上傳:使用者透過Streamlit介面上傳需要分析的影片檔案。該介面為使用者提供了一個直觀簡潔的上傳介面。

  2. 影片預處理:上傳的影片檔案被傳遞給VideoPreprocessor類,其中的extract_frames方法首先被呼叫,從影片中提取出幀。接著,resize_frames方法調整這些幀的尺寸以符合模型的輸入要求。

  3. 模型選擇與載入:根據使用者的選擇或系統推薦,ModelTrainer類中的select_model方法會選擇最適合當前影片特性的YOLO模型版本。系統會自動載入預先訓練好的模型引數,準備進行密度檢測。

  4. 人群密度檢測:影片幀經過預處理後,被送入DensityDetector類處理。detect_density方法使用選定的YOLO模型對每一幀進行人群檢測,包括人物的識別和位置的定位。

  5. 結果最佳化與分析:檢測完成後,為了提高結果的準確性,post_processing方法應用了諸如非極大值抑制(NMS)等技術最佳化檢測結果。然後,系統分析檢測資料,計算出人群密度等關鍵指標。

  6. 結果視覺化與報告生成:最後,ResultsVisualizer類的display_results方法被用於生成並展示檢測結果。使用者可以在Streamlit介面上看到包括人群數量估計、密度分佈圖等在內的詳細報告。

  7. 使用者互動反饋:使用者有機會透過介面提供反饋,比如關於系統準確性的評價或對介面易用性的建議。這些反饋將被用於未來的系統最佳化和改進。

透過這一流程,我們的人群密度檢測系統不僅能夠有效地處理影片資料,提供準確的人群密度估計,而且還能透過友好的使用者介面,使使用者輕鬆地上傳影片、檢視和分析結果。這一流程充分展示了深度學習和計算機視覺技術在實際應用中的強大能力,同時也體現了我們團隊在系統設計和使用者體驗方面的考慮。


程式碼下載連結

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

基於深度學習的人群密度檢測系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

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

演示與介紹影片https://www.bilibili.com/video/BV1aD421W7ua/
YOLOv8/v7/v6/v5專案合集下載https://mbd.pub/o/bread/mbd-ZZ2Zmp1s
YOLOv8和v5專案完整資源下載https://mbd.pub/o/bread/mbd-ZZ2ZmZxp
YOLOv7專案完整資源下載https://mbd.pub/o/bread/mbd-ZZ2Zmppw
YOLOv6專案完整資源下載https://mbd.pub/o/bread/mbd-ZZ2Zmptr

基於深度學習的人群密度檢測系統(網頁版+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. Redmon J, Farhadi A. Yolov3: An incremental improvement[J]. arXiv preprint arXiv:1804.02767, 2018 ↩︎

  2. Bochkovskiy A, Wang C Y, Liao H Y M. Yolov4: Optimal speed and accuracy of object detection[J]. arXiv preprint arXiv:2004.10934, 2020. ↩︎

  3. Beal, Josh, et al. "Toward transformer-based object detection." arXiv preprint arXiv:2012.09958 (2020). ↩︎

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

  5. Saxena, Divya, and Jiannong Cao. "Generative adversarial networks (GANs) challenges, solutions, and future directions." ACM Computing Surveys (CSUR) 54.3 (2021): 1-42. ↩︎

相關文章