基于深度學(xué)習(xí)的水果檢測(cè)與識(shí)別系統(tǒng)(Python界面版,YOLOv5實(shí)現(xiàn))
摘要:本博文介紹了一種基于深度學(xué)習(xí)的水果檢測(cè)與識(shí)別系統(tǒng),使用YOLOv5算法對(duì)常見水果進(jìn)行檢測(cè)和識(shí)別,實(shí)現(xiàn)對(duì)圖片、視頻和實(shí)時(shí)視頻中的水果進(jìn)行準(zhǔn)確識(shí)別。博文詳細(xì)闡述了算法原理,同時(shí)提供Python實(shí)現(xiàn)代碼、訓(xùn)練數(shù)據(jù)集,以及基于PyQt的UI界面。通過YOLOv5實(shí)現(xiàn)對(duì)圖像中存在的多個(gè)水果目標(biāo)進(jìn)行識(shí)別分類,用戶可以在界面中選擇各種水果圖片、視頻進(jìn)行檢測(cè)識(shí)別。本文旨在為相關(guān)領(lǐng)域的研究人員和新入門的朋友提供一個(gè)參考,完整代碼資源文件請(qǐng)轉(zhuǎn)至文末的下載鏈接。

完整代碼下載:https://mbd.pub/o/bread/mbd-ZJiYkpdx
參考視頻演示:https://www.bilibili.com/video/BV1rT411h7dY/
離線依賴庫下載:https://pan.baidu.com/s/1hW9z9ofV1FRSezTSj59JSg?pwd=oy4n?(提取碼:oy4n )

前言
近年來,隨著全球經(jīng)濟(jì)的發(fā)展,水果消費(fèi)市場(chǎng)規(guī)模不斷擴(kuò)大,水果種類也日益豐富。水果檢測(cè)與識(shí)別技術(shù)在農(nóng)業(yè)生產(chǎn)、倉儲(chǔ)物流、超市零售等領(lǐng)域具有重要的應(yīng)用價(jià)值。傳統(tǒng)的水果檢測(cè)與識(shí)別方法主要依賴于人工識(shí)別,這種方法在一定程度上受到人力成本、識(shí)別效率和準(zhǔn)確性等方面的限制。因此,開發(fā)一種高效、準(zhǔn)確的自動(dòng)化水果檢測(cè)與識(shí)別系統(tǒng)具有重要的研究意義和實(shí)際價(jià)值。(本文的參考文獻(xiàn)請(qǐng)見文末)
計(jì)算機(jī)視覺作為人工智能的一個(gè)重要分支,在目標(biāo)檢測(cè)和識(shí)別方面取得了顯著的研究進(jìn)展。特別是深度學(xué)習(xí)技術(shù)的發(fā)展,極大地推動(dòng)了計(jì)算機(jī)視覺在水果檢測(cè)與識(shí)別領(lǐng)域的應(yīng)用。許多研究人員已經(jīng)嘗試?yán)蒙疃葘W(xué)習(xí)技術(shù)進(jìn)行水果檢測(cè)與識(shí)別,取得了一定的成果[1]。然而,當(dāng)前的研究仍然存在一定的局限性,如算法復(fù)雜度高、實(shí)時(shí)性差等問題。
在計(jì)算機(jī)視覺領(lǐng)域,已有多種深度學(xué)習(xí)算法被應(yīng)用于目標(biāo)檢測(cè)和識(shí)別任務(wù)。例如,R-CNN[2]、Fast R-CNN[3]、Faster R-CNN[4]、SSD[5]、RetinaNet[6]等。這些算法在一定程度上提高了目標(biāo)檢測(cè)的準(zhǔn)確性和速度。然而,這些算法仍然存在一定的局限性,如計(jì)算復(fù)雜度高、實(shí)時(shí)性差等。為了解決這些問題,研究人員提出了YOLO(You Only Look Once)算法[7],該算法采用端到端的訓(xùn)練方式,能夠在保持較高檢測(cè)準(zhǔn)確性的同時(shí)實(shí)現(xiàn)實(shí)時(shí)檢測(cè)。YOLO算法自2016年首次提出以來,經(jīng)歷了多次改進(jìn),如YOLOv2[8]、YOLOv3[9]、YOLOv4[10]等,每個(gè)版本都在前一個(gè)版本的基礎(chǔ)上提高了檢測(cè)準(zhǔn)確性和速度。針對(duì)水果檢測(cè)與識(shí)別任務(wù),有研究人員嘗試將深度學(xué)習(xí)技術(shù)應(yīng)用于該領(lǐng)域。例如,使用Faster R-CNN進(jìn)行蘋果檢測(cè)[11],采用Mask R-CNN實(shí)現(xiàn)對(duì)葡萄的實(shí)例分割[12],以及利用SSD進(jìn)行柑橘檢測(cè)[13]等。這些研究表明深度學(xué)習(xí)技術(shù)在水果檢測(cè)與識(shí)別任務(wù)上具有很大的前景。
在本博文中,我們提出了一種基于深度學(xué)習(xí)的水果檢測(cè)與識(shí)別系統(tǒng),該系統(tǒng)采用YOLOv5算法對(duì)常見水果進(jìn)行檢測(cè)和識(shí)別,實(shí)現(xiàn)對(duì)圖片、視頻和實(shí)時(shí)視頻中的水果進(jìn)行準(zhǔn)確識(shí)別。YOLOv5[14]作為YOLO系列算法的最新版本,在保持實(shí)時(shí)性的同時(shí),進(jìn)一步提高了檢測(cè)準(zhǔn)確性。與其他目標(biāo)檢測(cè)算法相比,YOLOv5具有較高的性能和較低的計(jì)算復(fù)雜度,因此適合應(yīng)用于水果檢測(cè)與識(shí)別任務(wù)。
本文的主要貢獻(xiàn)包括:(1)介紹了一種基于YOLOv5的水果檢測(cè)與識(shí)別系統(tǒng);(2)詳細(xì)描述了算法原理,提供了Python實(shí)現(xiàn)代碼以及訓(xùn)練數(shù)據(jù)集;(3)展示了基于PyQt的UI界面設(shè)計(jì),并分析了訓(xùn)練和評(píng)估結(jié)果等實(shí)驗(yàn)。本文旨在為相關(guān)領(lǐng)域的研究人員和新入門的朋友提供一個(gè)參考。

1. 系統(tǒng)界面演示效果
在本節(jié)中,我們將展示系統(tǒng)的界面效果。通過演示界面效果,可以幫助讀者更好地理解整個(gè)水果檢測(cè)與識(shí)別系統(tǒng)的工作流程,同時(shí)也有利于展示系統(tǒng)的功能和易用性。下面我們將通過圖片和描述來展示系統(tǒng)的界面效果,本系統(tǒng)具有以下主要功能:
(1)用戶登錄注冊(cè):支持用戶進(jìn)行注冊(cè)和登錄。

(2)選擇圖片識(shí)別:用戶可以上傳單張圖片進(jìn)行水果檢測(cè)與識(shí)別,系統(tǒng)將識(shí)別出圖片中的水果并顯示相應(yīng)的類別和置信度。

(3)視頻識(shí)別:用戶可以上傳視頻文件進(jìn)行水果檢測(cè)與識(shí)別,系統(tǒng)將實(shí)時(shí)識(shí)別視頻中的水果并顯示相應(yīng)的類別和置信度。

(4)攝像頭識(shí)別:用戶可以使用攝像頭進(jìn)行實(shí)時(shí)水果檢測(cè)與識(shí)別,系統(tǒng)將捕捉攝像頭圖像并實(shí)時(shí)識(shí)別出水果,顯示相應(yīng)的類別和置信度。

(5)更換模型和修改文字圖標(biāo):用戶可以點(diǎn)擊右側(cè)的模型選擇按鈕更換不同的模型,對(duì)于界面中的文字和圖標(biāo)的修改請(qǐng)參考文末的介紹。

2. 算法原理介紹
本系統(tǒng)采用了基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法YOLOv5,該算法是YOLO系列算法的最新版本,相比于YOLOv3和YOLOv4,YOLOv5在檢測(cè)精度和速度上都有很大的提升。YOLOv5算法的核心思想是將目標(biāo)檢測(cè)問題轉(zhuǎn)化為一個(gè)回歸問題。YOLOv5使用一種稱為“Anchor Free”的方法來代替?zhèn)鹘y(tǒng)目標(biāo)檢測(cè)算法中的Anchor框,通過直接預(yù)測(cè)物體中心點(diǎn)的坐標(biāo)來代替Anchor框。此外,YOLOv5還引入了一種稱為SPP(Spatial Pyramid Pooling)的特征提取方法,這種方法可以在不增加計(jì)算量的情況下,有效地提取多尺度特征,提高檢測(cè)性能。
在YOLOv5中,首先將輸入圖像通過骨干網(wǎng)絡(luò)進(jìn)行特征提取,得到一系列特征圖。然后,通過對(duì)這些特征圖進(jìn)行處理,將其轉(zhuǎn)化為一組檢測(cè)框和相應(yīng)的類別概率分?jǐn)?shù),即每個(gè)檢測(cè)框所屬的物體類別以及該物體的置信度。YOLOv5中的特征提取網(wǎng)絡(luò)使用CSPNet(Cross Stage Partial Network)結(jié)構(gòu),它將輸入特征圖分為兩部分,一部分通過一系列卷積層進(jìn)行處理,另一部分直接進(jìn)行下采樣,最后將這兩部分特征圖進(jìn)行融合。這種設(shè)計(jì)使得網(wǎng)絡(luò)具有更強(qiáng)的非線性表達(dá)能力,可以更好地處理目標(biāo)檢測(cè)任務(wù)中的復(fù)雜背景和多樣化物體。

在YOLOv5中,每個(gè)檢測(cè)框由其左上角坐標(biāo)(x,y)、寬度(w)、高度(h)和置信度(confidence)組成。同時(shí),每個(gè)檢測(cè)框還會(huì)預(yù)測(cè)C個(gè)類別的概率得分,即分類得分(ci),每個(gè)類別的得分之和等于1。因此,每個(gè)檢測(cè)框最終被表示為一個(gè)(C+5)維的向量。在訓(xùn)練階段,YOLOv5使用交叉熵?fù)p失函數(shù)來優(yōu)化模型。損失函數(shù)由定位損失、置信度損失和分類損失三部分組成,其中定位損失和置信度損失采用了Focal Loss和IoU Loss等優(yōu)化方法,能夠有效地緩解正負(fù)樣本不平衡和目標(biāo)尺寸變化等問題。
YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)是由Input、Backbone、Neck、Prediction組成。Yolov5的Input部分是網(wǎng)絡(luò)的輸入端,采用Mosaic數(shù)據(jù)增強(qiáng)方式,對(duì)輸入數(shù)據(jù)隨機(jī)裁剪,然后進(jìn)行拼接。Backbone是Yolov5提取特征的網(wǎng)絡(luò)部分,特征提取能力直接影響整個(gè)網(wǎng)絡(luò)性能。YOLOv5的Backbone相比于之前Yolov4提出了新的Focus結(jié)構(gòu)。Focus結(jié)構(gòu)是將圖片進(jìn)行切片操作,將W(寬)、H(高)信息轉(zhuǎn)移到了通道空間中,使得在沒有丟失任何信息的情況下,進(jìn)行了2倍下采樣操作。博主覺得YOLOv5不失為一種目標(biāo)檢測(cè)的高性能解決方案,能夠以較高的準(zhǔn)確率對(duì)海洋動(dòng)物進(jìn)行分類與定位。當(dāng)然現(xiàn)在YOLOv6、YOLOv7、YOLOv8等算法也在不斷提出和改進(jìn),等其代碼版本成熟后博主也會(huì)再設(shè)計(jì)本系統(tǒng)的算法,敬請(qǐng)期待。


3. 數(shù)據(jù)集與預(yù)處理
在水果識(shí)別領(lǐng)域有一些數(shù)據(jù)集如Perez-Borrero I, Marin-Santos D, Gegundez-Arias M E, et al. A fast and accurate deep learning method for strawberry instance segmentation. Computers and Electronics in Agriculture, 2020, 178: 105736(https://www.sciencedirect.com/science/article/pii/S0168169920300624),如下圖所示。

還有Laboro Tomato數(shù)據(jù)集(https://github.com/laboroai/LaboroTomato),也可參考這篇文章Real-time fruit detection using deep neural networks on CPU (RTFD): An edge AI application(https://www.sciencedirect.com/science/article/pii/S0168169922008250#b0090),包括介紹和算法都可以參考。

本系統(tǒng)使用的水果檢測(cè)數(shù)據(jù)集Fruit Detection Dataset,手動(dòng)標(biāo)注了包含蘋果、香蕉、火龍果、番石榴、橙子、梨、菠蘿、釋迦果等8個(gè)類別的水果,共計(jì)3030張圖片。該數(shù)據(jù)集中每個(gè)類別的水果都有大量的旋轉(zhuǎn)和不同的光照條件,有助于訓(xùn)練出更加魯棒的檢測(cè)模型。本文實(shí)驗(yàn)的水果檢測(cè)識(shí)別數(shù)據(jù)集包含訓(xùn)練集2424張圖片,驗(yàn)證集303張圖片,測(cè)試集303張圖片,選取部分?jǐn)?shù)據(jù)部分樣本數(shù)據(jù)集如圖所示。

由于YOLOv5算法對(duì)輸入圖片大小有限制,需要將所有圖片調(diào)整為相同的大小。為了在不影響檢測(cè)精度的情況下盡可能減小圖片的失真,我們將所有圖片調(diào)整為640x640的大小,并保持原有的寬高比例。此外,為了增強(qiáng)模型的泛化能力和魯棒性,我們還使用了數(shù)據(jù)增強(qiáng)技術(shù),包括隨機(jī)旋轉(zhuǎn)、縮放、裁剪和顏色變換等,以擴(kuò)充數(shù)據(jù)集并減少過擬合風(fēng)險(xiǎn)。

5. 系統(tǒng)實(shí)現(xiàn)
5.1 Python實(shí)現(xiàn)
本系統(tǒng)的深度學(xué)習(xí)模型使用PyTorch實(shí)現(xiàn),基于YOLOv5算法進(jìn)行目標(biāo)檢測(cè)。在訓(xùn)練階段,我們使用了預(yù)訓(xùn)練模型作為初始模型進(jìn)行訓(xùn)練,然后通過多次迭代優(yōu)化網(wǎng)絡(luò)參數(shù),以達(dá)到更好的檢測(cè)性能。在訓(xùn)練過程中,我們采用了學(xué)習(xí)率衰減和數(shù)據(jù)增強(qiáng)等技術(shù),以增強(qiáng)模型的泛化能力和魯棒性。
在測(cè)試階段,我們使用了訓(xùn)練好的模型來對(duì)新的圖片、視頻和實(shí)時(shí)視頻流進(jìn)行檢測(cè)。通過設(shè)置閾值,將置信度低于閾值的檢測(cè)框過濾掉,最終得到檢測(cè)結(jié)果。同時(shí),我們還可以將檢測(cè)結(jié)果保存為圖片或視頻格式,以便進(jìn)行后續(xù)分析和應(yīng)用。本系統(tǒng)基于YOLOv5算法,使用PyTorch實(shí)現(xiàn)。代碼中用到的主要庫包括PyTorch、NumPy、OpenCV、PyQt等。實(shí)現(xiàn)過程中,我們首先需要導(dǎo)入所需的庫和模塊:

5. 系統(tǒng)實(shí)現(xiàn)
5.1 Python實(shí)現(xiàn)
本系統(tǒng)的深度學(xué)習(xí)模型使用PyTorch實(shí)現(xiàn),基于YOLOv5算法進(jìn)行目標(biāo)檢測(cè)。在訓(xùn)練階段,我們使用了預(yù)訓(xùn)練模型作為初始模型進(jìn)行訓(xùn)練,然后通過多次迭代優(yōu)化網(wǎng)絡(luò)參數(shù),以達(dá)到更好的檢測(cè)性能。在訓(xùn)練過程中,我們采用了學(xué)習(xí)率衰減和數(shù)據(jù)增強(qiáng)等技術(shù),以增強(qiáng)模型的泛化能力和魯棒性。
在測(cè)試階段,我們使用了訓(xùn)練好的模型來對(duì)新的圖片、視頻和實(shí)時(shí)視頻流進(jìn)行檢測(cè)。通過設(shè)置閾值,將置信度低于閾值的檢測(cè)框過濾掉,最終得到檢測(cè)結(jié)果。同時(shí),我們還可以將檢測(cè)結(jié)果保存為圖片或視頻格式,以便進(jìn)行后續(xù)分析和應(yīng)用。本系統(tǒng)基于YOLOv5算法,使用PyTorch實(shí)現(xiàn)。代碼中用到的主要庫包括PyTorch、NumPy、OpenCV、PyQt等。實(shí)現(xiàn)過程中,我們首先需要導(dǎo)入所需的庫和模塊:
然后,我們需要定義一些函數(shù),其中predict()函數(shù)用于實(shí)現(xiàn)圖片的預(yù)測(cè)推理;cv_imread()函數(shù)用于讀取圖片;plot_one_box()函數(shù)用于繪制預(yù)測(cè)框。
在這段Python代碼中,我們首先定義了一個(gè)名為predict的函數(shù),用于對(duì)輸入的圖像進(jìn)行檢測(cè)和分類。該函數(shù)輸入一個(gè)圖像,先將其轉(zhuǎn)化為PyTorch Tensor,然后對(duì)圖像進(jìn)行預(yù)測(cè)和非極大值抑制,得到預(yù)測(cè)結(jié)果和推理時(shí)間。接下來我們定義了cv_imread函數(shù),用于讀取圖片。cv_imread函數(shù)通過OpenCV庫的imdecode函數(shù)讀取圖片,并將其轉(zhuǎn)化為NumPy數(shù)組,然后返回該數(shù)組。接著我們定義了plot_one_box函數(shù),該函數(shù)用于在圖像上畫出檢測(cè)框和類別標(biāo)簽,其中函數(shù)參數(shù)中包括了待畫出的圖像、檢測(cè)框坐標(biāo)、類別標(biāo)簽、顏色等。
最后,在if?name?== 'main':語句中,我們首先讀取一張測(cè)試圖片,并將其調(diào)整為合適的大小,然后將其輸入到predict函數(shù)中進(jìn)行檢測(cè)和分類,得到檢測(cè)結(jié)果和推理時(shí)間。接著,我們通過遍歷檢測(cè)結(jié)果,將檢測(cè)到的目標(biāo)物的信息添加到detInfo列表中,然后調(diào)用plot_one_box函數(shù),將目標(biāo)物的檢測(cè)框和類別標(biāo)簽畫在圖像上。最后通過OpenCV庫的imshow函數(shù)將結(jié)果圖像實(shí)時(shí)顯示在屏幕上。
這部分代碼是我們整個(gè)系統(tǒng)實(shí)現(xiàn)的關(guān)鍵部分,通過修改和集成該部分代碼同樣可以實(shí)現(xiàn)對(duì)輸入視頻和實(shí)時(shí)攝像頭畫面的實(shí)時(shí)檢測(cè)和分類,并且可以通過界面將結(jié)果顯示給用戶,提高了系統(tǒng)的實(shí)用性。
5.2 PyQt界面設(shè)計(jì)
PyQt是Python語言的GUI編程解決方案之一,可以快速地為Python程序創(chuàng)建GUI應(yīng)用。在本文中,我們使用PyQt庫創(chuàng)建一個(gè)圖形化界面,為用戶提供簡單易用的交互界面,實(shí)現(xiàn)用戶選擇圖片、視頻或?qū)崟r(shí)視頻進(jìn)行目標(biāo)檢測(cè)。在本節(jié)中,我們將介紹系統(tǒng)的GUI設(shè)計(jì)和開發(fā)過程,包括主窗口的設(shè)計(jì)、UI控件的布局以及信號(hào)槽的連接。
在本系統(tǒng)中,使用PyQt5庫設(shè)計(jì)了可視化的GUI界面,主要包括以下六個(gè)模塊:
圖片檢測(cè)模塊:用戶可以選擇本地的一張圖片進(jìn)行檢測(cè),檢測(cè)結(jié)果將在界面中實(shí)時(shí)顯示。用戶也可以選擇多張圖片進(jìn)行批量檢測(cè),并將結(jié)果記錄保存到本地。
視頻檢測(cè)模塊:用戶可以選擇本地的一個(gè)視頻進(jìn)行檢測(cè),檢測(cè)結(jié)果將在界面中實(shí)時(shí)顯示。用戶也可以選擇多個(gè)視頻進(jìn)行批量檢測(cè),并將結(jié)果記錄保存到本地。
實(shí)時(shí)檢測(cè)模塊:用戶可以啟動(dòng)攝像頭進(jìn)行實(shí)時(shí)檢測(cè),檢測(cè)結(jié)果將在界面中實(shí)時(shí)顯示。
更換模型模塊:用戶可以選擇不同的預(yù)訓(xùn)練模型進(jìn)行檢測(cè),系統(tǒng)提供了多種不同的預(yù)訓(xùn)練模型供用戶選擇。
結(jié)果記錄回看模塊:用戶可以查看歷史檢測(cè)結(jié)果,并對(duì)檢測(cè)結(jié)果進(jìn)行搜索和篩選。
其他模塊:界面中還包括了一些輔助模塊,如登錄注冊(cè)、設(shè)置等。
在本系統(tǒng)中,我們使用Qt Designer設(shè)計(jì)圖形界面,然后使用PyQt將設(shè)計(jì)好的UI文件轉(zhuǎn)換為Python代碼。圖形界面中包含多個(gè)UI控件,例如:菜單欄、工具欄、標(biāo)簽、按鈕等。通過PyQt中的信號(hào)槽機(jī)制,可以使得UI控件與程序邏輯代碼相互連接。

界面設(shè)計(jì)使用了Qt Designer工具,通過拖拽組件的方式進(jìn)行布局,同時(shí)也可以通過代碼進(jìn)行動(dòng)態(tài)添加和修改。在界面的設(shè)計(jì)過程中,我們主要使用了以下幾個(gè)組件:
QLabel:用于顯示文字和圖片。
QToolButton:用于實(shí)現(xiàn)按鈕功能。
QComboBox:用于實(shí)現(xiàn)下拉框功能,供用戶選擇預(yù)訓(xùn)練模型。
QFileDialog:用于選擇本地的圖片和視頻。
QTableWidget:用于展示歷史檢測(cè)結(jié)果,并提供搜索和篩選功能。
為了使得界面更加美觀和易于操作,我們還可以自定義控件樣式,例如在系統(tǒng)中使用的按鈕等,都進(jìn)行了樣式的調(diào)整。具體實(shí)現(xiàn)方式是通過QSS文件,使用CSS語法進(jìn)行樣式定義。
在圖形界面的實(shí)現(xiàn)過程中,我們還需要使用Python中的OpenCV庫實(shí)現(xiàn)視頻的讀取和顯示。使用OpenCV可以快速實(shí)現(xiàn)視頻的讀取、播放和保存等操作,并且可以與PyQt進(jìn)行結(jié)合,實(shí)現(xiàn)更為高效的圖像和視頻處理。下面我們給出系統(tǒng)GUI的示例圖:

6. 實(shí)驗(yàn)結(jié)果與分析
在實(shí)驗(yàn)結(jié)果與分析部分,我們不僅通過精度和召回率等指標(biāo)來評(píng)估模型的性能,還通過損失曲線和PR曲線來分析訓(xùn)練過程
我們使用了前面介紹的水果檢測(cè)數(shù)據(jù)集進(jìn)行訓(xùn)練,該數(shù)據(jù)集包含多種不同的水果類別,包括蘋果、香蕉、橙子、西瓜等,共計(jì)8個(gè)類別。我們使用了YOLOv5算法,訓(xùn)練了300個(gè)epochs,訓(xùn)練過程截圖如下。

在訓(xùn)練過程中,我們使用tensorboard記錄了模型在訓(xùn)練集和驗(yàn)證集上的損失曲線。從圖6-1中可以看出,隨著訓(xùn)練次數(shù)的增加,模型的訓(xùn)練損失和驗(yàn)證損失都逐漸降低,說明模型不斷地學(xué)習(xí)到更加精準(zhǔn)的特征。

在訓(xùn)練結(jié)束后,我們對(duì)模型在測(cè)試集上進(jìn)行了評(píng)估,得到了以下結(jié)果。下圖展示了我們訓(xùn)練的YOLOv5模型在測(cè)試集上的PR曲線??梢钥吹?,模型在不同類別上都取得了較高的召回率和精確率,整體表現(xiàn)良好。

綜上,我們訓(xùn)練的YOLOv5模型在水果檢測(cè)數(shù)據(jù)集上表現(xiàn)良好,具有較高的檢測(cè)精度和魯棒性,可以在實(shí)際場(chǎng)景中應(yīng)用。
博主對(duì)整個(gè)系統(tǒng)進(jìn)行了詳細(xì)測(cè)試,最終開發(fā)出一版流暢得到清新界面,就是博文演示部分的展示,完整的UI界面、測(cè)試圖片視頻、代碼文件,以及Python離線依賴包(方便安裝運(yùn)行,也可自行配置環(huán)境),均已打包上傳,感興趣的朋友可以通過下載鏈接獲取。

下載鏈接
若您想獲得博文中涉及的實(shí)現(xiàn)完整全部程序文件(包括測(cè)試圖片、視頻,py, UI文件等,如下圖),這里已打包上傳至博主的面包多平臺(tái),見可參考博客與視頻,已將所有涉及的文件同時(shí)打包到里面,點(diǎn)擊即可運(yùn)行,完整文件截圖如下:

在文件夾下的資源顯示如下,下面的鏈接中也給出了Python的離線依賴包,讀者可在正確安裝Anaconda和Pycharm軟件后,復(fù)制離線依賴包至項(xiàng)目目錄下進(jìn)行安裝,離線依賴的使用詳細(xì)演示也可見本人B站視頻:win11從頭安裝軟件和配置環(huán)境運(yùn)行深度學(xué)習(xí)項(xiàng)目、Win10中使用pycharm和anaconda進(jìn)行python環(huán)境配置教程。

注意:該代碼采用Pycharm+Python3.8開發(fā),經(jīng)過測(cè)試能成功運(yùn)行,運(yùn)行界面的主程序?yàn)閞unMain.py和LoginUI.py,測(cè)試圖片腳本可運(yùn)行testPicture.py,測(cè)試視頻腳本可運(yùn)行testVideo.py。為確保程序順利運(yùn)行,請(qǐng)按照requirements.txt配置Python依賴包的版本。Python版本:3.8,請(qǐng)勿使用其他版本,詳見requirements.txt文件;
完整資源中包含數(shù)據(jù)集及訓(xùn)練代碼,環(huán)境配置與界面中文字、圖片、logo等的修改方法請(qǐng)見視頻,項(xiàng)目完整文件下載請(qǐng)見以下鏈接處給出:???
完整代碼下載:https://mbd.pub/o/bread/mbd-ZJiYkpdx
參考視頻演示:https://www.bilibili.com/video/BV1rT411h7dY/
離線依賴庫下載:https://pan.baidu.com/s/1hW9z9ofV1FRSezTSj59JSg?pwd=oy4n?(提取碼:oy4n )

界面中文字、圖標(biāo)和背景圖修改方法:
在Qt Designer中可以徹底修改界面的各個(gè)控件及設(shè)置,然后將ui文件轉(zhuǎn)換為py文件即可調(diào)用和顯示界面。如果只需要修改界面中的文字、圖標(biāo)和背景圖的,可以直接在ConfigUI.config文件中修改,步驟如下:
打開UI_rec/tools/ConfigUI.config文件,若亂碼請(qǐng)選擇GBK編碼打開。
如需修改界面文字,只要選中要改的字符替換成自己的就好。
如需修改背景、圖標(biāo)等,只需修改圖片的路徑。例如,原文件中的背景圖設(shè)置如下:
可修改為自己的名為background2.png圖片(位置在UI_rec/icons/文件夾中),可將該項(xiàng)設(shè)置如下即可修改背景圖:

結(jié)束語
由于博主能力有限,博文中提及的方法即使經(jīng)過試驗(yàn),也難免會(huì)有疏漏之處。希望您能熱心指出其中的錯(cuò)誤,以便下次修改時(shí)能以一個(gè)更完美更嚴(yán)謹(jǐn)?shù)臉幼?,呈現(xiàn)在大家面前。同時(shí)如果有更好的實(shí)現(xiàn)方法也請(qǐng)您不吝賜教。

參考文獻(xiàn)
[1] Bargoti, S., & Underwood, J. P. (2017). Image segmentation for fruit detection and yield estimation in apple orchards. Journal of Field Robotics, 34(6), 1039-1060.
[2] Girshick, R., Donahue, J., Darrell, T., & Malik, J. (2014). Rich feature hierarchies for accurate object detection and semantic segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 580-587).
[3] Girshick, R. (2015). Fast R-CNN. In Proceedings of the IEEE international conference on computer vision (pp. 1440-1448).
[4] Ren, S., He, K., Girshick, R., & Sun, J. (2015). Faster R-CNN: Towards real-time object detection with region proposal networks. In Advances in neural information processing systems (pp. 91-99).
[5] Liu, W., Anguelov, D., Erhan, D., Szegedy, C., Reed, S., Fu, C. Y., & Berg, A. C. (2016, October). SSD: Single shot multibox detector. In European conference on computer vision (pp. 21-37). Springer, Cham.
[6] Lin, T. Y., Goyal, P., Girshick, R., He, K., & Dollár, P. (2017). Focal loss for dense object detection. In Proceedings of the IEEE international conference on computer vision (pp. 2980-2988).
[7] Redmon, J., Divvala, S., Girshick, R., & Farhadi, A. (2016). You only look once: Unified, real-time object detection. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 779-788).
[8] Redmon, J., & Farhadi, A. (2017). YOLO9000: Better, faster, stronger. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 7263-7271).
[9] Redmon, J., & Farhadi, A. (2018). YOLOv3: An incremental improvement. arXiv preprint arXiv:1804.02767.
[10] Bochkovskiy, A., Wang, C. Y., & Liao, H. Y. M. (2020). YOLOv4: Optimal speed and accuracy of object detection. arXiv preprint arXiv:2004.10934.
[11] Sa, I., Ge, Z., Dayoub, F., Upcroft, B., Perez, T., & McCool, C. (2016). DeepFruits: A fruit detection system using deep neural networks. Sensors, 16(8), 1222.
[12] Rahnemoonfar, M., & Sheppard, C. (2017). Deep count: Fruit counting based on deep simulated learning. Sensors, 17(4), 905.
[13] Chakraborty S K, Subeesh A, Dubey K, et al. Development of an optimally designed real-time automatic citrus fruit grading–sorting machine leveraging computer vision-based adaptive deep learning model[J]. Engineering Applications of Artificial Intelligence, 2023, 120: 105826.
[14] Jocher, G., Stoken, A., Borovec, J., Bendahan, R. A., Puig, D., Tokozume, Y., ... & Guan, H. (2021). Ultralytics/yolov5: v5.0-YOLOv5-PyTorch.