国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

AI助力農(nóng)作物自動(dòng)采摘,基于YOLOv8全系列【n/s/m/l/x】參數(shù)模型開(kāi)發(fā)構(gòu)建作物番茄采摘場(chǎng)景下番茄成熟度檢測(cè)識(shí)別分析系統(tǒng)

這篇具有很好參考價(jià)值的文章主要介紹了AI助力農(nóng)作物自動(dòng)采摘,基于YOLOv8全系列【n/s/m/l/x】參數(shù)模型開(kāi)發(fā)構(gòu)建作物番茄采摘場(chǎng)景下番茄成熟度檢測(cè)識(shí)別分析系統(tǒng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

去年十一那會(huì)無(wú)意間刷到一個(gè)視頻展示的就是德國(guó)機(jī)械收割機(jī)非常高效自動(dòng)化地24小時(shí)不間斷地在超廣闊的土地上采摘各種作物,專(zhuān)家設(shè)計(jì)出來(lái)了很多用于采摘不同農(nóng)作物的大型機(jī)械,看著非常震撼,但是我們國(guó)內(nèi)農(nóng)業(yè)的發(fā)展還是相對(duì)比較滯后的,小的時(shí)候拔草是一個(gè)人一列蹲在地里就在那埋頭拔草,不知道什么時(shí)候才能走到地的盡頭,小塊的分散的土地太多基本上都是只能人工手工來(lái)取收割,大點(diǎn)的連片的土地可以用收割機(jī)來(lái)收割,不過(guò)收割機(jī)基本都是用來(lái)收割小麥的,最近幾年好像老家也能看到用于收割玉米的機(jī)器了不過(guò)相對(duì)還是比較少的,玉米的收割我們基本上還是人工來(lái)收割的,不僅累效率還低遇上對(duì)玉米葉片過(guò)敏的就更要命了。。。。閑話就扯到這里了。

有時(shí)候經(jīng)常在想我們的農(nóng)業(yè)機(jī)械化自動(dòng)化什么時(shí)候能再向前邁進(jìn)一大步,回顧德國(guó)的工業(yè)機(jī)械,在視頻展示的效果中,其實(shí)很關(guān)鍵的主要是兩部分,一部分是機(jī)器視覺(jué)定位檢測(cè)識(shí)別,另一部分是機(jī)械臂傳動(dòng)軸,兩部分相互配合才能完成采摘工作,在前文中我們開(kāi)發(fā)實(shí)踐了番茄作物檢測(cè)計(jì)數(shù)識(shí)別項(xiàng)目,如下:

《AI助力農(nóng)作物自動(dòng)采摘,基于YOLOv7【tiny/l/x】不同系列參數(shù)模型開(kāi)發(fā)構(gòu)建作物生產(chǎn)場(chǎng)景下番茄采摘檢測(cè)計(jì)數(shù)分析系統(tǒng)》

本文是在前文的基礎(chǔ)上更進(jìn)一步,本文的主要想法是想要基于最新的YOLOv8開(kāi)發(fā)構(gòu)建用于番茄采摘場(chǎng)景下的番茄作物成熟度檢測(cè)識(shí)別系統(tǒng),首先看下實(shí)例效果:

yolov8 鮮果成熟,YOLO

因?yàn)閱渭兊貦z測(cè)到番茄不能直接進(jìn)行采摘,因?yàn)榭赡茉谝粋€(gè)大棚里面或者是一株番茄植株上面不同的果實(shí)成熟度都是不一樣的,需要分門(mén)別類(lèi)判斷清楚才能知道哪些是可以采摘的。

簡(jiǎn)單看下實(shí)例數(shù)據(jù)情況:

yolov8 鮮果成熟,YOLO

如果對(duì)YOLOv8開(kāi)發(fā)構(gòu)建自己的目標(biāo)檢測(cè)項(xiàng)目有疑問(wèn)的可以看下面的文章,如下所示:

《基于YOLOv8開(kāi)發(fā)構(gòu)建目標(biāo)檢測(cè)模型超詳細(xì)教程【以焊縫質(zhì)量檢測(cè)數(shù)據(jù)場(chǎng)景為例】》

非常詳細(xì)的開(kāi)發(fā)實(shí)踐教程。本文這里就不再展開(kāi)了,因?yàn)閺腨OLOv8開(kāi)始變成了一個(gè)安裝包的形式,整體跟v5和v7的使用差異還是比較大的。

非常詳細(xì)的開(kāi)發(fā)實(shí)踐教程。本文這里就不再展開(kāi)了,因?yàn)閺腨OLOv8開(kāi)始變成了一個(gè)安裝包的形式,整體跟v5和v7的使用差異還是比較大的。

YOLOv8核心特性和改動(dòng)如下:
1、提供了一個(gè)全新的SOTA模型(state-of-the-art model),包括 P5 640 和 P6 1280 分辨率的目標(biāo)檢測(cè)網(wǎng)絡(luò)和基于YOLACT的實(shí)例分割模型。和 YOLOv5 一樣,基于縮放系數(shù)也提供了 N/S/M/L/X 尺度的不同大小模型,用于滿足不同場(chǎng)景需求
2、骨干網(wǎng)絡(luò)和 Neck 部分可能參考了 YOLOv7 ELAN 設(shè)計(jì)思想,將 YOLOv5 的 C3 結(jié)構(gòu)換成了梯度流更豐富的 C2f 結(jié)構(gòu),并對(duì)不同尺度模型調(diào)整了不同的通道數(shù),屬于對(duì)模型結(jié)構(gòu)精心微調(diào),不再是一套參數(shù)應(yīng)用所有模型,大幅提升了模型性能。
3、Head 部分相比 YOLOv5 改動(dòng)較大,換成了目前主流的解耦頭結(jié)構(gòu),將分類(lèi)和檢測(cè)頭分離,同時(shí)也從Anchor-Based 換成了 Anchor-Free
4、Loss 計(jì)算方面采用了TaskAlignedAssigner正樣本分配策略,并引入了Distribution Focal Loss
5、訓(xùn)練的數(shù)據(jù)增強(qiáng)部分引入了 YOLOX 中的最后 10 epoch 關(guān)閉 Mosiac 增強(qiáng)的操作,可以有效地提升精度

YOLOv8官方項(xiàng)目地址在這里,如下所示:

yolov8 鮮果成熟,YOLO

yolov8 鮮果成熟,YOLO

目前已經(jīng)收獲超過(guò)1.7w的star量了。官方提供的預(yù)訓(xùn)練模型如下所示:

Model size
(pixels)
mAPval
50-95
Speed
CPU ONNX
(ms)
Speed
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
YOLOv8n 640 37.3 80.4 0.99 3.2 8.7
YOLOv8s 640 44.9 128.4 1.20 11.2 28.6
YOLOv8m 640 50.2 234.7 1.83 25.9 78.9
YOLOv8l 640 52.9 375.2 2.39 43.7 165.2
YOLOv8x 640 53.9 479.1 3.53 68.2 257.8

另外一套預(yù)訓(xùn)練模型權(quán)重地址如下:

Model size
(pixels)
mAPval
50-95
Speed
CPU ONNX
(ms)
Speed
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
YOLOv8n 640 18.4 142.4 1.21 3.5 10.5
YOLOv8s 640 27.7 183.1 1.40 11.4 29.7
YOLOv8m 640 33.6 408.5 2.26 26.2 80.6
YOLOv8l 640 34.9 596.9 2.43 44.1 167.4
YOLOv8x 640 36.3 860.6 3.56 68.7 260.6

是基于Open Image V7數(shù)據(jù)集構(gòu)建的,可以根據(jù)自己的需求進(jìn)行選擇使用即可。

YOLOv8的定位不僅僅是目標(biāo)檢測(cè),而是性能強(qiáng)大全面的工具庫(kù),故而在任務(wù)類(lèi)型上同時(shí)支持:姿態(tài)估計(jì)、檢測(cè)、分類(lèi)、分割、跟蹤多種類(lèi)型,可以根據(jù)自己的需要進(jìn)行選擇使用,這里就不再詳細(xì)展開(kāi)了。

簡(jiǎn)單的實(shí)例實(shí)現(xiàn)如下所示:

from ultralytics import YOLO
 
# yolov8n
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)
 
 
# yolov8s
model = YOLO('yolov8s.yaml').load('yolov8s.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)
 
 
# yolov8m
model = YOLO('yolov8m.yaml').load('yolov8m.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)
 
 
# yolov8l
model = YOLO('yolov8l.yaml').load('yolov8l.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)
 
 
# yolov8x
model = YOLO('yolov8x.yaml').load('yolov8x.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)

這里給出yolov8的模型文件如下:

# 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: 3   # 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)

實(shí)驗(yàn)階段,5款不同參數(shù)量級(jí)的模型保持著完全相同的參數(shù)配置,等待訓(xùn)練完成后我們來(lái)看下模型結(jié)果詳情。為了直觀對(duì)比展示,這里我們對(duì)其各個(gè)評(píng)估指標(biāo)進(jìn)行對(duì)比可視化

【Precision曲線】
精確率曲線(Precision-Recall Curve)是一種用于評(píng)估二分類(lèi)模型在不同閾值下的精確率性能的可視化工具。它通過(guò)繪制不同閾值下的精確率和召回率之間的關(guān)系圖來(lái)幫助我們了解模型在不同閾值下的表現(xiàn)。
精確率(Precision)是指被正確預(yù)測(cè)為正例的樣本數(shù)占所有預(yù)測(cè)為正例的樣本數(shù)的比例。召回率(Recall)是指被正確預(yù)測(cè)為正例的樣本數(shù)占所有實(shí)際為正例的樣本數(shù)的比例。
繪制精確率曲線的步驟如下:
使用不同的閾值將預(yù)測(cè)概率轉(zhuǎn)換為二進(jìn)制類(lèi)別標(biāo)簽。通常,當(dāng)預(yù)測(cè)概率大于閾值時(shí),樣本被分類(lèi)為正例,否則分類(lèi)為負(fù)例。
對(duì)于每個(gè)閾值,計(jì)算相應(yīng)的精確率和召回率。
將每個(gè)閾值下的精確率和召回率繪制在同一個(gè)圖表上,形成精確率曲線。
根據(jù)精確率曲線的形狀和變化趨勢(shì),可以選擇適當(dāng)?shù)拈撝狄赃_(dá)到所需的性能要求。
通過(guò)觀察精確率曲線,我們可以根據(jù)需求確定最佳的閾值,以平衡精確率和召回率。較高的精確率意味著較少的誤報(bào),而較高的召回率則表示較少的漏報(bào)。根據(jù)具體的業(yè)務(wù)需求和成本權(quán)衡,可以在曲線上選擇合適的操作點(diǎn)或閾值。
精確率曲線通常與召回率曲線(Recall Curve)一起使用,以提供更全面的分類(lèi)器性能分析,并幫助評(píng)估和比較不同模型的性能。

yolov8 鮮果成熟,YOLO

【Recall曲線】
召回率曲線(Recall Curve)是一種用于評(píng)估二分類(lèi)模型在不同閾值下的召回率性能的可視化工具。它通過(guò)繪制不同閾值下的召回率和對(duì)應(yīng)的精確率之間的關(guān)系圖來(lái)幫助我們了解模型在不同閾值下的表現(xiàn)。
召回率(Recall)是指被正確預(yù)測(cè)為正例的樣本數(shù)占所有實(shí)際為正例的樣本數(shù)的比例。召回率也被稱(chēng)為靈敏度(Sensitivity)或真正例率(True Positive Rate)。
繪制召回率曲線的步驟如下:
使用不同的閾值將預(yù)測(cè)概率轉(zhuǎn)換為二進(jìn)制類(lèi)別標(biāo)簽。通常,當(dāng)預(yù)測(cè)概率大于閾值時(shí),樣本被分類(lèi)為正例,否則分類(lèi)為負(fù)例。
對(duì)于每個(gè)閾值,計(jì)算相應(yīng)的召回率和對(duì)應(yīng)的精確率。
將每個(gè)閾值下的召回率和精確率繪制在同一個(gè)圖表上,形成召回率曲線。
根據(jù)召回率曲線的形狀和變化趨勢(shì),可以選擇適當(dāng)?shù)拈撝狄赃_(dá)到所需的性能要求。
通過(guò)觀察召回率曲線,我們可以根據(jù)需求確定最佳的閾值,以平衡召回率和精確率。較高的召回率表示較少的漏報(bào),而較高的精確率意味著較少的誤報(bào)。根據(jù)具體的業(yè)務(wù)需求和成本權(quán)衡,可以在曲線上選擇合適的操作點(diǎn)或閾值。

yolov8 鮮果成熟,YOLO

【F1值曲線】
F1值曲線是一種用于評(píng)估二分類(lèi)模型在不同閾值下的性能的可視化工具。它通過(guò)繪制不同閾值下的精確率(Precision)、召回率(Recall)和F1分?jǐn)?shù)的關(guān)系圖來(lái)幫助我們理解模型的整體性能。F1分?jǐn)?shù)是精確率和召回率的調(diào)和平均值,它綜合考慮了兩者的性能指標(biāo)。F1值曲線可以幫助我們確定在不同精確率和召回率之間找到一個(gè)平衡點(diǎn),以選擇最佳的閾值。

yolov8 鮮果成熟,YOLO

整體實(shí)驗(yàn)對(duì)比結(jié)果來(lái)看:幾款不同參數(shù)量級(jí)的模型并沒(méi)有呈現(xiàn)出來(lái)非常明顯的差距,考慮到計(jì)算量的問(wèn)題我們選擇s系列的模型為最終推理模型。接下來(lái)以s系列的模型為基準(zhǔn)進(jìn)一步看下結(jié)果詳情:

【PR曲線】
精確率-召回率曲線(Precision-Recall Curve)是一種用于評(píng)估二分類(lèi)模型性能的可視化工具。它通過(guò)繪制不同閾值下的精確率(Precision)和召回率(Recall)之間的關(guān)系圖來(lái)幫助我們了解模型在不同閾值下的表現(xiàn)。
精確率是指被正確預(yù)測(cè)為正例的樣本數(shù)占所有預(yù)測(cè)為正例的樣本數(shù)的比例。召回率是指被正確預(yù)測(cè)為正例的樣本數(shù)占所有實(shí)際為正例的樣本數(shù)的比例。
繪制精確率-召回率曲線的步驟如下:
使用不同的閾值將預(yù)測(cè)概率轉(zhuǎn)換為二進(jìn)制類(lèi)別標(biāo)簽。通常,當(dāng)預(yù)測(cè)概率大于閾值時(shí),樣本被分類(lèi)為正例,否則分類(lèi)為負(fù)例。
對(duì)于每個(gè)閾值,計(jì)算相應(yīng)的精確率和召回率。
將每個(gè)閾值下的精確率和召回率繪制在同一個(gè)圖表上,形成精確率-召回率曲線。
根據(jù)曲線的形狀和變化趨勢(shì),可以選擇適當(dāng)?shù)拈撝狄赃_(dá)到所需的性能要求。
精確率-召回率曲線提供了更全面的模型性能分析,特別適用于處理不平衡數(shù)據(jù)集和關(guān)注正例預(yù)測(cè)的場(chǎng)景。曲線下面積(Area Under the Curve, AUC)可以作為評(píng)估模型性能的指標(biāo),AUC值越高表示模型的性能越好。
通過(guò)觀察精確率-召回率曲線,我們可以根據(jù)需求選擇合適的閾值來(lái)權(quán)衡精確率和召回率之間的平衡點(diǎn)。根據(jù)具體的業(yè)務(wù)需求和成本權(quán)衡,可以在曲線上選擇合適的操作點(diǎn)或閾值。

yolov8 鮮果成熟,YOLO

【訓(xùn)練可視化】

yolov8 鮮果成熟,YOLO

【Batch實(shí)例】

yolov8 鮮果成熟,YOLO

yolov8 鮮果成熟,YOLO

【離線推理實(shí)例】

yolov8 鮮果成熟,YOLO

感興趣的話也都可以試試看!

如果自己不具備開(kāi)發(fā)訓(xùn)練的資源條件或者是沒(méi)有時(shí)間自己去訓(xùn)練的話這里我提供出來(lái)對(duì)應(yīng)的訓(xùn)練結(jié)果可供自行按需索取。

單個(gè)模型的訓(xùn)練結(jié)果默認(rèn)YOLOv8s

全系列五個(gè)模型的訓(xùn)練結(jié)果總集文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-827288.html

到了這里,關(guān)于AI助力農(nóng)作物自動(dòng)采摘,基于YOLOv8全系列【n/s/m/l/x】參數(shù)模型開(kāi)發(fā)構(gòu)建作物番茄采摘場(chǎng)景下番茄成熟度檢測(cè)識(shí)別分析系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包