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

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

基于深度學(xué)習(xí)的高精度西紅柿檢測識別系統(tǒng)(Python+PyTorch+YOLOv5)

2023-05-28 20:50 作者:Bestsongc  | 我要投稿

摘要:基于深度學(xué)習(xí)的高精度西紅柿檢測識別系統(tǒng)可用于日常生活中檢測與定位西紅柿目標(biāo),利用深度學(xué)習(xí)算法可實(shí)現(xiàn)圖片、視頻、攝像頭等方式的西紅柿目標(biāo)檢測識別,另外支持結(jié)果可視化與圖片或視頻檢測結(jié)果的導(dǎo)出。本系統(tǒng)采用YOLOv5目標(biāo)檢測模型訓(xùn)練數(shù)據(jù)集,使用Pysdie6庫來搭建頁面展示系統(tǒng),同時(shí)支持ONNX、PT等模型作為權(quán)重模型的輸出。本系統(tǒng)支持的功能包括西紅柿訓(xùn)練模型的導(dǎo)入、初始化;置信分與IOU閾值的調(diào)節(jié)、圖像上傳、檢測、可視化結(jié)果展示、結(jié)果導(dǎo)出與結(jié)束檢測;視頻的上傳、檢測、可視化結(jié)果展示、結(jié)果導(dǎo)出與結(jié)束檢測;攝像頭的上傳、檢測、可視化結(jié)果展示與結(jié)束檢測;已檢測目標(biāo)列表、位置信息;前向推理用時(shí)。另外本西紅柿檢測識別系統(tǒng)同時(shí)支持原始圖像與檢測結(jié)果圖像的同時(shí)展示,原始視頻與檢測結(jié)果視頻的同時(shí)展示。本博文提供了完整的Python代碼和使用教程,適合新入門的朋友參考,完整代碼資源文件請轉(zhuǎn)至文末的下載鏈接。

?


基本介紹

近年來,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)取得了較大的發(fā)展,深度學(xué)習(xí)方法在檢測精度和速度方面與傳統(tǒng)方法相比表現(xiàn)出更良好的性能。YOLOv5是單階段目標(biāo)檢測算法YOLO的第五代,根據(jù)實(shí)驗(yàn)得出結(jié)論,其在速度與準(zhǔn)確性能方面都有了明顯提升,開源的代碼可見https://github.com/ultralytics/yolov5。因此本博文利用YOLOv5檢測算法實(shí)現(xiàn)一種高精度西紅柿識別檢測模型,再搭配上Pyside6庫寫出界面系統(tǒng),完成目標(biāo)檢測識別頁面的開發(fā)。注意到Y(jié)OLO系列算法的最新進(jìn)展已有YOLOv6、YOLOv7、YOLOv8等算法,將本系統(tǒng)中檢測算法替換為最新算法的代碼也將在后面發(fā)布,歡迎關(guān)注收藏。

環(huán)境搭建

(1)下載YOLOv5源碼庫,放到自己電腦的目錄,之后打開cmd進(jìn)入到Y(jié)OLOv5目錄里面,本文演示的目錄是:D:\vscode_workspace\yolov5

(2)利用Conda創(chuàng)建環(huán)境(Anacodna),conda create -n yolo5 python=3.8 ?然后安裝torch和torchvision(pip install torch==1.10.0+cu113 torchvision==0.11.0+cu113 -f https://download.pytorch.org/whl/torch_stable.html?-i https://pypi.tuna.tsinghua.edu.cn/simple)其中-i https://pypi.tuna.tsinghua.edu.cn/simple代表使用清華源,這行命令要求nvidia-smi顯示的CUDA版本>=11.3,最后安裝剩余依賴包使用:pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

?

?

(3)安裝Pyside6庫 pip install pyside6==6.3 -i https://pypi.tuna.tsinghua.edu.cn/simple

?

(4)對于windows系統(tǒng)下的pycocotools庫的安裝:pip install pycocotools-windows -i https://pypi.tuna.tsinghua.edu.cn/simple

界面及功能展示

下面給出本博文設(shè)計(jì)的軟件界面,整體界面簡潔大方,大體功能包括訓(xùn)練模型的導(dǎo)入、初始化;置信分與IOU閾值的調(diào)節(jié)、圖像上傳、檢測、可視化結(jié)果展示、結(jié)果導(dǎo)出與結(jié)束檢測;視頻的上傳、檢測、可視化結(jié)果展示、結(jié)果導(dǎo)出與結(jié)束檢測;已檢測目標(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)已選擇模型初始化信息的設(shè)置。

?

?

置信分與IOU的改變

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

?

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

用戶可以點(diǎn)擊選擇圖像按鈕上傳單張圖片進(jìn)行檢測與識別。

?

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

?

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

?

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

?

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

?

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

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

?

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

?

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

?

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

?

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

攝像頭打開、檢測與結(jié)束

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

?

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

?

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

?

算法原理介紹

? 本系統(tǒng)采用了基于深度學(xué)習(xí)的單階段目標(biāo)檢測算法YOLOv5,相比于YOLOv3和YOLOv4,YOLOv5在檢測精度和速度上都有很大的提升。YOLOv5算法的核心思想是將目標(biāo)檢測問題轉(zhuǎn)化為一個(gè)回歸問題,通過直接預(yù)測物體中心點(diǎn)的坐標(biāo)來代替Anchor框。此外,YOLOv5使用SPP(Spatial Pyramid Pooling)的特征提取方法,這種方法可以在不增加計(jì)算量的情況下,有效地提取多尺度特征,提高檢測性能。YOLOv5s模型的整體結(jié)構(gòu)如下圖所示。

?

YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)是由Input、Backbone、Neck、Prediction組成。YOLOv5的Input部分是網(wǎng)絡(luò)的輸入端,采用Mosaic數(shù)據(jù)增強(qiáng)方式,對輸入數(shù)據(jù)隨機(jī)裁剪,然后進(jìn)行拼接。Backbone是YOLOv5提取特征的網(wǎng)絡(luò)部分,特征提取能力直接影響整個(gè)網(wǎng)絡(luò)性能。在特征提取階段,YOLOv5使用CSPNet(Cross Stage Partial Network)結(jié)構(gòu),它將輸入特征圖分為兩部分,一部分通過一系列卷積層進(jìn)行處理,另一部分直接進(jìn)行下采樣,最后將這兩部分特征圖進(jìn)行融合。這種設(shè)計(jì)使得網(wǎng)絡(luò)具有更強(qiáng)的非線性表達(dá)能力,可以更好地處理目標(biāo)檢測任務(wù)中的復(fù)雜背景和多樣化物體。在Neck階段使用連續(xù)的卷積核C3結(jié)構(gòu)塊融合特征圖。在Prediction階段,模型使用結(jié)果特征圖預(yù)測目標(biāo)的中心坐標(biāo)與尺寸信息。博主覺得YOLOv5不失為一種目標(biāo)檢測的高性能解決方案,能夠以較高的準(zhǔn)確率對目標(biāo)進(jìn)行分類與定位。當(dāng)然現(xiàn)在YOLOv6、YOLOv7、YOLOv8等算法也在不斷提出和改進(jìn),后續(xù)博主也會(huì)將這些算法融入到本系統(tǒng)中,敬請期待。

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

本系統(tǒng)使用的西紅柿數(shù)據(jù)集手動(dòng)標(biāo)注了西紅柿這一個(gè)類別,數(shù)據(jù)集總計(jì)895張圖片。該數(shù)據(jù)集中類別都有大量的旋轉(zhuǎn)和不同的光照條件,有助于訓(xùn)練出更加魯棒的檢測模型。本文實(shí)驗(yàn)的西紅柿檢測識別數(shù)據(jù)集包含訓(xùn)練集716張圖片,驗(yàn)證集179張圖片,選取部分?jǐn)?shù)據(jù)部分樣本數(shù)據(jù)集如下圖所示。由于YOLOv5算法對輸入圖片大小有限制,需要將所有圖片調(diào)整為相同的大小。為了在不影響檢測精度的情況下盡可能減小圖片的失真,我們將所有圖片調(diào)整為640x640的大小,并保持原有的寬高比例。此外,為了增強(qiáng)模型的泛化能力和魯棒性,我們還使用了數(shù)據(jù)增強(qiáng)技術(shù),包括隨機(jī)旋轉(zhuǎn)、縮放、裁剪和顏色變換等,以擴(kuò)充數(shù)據(jù)集并減少過擬合風(fēng)險(xiǎn)。??

關(guān)鍵代碼解析

本系統(tǒng)的深度學(xué)習(xí)模型使用PyTorch實(shí)現(xiàn),基于YOLOv5算法進(jìn)行目標(biāo)檢測。在訓(xùn)練階段,我們使用了預(yù)訓(xùn)練模型作為初始模型進(jìn)行訓(xùn)練,然后通過多次迭代優(yōu)化網(wǎng)絡(luò)參數(shù),以達(dá)到更好的檢測性能。在訓(xùn)練過程中,我們采用了學(xué)習(xí)率衰減和數(shù)據(jù)增強(qiáng)等技術(shù),以增強(qiáng)模型的泛化能力和魯棒性。

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

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

Pyside6是Python語言的GUI編程解決方案之一,可以快速地為Python程序創(chuàng)建GUI應(yīng)用。在本博文中,我們使用Pyside6庫創(chuàng)建一個(gè)圖形化界面,為用戶提供簡單易用的交互界面,實(shí)現(xiàn)用戶選擇圖片、視頻進(jìn)行目標(biāo)檢測。

?

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

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

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

?

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

?

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

?

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

?


基于深度學(xué)習(xí)的高精度西紅柿檢測識別系統(tǒng)(Python+PyTorch+YOLOv5)的評論 (共 條)

分享到微博請遵守國家法律
慈溪市| 上饶市| 乐昌市| 青铜峡市| 永康市| 桂阳县| 丰都县| 师宗县| 都江堰市| 鄯善县| 锦州市| 东乡县| 呼和浩特市| 济阳县| 壶关县| 青川县| 曲松县| 民权县| 东丰县| 富川| 东丽区| 织金县| 奎屯市| 宝山区| 甘肃省| 武鸣县| 闽清县| 浪卡子县| 襄汾县| 阳山县| 凤翔县| 邵阳县| 乌审旗| 酒泉市| 乐安县| 新津县| 扎赉特旗| 大同县| 水城县| 连山| 兴国县|