趙九霄 張 馨 史凱麗 李晶晶 李作麟
(1. 北京市農(nóng)林科學(xué)院信息技術(shù)研究中心,北京 100097;2. 農(nóng)業(yè)農(nóng)村部農(nóng)業(yè)信息軟硬件產(chǎn)品質(zhì)量檢測重點實驗室,北京 100097; 3. 北京市農(nóng)林科學(xué)院智能裝備技術(shù)研究中心,北京 100097)
2021年,中國番茄加工生產(chǎn)量為480萬t,其中串型番茄由于其植株承果能力強(qiáng)、萼片質(zhì)量好、果實品質(zhì)高等優(yōu)良的商品特性而受到消費者的廣泛認(rèn)可,但在串型番茄市場需求量增加的同時也帶來了一系列挑戰(zhàn):① 需要對產(chǎn)后串型番茄進(jìn)行分級,分級的前提是需要定位串型番茄位置及每一串的果實數(shù)量;② 需在該過程中降低人工分揀帶來的損失等[1]。傳統(tǒng)的人工定位、計數(shù)方法需要消耗大量勞動力資源,且精確度較低、實時性較差,現(xiàn)代化智慧農(nóng)業(yè)的發(fā)展需要一種新型視覺無損檢測方法來代替?zhèn)鹘y(tǒng)的人工定位和計數(shù)。
Michael等[2]提出了一種機(jī)器視覺系統(tǒng),可以準(zhǔn)確地定位目標(biāo)并計算其數(shù)量。該方法使用Fast R-CNN框架[3]實現(xiàn)了高效的檢測。周勝安等[4]提出了一種改進(jìn)CenterNet方法,通過替換骨干網(wǎng)絡(luò)的方法,提升檢測中小殘缺塊的檢測能力。Parico等[5]提出了一種先進(jìn)目標(biāo)檢測模型YOLOv4的變體,并對多重目標(biāo)跟蹤算法進(jìn)行深度排序,構(gòu)建了應(yīng)用于移動端的魯棒實時果實計數(shù)器。高芳芳等[6]提出了基于輕量級目標(biāo)檢測網(wǎng)絡(luò)YOLOv4-tiny和卡爾曼濾波跟蹤算法的目標(biāo)檢測與視頻計數(shù)方法,其平均檢測精度達(dá)94.47%。Wang等[7]提出了一種檢測和計數(shù)的兩階段方法。該方法可以準(zhǔn)確地檢測并計算圖像中具有高度鄰接度的目標(biāo),優(yōu)于基于手工特征的方法和YOLOv3方法[8-9]。Chen等[10]提出了一種基于無人機(jī)巡線視頻的目標(biāo)檢測計數(shù)解決方案,結(jié)合YOLO快速檢測的特點,將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于極點狀態(tài)的圖像檢測。目前,有關(guān)農(nóng)業(yè)中作物定位和計數(shù)的研究較少,且研究場景大多數(shù)為正常情況下的目標(biāo)檢測問題,并未對實際的產(chǎn)后串型番茄定位與計數(shù)過程中出現(xiàn)的果實之間遮擋問題、產(chǎn)后分級地點光線變化、拍攝過程中出現(xiàn)的圖像虛化問題以及背景干擾問題進(jìn)行深入研究。
研究擬提出基于深度學(xué)習(xí)的改進(jìn)Tiny-YOLOv5l串型番茄定位與計數(shù)算法,利用適用于樣本數(shù)據(jù)的注意力機(jī)制增加分類準(zhǔn)確度;通過加入空洞卷積層增大感受野;通過加入深度可分離卷積層減少模型參數(shù),旨在進(jìn)一步提高串型番茄檢測框架的準(zhǔn)確率和實時性。
試驗所用的串型番茄由北京宏福國際農(nóng)業(yè)科技有限公司提供,采集的圖像是成熟后的串型番茄,品種為Juanita,生長高度區(qū)間為1.8~2.4 m,種植間隔45~60 cm。拍攝設(shè)備選用佳能EOS7D,相機(jī)采用雙數(shù)字影像處理器,像素為1 800萬像素,圖像采集工作從2021年8月—2022年1月,每月采集2次串型番茄圖像,共采集12批,數(shù)據(jù)樣本共969張圖片。
通過對訓(xùn)練樣本旋轉(zhuǎn)來實現(xiàn)數(shù)據(jù)擴(kuò)增,水平旋轉(zhuǎn)角度范圍為-35°~+35°。在水平旋轉(zhuǎn)的基礎(chǔ)上,加入20%隨機(jī)裁剪和高斯噪聲。擴(kuò)增完成后對新增樣本進(jìn)行篩選,去除劣質(zhì)樣本,將增強(qiáng)后的圖像和原圖混合融入串型番茄數(shù)據(jù)集中。所有圖像統(tǒng)一使用JPG格式,分辨率為1 920×1 080,標(biāo)注方式使用labelme手動標(biāo)注,數(shù)據(jù)集標(biāo)準(zhǔn)為coco數(shù)據(jù)集,分為訓(xùn)練集、驗證集、測試集,分割比例為5∶3∶2。
如表1所示,經(jīng)數(shù)據(jù)增強(qiáng)及去除劣質(zhì)樣本后,混合數(shù)據(jù)集共有2 280張圖片,數(shù)據(jù)集包含5個類別。① 正常情況:為防止葉片、桿徑、果實等對串型番茄的干擾,選取串型番茄背面朝上的樣本。② 遮擋條件:分別選取被葉片、莖稈、果實等遮擋情況下的串型番茄樣本。③ 背景干擾:選取試驗器材干擾物干擾的串型番茄樣本。④ 光照變化:選取由強(qiáng)到弱5種不同光照條件下的串型番茄樣本。⑤ 圖片虛化:選取虛化的串型番茄樣本。
表1 數(shù)據(jù)集中不同挑戰(zhàn)圖片數(shù)量
YOLOv5l網(wǎng)絡(luò)結(jié)構(gòu)由Darknet-53主干網(wǎng)絡(luò)、路徑聚合網(wǎng)絡(luò)(PANet)組成[11-12]。采用CSP1_X作為主干,形成兩個支路,X個Bottleneck模塊串聯(lián)組成支路一,卷積層組成支路二,采用這種結(jié)構(gòu)使串型番茄深層特征提取能力增強(qiáng)。PANet結(jié)構(gòu)是由卷積操作、上采樣操作、CSP2_X構(gòu)成的循環(huán)金字塔結(jié)構(gòu),可以使串型番茄圖像不同特征層之間相互融合,以進(jìn)行掩模預(yù)測,經(jīng)非極大值抑制(NMS)獲得最終串型番茄定位預(yù)測框。圖1為改進(jìn)的Tiny-YOLOv5l框架。
YOLOv5l的損失函數(shù)由邊框回歸損失、置信度損失以及分類概率損失3部分組成,采用完全交并比損失函數(shù)(CIoU Loss)實現(xiàn)預(yù)測[13],其計算式為:
(1)
圖1 改進(jìn)的Tiny-YOLOv5l框架結(jié)構(gòu)圖
(2)
(3)
(4)
式中:
b、bgt——預(yù)測框和真實框的中心點;
ρ——預(yù)測框和真實框中心點之間的歐式距離;
c——能夠同時包含預(yù)測框和真實框的最小閉包區(qū)域的對角線間距;
w、wgt——預(yù)測框和真實框的寬度,像素;
h、hgt——預(yù)測框和真實框的寬度,像素;
IoU——預(yù)測框和真實框之間的交并集之比。
YOLOv5l包含Bottleneck CSP結(jié)構(gòu),該結(jié)構(gòu)中的Bottleneck層常出現(xiàn)在ResNet50[14]網(wǎng)絡(luò)結(jié)構(gòu)中,可以降低深層網(wǎng)絡(luò)的計算量,bottleneck結(jié)構(gòu)中第1個1×1層是降低特征維度,第2個1×1層用于提高維度。經(jīng)過降維和升維后形成類似于沙漏的Bottleneck結(jié)構(gòu),如圖2(a) 所示。串型番茄個體均為小目標(biāo),且檢測環(huán)境多為非結(jié)構(gòu)化環(huán)境,果實受到密集分布、遮擋、光照變化等因素影響,在前向傳播過程中果實表層特征信息逐漸減弱,導(dǎo)致果實的輪廓信息丟失出現(xiàn)漏檢情況,因此加強(qiáng)環(huán)境因子影響下的果實目標(biāo)特征學(xué)習(xí)尤為重要。在較深的網(wǎng)絡(luò)層數(shù)且需要更高性能的檢測網(wǎng)絡(luò)中使用注意力機(jī)制,其中輸入圖像的分辨率為1 920×1 080??紤]到在指數(shù)范圍內(nèi)執(zhí)行自我注意力機(jī)制所需內(nèi)存和計算量,在主干網(wǎng)絡(luò)中將深層特征圖納入自我注意力機(jī)制模塊中。殘差網(wǎng)絡(luò)主干網(wǎng)中的堆棧使用3個塊,每個塊中有一個3×3的空間轉(zhuǎn)換,使用MHSA層進(jìn)行替換,構(gòu)成改進(jìn)Bottleneck CSP體系結(jié)構(gòu)的基礎(chǔ)。第1個塊使用3×3的卷積,步長為2;其他兩個塊步長為1。對第1個改進(jìn)CSP塊使用步長為2的2×2平均池化層,改進(jìn)后Tiny-YOLOv5l的bottleneck層結(jié)構(gòu)如圖2(b)所示。
圖2 Bottleneck改進(jìn)前后結(jié)構(gòu)對比圖
支持向量機(jī)(SVM)的原理是二分類,其基礎(chǔ)是定義在線性空間的間隔最大線性分類器,同時可以通過核函數(shù)解決非線性數(shù)據(jù)的分類問題,使用高斯核函數(shù)SVM進(jìn)行分類決策。
(5)
SVM優(yōu)勢:試驗數(shù)據(jù)集總規(guī)模為969張,規(guī)模較小,SVM分類器相較softmax分類器在處理小規(guī)模樣本方面具有優(yōu)勢;串型番茄特征相對于背景干擾特征較為明顯,不同于softmax函數(shù)的精細(xì)評分機(jī)制,使用二分類的SVM方法只要滿足邊界值則給出判斷,因此SVM分類函數(shù)更適用于產(chǎn)后串型番茄;softmax函數(shù)存在過擬合風(fēng)險,SVM函數(shù)可以解決softmax分類器對于非結(jié)構(gòu)環(huán)境下串型番茄分類識別能力不足的問題。因此,使用SVM代替MHSA結(jié)構(gòu)中的softmax分類層,即提取特征后利用SVM分類函數(shù)進(jìn)行分類。多頭注意力機(jī)制方法可以在不同的投影空間中建立不同的投影信息將多個注意力的方法進(jìn)行組合,因此多個注意力的組合效果優(yōu)于單個注意力機(jī)制。SVM-MHSA機(jī)制中,不同的隨機(jī)初始化映射矩陣可以將輸入向量映射到不同的子空間,可以使SVM-MHSA模型從串型番茄的色澤、大小、位置信息等不同角度理解輸入的數(shù)據(jù),通過收集多尺度信息可以使模型從多維度理解串型番茄的表型信息,以提高檢測模型的魯棒性。
改進(jìn)后的SVM-MHSA層如圖3所示,其步驟為:
步驟1:初始化算法需要用到的patch維度、高度、寬度;
步驟2:設(shè)置卷積核長度為1;
步驟3:對query、key、value值進(jìn)行2d卷積;
步驟4:對長和寬進(jìn)行空間相對位置編碼;
步驟5:將nn.SVM賦值給self.SVM;
步驟6:定義多頭注意力機(jī)制輸入項x;
步驟7:得到的x.size由batch_size高度、寬度、通道個數(shù)組成;
步驟8:將長寬拉直后的值、batch_size、通道數(shù)三者乘機(jī)賦值給q、k、v;
步驟9:計算content_content與content_new_position值;
圖3 SVM-MHSA層結(jié)構(gòu)圖
步驟10:content_content與content_new_position相加得到的值調(diào)用self.SVM,最終得到attention值;
步驟11:v與attention乘積得到的值賦值給out;
步驟12:輸出。
改進(jìn)后的Tiny-YOLOv5l特征提取圖如圖4所示,Stage2的CSP輸出的特征提取圖保留了串型番茄的大部分內(nèi)容信息,極大程度地突出了串型番茄的輪廓信息,利用前3層淺層特征提取層提取串型番茄的輪廓特征,Stage23的CSP輸出的特征提取圖突出了串型番茄的深層細(xì)節(jié)信息,但對輪廓信息表述較差。使用注意力機(jī)制可以較好地結(jié)合串型番茄的輪廓信息和細(xì)節(jié)信息,使用淺層的輪廓信息恢復(fù)最后的檢測結(jié)果圖。
圖4 特征提取圖
將Tiny-YOLOv5l中3×3卷積替換為深度可分離卷積。在保持輸入數(shù)據(jù)集大小穩(wěn)定的前提下,改進(jìn)前卷積計算量C1為:
C1=Dk×Dk×M×N×DF×DF,
(6)
式中:
DF——輸入與輸出特征圖的寬度與高度,像素;
M——輸入特征圖的通道數(shù);
N——輸出特征圖的通道數(shù);
Dk——卷積核的長和寬。
替換可分離卷積后的總計算量C2為:
C2=Dk×Dk×M×DF×DF+M×N×DF×DF。
(7)
改進(jìn)后卷積與改進(jìn)前卷積計算量之比C3為:
(8)
在串型番茄檢測過程中,對于一些尺寸較小的番茄檢測比較困難。由于遮擋、虛化等因素影響,對小番茄的外觀特征數(shù)據(jù)收集匱乏,因而出現(xiàn)漏檢、誤檢的情況。如圖5所示,空洞卷積可以使卷積囊括更大范圍的信息,從而有效利用信息量來提高模型的性能,進(jìn)而有效捕獲邊緣特征信息,因此引入空洞卷積來擴(kuò)大感受野。
圖5 空洞卷積示意圖
擴(kuò)張率為卷積核處理數(shù)據(jù)時各數(shù)據(jù)值之間的間距[15],空洞卷積核和感受野大小為:
fk'=fk+(fk-1)*(r-1),
(9)
(10)
式中:
fk——原始卷積核大??;
fk'——空洞卷積核大小;
r——卷積核的擴(kuò)張率;
Rm——經(jīng)空洞卷積后第m層感受野大??;
Si——第i層的步長;
*——卷積。
YOLOv5l使用的激活函數(shù)為Mish激活函數(shù)與Leaky_relu激活函數(shù),Mish激活函數(shù)應(yīng)用于Backbone結(jié)構(gòu)中,Leaky_relu結(jié)構(gòu)主要應(yīng)用于CSP結(jié)構(gòu)中,Backbone結(jié)構(gòu)中的Mish激活函數(shù)不作改變,使用Rrelu激活函數(shù)[16],Leaky_relu表達(dá)式為:
(11)
式中:
ai——(1,+∞)區(qū)間內(nèi)的固定參數(shù)。
使用Rrelu激活函數(shù)代替Leaky_relu激活函數(shù),其表達(dá)式為:
where
aji~U(l,u),l (12) 訓(xùn)練采用的CPU為(英特爾)Intel(R) Core(TM) i5-11400,內(nèi)存為32 G,操作系統(tǒng)為Windows 10,顯卡為RTX3060,擁有12 G獨顯。 (1) 配置模型訓(xùn)練所需文件結(jié)構(gòu)及路徑。 (2) 用Anaconda3配置虛擬環(huán)境,調(diào)用環(huán)境所需python版本以及pytorch等;根據(jù)不同數(shù)據(jù)集規(guī)模及難易程度調(diào)整模型閾值參數(shù),將改進(jìn)后的模型導(dǎo)入。 (3) 總訓(xùn)練迭代次數(shù)為300輪,為使梯度下降學(xué)習(xí)法有更好的效率,初始學(xué)習(xí)率為0.01。根據(jù)串型番茄數(shù)據(jù)集大小設(shè)置每步驟更新公式為: α=0.95epoch_num·α0, (13) 式中: α——實時學(xué)習(xí)率; α0——初始學(xué)習(xí)率; epoch_num——epoch次數(shù)。 為了評價Tiny-YOLOv5l的性能,主要使用精確度[17]、召回率[18]等評價指標(biāo)。召回率和精度分別按式(14)、式(15)計算。 (14) (15) 式中: R——召回率; P——精確度; TP——準(zhǔn)確檢測出的串型番茄目標(biāo)數(shù); FP——誤檢出的串型番茄目標(biāo)數(shù); FN——漏檢的串型番茄目標(biāo)數(shù)。 在同一數(shù)據(jù)集上分別訓(xùn)練YOLOv5l以及改進(jìn)的Tiny-YOLOv5l兩種算法,在正常拍攝條件下改進(jìn)前的算法檢測置信度為93%,改進(jìn)后的Tiny-YOLOv5l算法對目標(biāo)檢測的置信度為94%,檢測并無顯著提高。 由于拍攝角度不同導(dǎo)致取圖過程中存在較多遮擋問題(果實被果實遮擋、果實被葉遮擋等)。如圖6(a)所示,藍(lán)色框為YOLOv5l算法漏檢的串型番茄,其中未識別的遮擋串型番茄占未識別總數(shù)的77.8%;如圖6(b)所示,Tiny-YOLOv5l算法可以100%識別所有目標(biāo)區(qū)域中的串型番茄,且置信度方面較YOLOv5l提高了1%~3%。背景干擾下,如圖6(c)中黃色框所示,無關(guān)環(huán)境因子被誤檢為串型番茄;如圖6(d)所示,Tiny-YOLOv5l算法可以識別遮擋面積超過70%的串型番茄。選擇5種光照環(huán)境進(jìn)行對比檢測試驗。圖6(e)中綠色框為YOLOv5l算法漏檢的串型番茄,圖6(f)表明Tiny-YOLOv5l算法均能有效識別串型番茄個體。在圖片虛化情況下,圖6(g)表明YOLOv5l算法識別到的串型番茄數(shù)量為0;Tiny-YOLOv5l算法在加入Bottleneck替換層后[圖6(h)],加強(qiáng)了對模糊特征的學(xué)習(xí),可以檢測出全部串型番茄。 圖6 圖片虛化下算法改進(jìn)前后對比圖 4.2.1 檢測速度 由圖7可知,Tiny-YOLOv5l算法較YOLOv5l所需檢測時間少,即使在使用普通電腦配置(酷睿i5,16 GB內(nèi)存)訓(xùn)練參數(shù)規(guī)模是3.76×107的網(wǎng)絡(luò)模型,訓(xùn)練一步所需時間僅為8~10 s,總訓(xùn)練時長為12.77 h。在正常拍攝、遮擋情況、背景干擾、光照變化和圖像虛化情況下收斂速度分別縮減,說明在不利拍攝情況下,改進(jìn)后的算法表現(xiàn)出更好的計算速率。 圖7 改進(jìn)前后算法檢測速度比較 4.2.2 損失率 由圖8(a)可知,當(dāng)訓(xùn)練輪數(shù)<13時,YOLOv5l的損失率比Tiny-YOLOv5l的低;當(dāng)訓(xùn)練輪數(shù)增加至210時,YOLOv5l的損失率從11.13%收斂至1.91%,Tiny-YOLOv5l的損失率從11.98%收斂至1.93%,Tiny-YOLOv5l的降低幅度明顯高于YOLOv5l;當(dāng)訓(xùn)練輪數(shù)>250時,兩種算法的損失率降低幅度逐漸趨于穩(wěn)定,模型訓(xùn)練效果良好,未出現(xiàn)梯度消失或梯度爆炸現(xiàn)象,Tiny-YOLOv5l的最終損失率為1.41%,低于YOLOv5l的。由圖8(b)可知,訓(xùn)練開始時Tiny-YOLOv5l算法檢測框損失率為10.74%,低于YOLOv5l的,隨著迭代次數(shù)的增加,當(dāng)?shù)螖?shù)>226時,損失率趨于穩(wěn)定,最終Tiny-YOLOv5l算法的損失率為0.65%,優(yōu)于YOLOv5l算法的。 圖8 改進(jìn)前后檢測框損失率對比圖 由圖9(a)可知,當(dāng)訓(xùn)練輪數(shù)<15時,改進(jìn)前算法損失率從11.9%上升至17.83%后又回落至10.32%,改進(jìn)后算法處于不穩(wěn)定狀態(tài),損失率由8.93%上升至14.83%后又回落至7.27%;當(dāng)訓(xùn)練輪數(shù)>15時,兩種算法均趨于穩(wěn)定,且YOLOv5l算法的目標(biāo)損失率波動幅度大于Tiny-YOLOv5l。由圖9(b)可知,Tiny-YOLOv5l算法的目標(biāo)損失率趨于穩(wěn)定,最終穩(wěn)定在1.37%,優(yōu)于YOLOv5l算法的。 圖9 改進(jìn)前后目標(biāo)損失率對比圖 由圖10可知,當(dāng)訓(xùn)練輪數(shù)<30時,改進(jìn)前后算法的置信度損失情況相似,當(dāng)訓(xùn)練輪數(shù)>143時,無論是訓(xùn)練集還是驗證集,Tiny-YOLOv5l算法具有更低的置信度損失率,比YOLOv5l低0.14%。 圖10 改進(jìn)前后訓(xùn)練集和驗證集置信度損失率對比圖 4.2.3 精度 由圖11可知,改進(jìn)前的YOLOv5l算法的檢測精度穩(wěn)定于98.89%,高于改進(jìn)后的Tiny-YOLOv5l算法。 圖11 改進(jìn)前后精度對比圖 4.2.4 召回率 由圖12可知,初始時,兩種算法的召回率均<20%,因為串型番茄形狀大小不一,訓(xùn)練開始時漏檢情況較多。當(dāng)訓(xùn)練輪數(shù)<210時,兩種算法的召回率均在波動上升,而Tiny-YOLOv5l的上升趨勢較YOLOv5l更具優(yōu)勢;當(dāng)訓(xùn)練輪數(shù)>210時,二者召回率均趨近于1,且Tiny-YOLOv5l的召回率高于YOLOv5l。 圖12 改進(jìn)前后召回率對比圖 研究建立了一種串型番茄實時檢測與計數(shù)算法模型。在模型中加入注意力機(jī)制可以加強(qiáng)對串型番茄目標(biāo)識別的準(zhǔn)確率;采用SVM分類函數(shù)代替softmax分類函數(shù),可使之更適用于樣本數(shù)據(jù),并擁有更好的泛化能力;加入空洞卷積增大對樣本特征的感受野可以提高檢測準(zhǔn)確率;在模型中引入深度可分離卷積,可以減少參數(shù)量以增加實時性;使用隨機(jī)糾正線性單元激活函數(shù)可以增加網(wǎng)絡(luò)訓(xùn)練的收斂速度。在串型番茄檢測過程中,計算量仍是一項挑戰(zhàn),如何在保持精度的前提下優(yōu)化模型是待解決的問題之一;檢測的品種種類過于單一,如何提高泛化性能也是一項重要的工作;此外,后續(xù)將對串型番茄色澤、殘缺種類等其他參數(shù)進(jìn)行研究分類。3 模型訓(xùn)練與測試
3.1 模型運行平臺
3.2 參數(shù)設(shè)置及訓(xùn)練步驟
3.3 評價指標(biāo)
4 結(jié)果與分析
4.1 監(jiān)測識別結(jié)果
4.2 模型性能評估
5 結(jié)論