最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

基于YOLOv8模型的垃圾滿溢檢測(cè)系統(tǒng)(PyTorch+Pyside6+YOLOv8模型)

2023-09-25 21:40 作者:Bestsongc  | 我要投稿

摘要:基于YOLOv8模型的垃圾滿溢檢測(cè)系統(tǒng)可用于日常生活中檢測(cè)與定位車(chē)輛垃圾(garbage)、垃圾桶(garbage_bin)和垃圾滿溢(overflow)目標(biāo),利用深度學(xué)習(xí)算法可實(shí)現(xiàn)圖片、視頻、攝像頭等方式的目標(biāo)檢測(cè),另外本系統(tǒng)還支持圖片、視頻等格式的結(jié)果可視化與結(jié)果導(dǎo)出。本系統(tǒng)采用YOLOv8目標(biāo)檢測(cè)算法訓(xùn)練數(shù)據(jù)集,使用Pysdie6庫(kù)來(lái)搭建前端頁(yè)面展示系統(tǒng)。另外本系統(tǒng)支持的功能還包括訓(xùn)練模型的導(dǎo)入、初始化;檢測(cè)置信分與檢測(cè)后處理IOU閾值的調(diào)節(jié);圖像的上傳、檢測(cè)、可視化結(jié)果展示與檢測(cè)結(jié)果導(dǎo)出;視頻的上傳、檢測(cè)、可視化結(jié)果展示與檢測(cè)結(jié)果導(dǎo)出;攝像頭的圖像輸入、檢測(cè)與可視化結(jié)果展示;已檢測(cè)目標(biāo)個(gè)數(shù)與列表、位置信息;前向推理用時(shí)等功能。本博文提供了完整的Python代碼與安裝和使用教程,適合新入門(mén)的朋友參考,部分重要代碼部分都有注釋,完整代碼資源文件請(qǐng)轉(zhuǎn)至文末的下載鏈接。


基本介紹

近年來(lái),機(jī)器學(xué)習(xí)和深度學(xué)習(xí)取得了較大的發(fā)展,深度學(xué)習(xí)方法在檢測(cè)精度和速度方面與傳統(tǒng)方法相比表現(xiàn)出更良好的性能。YOLOv8 是 Ultralytics 公司繼?YOLOv5?算法之后開(kāi)發(fā)的下一代算法模型,目前支持圖像分類、物體檢測(cè)和實(shí)例分割任務(wù)。YOLOv8 是一個(gè) SOTA模型,它建立在之前YOLO?系列模型的成功基礎(chǔ)上,并引入了新的功能和改進(jìn),以進(jìn)一步提升性能和靈活性。具體創(chuàng)新包括:一個(gè)新的骨干網(wǎng)絡(luò)、一個(gè)新的 Ancher-Free 檢測(cè)頭和一個(gè)新的損失函數(shù),可以在從 CPU 到 GPU 的各種硬件平臺(tái)上運(yùn)行。因此本博文利用YOLOv8目標(biāo)檢測(cè)算法實(shí)現(xiàn)一種垃圾滿溢檢測(cè)模型,再使用Pyside6庫(kù)搭建出界面系統(tǒng),完成目標(biāo)檢測(cè)頁(yè)面的開(kāi)發(fā)。本博主之前發(fā)布過(guò)關(guān)于YOLOv5算法的相關(guān)模型與界面,需要的朋友可從我之前發(fā)布的博客查看。另外本博主計(jì)劃將YOLOv5、YOLOv6、YOLOv7和YOLOv8一起聯(lián)合發(fā)布,需要的朋友可以持續(xù)關(guān)注,歡迎朋友們關(guān)注收藏。

環(huán)境搭建

(1)打開(kāi)項(xiàng)目目錄,在搜索框內(nèi)輸入cmd打開(kāi)終端

(2)新建一個(gè)虛擬環(huán)境(conda create -n yolo8 python=3.8)

(3)激活環(huán)境,安裝ultralytics庫(kù)(yolov8官方庫(kù)),pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple

(4)注意到這種安裝方式只會(huì)安裝cpu版torch,如需安裝gpu版torch,需在安裝包之前先安裝torch:pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 -f https://download.pytorch.org/whl/torch_stable.html;再,pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple

(5)安裝圖形化界面庫(kù)pyside6:pip install pyside6 -i https://pypi.tuna.tsinghua.edu.cn/simple

界面及功能展示

下面給出本博文設(shè)計(jì)的軟件界面,整體界面簡(jiǎn)潔大方,大體功能包括訓(xùn)練模型的導(dǎo)入、初始化;置信分與IOU閾值的調(diào)節(jié)、圖像上傳、檢測(cè)、可視化結(jié)果展示、結(jié)果導(dǎo)出與結(jié)束檢測(cè);視頻的上傳、檢測(cè)、可視化結(jié)果展示、結(jié)果導(dǎo)出與結(jié)束檢測(cè);已檢測(cè)目標(biāo)列表、位置信息;前向推理用時(shí)。初始界面如下圖:

?

模型選擇與初始化

用戶可以點(diǎn)擊模型權(quán)重選擇按鈕上傳訓(xùn)練好的模型權(quán)重,訓(xùn)練權(quán)重格式可為.pt、.onnx以及engine等,之后再點(diǎn)擊模型權(quán)重初始化按鈕可實(shí)現(xiàn)已選擇模型初始化的配置。

?

置信分與IOU的改變

在Confidence或IOU下方的輸入框中改變值即可同步改變滑動(dòng)條的進(jìn)度,同時(shí)改變滑動(dòng)條的進(jìn)度值也可同步改變輸入框的值;Confidence或IOU值的改變將同步到模型里的配置,將改變檢測(cè)置信度閾值與IOU閾值。

圖像選擇、檢測(cè)與導(dǎo)出

用戶可以點(diǎn)擊選擇圖像按鈕上傳單張圖像進(jìn)行檢測(cè)與識(shí)別,上傳成功后系統(tǒng)界面會(huì)同步顯示輸入圖像。

再點(diǎn)擊圖像檢測(cè)按鈕可完成輸入圖像的目標(biāo)檢測(cè)功能,之后系統(tǒng)會(huì)在用時(shí)一欄輸出檢測(cè)用時(shí),在目標(biāo)數(shù)量一欄輸出已檢測(cè)到的目標(biāo)數(shù)量,在下拉框可選擇已檢測(cè)目標(biāo),對(duì)應(yīng)于目標(biāo)位置(即xmin、ymin、xmax以及ymax)標(biāo)簽值的改變。

再點(diǎn)擊檢測(cè)結(jié)果展示按鈕可在系統(tǒng)左下方顯示輸入圖像檢測(cè)的結(jié)果,系統(tǒng)將顯示識(shí)別出圖片中的目標(biāo)的類別、位置和置信度信息。

點(diǎn)擊圖像檢測(cè)結(jié)果導(dǎo)出按鈕即可導(dǎo)出檢測(cè)后的圖像,在保存欄里輸入保存的圖片名稱及后綴即可實(shí)現(xiàn)檢測(cè)結(jié)果圖像的保存。

點(diǎn)擊結(jié)束圖像檢測(cè)按鈕即可完成系統(tǒng)界面的刷新,將所有輸出信息清空,之后再點(diǎn)擊選擇圖像或選擇視頻按鈕來(lái)上傳圖像或視頻,或者點(diǎn)擊打開(kāi)攝像頭按鈕來(lái)開(kāi)啟攝像頭。

?

視頻選擇、檢測(cè)與導(dǎo)出

用戶點(diǎn)擊選擇視頻按鈕上傳視頻進(jìn)行檢測(cè)與識(shí)別,之后系統(tǒng)會(huì)將視頻的第一幀輸入到系統(tǒng)界面中顯示。

再點(diǎn)擊視頻檢測(cè)按鈕可完成輸入視頻的目標(biāo)檢測(cè)功能,之后系統(tǒng)會(huì)在用時(shí)一欄輸出檢測(cè)用時(shí),在目標(biāo)數(shù)量一欄輸出已檢測(cè)到的目標(biāo)數(shù)量,在下拉框可選擇已檢測(cè)目標(biāo),對(duì)應(yīng)于目標(biāo)位置(即xmin、ymin、xmax以及ymax)標(biāo)簽值的改變。

點(diǎn)擊暫停視頻檢測(cè)按鈕即可實(shí)現(xiàn)輸入視頻的暫停,此時(shí)按鈕變?yōu)槔^續(xù)視頻檢測(cè),輸入視頻幀與幀檢測(cè)結(jié)果會(huì)保留在系統(tǒng)界面,可點(diǎn)擊下拉目標(biāo)框選擇已檢測(cè)目標(biāo)的坐標(biāo)位置信息,再點(diǎn)擊繼續(xù)視頻檢測(cè)按鈕即可實(shí)現(xiàn)輸入視頻的檢測(cè)。

點(diǎn)擊視頻檢測(cè)結(jié)果導(dǎo)出按鈕即可導(dǎo)出檢測(cè)后的視頻,在保存欄里輸入保存的圖片名稱及后綴即可實(shí)現(xiàn)檢測(cè)結(jié)果視頻的保存。

點(diǎn)擊結(jié)束視頻檢測(cè)按鈕即可完成系統(tǒng)界面的刷新,將所有輸出信息清空,之后再點(diǎn)擊選擇圖像或選擇視頻按鈕來(lái)上傳圖像或視頻,或者點(diǎn)擊打開(kāi)攝像頭按鈕來(lái)開(kāi)啟攝像頭。

攝像頭打開(kāi)、檢測(cè)與結(jié)束

用戶可以點(diǎn)擊打開(kāi)攝像頭按鈕來(lái)打開(kāi)攝像頭設(shè)備進(jìn)行檢測(cè)與識(shí)別,之后系統(tǒng)會(huì)將攝像頭圖像輸入到系統(tǒng)界面中顯示。

再點(diǎn)擊攝像頭檢測(cè)按鈕可完成輸入攝像頭的目標(biāo)檢測(cè)功能,之后系統(tǒng)會(huì)在用時(shí)一欄輸出檢測(cè)用時(shí),在目標(biāo)數(shù)量一欄輸出已檢測(cè)到的目標(biāo)數(shù)量,在下拉框可選擇已檢測(cè)目標(biāo),對(duì)應(yīng)于目標(biāo)位置(即xmin、ymin、xmax以及ymax)標(biāo)簽值的改變。

點(diǎn)擊結(jié)束視頻檢測(cè)按鈕即可完成系統(tǒng)界面的刷新,將所有輸出信息清空,之后再點(diǎn)擊選擇圖像或選擇視頻按鈕來(lái)上傳圖像或視頻,或者點(diǎn)擊打開(kāi)攝像頭按鈕來(lái)開(kāi)啟攝像頭。

?

算法原理介紹

本系統(tǒng)采用了基于深度學(xué)習(xí)的單階段目標(biāo)檢測(cè)算法YOLOv8,相較于之前的YOLO系列目標(biāo)檢測(cè)算法,YOLOv8目標(biāo)檢測(cè)算法具有如下的幾點(diǎn)優(yōu)勢(shì):(1)更友好的安裝/運(yùn)行方式;(2)速度更快、準(zhǔn)確率更高;(3)新的backbone,將YOLOv5中的C3更換為C2F;(4)YOLO系列第一次嘗試使用anchor-free;(5)新的損失函數(shù)。YOLOv8模型的整體結(jié)構(gòu)如下圖所示,原圖見(jiàn)mmyolo的官方倉(cāng)庫(kù)。

YOLOv8與YOLOv5模型最明顯的差異是使用C2F模塊替換了原來(lái)的C3模塊,兩個(gè)模塊的結(jié)構(gòu)如下圖所示,原圖見(jiàn)mmyolo的官方倉(cāng)庫(kù)。

另外Head 部分變化最大,從原先的耦合頭變成了解耦頭,并且從 YOLOv5 的 Anchor-Based 變成了 Anchor-Free。其結(jié)構(gòu)對(duì)比如下圖所示。


數(shù)據(jù)集介紹

本系統(tǒng)使用的垃圾滿溢檢測(cè)數(shù)據(jù)集手動(dòng)標(biāo)注了垃圾(garbage)、垃圾桶(garbage_bin)和垃圾滿溢(overflow)這3個(gè)類別,數(shù)據(jù)集總計(jì)3349張圖片。該數(shù)據(jù)集中類別都有大量的旋轉(zhuǎn)和不同的光照條件,有助于訓(xùn)練出更加魯棒的檢測(cè)模型。本文實(shí)驗(yàn)的人體摔倒行為檢測(cè)識(shí)別數(shù)據(jù)集包含訓(xùn)練集2704張圖片,驗(yàn)證集645張圖片,選取部分?jǐn)?shù)據(jù)部分樣本數(shù)據(jù)集如下圖所示。此外,為了增強(qiáng)模型的泛化能力和魯棒性,我們還使用了數(shù)據(jù)增強(qiáng)技術(shù),包括隨機(jī)旋轉(zhuǎn)、縮放、裁剪和顏色變換等,以擴(kuò)充數(shù)據(jù)集并減少過(guò)擬合風(fēng)險(xiǎn)。

?

關(guān)鍵代碼解析

在訓(xùn)練階段,我們使用了預(yù)訓(xùn)練模型作為初始模型進(jìn)行訓(xùn)練,然后通過(guò)多次迭代優(yōu)化網(wǎng)絡(luò)參數(shù),以達(dá)到更好的檢測(cè)性能。在訓(xùn)練過(guò)程中,我們采用了學(xué)習(xí)率衰減和數(shù)據(jù)增強(qiáng)等技術(shù),以增強(qiáng)模型的泛化能力和魯棒性。一個(gè)簡(jiǎn)單的單卡模型訓(xùn)練命令如下。

在訓(xùn)練時(shí)也可指定更多的參數(shù),大部分重要的參數(shù)如下所示:

在測(cè)試階段,我們使用了訓(xùn)練好的模型來(lái)對(duì)新的圖片和視頻進(jìn)行檢測(cè)。通過(guò)設(shè)置閾值,將置信度低于閾值的檢測(cè)框過(guò)濾掉,最終得到檢測(cè)結(jié)果。同時(shí),我們還可以將檢測(cè)結(jié)果保存為圖片或視頻格式,以便進(jìn)行后續(xù)分析和應(yīng)用。本系統(tǒng)基于YOLOv8算法,使用PyTorch實(shí)現(xiàn)。代碼中用到的主要庫(kù)包括PyTorch、NumPy、OpenCV、Pyside6等。

?

Pyside6界面設(shè)計(jì)

PySide是一個(gè)Python的圖形化界面(GUI)庫(kù),由C++版的Qt開(kāi)發(fā)而來(lái),在用法上基本與C++版沒(méi)有特別大的差異。相對(duì)于其他Python GUI庫(kù)來(lái)說(shuō),PySide開(kāi)發(fā)較快,功能更完善,而且文檔支持更好。在本博文中,我們使用Pyside6庫(kù)創(chuàng)建一個(gè)圖形化界面,為用戶提供簡(jiǎn)單易用的交互界面,實(shí)現(xiàn)用戶選擇圖片、視頻進(jìn)行目標(biāo)檢測(cè)。

我們使用Qt Designer設(shè)計(jì)圖形界面,然后使用Pyside6將設(shè)計(jì)好的UI文件轉(zhuǎn)換為Python代碼。圖形界面中包含多個(gè)UI控件,例如:標(biāo)簽、按鈕、文本框、多選框等。通過(guò)Pyside6中的信號(hào)槽機(jī)制,可以使得UI控件與程序邏輯代碼相互連接。

實(shí)驗(yàn)結(jié)果與分析

在實(shí)驗(yàn)結(jié)果與分析部分,我們使用精度和召回率等指標(biāo)來(lái)評(píng)估模型的性能,還通過(guò)損失曲線和PR曲線來(lái)分析訓(xùn)練過(guò)程。在訓(xùn)練階段,我們使用了前面介紹的數(shù)據(jù)集進(jìn)行訓(xùn)練,使用了YOLOv8算法對(duì)數(shù)據(jù)集訓(xùn)練,總計(jì)訓(xùn)練了100個(gè)epochs。在訓(xùn)練過(guò)程中,我們使用tensorboard記錄了模型在訓(xùn)練集和驗(yàn)證集上的損失曲線。從下圖可以看出,隨著訓(xùn)練次數(shù)的增加,模型的訓(xùn)練損失和驗(yàn)證損失都逐漸降低,說(shuō)明模型不斷地學(xué)習(xí)到更加精準(zhǔn)的特征。在訓(xùn)練結(jié)束后,我們使用模型在數(shù)據(jù)集的驗(yàn)證集上進(jìn)行了評(píng)估,得到了以下結(jié)果。

下圖展示了我們訓(xùn)練的YOLOv8模型在驗(yàn)證集上的PR曲線,從圖中可以看出,模型取得了較高的召回率和精確率,整體表現(xiàn)良好。

下圖展示了本博文在使用YOLOv8模型對(duì)數(shù)據(jù)集進(jìn)行訓(xùn)練時(shí)候的Mosaic數(shù)據(jù)增強(qiáng)圖像。

綜上,本博文訓(xùn)練得到的YOLOv8模型在數(shù)據(jù)集上表現(xiàn)良好,具有較高的檢測(cè)精度和魯棒性,可以在實(shí)際場(chǎng)景中應(yīng)用。另外本博主對(duì)整個(gè)系統(tǒng)進(jìn)行了詳細(xì)測(cè)試,最終開(kāi)發(fā)出一版流暢的高精度目標(biāo)檢測(cè)系統(tǒng)界面,就是本博文演示部分的展示,完整的UI界面、測(cè)試圖片視頻、代碼文件等均已打包上傳,感興趣的朋友可以關(guān)注我私信獲取。另外本博文的PDF與更多的目標(biāo)檢測(cè)識(shí)別系統(tǒng)請(qǐng)關(guān)注筆者的微信公眾號(hào) BestSongC。

其他基于深度學(xué)習(xí)的目標(biāo)檢測(cè)系統(tǒng)如西紅柿、貓狗、山羊、野生目標(biāo)、煙頭、二維碼、頭盔、交警、野生動(dòng)物、野外煙霧、人體摔倒識(shí)別、紅外行人、家禽豬、蘋(píng)果、推土機(jī)、蜜蜂、打電話、鴿子、足球、奶牛、人臉口罩、安全背心、煙霧檢測(cè)系統(tǒng)等有需要的朋友關(guān)注我,從博主其他視頻中獲取下載鏈接。

完整項(xiàng)目目錄如下所示

?




基于YOLOv8模型的垃圾滿溢檢測(cè)系統(tǒng)(PyTorch+Pyside6+YOLOv8模型)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
嘉峪关市| 定边县| 河北省| 鹤山市| 台州市| 库伦旗| 报价| 武威市| 义马市| 刚察县| 昌图县| 崇仁县| 富源县| 太仆寺旗| 阜阳市| 灵川县| 中江县| 锡林浩特市| 滨海县| 梅州市| 合川市| 西乌| 仙居县| 阳江市| 土默特左旗| 香格里拉县| 浙江省| 读书| 连江县| 通河县| 高陵县| 泰来县| 邹平县| 油尖旺区| 乌海市| 文成县| 东宁县| 定西市| 洛浦县| 遵义县| 饶平县|