趙文博,周德強,2,鄧干然,何馮光,朱琦,韋麗嬌,牛釗君
1.江南大學機械工程學院,無錫 214122; 2.江蘇省食品先進制造裝備技術重點實驗室,無錫 214122;3.中國熱帶農業科學院農業機械研究所,湛江 524088;4.農業農村部熱帶作物農業裝備重點實驗室,湛江 524091
目前我國甘蔗產業僅在機耕、培土等環節實現了機械化,但機械種植、機械收獲方面仍未普及,導致產業整體機械化程度低。甘蔗的機械種植主要采用預切種式甘蔗種植機,依據農藝要求提前對優質甘蔗進行切種,并完成曬種、浸種和殺菌等農藝流程[1]。由于人工切種效率低下,目前已開發出防傷芽智能切種方法,能夠有效識別莖節位置。但隨著切種工作的進行,會產生大量碎屑、雜葉等污垢造成圖像采集區域背景污染,導致算法識別精度下降,甚至失效。因此,亟需開發防傷芽的智能切種方法,能夠在雜亂背景中精確識別莖節位置,提高莖節識別精度,以實現高效的防傷芽切種。
近年來,針對甘蔗莖節識別定位問題,國內外開展了廣泛的研究,通過傳統的機器視覺方法實現了甘蔗莖節檢測。Zhou等[2]獲取甘蔗圖像的感興趣區域,利用Sobel算子提取邊緣特征并采用構造的矩形檢測算子積分運算得到特征描述向量,通過檢測描述向量的峰值來識別莖節,識別準確率為93%。Chen等[3]提出一種基于垂直投影函數最小點和局部像素的方法來定位甘蔗莖節,雙莖節識別率98.5%。Yang等[4]通過Sobel算子計算甘蔗圖像在水平方面的梯度信息,利用平均梯度和方差梯度特征識別甘蔗莖節,識別準確率為96.89%。Nare等[5]利用Sobel算子識別甘蔗邊緣,通過調節閾值去除噪音,用識別邊緣的附加閾值和邊緣總數識別甘蔗芽。張圓圓等[6]根據甘蔗莖節處具有拐點和灰度值不連續的特性,在邊緣擬合法和灰度值擬合法基礎上采用中值決策識別甘蔗莖節,識別正確率達到94.7%。以上基于傳統機器視覺的檢測方法魯棒性較差,當甘蔗品種更換或背景環境復雜時識別能力會大幅降低,無法按要求完成防傷芽切種工作。隨著深度學習越來越廣泛地應用于農業領域,目前已取得諸多成果。如李尚平等[7]通過改變輸出特征圖尺寸和減少an?chors的方法改進YOLOv3,實現甘蔗切種裝置對莖節特征的連續、動態的智能識別,識別準確率96.89%。黃彤鑌等[8]通過引入CBAM注意力機制提高特征提取能力,并采用α-IoU損失函數增強邊界框定位精度的方法改進YOLOv5,實現了在自然環境下快速準確的識別柑橘果實。趙德安等[9]通過替換骨干網絡的方法改進YOLOv3,在保證效率和準確率的前提下實現了復雜環境下蘋果的檢測。顧偉等[10]利用ResNet 50網絡改進SSD算法的主干結構,提高群體棉籽圖像特征提取效率,實現了對群體棉籽的破損檢測。
基于傳統的機器視覺算法雖然準確率較高,但魯棒性差,而基于深度學習的算法能增強魯棒性,但由于模型尺寸較大,需要高昂的計算成本才能完成。為解決上述問題,本研究提出了一種基于改進YO?LOv5的甘蔗莖節識別定位方法,以期為甘蔗預切種機在雜亂背景下工作提供算法支持。
甘蔗樣本采集于廣東省湛江市中國熱帶科學院農業機械研究所試驗田,采集設備型號為工業相機MER-2000-5GM/C、鏡 頭HN-0826-20M-C1/1X。考慮到不同品種甘蔗直徑、莖節形狀、顏色以及灰度值變化都會有所不同,選取貴糖49號、新臺糖22號2種甘蔗作為樣本,人工砍收后統一在研究所試驗基地拍攝。由于農業機械工況惡劣,隨著切種工作不斷進行,切種機內部圖像采集區域會因各種污染造成背景雜亂,如甘蔗切割碎屑、泥土碎屑、切割時飛濺出的蔗糖汁黏液造成的枝葉黏附等。在樣本采集時為模擬切種機內部背景雜亂的場景,根據真實內部環境產生的背景污染,分析其干擾原因后在拍攝背景中隨機加入碎屑模擬,其中包含因鋸片造成的細小碎屑、甘蔗根部黏附的泥土顆粒以及枯葉。模擬環境中加入的干擾元素包含了真實環境中的各類污染,故二者較為相似。拍攝完成后按照背景雜亂程度依次分為干凈背景樣本、輕度雜亂背景樣本、重度雜亂背景樣本。最終采集貴糖49號510張、新臺糖22號500張,莖節數量共10 094個。采集的單張圖片大小為57.7 Mb,分辨率為5 496×3 672,存儲格式為bmp格式。采用圖片標注工具LabelImg將圖片標注成VOC格式的xml文件,之后將其轉換為yolo格式的txt文件并按照7︰2︰1的比例劃分訓練集,測試集和驗證集。數據集部分樣本如圖1所示。

圖1 部分樣本圖片Fig.1 Some sample pictures
隨著目標檢測算法的不斷改進與迭代,YO?LOv5較YOLOv4在精度、速度和模型大小上均有較大程度的優化,更適合部署在嵌入式設備上用于工程實踐。YOLOv5s是YOLOv5模型系列中尺寸最小的版本,其大小僅14.50 Mb,但在復雜背景環境下容易受到干擾,造成錯檢、精度不能滿足要求等問題。YOLOv5s的主要結構由Input輸入端、Backbone骨干網絡、Neck網絡層和Head檢測端4個部分組成,如圖2所示。Input輸入端通過Mosaic數據增強豐富數據集,采用K-means自適應錨框算法計算獲取最佳錨框尺寸并自適應縮放圖片大小以減少計算量。Mosaic數據增強算法[11]從同一批次的BatchSize個樣本中隨機抽取4張圖片并進行裁剪、縮放,合并為1張圖片后輸入網絡,不僅可以豐富數據集,而且能夠提升網絡的訓練速度。Backbone骨干網絡包含C3模塊以及SPPF模塊,經改進后的C3模塊由于使用了殘差結構,改善了反向傳播過程中梯度爆炸和梯度消息問題。Neck網絡主要對骨干網絡提取到的特征信息進行融合,共包括FPN特征金字塔[12]和PAN路徑聚合網絡結構[13]中的2部分信息。Head檢測頭將Neck網絡輸出的不同尺度的特征圖進行解析,并通過損失函數和NMS非極大值抑制進行訓練或預測。

圖2 YOLOv5s網絡結構Fig.2 YOLOv5s network structure
1) 改進Neck網絡層。YOLOv5s網絡的頸部結構設計采用FPN+PAN的結構,FPN結構利用骨干網絡最后1層輸出特征圖進行2次上采樣,在3個尺度上構建出高級語義特征圖。由于連續上采樣會造成淺層信息大量丟失,影響甘蔗莖節識別定位。為實現莖節位置的精確定位,減少雜亂背景帶來的干擾,需充分利用主干網絡提取到的淺層信息,增強網絡對定位框的回歸能力。因此,基于BiFPN[14]提出了跨層加權連接的Neck結構,將頸部和骨干網絡同一尺度的特征信息相融合,在不大幅增加計算成本的情況下,將淺層語義信息如邊緣、輪廓等融入到PAN結構中,使模型對甘蔗莖節定位的邊界框回歸更加精確。在信息融合過程中,一般采用將不同層級的特征圖直接相加的方法,但實際上不同特征層對最終結果產生的影響不同,因此,引入可學習的方式,在迭代過程中不斷調整和學習不同的輸入特征層權重。
特征融合有多種方式,如采用concat操作將通道疊加進行特征融合、在通道數不變的情況下直接將2張特征圖數值相加的add操作以及采用全連接操作進行融合等。因全連接融合方式導致參數量大幅增加,故這里不進行考慮。對add和concat操作分析如下:

其中,outconcat和outadd分別為不同方法融合后的特征圖;xi和yi分別為不同通道的輸入;ki表示第i個卷積核。
由式(1)可知,在進行concat拼接時對于不同的特征層采用不同的卷積核運算,模型經過concat融合操作后提取到不同的語義信息,并增加了通道數。由式(2)可知,add操作只是簡單地進行像素疊加,會導致信息損失,但共享卷積核參數使參數量較concat操作減少一半,二者均有不同的優勢。改進后的Neck結構如圖3所示,其中虛線條代表添加可學習權重的特征融合。

圖3 改進后Neck結構Fig.3 Improved Neck structure
2) 損失函數改進。損失函數主要用來評估真實值與預測值之間的差異程度,YOLOv5s的損失函數分別由目標置信度損失、邊框定位損失和分類損失3部分構成。改進后的損失函數采用Focal loss 計算目標置信度損失,并采用EIoU loss[15]計算邊界框定位損失。
①采用焦點損失函數Focal loss[16]替換交叉熵損失函數計算目標置信度損失。YOLOv5s的目標置信度損失采用交叉熵損失,如公式(3)。對于二分類問題,總的損失函數如公式(4)。當樣本分布不均勻時,損失函數會更加偏重樣本數多的類別,即當m>>n時,模型會朝著與預期不同的方向優化。在檢測甘蔗圖片時,模型會生成大量候選框,雖然YOLOv5s利用跨鄰域網格匹配策略增大了正樣本的數量,但是負樣本仍占較大比例,使損失函數更關注負樣本,因此,本研究引入焦點損失函數Focal loss,在一定程度上降低正負樣本比例失衡所帶來的影響,有效減少背景帶來的干擾。

其中,p為預測概率大小,樣本總數N=m+n。
Focal loss的具體形式如公式(5)所示,將公式(6)代入公式(5)可得到公式(7)。

由式(3)和式(7)可知,Focal loss其本質在于加入了調制因子(1-pt)γ和平衡因子αt,其中平衡因子αt糾正正負樣本對總損失的影響,反映了分類的難易程度,pt越大說明目標置信度越高、樣本易于分類;pt越小則相反。引入Focal loss從特征識別難易角度和樣本分布角度出發,解決了樣本不均衡帶來的模型優化問題。
②采用EIoU[17]損失函數計算邊框定位損失。YOLOv5s原采用CIoU損失函數計算邊框回歸定位損失,計算方法如式(8)。

其中,ρ2(b,bgt)代表兩框中心點的歐式距離,c代表能同時覆蓋兩框的最小閉包區域的對角線距離。
CIoU損失函數從邊界框回歸的重疊面積、中心點距離、縱橫比三方面進行回歸使定位更精確。由公式(10)可得,對預測框形狀回歸時CIoU損失函數對長寬比進行懲罰,當w=kwgt、h=khgt時,CIoU損失函數中對長寬比的懲罰項會退化為0,導致懲罰失效,最終預測框無法擬合真實框。對公式(10)求偏導可得:

由式(11)和(12)可知,在回歸過程中,h和w的變化相反,無法使二者同時變小。基于此情況,引入EIoU損失函數改進定位回歸損失。EIoU損失函數在CIoU損失函數的基礎上將對寬高比的懲罰改為采用對目標框和預測框的寬高之差分別懲罰,解決了形狀相似時懲罰項退化和無法同時最小化的問題,提高了邊界框的回歸精度。其定義如公式(13)所示。

其中,Cw、Ch分別代表能同時覆蓋兩框的最小閉包區域的高和寬。
3) 引入Ghost模塊。經上述方法改進后,較原YOLOv5s模型識別準確率提高,但同時增加了參數量。在原始模型中使用了大量的卷積核去完成采樣、融合等操作,普通卷積輸出的特征圖中包含了很多冗余特征[18],為減少模型參數量,使模型能夠部署在計算資源有限的硬件設備上,引入Ghost模塊替換Neck中原始普通卷積。Ghost模塊將卷積分為2部分,一部分利用常規卷積生成一定數量的特征圖,另一部分通過線性運算補全缺失的特征圖,從減少冗余特征的角度出發,在不改變輸出特征圖大小的情況下降低參數量和計算復雜度,結構如圖4所示。雖然改進后模型實現了輕量化,但由于去除冗余特征圖導致精度下降,推理速度變慢等,因此,后續針對模型精度、參數量、推理速度進行消融試驗。改進后的網絡結構設計如圖5所示。

圖4 常規卷積層和Ghost模塊Fig.4 Regular convolutional layer and Ghost module

圖5 改進后的YOLOv5s結構圖Fig.5 Improved YOLOv5s structure diagram
采用Windows10操作系統,計算機內存為64 G,處理器型號為Intel(R) Core(TM) i9-10900K CPU @ 3.70GHz 3.70 GHz,顯卡型號為 GPU NVIDIA GeFore RTX3060,深度學習框架使用Pytorch 1.10.0,CUDA 10.2,CUDNN 8.3.3。初始化學習率為0.01,動量參數為0.937,最終學習率為0.001,批處理大小BatchSize為32,總迭代次數epoch為300次,并采用epoch為3、動量參數為0.8的warm-up方法預熱學習率。具體試驗流程如圖6所示。步驟1,利用工業相機采集甘蔗圖像后進行分類、標注處理,并按比例劃分好訓練集、測試集和驗證集;步驟2,采用Python編程語言,利用Pytorch深度學習框架構建并改進YOLOv5s模型;步驟3,選取合適的超參數初始化模型并對模型進行訓練;步驟4,利用訓練好的權重文件在測試集上測試模型效果;步驟5,將最終模型與其他模型進行多組橫向對比試驗。

圖6 試驗流程圖Fig.6 Experiment flow chart
為系統且客觀地評價改進后模型與原模型及其他模型的性能,試驗采用準確率(precision,P)、召回率(recall,R)、平均精度(average precision,PA)、參數量、計算量(GFLOPs)、模型大小、推理速度(speed)作為模型的評價標準。其中,推理速度(speed)指對單張甘蔗圖像的檢測時間。具體計算公式如下:

其中,TP為真實正樣本,FP為虛假正樣本,FN為虛假負樣本。
從表1可知,采用add操作實現的特征融合手段改進Neck結構使模型準確率P下降了0.2個百分點,召回率R、平均精度PA均提高了1.3個百分點;采用concat操作實現的特征融合改進Neck結構使得模型準確率P、召回率R和平均精度PA分別提高了0.9、1.3、1.4個百分點。因此,無論用哪種手段實現的跨層加權連接均能使模型平均精度得到提升,但二者使模型的參數量和復雜度有不同程度的增加,add操作實現的特征融合相比于concat操作在模型參數量上高出0.09 Mb,通過分析模型構建過程可以解釋這種現象。在模型構建時,需要將第12層、16層、22層進行特征融合,由于add操作需要保證不同層級特征圖通道數相同,所以融合之前需加入1×1卷積調整通道數,使得本應參數量較小的add操作比concat操作實現的特征融合多出一部分參數量。綜合考慮精度和參數量等因素,采用concat操作實現可學習的跨層級連接改進Neck結構。

表1 不同融合手段的試驗結果Table 1 Comparison experiments of fusion means
為驗證上述改進后模型在復雜背景下甘蔗莖節識別過程中的優化效果,進行了一系列消融試驗。首先通過添加學習權重的跨層連接改進頸部結構,然后將YOLOv5s的目標置信度損失和邊框定位損失分別替換為Focal loss和EIoU損失函數。訓練過程采用同樣的超參數,試驗結果見表2。將頸部改進后,使網絡將淺層的邊緣信息進一步與提取后的深層語義信息相結合,模型對莖節的檢測也更加準確,準確率P提高0.9個百分點,平均精度PA提升1.4個百分點,參數量僅增加0.06 Mb。引入EIoU損失函數計算邊界回歸的損失函數,改變了對預測框長和寬的懲罰方法,提高了模型邊界框的定位精度,在不增加參數量的情況下,較原模型準確率P提高1.2個百分點,平均精度PA提高1.4個百分點。此外,引入Focal loss焦點損失函數后,解決正負樣本分布不均勻問題,使準確率P提高了0.8個百分點。由表2可知,由于幾種改進措施都均未大幅增加模型參數和復雜度,故單張圖片推理時間幾乎沒有改變。

表2 YOLOv5s消融試驗Table 2 YOLOv5s ablation experiment
將改進后的YOLOv5s模型采用Ghost模塊替換不同位置的卷積進行訓練并測試,對比不同參數量下的模型精度,評估模型性能,結果如表3所示,其中Baseline為經過表2中的序列1、2、3分別改進后的YOLOv5s模型。經比較可以看出,不論采用Ghost改進骨干網絡還是改進頸部,或者全部改進,均會使模型參數量和模型大小減小,但會導致模型的平均精度值有不同程度的降低。其中,對頸部替換的參數量較原模型減少1.34 Mb,模型大小減小3.1 Mb,準確率P提高1.3個百分點,平均精度PA增長了1.4個百分點。雖然單張推理時間增加了2.9 ms,但仍滿足切種工作對于圖像處理時間的要求。因此,采用Ghost模塊對頸部Neck進行輕量化改進,能夠很好地兼顧檢測精度和模型參數量大小。

表3 Ghost模塊替換結果比較Table 3 Comparison of Ghost module replacement results
采用同一甘蔗數據集在同等硬件資源下對Fast?er R-CNN、YOLOv4-tiny、YOLOv3進行對比試驗。由表4可知,相比于YOLOv3和YOLOv4-tiny,雙階段算法Faster R-CNN在平均精度上性能優于YO?LOv3和YOLOv4-tiny,但單張推理時間遠遠大于單階段算法YOLO。改進后的YOLOv5s模型相較于YOLOv3和YOLOv4-tiny,模型尺寸更小,平均精度更高,更適宜部署在計算資源有限的嵌入式硬件上。相比于原模型YOLOv5s,由于提升了網絡特征提取能力以及改進了損失函數,使得改進后模型在雜亂背景下表現更好,平均精度更高。

表4 不同模型檢測結果對比Table 4 Comparison of detection results of different models
圖7為改進前后YOLOv5s在不同雜亂程度背景下莖節識別的效果圖,其中圖7A為改進前識別效果,圖7B為改進后識別效果。從圖7A可以看出,當背景逐漸變得雜亂,未改進前模型存在著錯檢等問題。改進后YOLOv5s模型不但對干凈背景下莖節檢測效果準確率提高,而且隨著背景逐漸雜亂,對莖節的檢測效果仍較好。

圖7 不同程度雜亂背景下檢測效果圖Fig.7 Detection effect under different degrees of clutter background
本研究針對甘蔗智能切種機作業過程中背景雜亂導致莖節識別困難等問題,提出了一種基于改進YOLOv5模型的莖節識別方法,通過將主干網絡與頸部同尺寸特征圖跨層加權連接提高特征提取能力,減少雜亂背景造成的精度下降;引入Focal loss替換交叉熵損失函數解決正負樣本比例失衡問題,并采用EIoU損失函數計算預測框回歸損失提高定位精度,最終結合Ghost模塊在保證模型精度的同時對模型進行輕量化改進。改進后的模型在甘蔗數據集上的準確率達97.1%,較原模型提高了1.3個百分點,平均精度為97.80%,模型大小僅11.40 Mb,單張推理時間為16.9 ms。試驗結果表明,在雜亂背景下,改進后的算法能夠在兼顧模型大小的同時保證較高精度,為復雜工況下的防傷芽切種工作提供精確的定位信息。由于物距較大導致單個相機無法較好地完成整根甘蔗圖像的清晰采集,后續考慮減小物距并增加多組相機進行拍攝,通過圖像拼接得到整根甘蔗圖像,并進一步將模型部署在嵌入式設備上,最終完成真實環境下的切割任務。