趙九霄 張 馨 史凱麗 李晶晶 李作麟
(1. 北京市農林科學院信息技術研究中心,北京 100097;2. 農業農村部農業信息軟硬件產品質量檢測重點實驗室,北京 100097; 3. 北京市農林科學院智能裝備技術研究中心,北京 100097)
2021年,中國番茄加工生產量為480萬t,其中串型番茄由于其植株承果能力強、萼片質量好、果實品質高等優良的商品特性而受到消費者的廣泛認可,但在串型番茄市場需求量增加的同時也帶來了一系列挑戰:① 需要對產后串型番茄進行分級,分級的前提是需要定位串型番茄位置及每一串的果實數量;② 需在該過程中降低人工分揀帶來的損失等[1]。傳統的人工定位、計數方法需要消耗大量勞動力資源,且精確度較低、實時性較差,現代化智慧農業的發展需要一種新型視覺無損檢測方法來代替傳統的人工定位和計數。
Michael等[2]提出了一種機器視覺系統,可以準確地定位目標并計算其數量。該方法使用Fast R-CNN框架[3]實現了高效的檢測。周勝安等[4]提出了一種改進CenterNet方法,通過替換骨干網絡的方法,提升檢測中小殘缺塊的檢測能力。Parico等[5]提出了一種先進目標檢測模型YOLOv4的變體,并對多重目標跟蹤算法進行深度排序,構建了應用于移動端的魯棒實時果實計數器。高芳芳等[6]提出了基于輕量級目標檢測網絡YOLOv4-tiny和卡爾曼濾波跟蹤算法的目標檢測與視頻計數方法,其平均檢測精度達94.47%。Wang等[7]提出了一種檢測和計數的兩階段方法。該方法可以準確地檢測并計算圖像中具有高度鄰接度的目標,優于基于手工特征的方法和YOLOv3方法[8-9]。Chen等[10]提出了一種基于無人機巡線視頻的目標檢測計數解決方案,結合YOLO快速檢測的特點,將卷積神經網絡應用于極點狀態的圖像檢測。目前,有關農業中作物定位和計數的研究較少,且研究場景大多數為正常情況下的目標檢測問題,并未對實際的產后串型番茄定位與計數過程中出現的果實之間遮擋問題、產后分級地點光線變化、拍攝過程中出現的圖像虛化問題以及背景干擾問題進行深入研究。
研究擬提出基于深度學習的改進Tiny-YOLOv5l串型番茄定位與計數算法,利用適用于樣本數據的注意力機制增加分類準確度;通過加入空洞卷積層增大感受野;通過加入深度可分離卷積層減少模型參數,旨在進一步提高串型番茄檢測框架的準確率和實時性。
試驗所用的串型番茄由北京宏福國際農業科技有限公司提供,采集的圖像是成熟后的串型番茄,品種為Juanita,生長高度區間為1.8~2.4 m,種植間隔45~60 cm。拍攝設備選用佳能EOS7D,相機采用雙數字影像處理器,像素為1 800萬像素,圖像采集工作從2021年8月—2022年1月,每月采集2次串型番茄圖像,共采集12批,數據樣本共969張圖片。
通過對訓練樣本旋轉來實現數據擴增,水平旋轉角度范圍為-35°~+35°。在水平旋轉的基礎上,加入20%隨機裁剪和高斯噪聲。擴增完成后對新增樣本進行篩選,去除劣質樣本,將增強后的圖像和原圖混合融入串型番茄數據集中。所有圖像統一使用JPG格式,分辨率為1 920×1 080,標注方式使用labelme手動標注,數據集標準為coco數據集,分為訓練集、驗證集、測試集,分割比例為5∶3∶2。
如表1所示,經數據增強及去除劣質樣本后,混合數據集共有2 280張圖片,數據集包含5個類別。① 正常情況:為防止葉片、桿徑、果實等對串型番茄的干擾,選取串型番茄背面朝上的樣本。② 遮擋條件:分別選取被葉片、莖稈、果實等遮擋情況下的串型番茄樣本。③ 背景干擾:選取試驗器材干擾物干擾的串型番茄樣本。④ 光照變化:選取由強到弱5種不同光照條件下的串型番茄樣本。⑤ 圖片虛化:選取虛化的串型番茄樣本。

表1 數據集中不同挑戰圖片數量
YOLOv5l網絡結構由Darknet-53主干網絡、路徑聚合網絡(PANet)組成[11-12]。采用CSP1_X作為主干,形成兩個支路,X個Bottleneck模塊串聯組成支路一,卷積層組成支路二,采用這種結構使串型番茄深層特征提取能力增強。PANet結構是由卷積操作、上采樣操作、CSP2_X構成的循環金字塔結構,可以使串型番茄圖像不同特征層之間相互融合,以進行掩模預測,經非極大值抑制(NMS)獲得最終串型番茄定位預測框。圖1為改進的Tiny-YOLOv5l框架。
YOLOv5l的損失函數由邊框回歸損失、置信度損失以及分類概率損失3部分組成,采用完全交并比損失函數(CIoU Loss)實現預測[13],其計算式為:
(1)

圖1 改進的Tiny-YOLOv5l框架結構圖

(2)
(3)
(4)
式中:
b、bgt——預測框和真實框的中心點;
ρ——預測框和真實框中心點之間的歐式距離;
c——能夠同時包含預測框和真實框的最小閉包區域的對角線間距;
w、wgt——預測框和真實框的寬度,像素;
h、hgt——預測框和真實框的寬度,像素;
IoU——預測框和真實框之間的交并集之比。
YOLOv5l包含Bottleneck CSP結構,該結構中的Bottleneck層常出現在ResNet50[14]網絡結構中,可以降低深層網絡的計算量,bottleneck結構中第1個1×1層是降低特征維度,第2個1×1層用于提高維度。經過降維和升維后形成類似于沙漏的Bottleneck結構,如圖2(a) 所示。串型番茄個體均為小目標,且檢測環境多為非結構化環境,果實受到密集分布、遮擋、光照變化等因素影響,在前向傳播過程中果實表層特征信息逐漸減弱,導致果實的輪廓信息丟失出現漏檢情況,因此加強環境因子影響下的果實目標特征學習尤為重要。在較深的網絡層數且需要更高性能的檢測網絡中使用注意力機制,其中輸入圖像的分辨率為1 920×1 080。考慮到在指數范圍內執行自我注意力機制所需內存和計算量,在主干網絡中將深層特征圖納入自我注意力機制模塊中。殘差網絡主干網中的堆棧使用3個塊,每個塊中有一個3×3的空間轉換,使用MHSA層進行替換,構成改進Bottleneck CSP體系結構的基礎。第1個塊使用3×3的卷積,步長為2;其他兩個塊步長為1。對第1個改進CSP塊使用步長為2的2×2平均池化層,改進后Tiny-YOLOv5l的bottleneck層結構如圖2(b)所示。

圖2 Bottleneck改進前后結構對比圖
支持向量機(SVM)的原理是二分類,其基礎是定義在線性空間的間隔最大線性分類器,同時可以通過核函數解決非線性數據的分類問題,使用高斯核函數SVM進行分類決策。
(5)
SVM優勢:試驗數據集總規模為969張,規模較小,SVM分類器相較softmax分類器在處理小規模樣本方面具有優勢;串型番茄特征相對于背景干擾特征較為明顯,不同于softmax函數的精細評分機制,使用二分類的SVM方法只要滿足邊界值則給出判斷,因此SVM分類函數更適用于產后串型番茄;softmax函數存在過擬合風險,SVM函數可以解決softmax分類器對于非結構環境下串型番茄分類識別能力不足的問題。因此,使用SVM代替MHSA結構中的softmax分類層,即提取特征后利用SVM分類函數進行分類。多頭注意力機制方法可以在不同的投影空間中建立不同的投影信息將多個注意力的方法進行組合,因此多個注意力的組合效果優于單個注意力機制。SVM-MHSA機制中,不同的隨機初始化映射矩陣可以將輸入向量映射到不同的子空間,可以使SVM-MHSA模型從串型番茄的色澤、大小、位置信息等不同角度理解輸入的數據,通過收集多尺度信息可以使模型從多維度理解串型番茄的表型信息,以提高檢測模型的魯棒性。
改進后的SVM-MHSA層如圖3所示,其步驟為:
步驟1:初始化算法需要用到的patch維度、高度、寬度;
步驟2:設置卷積核長度為1;
步驟3:對query、key、value值進行2d卷積;
步驟4:對長和寬進行空間相對位置編碼;
步驟5:將nn.SVM賦值給self.SVM;
步驟6:定義多頭注意力機制輸入項x;
步驟7:得到的x.size由batch_size高度、寬度、通道個數組成;
步驟8:將長寬拉直后的值、batch_size、通道數三者乘機賦值給q、k、v;
步驟9:計算content_content與content_new_position值;

圖3 SVM-MHSA層結構圖
步驟10:content_content與content_new_position相加得到的值調用self.SVM,最終得到attention值;
步驟11:v與attention乘積得到的值賦值給out;
步驟12:輸出。
改進后的Tiny-YOLOv5l特征提取圖如圖4所示,Stage2的CSP輸出的特征提取圖保留了串型番茄的大部分內容信息,極大程度地突出了串型番茄的輪廓信息,利用前3層淺層特征提取層提取串型番茄的輪廓特征,Stage23的CSP輸出的特征提取圖突出了串型番茄的深層細節信息,但對輪廓信息表述較差。使用注意力機制可以較好地結合串型番茄的輪廓信息和細節信息,使用淺層的輪廓信息恢復最后的檢測結果圖。

圖4 特征提取圖
將Tiny-YOLOv5l中3×3卷積替換為深度可分離卷積。在保持輸入數據集大小穩定的前提下,改進前卷積計算量C1為:
C1=Dk×Dk×M×N×DF×DF,
(6)
式中:
DF——輸入與輸出特征圖的寬度與高度,像素;
M——輸入特征圖的通道數;
N——輸出特征圖的通道數;
Dk——卷積核的長和寬。
替換可分離卷積后的總計算量C2為:
C2=Dk×Dk×M×DF×DF+M×N×DF×DF。
(7)
改進后卷積與改進前卷積計算量之比C3為:
(8)
在串型番茄檢測過程中,對于一些尺寸較小的番茄檢測比較困難。由于遮擋、虛化等因素影響,對小番茄的外觀特征數據收集匱乏,因而出現漏檢、誤檢的情況。如圖5所示,空洞卷積可以使卷積囊括更大范圍的信息,從而有效利用信息量來提高模型的性能,進而有效捕獲邊緣特征信息,因此引入空洞卷積來擴大感受野。

圖5 空洞卷積示意圖
擴張率為卷積核處理數據時各數據值之間的間距[15],空洞卷積核和感受野大小為:
fk'=fk+(fk-1)*(r-1),
(9)
(10)
式中:
fk——原始卷積核大小;
fk'——空洞卷積核大小;
r——卷積核的擴張率;
Rm——經空洞卷積后第m層感受野大小;
Si——第i層的步長;
*——卷積。
YOLOv5l使用的激活函數為Mish激活函數與Leaky_relu激活函數,Mish激活函數應用于Backbone結構中,Leaky_relu結構主要應用于CSP結構中,Backbone結構中的Mish激活函數不作改變,使用Rrelu激活函數[16],Leaky_relu表達式為:
(11)
式中:
ai——(1,+∞)區間內的固定參數。
使用Rrelu激活函數代替Leaky_relu激活函數,其表達式為:
where
aji~U(l,u),l (12) 訓練采用的CPU為(英特爾)Intel(R) Core(TM) i5-11400,內存為32 G,操作系統為Windows 10,顯卡為RTX3060,擁有12 G獨顯。 (1) 配置模型訓練所需文件結構及路徑。 (2) 用Anaconda3配置虛擬環境,調用環境所需python版本以及pytorch等;根據不同數據集規模及難易程度調整模型閾值參數,將改進后的模型導入。 (3) 總訓練迭代次數為300輪,為使梯度下降學習法有更好的效率,初始學習率為0.01。根據串型番茄數據集大小設置每步驟更新公式為: α=0.95epoch_num·α0, (13) 式中: α——實時學習率; α0——初始學習率; epoch_num——epoch次數。 為了評價Tiny-YOLOv5l的性能,主要使用精確度[17]、召回率[18]等評價指標。召回率和精度分別按式(14)、式(15)計算。 (14) (15) 式中: R——召回率; P——精確度; TP——準確檢測出的串型番茄目標數; FP——誤檢出的串型番茄目標數; FN——漏檢的串型番茄目標數。 在同一數據集上分別訓練YOLOv5l以及改進的Tiny-YOLOv5l兩種算法,在正常拍攝條件下改進前的算法檢測置信度為93%,改進后的Tiny-YOLOv5l算法對目標檢測的置信度為94%,檢測并無顯著提高。 由于拍攝角度不同導致取圖過程中存在較多遮擋問題(果實被果實遮擋、果實被葉遮擋等)。如圖6(a)所示,藍色框為YOLOv5l算法漏檢的串型番茄,其中未識別的遮擋串型番茄占未識別總數的77.8%;如圖6(b)所示,Tiny-YOLOv5l算法可以100%識別所有目標區域中的串型番茄,且置信度方面較YOLOv5l提高了1%~3%。背景干擾下,如圖6(c)中黃色框所示,無關環境因子被誤檢為串型番茄;如圖6(d)所示,Tiny-YOLOv5l算法可以識別遮擋面積超過70%的串型番茄。選擇5種光照環境進行對比檢測試驗。圖6(e)中綠色框為YOLOv5l算法漏檢的串型番茄,圖6(f)表明Tiny-YOLOv5l算法均能有效識別串型番茄個體。在圖片虛化情況下,圖6(g)表明YOLOv5l算法識別到的串型番茄數量為0;Tiny-YOLOv5l算法在加入Bottleneck替換層后[圖6(h)],加強了對模糊特征的學習,可以檢測出全部串型番茄。 圖6 圖片虛化下算法改進前后對比圖 4.2.1 檢測速度 由圖7可知,Tiny-YOLOv5l算法較YOLOv5l所需檢測時間少,即使在使用普通電腦配置(酷睿i5,16 GB內存)訓練參數規模是3.76×107的網絡模型,訓練一步所需時間僅為8~10 s,總訓練時長為12.77 h。在正常拍攝、遮擋情況、背景干擾、光照變化和圖像虛化情況下收斂速度分別縮減,說明在不利拍攝情況下,改進后的算法表現出更好的計算速率。 圖7 改進前后算法檢測速度比較 4.2.2 損失率 由圖8(a)可知,當訓練輪數<13時,YOLOv5l的損失率比Tiny-YOLOv5l的低;當訓練輪數增加至210時,YOLOv5l的損失率從11.13%收斂至1.91%,Tiny-YOLOv5l的損失率從11.98%收斂至1.93%,Tiny-YOLOv5l的降低幅度明顯高于YOLOv5l;當訓練輪數>250時,兩種算法的損失率降低幅度逐漸趨于穩定,模型訓練效果良好,未出現梯度消失或梯度爆炸現象,Tiny-YOLOv5l的最終損失率為1.41%,低于YOLOv5l的。由圖8(b)可知,訓練開始時Tiny-YOLOv5l算法檢測框損失率為10.74%,低于YOLOv5l的,隨著迭代次數的增加,當迭代次數>226時,損失率趨于穩定,最終Tiny-YOLOv5l算法的損失率為0.65%,優于YOLOv5l算法的。 圖8 改進前后檢測框損失率對比圖 由圖9(a)可知,當訓練輪數<15時,改進前算法損失率從11.9%上升至17.83%后又回落至10.32%,改進后算法處于不穩定狀態,損失率由8.93%上升至14.83%后又回落至7.27%;當訓練輪數>15時,兩種算法均趨于穩定,且YOLOv5l算法的目標損失率波動幅度大于Tiny-YOLOv5l。由圖9(b)可知,Tiny-YOLOv5l算法的目標損失率趨于穩定,最終穩定在1.37%,優于YOLOv5l算法的。 圖9 改進前后目標損失率對比圖 由圖10可知,當訓練輪數<30時,改進前后算法的置信度損失情況相似,當訓練輪數>143時,無論是訓練集還是驗證集,Tiny-YOLOv5l算法具有更低的置信度損失率,比YOLOv5l低0.14%。 圖10 改進前后訓練集和驗證集置信度損失率對比圖 4.2.3 精度 由圖11可知,改進前的YOLOv5l算法的檢測精度穩定于98.89%,高于改進后的Tiny-YOLOv5l算法。 圖11 改進前后精度對比圖 4.2.4 召回率 由圖12可知,初始時,兩種算法的召回率均<20%,因為串型番茄形狀大小不一,訓練開始時漏檢情況較多。當訓練輪數<210時,兩種算法的召回率均在波動上升,而Tiny-YOLOv5l的上升趨勢較YOLOv5l更具優勢;當訓練輪數>210時,二者召回率均趨近于1,且Tiny-YOLOv5l的召回率高于YOLOv5l。 圖12 改進前后召回率對比圖 研究建立了一種串型番茄實時檢測與計數算法模型。在模型中加入注意力機制可以加強對串型番茄目標識別的準確率;采用SVM分類函數代替softmax分類函數,可使之更適用于樣本數據,并擁有更好的泛化能力;加入空洞卷積增大對樣本特征的感受野可以提高檢測準確率;在模型中引入深度可分離卷積,可以減少參數量以增加實時性;使用隨機糾正線性單元激活函數可以增加網絡訓練的收斂速度。在串型番茄檢測過程中,計算量仍是一項挑戰,如何在保持精度的前提下優化模型是待解決的問題之一;檢測的品種種類過于單一,如何提高泛化性能也是一項重要的工作;此外,后續將對串型番茄色澤、殘缺種類等其他參數進行研究分類。3 模型訓練與測試
3.1 模型運行平臺
3.2 參數設置及訓練步驟
3.3 評價指標
4 結果與分析
4.1 監測識別結果

4.2 模型性能評估






5 結論