之前無意間看到一個公司專門是做鳥類識別的,據(jù)說已經(jīng)積累了大量的行業(yè)領(lǐng)域數(shù)據(jù)集且技術(shù)已經(jīng)深耕好多年了,有幸體驗過實際的產(chǎn)品感覺還是很強大的,這里后面我就想著能夠自己去基于目標(biāo)檢測模型來開發(fā)構(gòu)建自己的鳥類檢測識別分析系統(tǒng)。
首先看下實例效果,如下所示:
這里構(gòu)建了包含20種鳥類的數(shù)據(jù)集,實例數(shù)據(jù)如下所示:
本文是選擇的是YOLOv5算法模型來完成本文項目的開發(fā)構(gòu)建。相較于前兩代的算法模型,YOLOv5可謂是集大成者,達到了SOTA的水平,下面簡單對v3-v5系列模型的演變進行簡單介紹總結(jié)方便對比分析學(xué)習(xí):
【YOLOv3】
YOLOv3(You Only Look Once version 3)是一種基于深度學(xué)習(xí)的快速目標(biāo)檢測算法,由Joseph Redmon等人于2018年提出。它的核心技術(shù)原理和亮點如下:
技術(shù)原理:
YOLOv3采用單個神經(jīng)網(wǎng)絡(luò)模型來完成目標(biāo)檢測任務(wù)。與傳統(tǒng)的目標(biāo)檢測方法不同,YOLOv3將目標(biāo)檢測問題轉(zhuǎn)化為一個回歸問題,通過卷積神經(jīng)網(wǎng)絡(luò)輸出圖像中存在的目標(biāo)的邊界框坐標(biāo)和類別概率。
YOLOv3使用Darknet-53作為骨干網(wǎng)絡(luò),用來提取圖像特征。檢測頭(detection head)負責(zé)將提取的特征映射到目標(biāo)邊界框和類別預(yù)測。
亮點:
YOLOv3在保持較高的檢測精度的同時,能夠?qū)崿F(xiàn)非??斓臋z測速度。相較于一些基于候選區(qū)域的目標(biāo)檢測算法(如Faster R-CNN、SSD等),YOLOv3具有更高的實時性能。
YOLOv3對小目標(biāo)和密集目標(biāo)的檢測效果較好,同時在大目標(biāo)的檢測精度上也有不錯的表現(xiàn)。
YOLOv3具有較好的通用性和適應(yīng)性,適用于各種目標(biāo)檢測任務(wù),包括車輛檢測、行人檢測等。
【YOLOv4】
YOLOv4是一種實時目標(biāo)檢測模型,它在速度和準(zhǔn)確度上都有顯著的提高。相比于其前一代模型YOLOv3,YOLOv4在保持較高的檢測精度的同時,還提高了檢測速度。這主要得益于其采用的CSPDarknet53網(wǎng)絡(luò)結(jié)構(gòu),主要有三個方面的優(yōu)點:增強CNN的學(xué)習(xí)能力,使得在輕量化的同時保持準(zhǔn)確性;降低計算瓶頸;降低內(nèi)存成本。YOLOv4的目標(biāo)檢測策略采用的是“分而治之”的策略,將一張圖片平均分成7×7個網(wǎng)格,每個網(wǎng)格分別負責(zé)預(yù)測中心點落在該網(wǎng)格內(nèi)的目標(biāo)。這種方法不需要額外再設(shè)計一個區(qū)域提議網(wǎng)絡(luò)(RPN),從而減少了訓(xùn)練的負擔(dān)。然而,盡管YOLOv4在許多方面都表現(xiàn)出色,但它仍然存在一些不足。例如,小目標(biāo)檢測效果較差。此外,當(dāng)需要在資源受限的設(shè)備上部署像YOLOv4這樣的大模型時,模型壓縮是研究人員重新調(diào)整較大模型所需資源消耗的有用工具。
優(yōu)點:
速度:YOLOv4 保持了 YOLO 算法一貫的實時性,能夠在檢測速度和精度之間實現(xiàn)良好的平衡。
精度:YOLOv4 采用了 CSPDarknet 和 PANet 兩種先進的技術(shù),提高了檢測精度,特別是在檢測小型物體方面有顯著提升。
通用性:YOLOv4 適用于多種任務(wù),如行人檢測、車輛檢測、人臉檢測等,具有較高的通用性。
模塊化設(shè)計:YOLOv4 中的組件可以方便地更換和擴展,便于進一步優(yōu)化和適應(yīng)不同場景。
缺點:
內(nèi)存占用:YOLOv4 模型參數(shù)較多,因此需要較大的內(nèi)存來存儲和運行模型,這對于部分硬件設(shè)備來說可能是一個限制因素。
訓(xùn)練成本:YOLOv4 模型需要大量的訓(xùn)練數(shù)據(jù)和計算資源才能達到理想的性能,這可能導(dǎo)致訓(xùn)練成本較高。
精確度與速度的權(quán)衡:雖然 YOLOv4 在速度和精度之間取得了較好的平衡,但在極端情況下,例如檢測高速移動的物體或復(fù)雜背景下的物體時,性能可能會受到影響。
誤檢和漏檢:由于 YOLOv4 采用單一網(wǎng)絡(luò)對整個圖像進行預(yù)測,可能會導(dǎo)致一些誤檢和漏檢現(xiàn)象。
【YOLOv5】
YOLOv5是一種快速、準(zhǔn)確的目標(biāo)檢測模型,由Glen Darby于2020年提出。相較于前兩代模型,YOLOv5集成了眾多的tricks達到了性能的SOTA:
技術(shù)原理:
YOLOv5同樣采用單個神經(jīng)網(wǎng)絡(luò)模型來完成目標(biāo)檢測任務(wù),但采用了新的神經(jīng)網(wǎng)絡(luò)架構(gòu),融合了領(lǐng)先的輕量級模型設(shè)計理念。YOLOv5使用較小的骨干網(wǎng)絡(luò)和新的檢測頭設(shè)計,以實現(xiàn)更快的推斷速度,并在不降低精度的前提下提高目標(biāo)檢測的準(zhǔn)確性。
亮點:
YOLOv5在模型結(jié)構(gòu)上進行了改進,引入了更先進的輕量級網(wǎng)絡(luò)架構(gòu),因此在速度和精度上都有所提升。
YOLOv5支持更靈活的模型大小和預(yù)訓(xùn)練選項,可以根據(jù)任務(wù)需求選擇不同大小的模型,同時提供豐富的數(shù)據(jù)增強擴展、模型集成等方法來提高檢測精度。YOLOv5通過使用更簡潔的代碼實現(xiàn),提高了模型的易用性和可擴展性。
訓(xùn)練數(shù)據(jù)配置文件如下:
# Dataset
path: ./dataset
train:
- images/train
val:
- images/test
test:
- images/test
# Classes
names:
0: BlackFootedAlbatross
1: LaysanAlbatross
2: SootyAlbatross
3: GrooveBilledAni
4: CrestedAuklet
5: LeastAuklet
6: ParakeetAuklet
7: RhinocerosAuklet
8: BrewerBlackbird
9: RedwingedBlackbird
10: RustyBlackbird
11: YellowHeadedBlackbird
12: Bobolink
13: IndigoBunting
14: LazuliBunting
15: PaintedBunting
16: Cardinal
17: SpottedCatbird
18: GrayCatbird
19: YellowBreastedChat
實驗截止目前,本文將YOLOv5系列五款不同參數(shù)量級的模型均進行了開發(fā)評測,接下來看下模型詳情:
# Ultralytics YOLO ??, AGPL-3.0 license
# YOLOv5 object detection model with P3-P5 outputs. For details see https://docs.ultralytics.com/models/yolov5
# Parameters
nc: 20 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov5n.yaml' will call yolov5.yaml with scale 'n'
# [depth, width, max_channels]
n: [0.33, 0.25, 1024]
s: [0.33, 0.50, 1024]
m: [0.67, 0.75, 1024]
l: [1.00, 1.00, 1024]
x: [1.33, 1.25, 1024]
# YOLOv5 v6.0 backbone
backbone:
# [from, number, module, args]
[[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
[-1, 1, Conv, [128, 3, 2]], # 1-P2/4
[-1, 3, C3, [128]],
[-1, 1, Conv, [256, 3, 2]], # 3-P3/8
[-1, 6, C3, [256]],
[-1, 1, Conv, [512, 3, 2]], # 5-P4/16
[-1, 9, C3, [512]],
[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
[-1, 3, C3, [1024]],
[-1, 1, SPPF, [1024, 5]], # 9
]
# YOLOv5 v6.0 head
head:
[[-1, 1, Conv, [512, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[-1, 6], 1, Concat, [1]], # cat backbone P4
[-1, 3, C3, [512, False]], # 13
[-1, 1, Conv, [256, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[-1, 4], 1, Concat, [1]], # cat backbone P3
[-1, 3, C3, [256, False]], # 17 (P3/8-small)
[-1, 1, Conv, [256, 3, 2]],
[[-1, 14], 1, Concat, [1]], # cat head P4
[-1, 3, C3, [512, False]], # 20 (P4/16-medium)
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
[[17, 20, 23], 1, Detect, [nc]], # Detect(P3, P4, P5)
]
在實驗訓(xùn)練開發(fā)階段,所有的模型均保持完全相同的參數(shù)設(shè)置,等待訓(xùn)練完成后,來整體進行評測對比分析。
【F1值曲線】
F1值曲線是一種用于評估二分類模型在不同閾值下的性能的可視化工具。它通過繪制不同閾值下的精確率(Precision)、召回率(Recall)和F1分?jǐn)?shù)的關(guān)系圖來幫助我們理解模型的整體性能.F1分?jǐn)?shù)是精確率和召回率的調(diào)和平均值,它綜合考慮了兩者的性能指標(biāo)。F1值曲線可以幫助我們確定在不同精確率和召回率之間找到一個平衡點,以選擇最佳的閾值。
【loss曲線】
【Precision曲線】
精確率曲線(Precision-Recall Curve)是一種用于評估二分類模型在不同閾值下的精確率性能的可視化工具。它通過繪制不同閾值下的精確率和召回率之間的關(guān)系圖來幫助我們了解模型在不同閾值下的表現(xiàn)。精確率(Precision)是指被正確預(yù)測為正例的樣本數(shù)占所有預(yù)測為正例的樣本數(shù)的比例。召回率(Recall)是指被正確預(yù)測為正例的樣本數(shù)占所有實際為正例的樣本數(shù)的比例。
【Recall曲線】
召回率曲線(Recall Curve)是一種用于評估二分類模型在不同閾值下的召回率性能的可視化工具。它通過繪制不同閾值下的召回率和對應(yīng)的精確率之間的關(guān)系圖來幫助我們了解模型在不同閾值下的表現(xiàn)。召回率(Recall)是指被正確預(yù)測為正例的樣本數(shù)占所有實際為正例的樣本數(shù)的比例。召回率也被稱為靈敏度(Sensitivity)或真正例率(True Positive Rate)。
從整體實驗結(jié)果對比來看:n系列的模型效果最差,被其他幾款模型拉開了明顯的差距,s系列的模型在60個epoch之前同樣被拉開了明顯的差距,隨后達到了與其他幾款模型相近的水準(zhǔn),m和l系列的模型性能相近,x系列的模型最優(yōu),略高于m和l系列的模型,考慮到計算量的問題,這里我們最終選擇使用m系列的模型來作為最終的推理模型。
接下來就以m系列的模型為基準(zhǔn),詳細看下結(jié)果詳情:
【Batch實例】
【數(shù)據(jù)分布可視化】
【PR曲線】
【訓(xùn)練可視化】
【混淆矩陣】
做下來感覺還是蠻有意思的,這個跟很實際的野外場景還是有區(qū)別的,畢竟真實的野外場景下鳥類個體目標(biāo)都是很小的,檢測識別難度也會更大,因為沒有實際條件獲取到高質(zhì)量的真實野外場景下的數(shù)據(jù)集,這里的實驗開發(fā)數(shù)據(jù)集以實驗性質(zhì)為主,感興趣的話也都可以試試看!
如果自己不具備開發(fā)訓(xùn)練的資源條件或者是沒有時間自己去訓(xùn)練的話這里我提供出來對應(yīng)的訓(xùn)練結(jié)果可供自行按需索取。
單個模型的訓(xùn)練結(jié)果默認(rèn)YOLOv5s文章來源:http://www.zghlxwxcb.cn/news/detail-836761.html
全系列五個模型的訓(xùn)練結(jié)果總集文章來源地址http://www.zghlxwxcb.cn/news/detail-836761.html
到了這里,關(guān)于AI識鳥,基于YOLOv5【n/s/m/l/x】全系列參數(shù)模型開發(fā)構(gòu)建工業(yè)野外場景下鳥類檢測識別分析系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!