《博主簡(jiǎn)介》
小伙伴們好,我是阿旭。專注于人工智能、AIGC、python、計(jì)算機(jī)視覺(jué)相關(guān)分享研究。
?更多學(xué)習(xí)資源,可關(guān)注公-仲-hao:【阿旭算法與機(jī)器學(xué)習(xí)】,共同學(xué)習(xí)交流~
??感謝小伙伴們點(diǎn)贊、關(guān)注!
《------往期經(jīng)典推薦------》
一、AI應(yīng)用軟件開(kāi)發(fā)實(shí)戰(zhàn)專欄【鏈接】
項(xiàng)目名稱 | 項(xiàng)目名稱 |
---|---|
1.【人臉識(shí)別與管理系統(tǒng)開(kāi)發(fā)】 | 2.【車(chē)牌識(shí)別與自動(dòng)收費(fèi)管理系統(tǒng)開(kāi)發(fā)】 |
3.【手勢(shì)識(shí)別系統(tǒng)開(kāi)發(fā)】 | 4.【人臉面部活體檢測(cè)系統(tǒng)開(kāi)發(fā)】 |
5.【圖片風(fēng)格快速遷移軟件開(kāi)發(fā)】 | 6.【人臉表表情識(shí)別系統(tǒng)】 |
7.【YOLOv8多目標(biāo)識(shí)別與自動(dòng)標(biāo)注軟件開(kāi)發(fā)】 | 8.【基于YOLOv8深度學(xué)習(xí)的行人跌倒檢測(cè)系統(tǒng)】 |
9.【基于YOLOv8深度學(xué)習(xí)的PCB板缺陷檢測(cè)系統(tǒng)】 | 10.【基于YOLOv8深度學(xué)習(xí)的生活垃圾分類目標(biāo)檢測(cè)系統(tǒng)】 |
11.【基于YOLOv8深度學(xué)習(xí)的安全帽目標(biāo)檢測(cè)系統(tǒng)】 | 12.【基于YOLOv8深度學(xué)習(xí)的120種犬類檢測(cè)與識(shí)別系統(tǒng)】 |
13.【基于YOLOv8深度學(xué)習(xí)的路面坑洞檢測(cè)系統(tǒng)】 | 14.【基于YOLOv8深度學(xué)習(xí)的火焰煙霧檢測(cè)系統(tǒng)】 |
15.【基于YOLOv8深度學(xué)習(xí)的鋼材表面缺陷檢測(cè)系統(tǒng)】 | 16.【基于YOLOv8深度學(xué)習(xí)的艦船目標(biāo)分類檢測(cè)系統(tǒng)】 |
17.【基于YOLOv8深度學(xué)習(xí)的西紅柿成熟度檢測(cè)系統(tǒng)】 | 18.【基于YOLOv8深度學(xué)習(xí)的血細(xì)胞檢測(cè)與計(jì)數(shù)系統(tǒng)】 |
19.【基于YOLOv8深度學(xué)習(xí)的吸煙/抽煙行為檢測(cè)系統(tǒng)】 | 20.【基于YOLOv8深度學(xué)習(xí)的水稻害蟲(chóng)檢測(cè)與識(shí)別系統(tǒng)】 |
21.【基于YOLOv8深度學(xué)習(xí)的高精度車(chē)輛行人檢測(cè)與計(jì)數(shù)系統(tǒng)】 | 22.【基于YOLOv8深度學(xué)習(xí)的路面標(biāo)志線檢測(cè)與識(shí)別系統(tǒng)】 |
22.【基于YOLOv8深度學(xué)習(xí)的智能小麥害蟲(chóng)檢測(cè)識(shí)別系統(tǒng)】 | 23.【基于YOLOv8深度學(xué)習(xí)的智能玉米害蟲(chóng)檢測(cè)識(shí)別系統(tǒng)】 |
24.【基于YOLOv8深度學(xué)習(xí)的200種鳥(niǎo)類智能檢測(cè)與識(shí)別系統(tǒng)】 | 25.【基于YOLOv8深度學(xué)習(xí)的45種交通標(biāo)志智能檢測(cè)與識(shí)別系統(tǒng)】 |
26.【基于YOLOv8深度學(xué)習(xí)的人臉面部表情識(shí)別系統(tǒng)】 | 27.【基于YOLOv8深度學(xué)習(xí)的蘋(píng)果葉片病害智能診斷系統(tǒng)】 |
28.【基于YOLOv8深度學(xué)習(xí)的智能肺炎診斷系統(tǒng)】 |
二、機(jī)器學(xué)習(xí)實(shí)戰(zhàn)專欄【鏈接】,已更新31期,歡迎關(guān)注,持續(xù)更新中~~
三、深度學(xué)習(xí)【Pytorch】專欄【鏈接】
四、【Stable Diffusion繪畫(huà)系列】專欄【鏈接】
《------正文------》
基本功能演示
摘要:
葡萄簇目標(biāo)檢測(cè)系統(tǒng)
能夠自動(dòng)檢測(cè)葡萄園中的葡萄簇
對(duì)象,這對(duì)于精確農(nóng)業(yè)和數(shù)據(jù)驅(qū)動(dòng)的作物管理
是一大助力,同時(shí)有助于實(shí)現(xiàn)可持續(xù)發(fā)展的農(nóng)業(yè)實(shí)踐。本文基于YOLOv8深度學(xué)習(xí)框架
,訓(xùn)練了一個(gè)進(jìn)行葡萄簇
的目標(biāo)檢測(cè)模型,可檢測(cè)葡萄園中的葡萄簇對(duì)象。并基于此模型開(kāi)發(fā)了一款帶UI界面的葡萄簇目標(biāo)檢測(cè)系統(tǒng)
,可用于實(shí)時(shí)檢測(cè)場(chǎng)景中的葡萄簇
,也更方便進(jìn)行功能的展示。該系統(tǒng)是基于python
與PyQT5
開(kāi)發(fā)的,支持圖片
、視頻
以及攝像頭
進(jìn)行目標(biāo)檢測(cè)
,并保存檢測(cè)結(jié)果
。本文提供了完整的Python代碼和使用教程,給感興趣的小伙伴參考學(xué)習(xí),完整的代碼資源文件獲取方式見(jiàn)文末。
點(diǎn)擊跳轉(zhuǎn)至文末《完整相關(guān)文件及源碼》獲取
前言
葡萄簇目標(biāo)檢測(cè)系統(tǒng)
能夠自動(dòng)檢測(cè)葡萄園中的葡萄簇對(duì)象,這一技術(shù)的開(kāi)發(fā)對(duì)現(xiàn)代農(nóng)業(yè)尤為重要。它不僅能夠提高葡萄園的管理效率
,而且還可以提升果實(shí)質(zhì)量、優(yōu)化收成時(shí)機(jī)和方法,進(jìn)而提高整體產(chǎn)量和降低生產(chǎn)成本。系統(tǒng)對(duì)于精確農(nóng)業(yè)和數(shù)據(jù)驅(qū)動(dòng)的作物管理
是一大助力,同時(shí)有助于實(shí)現(xiàn)可持續(xù)發(fā)展的農(nóng)業(yè)實(shí)踐。
葡萄簇目標(biāo)檢測(cè)系統(tǒng)的應(yīng)用場(chǎng)景有很多,例如:
產(chǎn)量預(yù)估
:通過(guò)檢測(cè)葡萄簇,系統(tǒng)可以幫助估計(jì)葡萄園的整體產(chǎn)量,從而做出更好的市場(chǎng)策略和資源分配。病蟲(chóng)害檢測(cè)
:自動(dòng)識(shí)別可能暗示病害或蟲(chóng)害的跡象,為防治措施提供實(shí)時(shí)數(shù)據(jù)支持。自動(dòng)化收獲
:在安裝于自動(dòng)化采摘機(jī)器或無(wú)人機(jī)上時(shí),可以精確識(shí)別成熟葡萄簇,輔助或完全實(shí)現(xiàn)收獲自動(dòng)化。成熟度評(píng)估
:定期監(jiān)測(cè)葡萄簇的生長(zhǎng)狀態(tài),確定最佳采摘時(shí)機(jī),以確保果實(shí)的品質(zhì)。精細(xì)化管理
:詳細(xì)記錄葡萄生長(zhǎng)情況,幫助農(nóng)場(chǎng)主做出基于數(shù)據(jù)的灌溉、施肥等決策。科研與教學(xué)
:為葡萄生長(zhǎng)研究提供照片資料,支持農(nóng)業(yè)科研和教育工作。
簡(jiǎn)單總結(jié),葡萄簇目標(biāo)檢測(cè)系統(tǒng)的引入對(duì)于現(xiàn)代葡萄栽培具有顯著意義,它不僅可以優(yōu)化生產(chǎn)管理,降低人力成本,還能夠通過(guò)精確監(jiān)控提高葡萄產(chǎn)品的市場(chǎng)競(jìng)爭(zhēng)力。此系統(tǒng)代表了信息技術(shù)在農(nóng)業(yè)領(lǐng)域應(yīng)用的積極趨勢(shì),有助于推動(dòng)農(nóng)業(yè)自動(dòng)化和智能化的發(fā)展。
博主通過(guò)搜集實(shí)際葡萄園場(chǎng)景中的葡萄簇
相關(guān)數(shù)據(jù)圖片,根據(jù)YOLOv8的目標(biāo)檢測(cè)技術(shù),基于python與Pyqt5
開(kāi)發(fā)了一款界面簡(jiǎn)潔的葡萄簇目標(biāo)檢測(cè)系統(tǒng)
,可支持圖片、視頻以及攝像頭檢測(cè)
,同時(shí)可以將圖片或者視頻檢測(cè)結(jié)果進(jìn)行保存
。
軟件初始界面如下圖所示:
檢測(cè)結(jié)果界面如下:
一、軟件核心功能介紹及效果演示
軟件主要功能
1. 可對(duì)實(shí)際圖像中的葡萄簇
對(duì)象進(jìn)行檢測(cè);
2. 支持圖片、視頻及攝像頭
進(jìn)行檢測(cè),同時(shí)支持圖片的批量檢測(cè)
;
3. 界面可實(shí)時(shí)顯示目標(biāo)位置
、目標(biāo)總數(shù)
、置信度
、用時(shí)
等信息;
4. 支持圖片
或者視頻
的檢測(cè)結(jié)果保存
;
(1)圖片檢測(cè)演示
點(diǎn)擊圖片
圖標(biāo),選擇需要檢測(cè)的圖片,或者點(diǎn)擊文件夾圖標(biāo)
,選擇需要批量檢測(cè)圖片所在的文件夾,操作演示如下:
點(diǎn)擊目標(biāo)下拉框后,可以選定指定目標(biāo)的結(jié)果信息進(jìn)行顯示。 點(diǎn)擊保存
按鈕,會(huì)對(duì)視頻檢測(cè)結(jié)果進(jìn)行保存,存儲(chǔ)路徑為:save_data
目錄下。注:1.右側(cè)目標(biāo)位置默認(rèn)顯示置信度最大一個(gè)目標(biāo)位置。所有檢測(cè)結(jié)果均在左下方表格中顯示。
單個(gè)圖片檢測(cè)操作如下:
批量圖片檢測(cè)操作如下:
(2)視頻檢測(cè)演示
點(diǎn)擊視頻
圖標(biāo),打開(kāi)選擇需要檢測(cè)的視頻,就會(huì)自動(dòng)顯示檢測(cè)結(jié)果。點(diǎn)擊保存
按鈕,會(huì)對(duì)視頻檢測(cè)結(jié)果進(jìn)行保存,存儲(chǔ)路徑為:save_data
目錄下。
(3)攝像頭檢測(cè)演示
點(diǎn)擊攝像頭
圖標(biāo),可以打開(kāi)攝像頭,可以實(shí)時(shí)進(jìn)行檢測(cè),再次點(diǎn)擊攝像頭
圖標(biāo),可關(guān)閉攝像頭。
(4)保存圖片與視頻檢測(cè)結(jié)果
點(diǎn)擊保存
按鈕后,會(huì)將當(dāng)前選擇的圖片【含批量圖片】或者視頻
的檢測(cè)結(jié)果進(jìn)行保存。檢測(cè)的圖片與視頻結(jié)果會(huì)存儲(chǔ)在save_data
目錄下。
二、模型的訓(xùn)練、評(píng)估與推理
1.YOLOv8的基本原理
YOLOv8是一種前沿的目標(biāo)檢測(cè)技術(shù),它基于先前YOLO版本在目標(biāo)檢測(cè)任務(wù)上的成功,進(jìn)一步提升了性能和靈活性。主要的創(chuàng)新點(diǎn)包括一個(gè)新的骨干網(wǎng)絡(luò)、一個(gè)新的 Ancher-Free 檢測(cè)頭和一個(gè)新的損失函數(shù),可以在從 CPU 到 GPU 的各種硬件平臺(tái)上運(yùn)行
。
其主要網(wǎng)絡(luò)結(jié)構(gòu)如下:
2. 數(shù)據(jù)集準(zhǔn)備與訓(xùn)練
本文使用的數(shù)據(jù)集實(shí)際葡萄園場(chǎng)景中拍攝的圖片,并使用Labelimg標(biāo)注工具對(duì)每張圖片中的目標(biāo)邊框(Bounding Box)及類別進(jìn)行標(biāo)注。部分圖像及標(biāo)注如下圖所示。:
圖片數(shù)據(jù)的存放格式如下,在項(xiàng)目目錄中新建datasets
目錄,同時(shí)將檢測(cè)的圖片分為訓(xùn)練集與驗(yàn)證集放入GrapeData
目錄下。
同時(shí)我們需要新建一個(gè)data.yaml
文件,用于存儲(chǔ)訓(xùn)練數(shù)據(jù)的路徑及模型需要進(jìn)行檢測(cè)的類別。YOLOv8在進(jìn)行模型訓(xùn)練時(shí),會(huì)讀取該文件的信息,用于進(jìn)行模型的訓(xùn)練與驗(yàn)證。data.yaml
的具體內(nèi)容如下:
train: E:\MyCVProgram\GrapeDetection\datasets\GrapeData\train # train images (relative to 'path') 128 images
val: E:\MyCVProgram\GrapeDetection\datasets\GrapeData\val # val images (relative to 'path') 128 images
# number of classes
nc: 1
# Classes
names: ['Grape']
注:train與val后面表示需要訓(xùn)練圖片的路徑,建議直接寫(xiě)自己文件的絕對(duì)路徑。
數(shù)據(jù)準(zhǔn)備完成后,通過(guò)調(diào)用train.py
文件進(jìn)行模型訓(xùn)練,epochs
參數(shù)用于調(diào)整訓(xùn)練的輪數(shù),batch
參數(shù)用于調(diào)整訓(xùn)練的批次大小【根據(jù)內(nèi)存大小調(diào)整,最小為1】,代碼如下:
#coding:utf-8
from ultralytics import YOLO
# 加載預(yù)訓(xùn)練模型
model = YOLO("yolov8n.pt")
# Use the model
if __name__ == '__main__':
# Use the model
results = model.train(data='datasets/GrapeData/data.yaml', epochs=300, batch=4) # 訓(xùn)練模型
# 將模型轉(zhuǎn)為onnx格式
# success = model.export(format='onnx')
3. 訓(xùn)練結(jié)果評(píng)估
在深度學(xué)習(xí)中,我們通常用損失函數(shù)下降的曲線來(lái)觀察模型訓(xùn)練的情況。YOLOv8在訓(xùn)練時(shí)主要包含三個(gè)方面的損失:定位損失(box_loss)、分類損失(cls_loss)和動(dòng)態(tài)特征損失(dfl_loss),在訓(xùn)練結(jié)束后,可以在runs/
目錄下找到訓(xùn)練過(guò)程及結(jié)果文件,如下所示:
各損失函數(shù)作用說(shuō)明:定位損失box_loss
:預(yù)測(cè)框與標(biāo)定框之間的誤差(GIoU),越小定位得越準(zhǔn);分類損失cls_loss
:計(jì)算錨框與對(duì)應(yīng)的標(biāo)定分類是否正確,越小分類得越準(zhǔn);動(dòng)態(tài)特征損失(dfl_loss)
:DFLLoss是一種用于回歸預(yù)測(cè)框與目標(biāo)框之間距離的損失函數(shù)。在計(jì)算損失時(shí),目標(biāo)框需要縮放到特征圖尺度,即除以相應(yīng)的stride,并與預(yù)測(cè)的邊界框計(jì)算Ciou Loss,同時(shí)與預(yù)測(cè)的anchors中心點(diǎn)到各邊的距離計(jì)算回歸DFLLoss。這個(gè)過(guò)程是YOLOv8訓(xùn)練流程中的一部分,通過(guò)計(jì)算DFLLoss可以更準(zhǔn)確地調(diào)整預(yù)測(cè)框的位置,提高目標(biāo)檢測(cè)的準(zhǔn)確性。
本文訓(xùn)練結(jié)果如下:
我們通常用PR曲線
來(lái)體現(xiàn)精確率和召回率的關(guān)系,本文訓(xùn)練結(jié)果的PR曲線如下。mAP
表示Precision和Recall作為兩軸作圖后圍成的面積,m表示平均,@后面的數(shù)表示判定iou為正負(fù)樣本的閾值。mAP@.5:表示閾值大于0.5的平均mAP,可以看到本文模型4目標(biāo)檢測(cè)的mAP@0.5
值為0.84
,結(jié)果還是很不錯(cuò)的。
4. 檢測(cè)結(jié)果識(shí)別
模型訓(xùn)練完成后,我們可以得到一個(gè)最佳的訓(xùn)練結(jié)果模型best.pt
文件,在runs/trian/weights
目錄下。我們可以使用該文件進(jìn)行后續(xù)的推理檢測(cè)。
圖片檢測(cè)代碼如下:
#coding:utf-8
from ultralytics import YOLO
import cv2
# 所需加載的模型目錄
path = 'models/best.pt'
# 需要檢測(cè)的圖片地址
img_path = "TestFiles/IMG_0209_0.jpg"
# 加載預(yù)訓(xùn)練模型
# conf 0.25 object confidence threshold for detection
# iou 0.7 intersection over union (IoU) threshold for NMS
model = YOLO(path, task='detect')
# model = YOLO(path, task='detect',conf=0.5)
# 檢測(cè)圖片
results = model(img_path)
res = results[0].plot()
res = cv2.resize(res,dsize=None,fx=0.5,fy=0.5,interpolation=cv2.INTER_LINEAR)
cv2.imshow("YOLOv8 Detection", res)
cv2.waitKey(0)
執(zhí)行上述代碼后,會(huì)將執(zhí)行的結(jié)果直接標(biāo)注在圖片上,結(jié)果如下:
以上便是關(guān)于此款葡萄簇目標(biāo)檢測(cè)系統(tǒng)
的原理與代碼介紹?;诖四P?,博主用python
與Pyqt5
開(kāi)發(fā)了一個(gè)帶界面的軟件系統(tǒng),即文中第二部分的演示內(nèi)容,能夠很好的支持圖片、視頻及攝像頭進(jìn)行檢測(cè),同時(shí)支持檢測(cè)結(jié)果的保存
。
關(guān)于該系統(tǒng)涉及到的完整源碼、UI界面代碼、數(shù)據(jù)集、訓(xùn)練代碼、測(cè)試圖片視頻等相關(guān)文件,均已打包上傳,感興趣的小伙伴可以通過(guò)下載鏈接自行獲取。
【獲取方式】
關(guān)注下方名片G-Z-H:【阿旭算法與機(jī)器學(xué)習(xí)】,并發(fā)送【源碼】即可獲取下載方式
本文涉及到的完整全部程序文件:包括python源碼、數(shù)據(jù)集、訓(xùn)練代碼、UI文件、測(cè)試圖片視頻等(見(jiàn)下圖),獲取方式見(jiàn)文末:
注意:該代碼基于Python3.9開(kāi)發(fā),運(yùn)行界面的主程序?yàn)?code>MainProgram.py,其他測(cè)試腳本說(shuō)明見(jiàn)上圖。為確保程序順利運(yùn)行,請(qǐng)按照
程序運(yùn)行說(shuō)明文檔txt
配置軟件運(yùn)行所需環(huán)境。
關(guān)注下方名片GZH:【阿旭算法與機(jī)器學(xué)習(xí)】,并發(fā)送【源碼】即可獲取下載方式
結(jié)束語(yǔ)
以上便是博主開(kāi)發(fā)的基于YOLOv8深度學(xué)習(xí)的葡萄簇目標(biāo)檢測(cè)系統(tǒng)
的全部?jī)?nèi)容,由于博主能力有限,難免有疏漏之處,希望小伙伴能批評(píng)指正。
關(guān)于本篇文章大家有任何建議或意見(jiàn),歡迎在評(píng)論區(qū)留言交流!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-804130.html
覺(jué)得不錯(cuò)的小伙伴,感謝點(diǎn)贊、關(guān)注加收藏哦!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-804130.html
到了這里,關(guān)于基于YOLOv8深度學(xué)習(xí)的葡萄簇目標(biāo)檢測(cè)系統(tǒng)【python源碼+Pyqt5界面+數(shù)據(jù)集+訓(xùn)練代碼】目標(biāo)檢測(cè)、深度學(xué)習(xí)實(shí)戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!