彭 炫 ,周建平 ※,許 燕 ,席光澤
(1. 新疆大學(xué)機械工程學(xué)院,烏魯木齊 830017;2. 新疆維吾爾自治區(qū)農(nóng)牧機器人及智能裝備工程研究中心,烏魯木齊 830017)
棉花是中國僅次于糧食的第二大作物,是關(guān)系到國計民生的重要資源。近年來,棉花種植主要依靠人工,勞動力短缺、機械智能化生產(chǎn)程度低等問題仍需解決,因此中國的棉花產(chǎn)量仍有很大提升空間[1-5]。棉花打頂是棉田作業(yè)過程中的重要環(huán)節(jié),脫離人工打頂促進智能機械化打頂是降低成本、提升棉花生產(chǎn)效率的重要手段。對于棉花打頂機器人的設(shè)計,首要任務(wù)是解決復(fù)雜棉田環(huán)境中不損傷棉花蕾,精準驅(qū)動激光去除頂芽是其重中之重,因此精準識別定位棉花頂芽是關(guān)鍵環(huán)節(jié)。
近年來,隨著Fast R-CNN、YOLO 系列等[6-9]經(jīng)典目標檢測算法不斷迭代更新,其迅速在各個領(lǐng)域得到了廣泛應(yīng)用。國內(nèi)外研究學(xué)者針對目標檢測技術(shù)在農(nóng)業(yè)領(lǐng)域的應(yīng)用進行了廣泛的研究。KOIRALA 等[10]為驗證芒果發(fā)育階段影響開花數(shù)量,使用YOLOv3 算法在芒果發(fā)育階段自動檢測圓錐花序數(shù)量,但YOLOv3 檢測物體的實時性較慢。劉海濤等[11]為實現(xiàn)非接觸、低成本、精準識別棉花頂芽,提出一種基于YOLOv4 模型的復(fù)雜環(huán)境下棉花頂芽識別方法,然而該設(shè)計對頂芽了解不夠全面,并沒有對頂芯進行識別,造成頂芽識別率過低,打頂效果不佳。JIA 等[12-13]改進了Mask RCNN 算法,提升了樹葉遮擋等復(fù)雜環(huán)境下蘋果識別的準確度,但是Mask RCNN 模型為一階段檢測模型,較比YOLO 模型檢測效率較低。朱旭等[14]采用Fast R-CNN 模型算法在惡劣環(huán)境下對藍莓進行識別,目標檢測準確率和效率明顯提高,但是Fast R-CNN 算法需要采集大量的數(shù)據(jù)訓(xùn)練模型,在樣本不足的時檢測準確度明顯降低。李天華等[15-16]設(shè)計了一種基于YOLOv4 的改進算法,實現(xiàn)了對復(fù)雜環(huán)境下的番茄識別定位,能夠有效解決果實遮擋、光照影響下番茄識別準確率低的問題,但訓(xùn)練成本過大,檢測幀數(shù)過低,模型計算量過大,不便于模型輕量化運行。CHEN等[17]為提升茶蕾識別定位精度,保證茶蕾采摘的完整率,設(shè)計了一種基于YOLOv3 的改進茶蕾識別算法模型,該模型能在光照變化和部分遮擋等復(fù)雜環(huán)境下識別茶蕾并定位采摘點。茶蕾與棉花頂芽同樣是小目標農(nóng)作物,但YOLOv3 檢測算法對小目標提取效果并不理想,該算法識別的準確率有待加強。薛月菊等[18]針對果園場景下光照的多樣性、背景的復(fù)雜性及芒果與樹葉顏色的高度相似性,特別是樹葉和枝干對果實遮擋及果實重疊等問題,提出了改進YOLOv2 檢測方法,但由于YOLOv2 模型過大,識別效果和檢測速度不夠理想。樊湘鵬等[19]為建立高效、準確的葡萄葉部病害檢測系統(tǒng),引入遷移學(xué)習(xí)機制,利用大型公開數(shù)據(jù)集對VGG16 模型預(yù)訓(xùn)練,保持模型前端13 個層等參數(shù)和權(quán)重不變,對全連接層和分類層改進后利用新數(shù)據(jù)集微調(diào)訓(xùn)練模型,雖然能夠完成對葡萄葉部病蟲害識別,但訓(xùn)練成本過大,檢測速度較慢。
基于此,上述研究學(xué)者在目標檢測技術(shù)存在小目標檢測精度低、實時檢測慢、模型計算量大等問題,本文對復(fù)雜環(huán)境下對棉花頂芯識別為研究對象,本文選用YOLOv5s 模型,針對以上述問題進行優(yōu)化,設(shè)計一種基于YOLOv5s 的改進棉花頂芽識別模型,為棉花機械化打頂提供視覺識別研究基礎(chǔ)。
棉花頂芽數(shù)據(jù)采集地于新疆生產(chǎn)建設(shè)兵團第八師143 團棉花基地,品種為新路早50,采集設(shè)備為索尼A7M3 全高清攝像機,為采集真實環(huán)境的復(fù)雜棉花頂芽數(shù)據(jù),不同光照和不同天氣條件下均分為單株頂芽、多株頂芽、遮擋頂芽3 種類別進行拍攝,共采集到1 360張頂芽圖像,經(jīng)篩選后得到506 張清晰頂芽圖像(其中不同光照156 張,不同天氣150 張,不同遮擋頂芽面積200 張),經(jīng)數(shù)據(jù)增強(平移、翻轉(zhuǎn)、剪切、降噪、縮放比例、亮度增強)擴充到3 103 張圖像,隨機抽取2 663 張作為訓(xùn)練集,240 張作為驗證集,200 張作為測試集,圖1 為棉花頂芽樣本數(shù)據(jù)。
使用YOLOv5s 目標檢測算法對棉花頂芽數(shù)據(jù)集進行訓(xùn)練,在復(fù)雜環(huán)境下棉花頂芽識別效果并不理想。隨著網(wǎng)絡(luò)層的加深,小目標信息逐漸丟失,同時由于YOLOv5s 算法中原有3 個檢測頭,對多尺度目標特征信息提取效果不佳,尤其對棉花頂芽小目標檢測識別會出現(xiàn)錯檢漏檢的問題。為了實現(xiàn)頂芽較好的檢測效果,以YOLOv5s 目標檢測算法為基礎(chǔ),將主干網(wǎng)絡(luò)得第2 層引出第4 個目標檢測頭,因淺層含有特征信息更加豐富,為避免隨著網(wǎng)絡(luò)加深信息丟失,將淺層與深層提取到的特征信息進行融合,解決小目標特征信息隨著網(wǎng)絡(luò)結(jié)構(gòu)加深信息丟失問題,避免特征提取不充分。由于在改進的YOLOv5s 結(jié)構(gòu)中增加目標檢測層會使模型的計算量加大,因此在原有目標檢測網(wǎng)絡(luò)中,需要設(shè)計一種既能解決模型參數(shù)量問題又能解決對小目標提取效果好的模塊來代替C3 模塊。經(jīng)試驗分析,CPP-CBAM 注意力機制為最佳模塊,將CPP-CBAM 加入到第13 層得到棉花頂芽最佳目標檢測模型,圖2 為YOLOv5-CPP 目標檢測模型改進結(jié)構(gòu)圖。
圖2 YOLOv5-CPP 模型結(jié)構(gòu)圖Fig.2 The YOLOv5-CPP model structure figure
CPP-CBAM 注意力機制模塊如圖3 所示,C3 卷積核結(jié)構(gòu)分為兩個分支,第一分支將特征圖先升維后降維然后與第二分支網(wǎng)絡(luò)進行特征融合,特征融合后特征圖再進入通道模塊,最大池化層Maxpool 以及平均池化層AvgPool 將特征圖變成兩個矩陣[C,1,1]的權(quán)重向量,兩個拼接的權(quán)重向量經(jīng)過MLP 網(wǎng)絡(luò)獲取到通道的權(quán)重值,增加原特征圖的特征通道數(shù),通道數(shù)得到兩個激活函數(shù),將兩個輸出結(jié)果的每個元素相加,再由Sigmoid 激活函數(shù)過濾掉冗余過多頂芽特征,按權(quán)重重要程度先進行篩選特征圖,篩選出的特征圖在再經(jīng)過空間模塊Maxpool最大池化以及平均池化層AvgPool,形成一個[1,H,W]的權(quán)重向量,由于CBAM 模塊多數(shù)經(jīng)過1×1 卷積核、最大池化層以及平均池化層操作,能夠壓縮特征通道維度,將復(fù)雜的模型特征通道數(shù)大大減少,達到增加注意力機制后,目標檢測模型參數(shù)也減少的目的。
圖3 注意力機制圖Fig.3 Attention mechanism figure
機械打頂作業(yè)過程中由于棉田環(huán)境復(fù)雜,棉花頂芽被葉片嚴重遮擋,給機器對頂芽識別帶來困難,為了使預(yù)測框回歸到真實框速度加快,因此考慮將CIOU[20]損失函數(shù)替換為SIOU[21]損失函數(shù)。GIOU[22]、DIOU[23]、CIOU 損失函數(shù)只考慮了預(yù)測框與真實框的寬高比,并沒有考慮到它們之間的方向,易退化成IOU 損失函數(shù),導(dǎo)致頂芽識別率精確度下降,式(1)SIOU 損失函數(shù)引入了真實框與預(yù)測框之間的向量角,其包含式(2)角度損失函數(shù)式、式(3)距離損失函數(shù)式、式(4)形狀損失函數(shù)。
式中 γ為賦予時間的距離值,ρx為真實框與預(yù)測框中心點和最小外接框?qū)挶戎档钠椒?,ρy為真實框與預(yù)測框中心點和最小外接框高比值的平方,式(3)θ為控制對形狀損失的關(guān)注程度,t、w、h代表真實框與預(yù)測框的寬與高,為預(yù)測框的寬與高,接近4 才能避免過度關(guān)注形狀損失函數(shù)。
試驗運行環(huán)境操作系統(tǒng)為 Windows 10(64 位),內(nèi)存為16 GB,顯卡驅(qū)動 RTX2060 SUPRER,搭載12 th Gen Intel(R) Core(TM) i5-9400F 2.90 GHz 處理器,編程平臺Anaconda 4.12.0,CUDA 11.6,開發(fā)環(huán)境 PyTorch,編程使用Python3.8,通過精確率(Precision,P),召回率(Recall,R)。
式中TP表示正樣本預(yù)測出來正確的框,F(xiàn)P表示負樣本預(yù)測出正樣本的框,F(xiàn)N表示從正樣本預(yù)測出負樣本的數(shù)量,TP+FP表示正樣本預(yù)測出來正確的框加上負樣本預(yù)測出正樣本的框,也就是表示預(yù)測框的個數(shù)。TP+FN表示正樣本預(yù)測出來正確的框加上正樣本預(yù)測出負樣本的數(shù)量也就是標注框的個數(shù)。
為測試出YOLOv5s 模型的最佳內(nèi)部參數(shù),即不同批量大小對YOLOv5s 的影響,在訓(xùn)練時利用github 官網(wǎng)提供的 YOLOv5.pt 預(yù)訓(xùn)練權(quán)重,通過自制YOLO 格式棉花頂芽數(shù)據(jù)集,模型設(shè)置圖像大小為640×640 分辨率,訓(xùn)練輪次設(shè)置為150,以及初始學(xué)習(xí)率為0.01,采用Adam 優(yōu)化器,分別設(shè)置不同批量大小分別為10、12、15、17、20、25 進行訓(xùn)練,試驗結(jié)果如表1 所示。通過數(shù)據(jù)對比可以看出,在相同迭代周期內(nèi),批量Batch size 設(shè)置為20 時效果最好,即使平均準確率mAP 達到了90.3%,圖片測試驗證效果可看出,未改進的目標檢測模型仍有提升空間。
表1 內(nèi)部參數(shù)對模型的影響Table 1 Effect of batch size on model
為測試不同注意力機制對模型的影響,分別將不同注意力機制加入到Y(jié)OLOV5s 目標檢測模型第13 層,將C3 模塊更換為SE、BotNet[24]、CotNet[25]、C2f、CCA、CCP-CBAM 6 種注意力機制模塊,YOLOv5-CPP 與其他5 種模型對比結(jié)果如表2 所示,YOLOv5-CPP 檢測平均準確率mAP 上升2.5、1.6、1.7、0.8、1.4 個百分點,而YOLOv5-SE、YOLOv5-BotNet、YOLOv5-CotNet、YOLOv5-CCA 這4 種模型檢測單株頂芽的平均精度值分別降低了1.1、0.1、0.3、0.4 個百分點,說明在棉花頂芽數(shù)據(jù)集上SE、BotNet、CotNet、CCA 注意力機制抑制了棉花頂芽的通道特征,造成總體識別頂芽精度下降,相反YOLOv5-CPP 精度上升比例最大,進一步說明了CPPCBAM 自注意力機制經(jīng)過空間模塊與通道模塊,對重要特征進行數(shù)值編碼,強化了各特征之間的關(guān)系,降低了對全局注意力計算的結(jié)果,更加注重頂芽特征,因此CPP-CBAM 注意力機制在3 種樣本上效果均有所改善,尤其是對遮擋頂芽這種數(shù)量多的樣本改善效果更加明顯,因此得出CPP-CBAM 注意力機制既能夠解決在復(fù)雜情況下對小目標在復(fù)雜環(huán)境下的特征提取任務(wù)。
表2 各個注意力機制模型對比Table 2 Comparison of attention mechanism models
為測試CPP-CBAM 注意力機制對模型的影響,本試驗通過將注意力機制CPP-CBAM 插入到不同網(wǎng)絡(luò)層中,測試出模型的檢測速度與平均準確率,試驗效果見表3,第13 層分別加入CPP-CBAM 注意力機制之后,較比插入到1、3、5、9、20 層平均準確率mAP 明顯有所提升,因為隨著網(wǎng)絡(luò)加深,第13 層C3 模塊對特征圖處理效果較比CPP-CBAM 注意力機制特征提取能力較弱,淺層小目標信息較為豐富,C3 模型尚且能夠?qū)π∧繕诵畔⑻卣鬟M行提取,但是隨著網(wǎng)絡(luò)加深小目標信息丟失,C3 模塊逐漸對小目標的特征提取效果不理想,因此可以推出第13 層插入CPP-CBAM 注意力機制效果最佳。
表3 不同層加入注意力機制對模型的影響Table 3 The effect of different layers adding attention mechanisms on the model
與其他模型對比結(jié)果見表4 所示,
表4 各個檢測模型對比Table 4 Comparison of each loss function
為驗證YOLOv5-CPP 模型在棉花頂芽數(shù)據(jù)集上檢測效果,本文分將YOLOv3[26]、YOLOv5s、YOLOv6[27]、Fast-RCNN 這4 種網(wǎng)絡(luò)模型在棉花頂芽數(shù)據(jù)集上進行訓(xùn)練,在相同迭代次數(shù)內(nèi),YOLOv3、YOLOv5s、YOLOv6、Fast-RCNN 這4 種網(wǎng)絡(luò)模型對數(shù)據(jù)集進行提取特征的效果并不理想,進一步說明網(wǎng)絡(luò)模型中模型對頂芽部分特征提取不到位,導(dǎo)致檢測精度不高。將CPP-CBAM 注意力機制加入到Y(jié)OLOv5s 模型中,并改進邊界框回歸損失函數(shù),對比4 種網(wǎng)絡(luò)模型在棉花頂芽的訓(xùn)練情況,得出改進YOLOv5s 的mAP 值比YOLOv3、YOLOv5s、YOLOv6s、Faster-RCNN-tiny 模型分別高出3.3、2、2.4、2.1 個百分點,同時模型參數(shù)量分別減少57.3、3.5、34.1、26.3 MB,但檢測速度并未達到實時檢測棉花頂芽的幀率。
為測試YOLOv5-CPP 模型移植到試驗樣機實時檢測頂芽的效果,將YOLOv5-CPP 與YOLOv5s、YOLOv5-CotNet、YOLOv5-BotNet 3 種模型進行對比分析,4 種模型檢測棉田同一區(qū)域被遮擋頂芽,如圖4 所示。通過測試頂芽圖可以發(fā)現(xiàn),YOLOv5s、YOLOv5-BotNet、YOLOv5-CotNet 模型識別遮擋的頂芽分別漏檢頂芽個數(shù)為5、5、2,同時YOLOv5-BotNet 錯檢1 個頂芽,YOLOv5-CPP 檢測模型(圖4d)較比 YOLOv5-CotNet檢測模型(圖4c)檢測遮擋的頂芽,平均準確度mAP分別提升15、29 個百分點,YOLOv5-CPP 模型魯棒性進一步加強,模型識別準確度大幅度提升,同時在TensorRT 加速情況下檢測速度達到了52 幀/s,滿足實時檢測的效果,在遮擋情況下的頂芽基礎(chǔ)上識別率、模型的魯棒性進一步提升,驗證了對遮擋情況的下頂芽有提升的效果。
本文在復(fù)雜環(huán)境識別遮擋下的棉花頂芽,建立不同不同光照和不同天氣條件下的棉花頂芽樣本,通過增加小目標檢測層提高淺層與深層的特征融合,提升檢測精度通過增加小目標檢測層,并且添加注意力機制,同時改進Focss Loss 損失函數(shù),提升棉花頂芽樣本識別率,并通過棉花打頂平臺驗證不同檢測模型對棉花頂芽識別,得到以下幾個結(jié)論:
1)通過在模型特征提取層增加小目標檢測層以及YOLOv5-CPP 并 與 YOLOv5-SE、YOLOv5-BotNet、YOLOv5-CotNet、YOLOv5-C2f、YOLOv5-CCA 5 種 模型進行對比,平均準確度mAP 分別提高了2.5、1.6、1.7、0.8、1.4 個百分點,尤其在識別被遮擋頂芽平均精度AP分別提高了4.3、4.4、4.3、1.9、1.9 個百分點,充分驗證在模型特征提取層增加 CPP-CBAM 注意力機制能夠完成在復(fù)雜情況下的頂芽精確識別。
2)本文通過對YOLOv5 模型改進,YOLOv5-CPP 不均衡各類樣本 檢測精度mAP 達到了92.8%,比YOLOv5s模型提高了2 個百分點,與YOLOv3、YOLOv6、Fast RCNN 相比,mAP 分別提高了3.3、2.4、2.1 個百分點,分析得出YOLOv5-CPP 對復(fù)雜情況下樣本檢測優(yōu)勢明顯。
YOLOv5-CPP 模型在復(fù)雜背景下識別精度、魯棒性大幅度提升,模型的檢測速度雖然降低,但YOLOv5-CPP 模型通過 TensorRT 加速后經(jīng)過實地驗證后可以滿足棉花打頂實時識別檢測要求,而且對于棉花打頂機而言,在保證識別準確率的前提下,提升速度指標,是保障機械作業(yè)效率的前提,為模型在棉花打頂機械上的遷移部署提供技術(shù)支持。