張俊寧 畢澤洋 閆 英 王鵬程 侯 沖 呂樹盛
(1.北京信息科技大學(xué)機(jī)電工程學(xué)院, 北京 100092; 2.中國農(nóng)業(yè)機(jī)械化科學(xué)研究院集團(tuán)有限公司, 北京 100083)
番茄是最受歡迎的蔬果之一,而我國更是全球最大的生產(chǎn)國和出口國[1]。番茄機(jī)械化采摘可降低人工成本和強(qiáng)度,提高采摘效率[2]。在農(nóng)業(yè)采摘機(jī)器人技術(shù)領(lǐng)域,溫室番茄果實識別達(dá)到一定的工作速度和精度時,機(jī)器人采摘效率才能優(yōu)于手動采摘,因此提高采摘目標(biāo)的檢測精度和速度至關(guān)重要。
以往基于傳統(tǒng)圖像處理方法的番茄果實識別研究,普遍采用顏色、紋理和邊緣等特征進(jìn)行識別。王麗麗[3]提出基于HIS顏色特征的目標(biāo)識別方法,對于相互分離的田間成熟番茄進(jìn)行識別。梁喜鳳等[4]利用雙目立體視覺灰度化番茄彩色圖像,通過腐蝕、膨脹的方法對直方圖進(jìn)行處理,然后運用曲線擬合法分割圖像,提取出成熟番茄目標(biāo)。馮青春等[5]在2R-G-B色差模型下提取紅色成熟番茄果實顏色特征,利用動態(tài)閾值分割的方法識別紅色成熟番茄果實,但識別耗時較長,未考慮葉片遮擋等復(fù)雜環(huán)境下番茄果實的識別。馬翠花等[6]提出了基于顯著性檢測與圓形隨機(jī)Hough變換的目標(biāo)識別方法,對于未成熟番茄果實的正確識別率為77.6%。以上研究一定程度上實現(xiàn)了番茄的識別,但識別速度較慢,識別一幅圖像至少需5 s,達(dá)不到實時需求,傳統(tǒng)機(jī)器視覺算法在復(fù)雜場景下魯棒性差,很難滿足實際工作需要。
近年來基于深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)成為研究熱點,也應(yīng)用到溫室番茄的識別中[7-9]。目前,目標(biāo)檢測大致分為兩大主流算法。第1類為兩階段算法(Two-stage):先計算候選區(qū)域(Region proposal),然后進(jìn)行CNN目標(biāo)分類,如R-CNN[10]、Fast R-CNN[11]、Faster R-CNN[12]和Mask R-CNN[13]等,此類算法準(zhǔn)確率較高,然而神經(jīng)網(wǎng)絡(luò)模型較大,計算速度慢,無法滿足實時檢測的場景需求[14-15],無法滿足實際場景的實時性;第2類為一階段算法(One-stage):在檢測過程中可以直接同時輸出定位和分類結(jié)果,如YOLO[16](You only look once)和SSD[17]等,此類算法模型小,計算速度快,對于小目標(biāo)識別有較好的效果,更容易部署到智能手機(jī)和嵌入式平臺等邊緣計算設(shè)備,但是此類模型識別準(zhǔn)確率低于第1類。受溫室復(fù)雜的環(huán)境和溫室番茄個體表征因素的影響,溫室番茄目標(biāo)檢測任務(wù)需考慮檢測精度和速度,而一步走算法可以在檢測的過程中同時輸出類別的目標(biāo)框和檢測精度,能更好地區(qū)分目標(biāo)對象和背景,因此更加適應(yīng)該任務(wù)場景。YOLO v3[18]能以3倍的推理速度取得與SSD相近的檢測結(jié)果,且不需要人工設(shè)置各種參數(shù)閾值,魯棒性高。而YOLO v5作為YOLO系列新的網(wǎng)絡(luò)模型,相對于YOLO v3和YOLO v4[19]在檢測速度和檢測精度上都有相對的提升,但為實現(xiàn)在溫室環(huán)境中番茄目標(biāo)獨特性檢測,需對YOLO v5的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行相應(yīng)的改進(jìn)。
本文提出一種改進(jìn)的YOLO v5目標(biāo)檢測算法,通過引入卷積注意力模塊(Convolutional block attention module, CBAM)[20],提取番茄目標(biāo)檢測的輪廓特征。通過改進(jìn)損失函數(shù),使得預(yù)測框位置更加精準(zhǔn),提高目標(biāo)檢測精度。根據(jù)溫室番茄場景的復(fù)雜性,拍攝不同天氣、不同光照角度和不同拍攝角度的番茄圖像,確保數(shù)據(jù)集的豐富性和多樣性;通過對數(shù)據(jù)樣本進(jìn)行預(yù)處理和圖像增強(qiáng),提高數(shù)據(jù)集質(zhì)量的同時更加適用于溫室番茄的果實目標(biāo)檢測。部署改進(jìn)的YOLO v5網(wǎng)絡(luò)模型到手機(jī)端,以期為基于移動邊緣計算的設(shè)施環(huán)境機(jī)器人作業(yè)提供技術(shù)支撐。
溫室番茄果實圖像采集于北京市通州區(qū)農(nóng)業(yè)機(jī)械研究所京鵬智慧溫室,番茄種植方式為吊蔓式栽培。為增加樣本多樣性,在農(nóng)藝專家指導(dǎo)下,分別于2021年12月23日中午(陰天)和2022年1月9日下午(晴天)采集不同成熟度(綠熟期和堅熟期)、不同拍攝角度(俯拍、仰拍和平拍)和不同光照角度(側(cè)光、逆光和順光)的番茄圖像,如圖1所示。采集可見光圖像分辨率為4 928像素×3 264像素,顏色表示為sRGB,圖像保存格式為jpg。采用Nikon D7000型相機(jī)和手機(jī)進(jìn)行拍攝,共采集圖像1 000幅,通過圖像篩選選擇其中752幅圖像作為訓(xùn)練樣本。通過將番茄的最小外接矩形框作為真實框(Ground truth),提高真實框內(nèi)數(shù)據(jù)參數(shù)準(zhǔn)確率。
圖1 復(fù)雜情況下溫室番茄圖像
在復(fù)雜情況下的溫室番茄圖像中,不同天氣和不同角度下光照情況也不同,進(jìn)而導(dǎo)致采集到的番茄果實圖像顏色差異很大。另外,溫室番茄果實生長的姿態(tài)各異、重疊遮擋嚴(yán)重等情況導(dǎo)致果實的形狀特征難以提取。為了獲取準(zhǔn)確的數(shù)據(jù)參數(shù),將篩選分類后的番茄圖像通過標(biāo)注軟件LabelImg對其數(shù)據(jù)集進(jìn)行人工標(biāo)注。直方圖均衡化是一種增強(qiáng)圖像對比度的方法,本文采用自適應(yīng)直方圖均衡化和隨機(jī)調(diào)整圖像飽和度(-5%~5%)的方法來減小光照強(qiáng)度對圖像質(zhì)量的影響,同時也會增加番茄與番茄、番茄與背景的對比度,提高數(shù)據(jù)集質(zhì)量;通過縮放、水平/垂直翻轉(zhuǎn)或旋轉(zhuǎn)±90°等方法,解決番茄果實生長姿態(tài)不同的問題,改善樣本集數(shù)據(jù)不均衡。此外,本文還通過給采集到的圖像添加噪聲,降低拍攝過程中的噪聲影響,避免深度學(xué)習(xí)模型在訓(xùn)練過程中出現(xiàn)過擬合現(xiàn)象,通過將圖像尺寸按一定比例縮放,降低檢測過程中距離的影響。通過以上方法,最終擴(kuò)增樣本集圖像至4 101幅,其中70%用于訓(xùn)練集、10%用于驗證集、20%用于測試集。
YOLO v5的網(wǎng)絡(luò)結(jié)構(gòu)主要由Input、Backbone、Neck和Prediction組成。Input為溫室番茄圖像的輸入環(huán)節(jié),通過Mosaic數(shù)據(jù)增強(qiáng)、自適應(yīng)錨框計算與自適應(yīng)圖像縮放等方法,對輸入的溫室番茄圖像進(jìn)行預(yù)處理,將原始溫室番茄圖像統(tǒng)一縮放到一個標(biāo)準(zhǔn)尺寸。Backbone結(jié)構(gòu)由Focus模塊、CBL模塊、CSP模塊和SPP模塊組成,主要實現(xiàn)溫室番茄圖像的特征提取。CSP模塊可以使網(wǎng)絡(luò)深度加深,特征提取能力大幅增強(qiáng),Focus模塊主要為圖像切片操作,能夠進(jìn)一步提取溫室番茄果實目標(biāo)特征。Neck結(jié)構(gòu)主要由FPN+PAN模塊構(gòu)成,其功能為增強(qiáng)網(wǎng)絡(luò)特征學(xué)習(xí)能力,提升網(wǎng)絡(luò)對語義信息和定位信息的學(xué)習(xí)性能,實現(xiàn)溫室番茄的特征融合。在Prediction結(jié)構(gòu)中,通過3個檢測頭分別對原圖像進(jìn)行8倍、16倍和32倍下采樣,生成3個不同大小的特征向量,實現(xiàn)溫室番茄果實目標(biāo)預(yù)測。
由于番茄圖像的枝葉背景和綠色果實的相似程度極高,從而使得YOLO v5的網(wǎng)絡(luò)模型中骨干網(wǎng)絡(luò)(Backbone)的隱含層易被網(wǎng)絡(luò)忽視小目標(biāo)的特征信息,而CBAM注意力機(jī)制模塊對這部分特征信息進(jìn)行注意力重構(gòu),給予綠色番茄果實目標(biāo)信息更多的注意力。CBAM是一種結(jié)合空間和通道的卷積注意力機(jī)制模塊,將給定的空間坐標(biāo)圖作為輸入,CBAM模塊會沿著兩個獨立的維度(空間和通道)依次推斷注意力圖,然后將注意力圖和輸入特征圖相乘進(jìn)行自適應(yīng)特征優(yōu)化,并且可很好地和YOLO v5網(wǎng)絡(luò)算法進(jìn)行融合,使提取到的高層特征更加全面更加豐富,更加適合于溫室番茄特定場景。CBAM結(jié)構(gòu)圖如圖2所示。
圖2 CBAM模塊結(jié)構(gòu)圖
通過引入通道注意力機(jī)制模塊,可以有效檢測目標(biāo)輪廓特征,獲得更多目標(biāo)檢測的內(nèi)容,其計算方法為
(1)
式中MC(F)——通道注意力輸出權(quán)值
σ——激活函數(shù)sigmoid
W0——第1個全連接層的權(quán)重矩陣
W1——第2個全連接層的權(quán)重矩陣
通過引入空間注意力機(jī)制模塊,可以有效定位檢測目標(biāo)的位置,提高目標(biāo)檢測的檢測率,其計算方法為
(2)
式中MS(F)——空間注意力輸出權(quán)值
f7×7——尺寸為7×7卷積運算濾波器
總之,輸入特征圖F首先與通道注意力模塊逐元素相乘,得到的特征結(jié)果再和空間注意力機(jī)制模塊點乘,經(jīng)過CBAM處理之后得到最終的特征圖F″。其計算方法為
F′=MC(F)×F
(3)
F″=MS(F)×F′
(4)
式中F——輸入特征圖
F′——經(jīng)過通道注意力加權(quán)得到的特征圖
F″——經(jīng)過空間注意力加權(quán)得到的特征圖
YOLO v5的原始模型中采用GIoU Loss[21],其使用Bounding box(目標(biāo)位置)的損失函數(shù),使用二進(jìn)制交叉熵和Logits損失函數(shù)計算類概率和目標(biāo)得分的損失。但是,GIoU Loss存在的問題是,當(dāng)預(yù)測框在目標(biāo)框的內(nèi)部時,如圖3所示,GIOU的值相同,其預(yù)測框位置不同于目標(biāo)框,損失函數(shù)收斂慢,結(jié)合溫室番茄復(fù)雜的環(huán)境,無法區(qū)分相對位置關(guān)系。因此這種方法無法精確地確定效果最佳的預(yù)測框。
圖3 預(yù)測框位于目標(biāo)框內(nèi)部
為了解決上述問題,本文引入CIoU Loss[22]作為預(yù)測框偏差的偏差指標(biāo),其計算公式為
(5)
LCIoU=1-CIoU
(6)
(7)
(8)
式中b、bgt——預(yù)測框和目標(biāo)框中心點
ρ——b和bgt歐氏距離
c——同時覆蓋預(yù)測框和目標(biāo)框的最小矩形對角線距離
α——權(quán)重
υ——預(yù)測框和目標(biāo)框?qū)蔷€傾斜角的方差
LCIoU——CIoU損失值
IoU——預(yù)測框與目標(biāo)框的交并比
ωgt、hgt——預(yù)測框?qū)挾群透叨?/p>
ω、h——目標(biāo)框?qū)挾群透叨?/p>
YOLO v5網(wǎng)絡(luò)包括YOLO v5s、YOLO v5m、YOLO v5l、YOLO v5x和YOLO v5p共5個版本,不同版本之間的區(qū)別在于模型深度,隨著模型深度的增加,模型進(jìn)行特征提取的操作次數(shù)也逐步增加,模型參數(shù)也隨之增多,從而使得計算量變多,精度會相應(yīng)地提升,但是提取圖像信息的時間增加,會導(dǎo)致檢測時間增加。本文研究對象為綠色和紅色的番茄,識別目標(biāo)僅為兩種,檢測目標(biāo)為番茄的坐標(biāo)信息而不是個別類的信息,并且其個體在圖像中占用的像素比適中,因此本研究采用目標(biāo)檢測網(wǎng)絡(luò)模型深度較淺的YOLO v5s網(wǎng)絡(luò)模型,該模型小、檢測速度快,且容易部署在嵌入式設(shè)備中。
YOLO v5模型的主干網(wǎng)絡(luò)(Backbone)包括Darknet-53主干網(wǎng)絡(luò)、路徑聚合網(wǎng)絡(luò)[23](Path aggregation network,PANet),可以實現(xiàn)對溫室番茄圖像特征的提取,在CSP1_X結(jié)構(gòu)和CSP2_1結(jié)構(gòu)后添加CBAM注意力機(jī)制模塊(圖中淺綠色虛線框),使提取到的目標(biāo)特征更加全面更加豐富,改進(jìn)后的YOLO v5模型(CB-YOLO)如圖4所示。
圖4 改進(jìn)后YOLO v5主要結(jié)構(gòu)
本試驗軟件環(huán)境為基于Windows 10、Python 3.7.2 、 PyTorch 1.10.1和Cuda 11.3搭建的深度學(xué)習(xí)框架,試驗硬件環(huán)境(CPU)為 Intel I9-12900KF,顯卡為NIVDIA GeForce RTX 3090 24G。最大學(xué)習(xí)率選取0.01,采用余弦退火動態(tài)調(diào)整學(xué)習(xí)率可以較快達(dá)到局部收斂效果,批量大小為16時,訓(xùn)練速度較快。相關(guān)模型參數(shù)如表1所示。
表1 試驗相關(guān)模型參數(shù)
為了驗證模型有效性,從定性和定量兩方面進(jìn)行評估。對于定性評價,通過對比 CB-YOLO模型和其他模型的檢測圖像差異來評估模型性能,即比較目標(biāo)框的定位精確度,以及是否存在漏檢、誤檢情況。定量評價方面,選取指標(biāo):準(zhǔn)確率P(Precision)、召回率R(Recall)、紅色和綠色番茄果實的檢測精度APR和APG以及平均精度均值MAP(Mean average precision)。
不同尺寸圖像輸入對紅色和綠色果實的訓(xùn)練結(jié)果如表2、3所示。由表2、3可得,輸入圖像尺寸越大,所需的GPU參數(shù)量就越大,使得推理訓(xùn)練所需的時間越長。在輸入圖像尺寸為800像素×800像素時,紅色果實準(zhǔn)確率最高,為97.85%,平均精度均值最高,為99.34%。在輸入圖像尺寸為640像素×640像素時,綠色果實準(zhǔn)確率最高,為98.88%,平均精度均值最高,為99.52%。但在召回率方面,在圖像輸入尺寸為224像素×224像素和416像素×416像素情況下,紅色果實和綠色果實的召回率相對其他兩種相差很大,原因為該圖像尺寸輸入到網(wǎng)絡(luò)模型的深度太淺,不利于目標(biāo)特征的提取,導(dǎo)致目標(biāo)特征的召回率低,因此需要更深的網(wǎng)絡(luò)進(jìn)行訓(xùn)練識別。紅色果實和綠色果實的平均精度均值幾乎一致。綜合上述分析,在輸入圖像尺寸為640像素×640像素和800像素×800像素時,識別效果較好,但是圖像輸入尺寸為800像素×800像素情況下占用GPU參數(shù)量大,因此,在輸入圖像尺寸為640像素×640像素時效率更高,更加適合。
表2 輸入不同尺寸圖像的紅色果實訓(xùn)練結(jié)果
表3 輸入不同尺寸圖像的綠色果實訓(xùn)練結(jié)果
CB-YOLO算法檢測結(jié)果如圖5所示,前20輪迭代周期中網(wǎng)絡(luò)快速擬合,損失值明顯減小,后180迭代周期損失值基本平穩(wěn),表明模型訓(xùn)練效果不再隨著迭代次數(shù)的增加而上升,表明該CB-YOLO網(wǎng)絡(luò)模型損失函數(shù)收斂。
圖5 損失值曲線
為了驗證改進(jìn)后YOLO v5模型的合理性,開展消融試驗,通過在YOLO v5原模型的基礎(chǔ)上增加CBAM注意力機(jī)制和CIOU損失函數(shù),來驗證每個改進(jìn)點是否有效,消融試驗結(jié)果如表4所示,其中“√”表示采用此項,“-”表示未采用此項。
表4 YOLO v5消融試驗結(jié)果
從表4可以看出,單獨引入CBAM注意力機(jī)制,準(zhǔn)確率提升0.95個百分點,召回率提升3.09個百分點,平均精度均值提升0.18個百分點,但是單獨引入CIOU損失函數(shù)時,準(zhǔn)確率、召回率和平均精度均值提升較小,分析認(rèn)為CBAM注意力機(jī)制提高了骨干網(wǎng)絡(luò)中的隱含層中被網(wǎng)絡(luò)忽視特征信息的提取能力,使得效果提升明顯,而CIOU損失函數(shù)使得預(yù)測框更加快速地收斂,并且得到更高的回歸定位精度,因此效果提升幅度低。
為了更直觀體現(xiàn)CB-YOLO模型的性能,本試驗隨機(jī)抽取5幅圖像,將本文算法與YOLO v4-tiny、YOLO v5和Faster R-CNN 3種算法進(jìn)行對比,結(jié)果如圖6所示,在圖像1中,在檢測果實遮擋果實情況下,Faster R-CNN存在漏檢情況,YOLO v5、YOLO v4-tiny和Faster R-CNN均可以有效識別小的目標(biāo),在圖像2中,Faster R-CNN在果實遮擋果實情況下存在漏檢情況,在圖像3中,YOLO v4-tiny在枝干遮擋果實情況下存在漏檢的情況,Faster R-CNN可以有效識別小的目標(biāo),可以明顯看出YOLO v5的檢測效果優(yōu)于YOLO v4-tiny和Faster R-CNN;在圖像2中,CB-YOLO 成功檢測出圖像1中小目標(biāo)綠色番茄,并且在圖像3和圖像5等強(qiáng)曝光情況下,不但檢測精度較高,也可以在圖像4枝干遮擋果實情況下快速識別番茄,提升了小目標(biāo)和被遮擋情況的檢測率,魯棒性高。
圖6 不同算法結(jié)果對比
從表5可以看出,CB-YOLO模型對于紅色番茄檢測精度、綠色番茄檢測精度和平均精度均值最高,分別為99.88%、99.18%和99.53%,YOLO v5的檢測速率最高,達(dá)到131.58 f/s,模型占用內(nèi)存量最小,僅為14.8 MB。相對于YOLO v5模型,CB-YOLO模型雖然檢測速度相對下降,但是仍然高于Faster R-CNN和YOLO v4-tiny,并且相對于YOLO v5原模型,紅色番茄檢測精度提高0.55個百分點,綠色番茄檢測精度提高0.3個百分點,平均精度均值提升0.2個百分點。
表5 4種模型各項檢測指標(biāo)
為了探索研究智能手機(jī)作為邊緣計算終端設(shè)備在農(nóng)業(yè)機(jī)器人目標(biāo)識別作業(yè)中的可行性和實用性,本文將CB-YOLO模型部署到不同型號的安卓手機(jī)端,驗證其部署模型在自然情況下性能檢測的穩(wěn)定性。CB-YOLO模型部署過程如下:首先,通過ONNX(Open Neural Network Exchange)模型從訓(xùn)練好的CB-YOLO模型中best.pt權(quán)重文件生成best.onnx、best.mlmodel和best.torchscript.pt文件,然后對ONNX進(jìn)行精簡處理,其次通過騰訊NCNN框架將ONNX格式文件轉(zhuǎn)換為param和bin格式文件,由于NCNN不支持切片(Slice)操作,因此將通過Netron可視化編譯工具將param文件中的切片操作去除,最后,通過Android Studio工具將重新編譯的文件寫入Android系統(tǒng),生成YOLO v5s.apk文件,通過手機(jī)下載安裝YOLO v5s.apk安卓安裝包,完成CB-YOLO安卓端的部署。
完成CB-YOLO模型安卓端部署后,對采集到的自然情況下的溫室番茄圖像用不同型號、不同運行內(nèi)存和不同系統(tǒng)進(jìn)行驗證,效果如圖7所示。從圖7可以看出,CB-YOLO模型部署到手機(jī)檢測精度高,魯棒性強(qiáng)。
圖7 不同型號手機(jī)對溫室番茄果實的檢測效果
為了更充分驗證CB-YOLO模型部署到安卓手機(jī)端的番茄果實檢測精度,通過隨機(jī)選取20幅自然環(huán)境下的溫室番茄圖像,對不同型號、不同運行內(nèi)存和不同系統(tǒng)進(jìn)行統(tǒng)計對比,結(jié)果如表6所示。從表6可以看出,不同類型手機(jī)對紅色番茄精度、綠色番茄的精度和總精度相差在1%以內(nèi),證明CB-YOLO模型部署穩(wěn)定性。
表6 不同型號手機(jī)測試指標(biāo)
(1)提出了一種改進(jìn)的YOLO v5s目標(biāo)檢測算法(CB-YOLO)。在骨干網(wǎng)絡(luò)中加入卷積注意力模塊(CBAM),對目標(biāo)特征給予更多的關(guān)注;通過將CIoU Loss替換GIoU Loss作為算法的損失函數(shù),在提高邊界框回歸速率的同時提高定位精度。CB-YOLO網(wǎng)絡(luò)模型對溫室環(huán)境下番茄紅色果實檢測精度、綠色果實檢測精度和平均識別精度分別為99.88%、99.18%和99.53%,對比原模型檢測精度和平均精度均值均有提升。
(2)通過對比試驗探究了在輸入不同圖像尺寸下對模型的影響,對圖像輸入尺寸為224像素×224像素、416像素×416像素、640像素×640像素、800像素×800像素、960像素×960像素進(jìn)行試驗,得出圖像輸入尺寸為640像素×640像素效果更優(yōu),魯棒性更強(qiáng)。
(3)將CB-YOLO模型部署到安卓手機(jī)端,通過不同手機(jī)型號測試,驗證了部署模型在邊緣計算終端設(shè)備上目標(biāo)識別的穩(wěn)定性,為基于移動邊緣計算的設(shè)施環(huán)境機(jī)器人作業(yè)提供技術(shù)支撐。