摘要:在本部落格中,我們深入探討了基於YOLOv8/v7/v6/v5等深度學習模型的生活垃圾檢測與分類系統。作為核心,我們採用了YOLOv8演算法,並與YOLOv7、YOLOv6、YOLOv5進行了綜合效能對比,以評估各個版本在生活垃圾檢測與分類任務上的表現和效率。我們詳細介紹了相關領域的國內外研究現狀,包括但不限於資料集的處理方法、演算法的原理基礎,以及如何構建和訓練高效的模型。特別地,我們還分享了模型構建與訓練的詳細程式碼,為感興趣的研究者和開發者提供實踐指導。此外,本部落格還展示瞭如何設計基於Streamlit的互動式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/BV1nZ421i7Y9/
YOLOv8/v7/v6/v5專案合集下載:https://mbd.pub/o/bread/mbd-ZZ2Xm5xw
YOLOv8和v5專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2XmZlx
YOLOv7專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2XmpZy
YOLOv6專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2Xm5dt
若您想獲得博文中涉及的實現完整全部資原始檔(包括測試圖片、影片,py, UI檔案,訓練資料集、訓練程式碼、介面程式碼等),這裡已打包上傳至博主的麵包多平臺,見可參考部落格與影片,已將所有涉及的檔案同時打包到裡面,點選即可執行,完整檔案截圖如下:
1. 網頁功能與效果
(1)開啟攝像頭實時檢測:本系統允許使用者透過網頁直接開啟攝像頭,實現對實時影片流中生活垃圾的檢測。系統將自動識別並分析畫面中的生活垃圾,並將檢測結果實時顯示在使用者介面上,為使用者提供即時的反饋。
(2)選擇圖片檢測:使用者可以上傳本地的圖片檔案到系統中進行生活垃圾檢測。系統會分析上傳的圖片,識別出圖片中的生活垃圾,並在介面上展示帶有生活垃圾標籤和置信度的檢測結果,讓使用者能夠清晰地瞭解到每個生活垃圾狀態。
(3)選擇影片檔案檢測:系統支援使用者上傳影片檔案進行生活垃圾檢測。上傳的影片將被系統逐幀分析,以識別和標記影片中每一幀的生活垃圾。使用者可以觀看帶有生活垃圾檢測標記的影片,瞭解影片中生活垃圾的變化。
(4)選擇不同訓練好的模型檔案:系統整合了多個版本的YOLO模型(如YOLOv8/v7/v6/v5),使用者可以根據自己的需求選擇不同的模型進行生活垃圾檢測。這一功能使得使用者能夠靈活地比較不同模型的表現,以選擇最適合當前任務的模型。
在我們的系統中,開啟攝像頭實時檢測功能允許使用者透過簡單的點選操作即刻開啟攝像頭,實時捕捉並展示場景,系統能在影片流中準確進行生活垃圾的檢測和分類,並即時展示結果。此外,選擇圖片進行檢測功能使得使用者可以上傳本地圖片,系統將自動識別圖片中的垃圾物體,並展示其分類結果。對於影片內容的分析,選擇影片檔案檢測功能提供了逐幀檢測的能力,確保每一幀的垃圾物體都能被準確標記和分類。
我們還引入了選擇不同訓練好的模型檔案功能,透過這一功能,使用者可以根據需要選擇不同版本的YOLO模型進行檢測,以滿足不同的精度和速度需求。為了提升使用者體驗,我們設計了檢測畫面和原始畫面同時或單獨顯示的功能,使使用者能夠根據需要檢視檢測結果或原始畫面,或者兩者並列對比。
系統的靈活性還體現在能夠讓使用者透過可點選下拉框單獨標記特定目標並顯示結果,這樣使用者可以集中關注於特定型別的垃圾,便於特定場景下的應用。檢測結果在頁面表格顯示,動態調整檢測引數功能,不僅將檢測結果以表格形式直觀展現,還允許使用者根據實際需求動態調整置信度閾值和IOU閾值,以獲得最佳檢測效果。
最後,為了方便使用者儲存和分享檢測結果,系統提供了匯出檢測結果與匯出標記結果功能,允許使用者將檢測結果匯出為CSV檔案,或將標記的圖片、影片匯出為AVI影像檔案。透過這些詳細介紹的功能,使用者能夠體驗到該系統不僅在技術上具有前沿性,而且在實際使用中極具便捷性和靈活性,有效地推進了生活垃圾檢測與分類技術的應用。
2. 緒論
2.1 研究背景及意義
在當今社會,隨著人口增長和城市化程序的加快,生活垃圾產量急劇增加,成為全球面臨的重大環境問題之一。有效的垃圾分類和回收不僅可以減輕垃圾處理設施的壓力,還可以促進資源的迴圈利用,對保護環境、實現可持續發展具有重要意義。然而,手動垃圾分類耗時耗力,且準確性難以保證,因此,開發一種自動化、高效、準確的生活垃圾檢測與分類系統顯得尤為迫切。
近年來,深度學習技術的快速發展為解決這一問題提供了新的思路和方法。特別是目標檢測演算法,在影像識別和分類領域已經展現出強大的能力。其中,You Only Look Once(YOLO)[1]系列演算法因其高效和準確性而廣受關注。從YOLOv1到最新的YOLOv8[2],每一代的迭代都在效能上有所提升,使得實時且準確地檢測和分類影像成為可能。這些進步不僅推動了計算機視覺技術的發展,也為生活垃圾檢測與分類提供了強有力的技術支援。
儘管如此,將這些演算法應用於生活垃圾檢測與分類仍面臨許多挑戰。生活垃圾的種類繁多,形態各異,加之垃圾通常在複雜的背景中,使得檢測與分類變得更加困難。此外,不同垃圾之間的視覺特徵可能高度相似,要求演算法不僅要具有高準確度,還需要能夠識別細微的差別。為了解決這些問題,研究人員不斷在演算法最佳化、資料集擴充、模型訓練等方面進行探索和嘗試,以期提高系統的效能。
隨著技術的不斷進步和資料資源的豐富,自動化的生活垃圾檢測與分類系統將在環境保護和資源回收利用中發揮越來越重要的作用。
2.2 國內外研究現狀
在探索生活垃圾檢測與分類的技術進展方面,近年來的研究主要集中在深度學習和計算機視覺的應用上。尤其是目標檢測演算法的快速發展,為解決垃圾檢測與分類的複雜問題提供了新的解決方案。YOLO系列作為目標檢測領域的先驅之一,其不同版本的迭代和改進不斷提升了檢測的準確率和效率,特別是在處理具有高度變異性的生活垃圾影像時表現出了優越的效能。
最新的YOLOv8演算法在精度和速度上都有顯著提升。相比於YOLOv5[3]、YOLOv6[4]、YOLOv7[5],YOLOv8透過最佳化模型結構和引入更高效的訓練策略,顯著提高了在複雜環境下的識別能力。此外,近期研究也開始探索如何透過融合多個模型或演算法來進一步提升系統的效能。例如,一些研究結合了卷積神經網路(CNN)和迴圈神經網路(RNN)來處理影片中的垃圾檢測問題,透過分析連續幀之間的時間關係來提高檢測準確性。
另外,為了解決生活垃圾種類多樣性和樣本不平衡的問題,研究人員也在不斷探索更有效的資料預處理和增強技術。最近的一項研究透過採用先進的資料增強技術,如GANs生成的合成影像,來擴充訓練資料集,從而提高模型對稀有垃圾類別的識別能力。同時,注意力機制的引入也成為提升模型效能的關鍵。透過讓模型聚焦於影像的關鍵區域,可以有效提高複雜背景下垃圾檢測的準確率。
除了YOLO系列,還有多種演算法和模型被提出和最佳化以適應複雜的生活垃圾檢測場景。例如,Faster R-CNN透過引入區域提議網路(RPN),大大提高了檢測的準確率和效率,尤其是在處理需要精確定位的任務中。RetinaNet則透過焦點損失(Focal Loss)解決了類別不平衡問題,顯著提升了檢測小物體的能力。
近年來,Transformer和注意力機制的引入為目標檢測帶來了新的突破。ViT(Vision Transformer)和DETR(Detection Transformer)展示了Transformer在視覺任務中的巨大潛力,尤其是它們在處理長距離依賴和複雜場景中的優勢。這些模型透過全域性資訊的整合,提高了對於複雜背景下垃圾物體的檢測精度。
在此背景下,一些專門針對生活垃圾檢測的演算法和模型也被提出。例如,Glod-YOLO利用改進的特徵提取和注意力機制,針對小物體和密集場景下的垃圾檢測進行了最佳化。此外,隨著開源社群的發展,像MMDetection這樣的工具庫為研究人員提供了強大的支援,使得測試和部署新的目標檢測演算法變得更加高效和便捷。
儘管目前的演算法已經能夠在一定程度上滿足生活垃圾檢測的需求,但仍面臨著許多挑戰,如提高在複雜環境下的檢測穩定性、處理類別不平衡問題以及提升小物體檢測的準確性等。未來的研究將可能集中在以下幾個方向:一是進一步探索深度學習模型的結構最佳化,特別是針對生活垃圾檢測任務的特定需求進行定製化改進;二是開發更加高效的資料增強和合成技術,以擴大訓練資料集,提高模型的泛化能力;三是利用多模態資訊和模型融合技術,整合視覺資料以外的其他資訊源,以實現更準確和魯棒的垃圾檢測結果。
2.3 要解決的問題及其方案
2.3.1 要解決的問題
在開發基於YOLOv8/v7/v6/v5的生活垃圾檢測與分類系統中,我們面對一系列挑戰,這些挑戰源於生活垃圾的多樣性、檢測環境的複雜性以及使用者對於系統易用性的高要求。以下是詳細的問題描述:
-
生活垃圾種類的廣泛性和特徵差異性:生活垃圾包括但不限於塑膠、紙張、金屬、玻璃等多種材質,每種材質的垃圾又有不同的形態和大小。系統需要具備高度的準確性,能夠準確識別並分類廣泛種類的垃圾,尤其是在細微特徵差異上。此外,垃圾的姿態多變、部分遮擋等現象也對模型的識別能力提出了挑戰。
-
環境適應性和模型泛化能力:生活垃圾檢測與分類通常需要在不同的環境下進行,如家庭、公共場所、垃圾處理中心等,這些環境在光照、背景複雜度等方面有很大的差異。因此,系統需要能夠適應這些變化,保證在各種環境條件下都能維持較高的識別準確率。
-
使用者互動介面的直觀性和功能性:一個直觀、功能齊全的使用者介面對於提升使用者體驗至關重要。使用者應能輕鬆上傳圖片或影片進行檢測,實時檢視攝像頭捕捉的畫面,並能簡單切換不同的模型進行測試。介面還應提供足夠的資訊,幫助使用者理解檢測結果,如顯示檢測到的垃圾類別和置信度等。
-
資料處理能力和儲存效率:鑑於系統將處理大量的影像和影片資料,強大的資料處理能力是必不可少的。此外,有效的資料儲存機制對於提高長期資料管理和查詢的效率也非常重要。在保證資料處理和儲存效率的同時,必須考慮到資料安全性和隱私保護,確保所有使用者資料的安全。
-
系統的可擴充套件性和維護性:隨技術進步和使用者需求的變化,系統可能需要引入更多的垃圾類別或整合新技術以提升效能。因此,系統的設計應充分考慮未來的可擴充套件性,使其能夠輕鬆整合新模型或功能。同時,良好的維護性也是確保系統長期穩定執行的關鍵,便於系統的更新和升級。
2.3.2 解決方案
針對生活垃圾檢測與分類系統的挑戰,我們提出了一套綜合的解決方案,旨在利用最新的深度學習技術和使用者友好的介面設計,實現一個高效且準確的分類系統。以下是我們計劃採取的關鍵措施:
- 深度學習模型的選擇和最佳化
-
模型架構選擇:我們選擇YOLOv8作為主要的深度學習模型框架,考慮到其在處理速度和準確性之間的優異平衡。YOLOv8的最新進展包括架構改進和演算法最佳化,使其非常適合實時且準確的生活垃圾檢測任務。同時,我們也會考慮YOLOv7、v6、v5等其他版本的模型進行對比分析,以確定最適合我們需求的模型版本。
-
資料增強與遷移學習:為了提高模型在不同環境條件下的泛化能力,我們將採用多種資料增強技術,如隨機裁剪、縮放、旋轉和色彩調整等。此外,透過在大規模通用資料集上預訓練的模型作為起點,使用遷移學習技術對其進行微調,可以有效提升模型在特定垃圾檢測任務上的表現。
- 技術框架和開發工具
-
PyTorch框架:我們選用PyTorch作為深度學習的核心框架,它不僅提供了靈活的程式設計環境,還支援強大的GPU加速能力,非常適合於快速開發和迭代深度學習模型。
-
Streamlit與CSS網頁設計:基於Streamlit構建使用者互動介面,該框架簡化了資料應用的開發流程,使得構建實時資料應用變得簡單快捷。透過結合CSS,我們可以進一步美化介面,提升使用者互動體驗。
-
PyCharm開發環境:使用PyCharm作為整合開發環境,它提供了程式碼自動完成、專案管理等功能,極大提高了開發效率和程式碼質量。
- 功能實現和系統設計
-
多輸入源支援:系統將支援影像、影片檔案和實時攝像頭等多種輸入源,滿足使用者在不同場景下的使用需求。使用者可以輕鬆上傳資料或直接透過攝像頭進行實時檢測。
-
動態模型切換:實現一個使用者友好的模型切換功能,讓使用者可以根據實際需求選擇不同版本的YOLO模型進行檢測。這一設計增加了系統的靈活性和實用性。
- 資料處理和儲存策略
-
高效的資料處理流程:利用PyTorch的資料載入和預處理機制,配合GPU加速,實現了高效的資料處理流程,確保了系統的實時效能。
-
智慧資料儲存解決方案:設計一個高效的資料儲存方案,對檢測結果進行有效的組織和索引,便於使用者進行查詢和分析,同時確保資料的安全性和隱私保護。
透過這些綜合措施的實施,我們計劃開發出一個既準確又易用的生活垃圾檢測與分類系統。該系統不僅能夠滿足不同使用者在多變環境下的應用需求,還提供了友好的使用者體驗和強大的資料處理能力,
2.4 博文貢獻與組織結構
本文深入探討了生活垃圾檢測與分類系統的設計與實現,貢獻主要體現在以下幾個方面:
-
任務相關文獻綜述:我們系統地回顧了當前生活垃圾檢測與分類領域的研究進展,包括最新的深度學習演算法如YOLOv8/v7/v6/v5,以及其他相關演算法的應用情況。這為本系統的研發提供了理論基礎和技術支援。
-
資料集的處理:詳細介紹了生活垃圾檢測與分類任務中使用的資料集處理方法,包括資料增強、清洗和標註等步驟。這一過程對提高系統的準確性和魯棒性至關重要。
-
演算法選擇與最佳化:深入分析了YOLOv8/v7/v6/v5等演算法在生活垃圾檢測與分類任務中的應用,包括演算法原理、優勢及其在不同場景下的表現。透過對比分析,為本系統選擇了最合適的演算法框架,並對其進行了相應的最佳化,以適應生活垃圾檢測的特殊需求。
-
美觀友好的網頁設計:採用Streamlit框架,設計了一個直觀易用的網頁介面,使用者可以透過這個介面上傳圖片、影片或實時監控攝像頭,進行垃圾檢測與分類。介面的美觀性和友好性大大提升了使用者體驗。
-
演算法效果對比:透過實驗,對比了YOLOv7、v6、v5等不同版本的演算法效果,包括檢測速度、準確率等關鍵指標。這些對比結果為讀者選擇適用於特定需求的演算法提供了有價值的參考。
-
資源分享:本文提供了完整的資料集和程式碼資源包,包括預處理資料、訓練和預測程式碼等,使得讀者可以輕鬆復現實驗結果,甚至在此基礎上進一步開發自己的生活垃圾檢測系統。
後續章節的組織結構如下: 緒論:介紹研究背景、目的和本文的主要貢獻;演算法原理:詳細介紹YOLOv8/v7/v6/v5等演算法的工作原理及其在生活垃圾檢測中的應用;資料集處理:討論使用的資料集及其預處理、增強方法。程式碼介紹:提供模型訓練和預測的詳細程式碼說明,包括環境搭建、引數配置和執行步驟。實驗結果與分析:展示不同模型在生活垃圾檢測任務上的實驗結果,並進行比較分析。系統設計與實現:介紹基於Streamlit的生活垃圾檢測系統的設計與實現細節。結論與未來工作:總結本文的研究成果,並討論未來的研究方向和潛在的改進空間。
3. 資料集處理
在本文的研究中,我們深入探討了生活垃圾的檢測與分類,關鍵的一步是使用精心準備的資料集來訓練我們的深度學習模型。資料集是深度學習模型的基石,其質量直接影響到模型的表現。本研究使用的資料集涵蓋了豐富的生活垃圾影像,包括但不限於可生物降解物、紙板、玻璃、金屬、紙張和塑膠等類別。資料集總數為10,464張影像,細分為7,324張訓練集、2,098張驗證集和1,042張測試集的圖片。這樣的資料分佈保證了模型在各個方面都有充分的訓練,同時留有足夠的樣本來驗證和測試模型的泛化能力。博主使用的類別如下:
Chinese_name = {'BIODEGRADABLE': "可降解", "CARDBOARD": '紙板', 'GLASS': "玻璃", 'METAL': "金屬", 'PAPER': "紙質", 'PLASTIC': "塑膠"}
對資料集的預處理和增強處理尤為關鍵。所有的影像都經過了自動方向校正,以確保影像方向的統一性,並移除了可能干擾模型訓練的EXIF方向資訊。此外,每張圖片都被統一調整到640x640畫素的尺寸,採用拉伸的方法以滿足模型的輸入要求。這樣的標準化處理是為了讓模型更好地學習和識別不同型別的垃圾,無論它們出現在影像中的哪個位置。
影像資料集的標籤和類別被詳細標註,以確保模型可以學習到從影像中區分不同垃圾類別的能力。從提供的資料集分佈圖中,我們可以看到不同類別的例項數量差異顯著,其中可生物降解物品的例項最多,其次是塑膠。這種不平衡分佈反映了實際生活中垃圾分類的常見情況,對模型的訓練提出了特定的挑戰。因此,平衡樣本或採取適當的權重調整方法可能是提高模型效能的關鍵步驟。
在資料集的空間分佈圖中,我們可以觀察到垃圾通常出現在影像的特定區域內,這對我們來說是一個重要的發現,因為它表明垃圾的位置可能有一定的模式。這一資訊可以用於指導模型訓練,例如,透過空間轉換的資料增強技術來模擬垃圾在影像中不同位置的出現,從而進一步提升模型的識別能力。
此外,垃圾物品的尺寸分佈圖揭示了物品的大小多樣性,這是垃圾檢測模型需要克服的另一個挑戰。模型需要能夠準確識別不同尺寸和比例的物品,這要求我們在模型設計時考慮到尺寸不變性。
4. 原理與程式碼介紹
4.1 YOLOv8演算法原理
YOLOv8繼續沿用了YOLO系列的核心設計理念,即“只看一次”(You Only Look Once),透過單次前向傳播就實現對影像中所有目標的檢測。這一設計極大地提高了目標檢測任務的實時性,使得YOLOv8非常適合需要快速響應的應用場景。
在網路架構方面,YOLOv8進一步最佳化了特徵提取器。傳統的YOLO模型使用單一的特徵提取網路,而YOLOv8可能引入了類似於特徵金字塔網路(FPN)和路徑聚合網路(PAN)的結構,這些結構能夠更有效地聚合不同尺度的特徵資訊,增強模型對於不同尺寸目標的檢測能力。
YOLOv8在損失函式的設計上也可能進行了創新。根據提供的資訊,YOLOv8可能採用了Distribution Focal Loss,這是對傳統Focal Loss的改進。Focal Loss是為了解決類別不平衡問題,透過調整正負樣本的權重來提高少數類別樣本的訓練效果。Distribution Focal Loss則可能進一步考慮了不同類別樣本分佈的特性,使得模型在學習時更加註重於那些難以區分的樣本,從而提高模型對於生活垃圾的檢測準確率。
YOLOv8在錨框(Anchor Boxes)的使用上做了重要的改進。它採用了TaskAlignedAssigner,這是一種新穎的錨框分配策略,該策略旨在將錨框更準確地分配給對應的真實標籤。這種策略透過評估預測框與真實標籤之間的對齊度來最佳化錨框的分配,從而使得錨框分配更為精確,進而提高模型對目標的識別精度。這與傳統的錨框分配方法相比,更能準確地捕捉目標的形狀和位置,特別是在複雜的生活垃圾檢測任務中,這種精確的分配機制顯得尤為重要。
YOLOv8還提升了演算法的整體結構設計。在網路架構方面,可能包含了更先進的特徵提取器和特徵融合模組,例如整合了特徵金字塔網路(FPN)和路徑聚合網路(PAN)的元素,最佳化了特徵在不同尺度之間的傳遞和融合。
4.2 模型構建
在本專案的“程式碼介紹”部分,我們展示瞭如何構建一個基於YOLO系列模型的生活垃圾檢測與分類系統。此部分詳細闡述了程式碼的每一個環節,包括如何準備模型、處理影像、進行預測以及如何對結果進行後處理。下面是程式碼的詳細介紹:
首先,我們匯入必要的庫,包括處理影像和影片的cv2,用於構建深度學習模型的torch庫,以及其他輔助的模組和類。特別地,我們引入了Detector類和HeatmapGenerator類來建立檢測模型的抽象基類,並使用Chinese_name字典來獲取檢測目標的中文名稱,這對於向終端使用者展示結果非常有用。
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
在程式碼中,我們定義了模型初始化引數,設定瞭如裝置型別、置信度閾值和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抽象基類的一個具體檢測器實現。在建構函式中,我們載入了YOLO模型,並預處理影像,以確保它們適合模型的輸入要求。在load_model方法中,我們選擇合適的裝置執行模型,並將YOLO模型載入到記憶體中。我們還轉換了模型的類別名稱,使其對使用者更加友好。preprocess方法處理傳入的影像,準備好它們被模型預測。predict方法是實際呼叫YOLO模型進行預測的地方,它利用模型對影像進行分析並給出檢測結果。而postprocess方法則處理預測結果,包括將類別ID轉換為中文名稱,格式化邊界框座標,並整理最終的檢測結果。
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)
透過上述程式碼,我們搭建了一個完整的生活垃圾檢測與分類系統的後端模型,能夠接收影像輸入,進行有效的垃圾檢測,並以使用者友好的方式展示結果。這些程式碼的介紹將幫助讀者理解我們如何實現從資料輸入到結果輸出的整個流程,併為後續章節中的實驗結果與系統設計提供必要的技術背景。
4.3 訓練程式碼
在“模型訓練”部分的部落格中,我們將深入探討如何利用現有的深度學習框架和模型來訓練一個生活垃圾檢測與分類系統。這一過程涉及到配置訓練環境、處理資料集、設定訓練引數,以及啟動訓練過程等關鍵步驟。以下表格詳細介紹了YOLOv8模型訓練中使用的一些重要超引數及其設定:
超引數 | 設定 | 說明 |
---|---|---|
學習率(lr0 ) |
0.01 | 決定了模型權重調整的步長大小,在訓練初期有助於快速收斂。 |
學習率衰減(lrf ) |
0.01 | 控制訓練過程中學習率的降低速度,有助於模型在訓練後期細緻調整。 |
動量(momentum ) |
0.937 | 加速模型在正確方向上的學習,並減少震盪,加快收斂速度。 |
權重衰減(weight_decay ) |
0.0005 | 防止過擬合,透過在損失函式中新增正則項減少模型複雜度。 |
熱身訓練週期(warmup_epochs ) |
3.0 | 初始幾個週期內以較低的學習率開始訓練,逐漸增加到預定學習率。 |
批次大小(batch ) |
16 | 每次迭代訓練中輸入模型的樣本數,影響GPU記憶體使用和模型效能。 |
輸入影像大小(imgsz ) |
640 | 模型接受的輸入影像的尺寸,影響模型的識別能力和計算負擔。 |
環境設定與模型載入:首先,我們進行的是環境設定和模型準備工作。這包括引入必要的庫,比如torch用於構建和訓練深度學習模型,os用於處理檔案和目錄路徑。
import os
import torch
import yaml
from ultralytics import YOLO # 用於載入YOLO模型
from QtFusion.path import abs_path # 用於獲取檔案的絕對路徑
這一部分的程式碼是決定模型將在GPU還是CPU上執行,這一選擇對訓練效率有重大影響。
device = "0" if torch.cuda.is_available() else "cpu"
資料集準備:在設定了工作程序數和批次大小後,透過使用abs_path函式,我們將資料集配置檔案的路徑轉換為絕對路徑,並針對不同的作業系統調整路徑風格。這種細心的準備有助於跨平臺的相容性和後續的資料載入工作。workers變數定義了在資料載入時使用的子程序數目,而batch則定義了批次大小,這直接影響了GPU記憶體的使用量和訓練速度。
workers = 1 # 工作程序數
batch = 8 # 每批處理的影像數量
data_name = "GarbageRecognition"
data_path = abs_path(f'datasets/{data_name}/{data_name}.yaml', path_type='current')
unix_style_path = data_path.replace(os.sep, '/')
接著,我們讀取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)
訓練模型:接下來,我們載入預訓練的YOLOv8模型。我們載入了YOLO模型的預訓練權重,並設定了訓練的引數,包括資料路徑、訓練裝置、工作執行緒、影像尺寸、訓練週期數和批次大小。
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模型在訓練過程中的損失函式和評價指標圖表,我們能夠深入理解模型的學習過程及其效能。以下是對這些訓練指標的專業分析。
觀察訓練和驗證過程中的損失函式,即box_loss、cls_loss和obj_loss(在圖中表示為df1_loss),我們可以看到模型損失隨著訓練週期(epochs)的增加而穩步下降。這個下降趨勢表明模型正在有效地從訓練資料中學習,透過最佳化其權重來減少預測框、類別以及目標的損失。特別地,box_loss的下降表明定位垃圾物品的邊界框變得更加準確,而cls_loss的減小意味著類別預測的精度提高。此外,df1_loss損失的減少則是一個綜合指標,顯示模型在識別和定位目標方面的整體進步。
轉向評價指標——精確度(precision)、召回率(recall)、平均精確度mAP(mean Average Precision)的不同閾值,我們可以進行更細緻的效能分析。精確度表現出隨著訓練週期的增加而逐漸增長的趨勢,這意味著模型在識別垃圾時的誤報數量在減少。召回率則表明模型能夠識別出資料集中的大多數正樣本,而且隨著訓練的進行,它能夠捕捉到更多的垃圾例項。
在mAP的評估中,mAP@0.5(計算IOU閾值為0.5時的mAP)和mAP@0.5-0.95(計算IOU從0.5到0.95不同閾值的平均mAP)為我們提供了模型效能的整體評價。mAP@0.5較高的值顯示了在較低IOU閾值下模型的效能較好,而mAP@0.5-0.95則表明模型在更為嚴格的匹配條件下依然保持了良好的識別效果。這兩個指標的逐漸上升反映出模型對生活垃圾的檢測和分類能力隨著訓練逐步增強。
總的來說,透過這些指標的分析,我們確認了YOLOv8模型在生活垃圾檢測與分類任務上的訓練進展順利,效能穩定提升。模型損失的下降趨勢和評價指標的增長展現了模型學習的有效性。這些結果不僅為我們在專案後續工作中的改進提供了可靠的依據,同時也給其他研究人員和實踐者提供了一個評估類似模型效能的參考框架。
5.2 PR曲線圖
在深入分析我們生活垃圾檢測與分類模型的效能時,準確性和可靠性是我們最關注的兩個方面。透過精確度-召回率(Precision-Recall,PR)曲線的評估,我們可以詳細瞭解模型在各個類別上的表現。PR曲線是一個寶貴的工具,它顯示了在不同召回率水平下模型的精確度,對於不平衡資料集特別有用。以下是對YOLOv8模型在生活垃圾分類任務中的PR曲線的分析。
從圖中可見,我們的模型在某些類別上表現出色,而在其他類別上則表現不佳。具體來說,'GLASS'(玻璃)類別的精確度在大多數召回率水平上都非常高,這表明模型可以非常準確地識別和分類玻璃垃圾。其次,'METAL'(金屬)和'BIODEGRADABLE'(可生物降解)類別的效能也相對較好,但它們的精確度在高召回率水平時有所下降,這可能是因為隨著召回率的提高,模型為了捕捉更多的正樣本而犧牲了一些精確度。
然而,'PAPER'(紙)和'PLASTIC'(塑膠)的精確度表現較差,尤其是'PAPER'類別,在大多數召回率水平上的精確度都很低。這可能是由於紙張物品在影像中的視覺特徵與背景相似,或者紙張樣本在資料集中的表示不足造成的。而塑膠垃圾因為形態多樣、顏色和透明度變化大,可能也對模型的識別能力構成了挑戰。
整體而言,模型的平均mAP值達到了0.527,這個分數是一箇中等水平的表現,意味著有進一步提升的空間。mAP值是一個整體效能的度量,它結合了所有類別的精確度和召回率。高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.520 | 0.533 | 0.521 | 0.527 |
F1-Score | 0.51 | 0.52 | 0.52 | 0.51 |
(3)實驗結果分析:
在深度學習領域,選擇合適的模型對於任務的成功完成至關重要。透過對YOLOv5nu、YOLOv6n、YOLOv7-tiny和YOLOv8n四個模型的效能進行對比分析,我們可以對它們在生活垃圾檢測與分類任務中的表現有一個全面的理解。
首先,從實驗結果來看,YOLOv6n在mAP(平均精度均值)指標上取得了最高的分數,達到了53.3%,而F1-Score(F1分數)也達到了52%。這表明YOLOv6n在我們的資料集上具有更好的綜合效能,既能平衡精確度和召回率,又能保持較高的類別識別精度。這可能歸功於YOLOv6n在處理特徵提取和多尺度檢測方面的改進。
而YOLOv5nu和YOLOv8n在mAP指標上表現相近,分別是52.0%和52.7%,在F1-Score上則是51.0%。它們在這兩個指標上的接近性表明,儘管YOLOv5和YOLOv8在架構上存在不同,但在處理具體任務時表現出了相似的能力。這可能是因為YOLOv5和YOLOv8在核心設計上仍保持了一定的一致性,特別是在錨點設定和損失函式上。
YOLOv7-tiny的mAP為52.1%,F1-Score達到了52%,這一結果對於一個輕量化模型來說是相當出色的。通常,輕量化模型在速度上有優勢,但在精度上可能會有所犧牲。然而,YOLOv7-tiny卻展現了較好的效能平衡,這表明在設計輕量化模型時,YOLOv7-tiny的設計者可能在模型的深度和寬度上做出了最佳化,以適應生活垃圾檢測任務。
綜合考慮,模型在生活垃圾檢測任務上的表現受到多方面因素的影響。例如,模型架構的複雜度、引數量、訓練策略、資料增強方法等都會對最終的效能產生重要影響。此外,實際應用場景的多樣性要求模型不僅要有較高的精度,還要有快速的推理能力和良好的泛化效能。因此,在選擇模型時,需要根據任務的具體需求進行權衡。
6. 系統設計與實現
6.1 系統架構概覽
在我們設計的基於YOLOv8/v7/v6/v5的生活垃圾檢測與分類系統中,核心架構採取模組化設計理念,以提高系統的靈活性、可擴充套件性和維護性。系統主要由以下幾個關鍵元件構成,每個元件負責處理特定的任務,透過相互協作完成生活垃圾的檢測與分類。
1. 檢測系統類(Detection_UI
): 作為系統的使用者介面(UI)層,Detection_UI
負責與使用者互動,包括接收使用者輸入(如上傳的檔案或攝像頭選擇)、顯示檢測結果和日誌。該類利用Streamlit框架構建,能夠快速搭建出直觀友好的Web應用。
2. YOLO模型封裝類(YOLOv8v5Detector
): 此類封裝了YOLO檢測模型的載入、預處理、預測及後處理等一系列操作。透過呼叫不同版本的YOLO模型,該類可以靈活適應多種生活垃圾檢測的需求。
3. 資料處理與日誌記錄: 包括多個工具和輔助類,如LogTable
用於記錄和儲存檢測日誌,ResultLogger
用於格式化檢測結果。這些元件負責處理資料記錄、儲存和展示,保證檢測過程的透明性和結果的可追蹤性。
4. 檢測流程控制: 在Detection_UI
類中,透過process_camera_or_file
和frame_process
方法實現了對攝像頭輸入或檔案上傳的處理邏輯。process_camera_or_file
方法根據使用者的選擇呼叫相應的處理函式,而frame_process
方法則負責對單幀影像進行預處理、呼叫YOLO模型進行檢測,並處理檢測結果。
5. UI佈局與互動設計: setup_sidebar
和setupMainWindow
方法負責系統的佈局設計和主要互動邏輯的實現。setup_sidebar
方法設定了側邊欄的配置選項,如模型選擇、檔案上傳等,而setupMainWindow
則構建了主要的顯示和操作介面,包括影像顯示區域、進度條、結果表格等。
6. 模型和資料管理: 系統設計中還考慮了模型和資料的管理,如透過abs_path
方法處理檔案路徑,使用save_uploaded_file
等方法管理上傳的檔案。這些設計保證了系統的資料處理既靈活又安全。
6.2 系統流程
我們設計的基於YOLOv8/v7/v6/v5的生活垃圾檢測與分類系統流程,可以透過以下步驟進行詳細說明:
-
初始化系統:系統啟動時,首先例項化
Detection_UI
類。此步驟涉及初始化介面佈局、載入模型、設定預設引數等準備工作。 -
設定頁面與側邊欄配置:透過
setup_page
方法設定頁面基本配置(如標題、圖示等),setup_sidebar
方法用於構建側邊欄,並提供模型設定、攝像頭選擇、檔案型別選擇等使用者可配置項。 -
使用者輸入處理:
- 如果使用者選擇攝像頭作為輸入源,系統將根據選定的攝像頭捕獲實時影片流進行處理。
- 如果使用者選擇上傳圖片檔案或影片檔案,系統將載入使用者上傳的檔案進行後續處理。
-
選擇模型與檔案處理:
- 模型選擇:使用者可以選擇不同版本的YOLO模型(如YOLOv8/v7/v6/v5),也可以上傳自定義的模型檔案。
- 檔案處理:根據使用者的輸入型別(攝像頭、圖片檔案、影片檔案),系統呼叫
process_camera_or_file
方法處理相應的輸入。
-
影像幀處理:對於攝像頭或檔案中的每一幀影像,系統透過
frame_process
方法進行處理,包括影像預處理、模型推理、結果後處理等。 -
檢測結果展示:處理後的影像幀及其檢測結果將被展示在使用者介面上。系統支援單畫面或雙畫面顯示模式,供使用者選擇。
-
日誌記錄與結果儲存:系統透過
LogTable
和ResultLogger
類記錄檢測過程和結果,支援將檢測日誌和結果表格儲存為CSV檔案。 -
使用者互動:
- 使用者可以透過側邊欄進行實時的配置修改(如調整置信度閾值、選擇不同的攝像頭或模型等)。
- 使用者可以透過主介面的按鈕執行如匯出檢測結果、停止攝像頭捕獲等操作。
-
清理與重置:使用者結束檢測任務後,系統會清理資源,如釋放攝像頭資源、清空日誌和結果表格,準備下一次檢測任務。
-
系統關閉:使用者關閉Web應用時,系統進行必要的資源釋放和狀態儲存操作,確保下次啟動時能夠快速恢復到上一次的狀態。
以上步驟構成了我們的生活垃圾檢測與分類系統的主要流程。該流程不僅體現了系統設計的高度模組化和靈活性,也確保了使用者操作的簡便性和檢測結果的準確性。
程式碼下載連結
如果您希望獲取部落格中提及的完整資源包,包含測試圖片、影片、Python檔案(*.py)、網頁配置檔案、訓練資料集、程式碼及介面設計等,可訪問博主在麵包多平臺的上傳內容。相關的部落格和影片資料提供了所有必要檔案的下載連結,以便一鍵執行。完整資源的預覽如下圖所示:
資源包中涵蓋了你需要的訓練測試資料集、訓練測試程式碼、UI介面程式碼等完整資源,完整專案檔案的下載連結可在下面的影片簡介中找到➷➷➷
演示與介紹影片 :https://www.bilibili.com/video/BV1nZ421i7Y9/
YOLOv8/v7/v6/v5專案合集下載:https://mbd.pub/o/bread/mbd-ZZ2Xm5xw
YOLOv8和v5專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2XmZlx
YOLOv7專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2XmpZy
YOLOv6專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2Xm5dt
完整安裝執行教程:
這個專案的執行需要用到Anaconda和Pycharm兩個軟體,下載到資原始碼後,您可以按照以下連結提供的詳細安裝教程操作即可執行成功,如仍有執行問題可私信博主解決:
- Pycharm和Anaconda的安裝教程:https://deepcode.blog.csdn.net/article/details/136639378;
軟體安裝好後需要為本專案新建Python環境、安裝依賴庫,並在Pycharm中設定環境,這幾步採用下面的教程可選線上安裝(pip install直接線上下載包)或離線依賴包(博主提供的離線包直接裝)安裝兩種方式之一:
- Python環境配置教程:https://deepcode.blog.csdn.net/article/details/136639396(2,3方法可選一種);
- 離線依賴包的安裝指南: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)技術,以進一步提高模型的效能和效率。
- 多模態融合:考慮結合影像、文字等多模態資訊,採用融合學習方法對生活垃圾進行更加全面的檢測與分類,以增強模型的理解深度。
- 跨域適應性:研究在不同地區、不同文化背景下的生活垃圾檢測與分類問題,透過域適應技術提升模型在多樣環境中的泛化能力。
- 使用者互動體驗:進一步完善系統介面和互動設計,使其更加友好、智慧,以滿足更多使用者的需求。
- 實際應用擴充:探索生活垃圾檢測與分類技術在更廣泛的實際應用場景,如環保監測、智慧城市管理等,發揮其在社會經濟發展中的最大價值。
總體而言,隨著技術進步和應用領域的不斷拓寬,我們有理由相信,基於深度學習的生活垃圾檢測與分類技術將在促進環保、推動可持續發展等領域扮演更加關鍵的角色。
Liu C, Tao Y, Liang J, et al. Object detection based on YOLO network[C]//2018 IEEE 4th information technology and mechatronics engineering conference (ITOEC). IEEE, 2018: 799-803. ↩︎
Wen, Guihao, et al. "The improved YOLOv8 algorithm based on EMSPConv and SPE-head modules." Multimedia Tools and Applications (2024): 1-17. ↩︎
Zhu X, Lyu S, Wang X, et al. TPH-YOLOv5: Improved YOLOv5 based on transformer prediction head for object detection on drone-captured scenarios[C]//Proceedings of the IEEE/CVF international conference on computer vision. 2021: 2778-2788. ↩︎
Sun Z, Chen B. Research on Pedestrian Detection and Recognition Based on Improved YOLOv6 Algorithm[C]//International Conference on Artificial Intelligence in China. Singapore: Springer Nature Singapore, 2022: 281-289. ↩︎
Zhao H, Zhang H, Zhao Y. Yolov7-sea: Object detection of maritime uav images based on improved yolov7[C]//Proceedings of the IEEE/CVF winter conference on applications of computer vision. 2023: 233-238. ↩︎