全球麥穗檢測(cè)是植物表型分析領(lǐng)域的一個(gè)挑戰(zhàn),主要目標(biāo)是檢測(cè)圖像中的小麥麥穗。這種檢測(cè)在農(nóng)業(yè)領(lǐng)域具有重要意義,可以幫助農(nóng)民評(píng)估作物的健康狀況和成熟度。然而,由于小麥麥穗在視覺上具有挑戰(zhàn)性,準(zhǔn)確檢測(cè)它們是一項(xiàng)艱巨的任務(wù)。
全球麥穗檢測(cè)的挑戰(zhàn)在于準(zhǔn)確識(shí)別不同品種、不同生長環(huán)境、不同光照條件、不同拍攝角度下的麥穗。由于小麥麥穗經(jīng)常重疊、顏色和外觀變化多樣,這使得檢測(cè)更具挑戰(zhàn)性。為了解決這些問題,研究者們采用機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺技術(shù)來開發(fā)麥穗檢測(cè)算法。
目前,全球麥穗檢測(cè)的常用方法包括基于單級(jí)和兩級(jí)檢測(cè)器的目標(biāo)檢測(cè)方法(如Yolo和Faster-RCNN)。這些方法通過訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)來識(shí)別和定位圖像中的麥穗。然而,即使使用大型數(shù)據(jù)集進(jìn)行訓(xùn)練,仍然存在對(duì)訓(xùn)練區(qū)域的偏差,因此需要不斷改進(jìn)和優(yōu)化算法以提高檢測(cè)準(zhǔn)確性。
全球麥穗檢測(cè)對(duì)于農(nóng)業(yè)生產(chǎn)和科學(xué)研究具有重要意義。準(zhǔn)確估計(jì)不同品種的小麥麥穗密度和大小可以幫助農(nóng)民更好地評(píng)估作物健康狀況和產(chǎn)量。此外,這種檢測(cè)還可以用于研究小麥生長和發(fā)育的規(guī)律,以及開發(fā)新的種植技術(shù)和品種。通過改進(jìn)麥穗檢測(cè)算法,可以為農(nóng)業(yè)生產(chǎn)的智能化和精細(xì)化提供有力支持。
本文介紹了基于深度學(xué)習(xí)yolov8的麥穗頭檢測(cè)系統(tǒng),包括訓(xùn)練過程和數(shù)據(jù)準(zhǔn)備過程,同時(shí)提供了推理的代碼和GUI。對(duì)準(zhǔn)備計(jì)算機(jī)視覺相關(guān)的畢業(yè)設(shè)計(jì)的同學(xué)有著一定的幫助。
檢測(cè)結(jié)果如下圖:
一、安裝YoloV8
yolov8官方文檔:主頁 - Ultralytics YOLOv8 文檔
安裝部分參考:官方安裝教程
二、數(shù)據(jù)集準(zhǔn)備
本文使用的數(shù)據(jù)集來自全球小麥頭檢測(cè)數(shù)據(jù)集,檢測(cè)小麥穗是一項(xiàng)重要任務(wù),可以估計(jì)相關(guān)性狀,包括穗種群密度和穗特征,如衛(wèi)生狀況、大小、成熟階段和芒的存在。幾項(xiàng)研究開發(fā)了從高分辨率 RGB 圖像中檢測(cè)小麥頭的方法。它們基于計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí),通常在有限的數(shù)據(jù)集上進(jìn)行校準(zhǔn)和驗(yàn)證。然而,觀察條件、基因型差異、發(fā)育階段、頭部方向的可變性代表了計(jì)算機(jī)視覺的挑戰(zhàn)。此外,由于運(yùn)動(dòng)或風(fēng)和密集人群頭部之間的重疊可能導(dǎo)致的模糊使這項(xiàng)任務(wù)更加復(fù)雜。通過聯(lián)合國際協(xié)作努力,我們建立了一個(gè)大型、多樣化且標(biāo)記良好的數(shù)據(jù)集,即全球小麥頭檢測(cè) (GWHD) 數(shù)據(jù)集。它包含 4,700 張高分辨率 RGB 圖像和 190,000 個(gè)標(biāo)記的小麥頭,這些小麥頭采集自世界各地不同生長階段的不同基因型的多個(gè)國家。
數(shù)據(jù)示例如下:
全球麥穗檢測(cè)數(shù)據(jù)集yoloV8格式,采用8:2劃分訓(xùn)練集和驗(yàn)證集,包含2698個(gè)訓(xùn)練數(shù)據(jù)和675個(gè)驗(yàn)證數(shù)據(jù),本文提供整理后的全球麥穗檢測(cè)數(shù)據(jù)集yoloV8格式。
三、模型訓(xùn)練
1、數(shù)據(jù)集配置文件
在ultralytics/ultralytics/cfg/datasets目錄下添加wheat.yaml,添加以下內(nèi)容(path修改為自己的路徑):
# Ultralytics YOLO ??, AGPL-3.0 license
# COCO 2017 dataset http://cocodataset.org by Microsoft
# Example usage: yolo train data=coco.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco ← downloads here (20.1 GB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: datasets/wheat_det_yolo8 # dataset root dir
train: images/train # train images (relative to 'path') 118287 images
val: images/val # val images (relative to 'path') 5000 images
test: images/val # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794
# Classes
names:
0: wheat
2、修改模型配置文件
新建ultralytics/cfg/models/wheat/yolov8_wheat.yaml?,添加以下內(nèi)容:,添加以下內(nèi)容:
# Ultralytics YOLO ??, AGPL-3.0 license
# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect
# Parameters
nc: 1 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n.yaml' will call yolov8.yaml with scale 'n'
# [depth, width, max_channels]
n: [0.33, 0.25, 1024] # YOLOv8n summary: 225 layers, 3157200 parameters, 3157184 gradients, 8.9 GFLOPs
s: [0.33, 0.50, 1024] # YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients, 28.8 GFLOPs
m: [0.67, 0.75, 768] # YOLOv8m summary: 295 layers, 25902640 parameters, 25902624 gradients, 79.3 GFLOPs
l: [1.00, 1.00, 512] # YOLOv8l summary: 365 layers, 43691520 parameters, 43691504 gradients, 165.7 GFLOPs
x: [1.00, 1.25, 512] # YOLOv8x summary: 365 layers, 68229648 parameters, 68229632 gradients, 258.5 GFLOPs
# YOLOv8.0n backbone
backbone:
# [from, repeats, module, args]
- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
- [-1, 3, C2f, [128, True]]
- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
- [-1, 6, C2f, [256, True]]
- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
- [-1, 6, C2f, [512, True]]
- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
- [-1, 3, C2f, [1024, True]]
- [-1, 1, SPPF, [1024, 5]] # 9
# YOLOv8.0n head
head:
- [-1, 1, nn.Upsample, [None, 2, 'nearest']]
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
- [-1, 3, C2f, [512]] # 12
- [-1, 1, nn.Upsample, [None, 2, 'nearest']]
- [[-1, 4], 1, Concat, [1]] # cat backbone P3
- [-1, 3, C2f, [256]] # 15 (P3/8-small)
- [-1, 1, Conv, [256, 3, 2]]
- [[-1, 12], 1, Concat, [1]] # cat head P4
- [-1, 3, C2f, [512]] # 18 (P4/16-medium)
- [-1, 1, Conv, [512, 3, 2]]
- [[-1, 9], 1, Concat, [1]] # cat head P5
- [-1, 3, C2f, [1024]] # 21 (P5/32-large)
- [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5)
3、訓(xùn)練模型
使用如下命令訓(xùn)練模型,相關(guān)路徑更改為自己的路徑,建議絕對(duì)路徑:
yolo detect train project=deploy name=yolov8_wheat exist_ok=True optimizer=auto val=True amp=True epochs=100 imgsz=640 model=ultralytics/cfg/models/wheat/yolov8_wheat.yaml data=ultralytics/cfg/datasets/wheat.yaml
4、驗(yàn)證模型
使用如下命令驗(yàn)證模型,相關(guān)路徑根據(jù)需要修改:
yolo detect val imgsz=640 model=deploy/yolov8_wheat/weights/best.pt data=ultralytics/ultralytics/cfg/datasets/wheat.yaml
精度如下:
Ultralytics YOLOv8.1.0 ?? Python-3.9.18 torch-2.1.0+cu118 CUDA:0 (NVIDIA GeForce RTX 4090, 24210MiB)
YOLOv8_wheat summary (fused): 168 layers, 3005843 parameters, 0 gradients, 8.1 GFLOPs
val: Scanning /home/yq/aitools/datasets/wheat_det_yolo8/labels/val.cache... 675 images, 0 backgrounds, 0 corrupt: 100%|██████████| 675/675 [00:00<?, ?it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 43/43 [00:14<00:00, 3.04it/s]
all 675 29351 0.915 0.878 0.938 0.555
Speed: 0.6ms preprocess, 1.6ms inference, 0.0ms loss, 1.0ms postprocess per image
Results saved to /home/yq/ultralytics/runs/detect/val17
?? Learn more at https://docs.ultralytics.com/modes/val
四、推理
訓(xùn)練好了模型,可以使用如下代碼實(shí)現(xiàn)推理,將權(quán)重放到同級(jí)目錄:
from PIL import Image
from ultralytics import YOLO
# 加載預(yù)訓(xùn)練的YOLOv8n模型
model = YOLO('best.pt')
image_path = 'test.jpg'
results = model(image_path) # 結(jié)果列表
# 展示結(jié)果
for r in results:
im_array = r.plot() # 繪制包含預(yù)測(cè)結(jié)果的BGR numpy數(shù)組
im = Image.fromarray(im_array[..., ::-1]) # RGB PIL圖像
im.show() # 顯示圖像
im.save('results.jpg') # 保存圖像
五、界面開發(fā)
使用pyqt5開發(fā)gui界面,支持圖片、視頻、攝像頭輸入,支持導(dǎo)出到指定路徑,其GUI如下圖(完整GUI代碼可在下方鏈接下載):
六、代碼下載
1、本文數(shù)據(jù)集下載文章來源:http://www.zghlxwxcb.cn/news/detail-800954.html
2、麥穗頭檢測(cè)系統(tǒng)-源碼-含GUI文章來源地址http://www.zghlxwxcb.cn/news/detail-800954.html
到了這里,關(guān)于【深度學(xué)習(xí)目標(biāo)檢測(cè)】十六、基于深度學(xué)習(xí)的麥穗頭系統(tǒng)-含GUI和源碼(python,yolov8)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!