李 揚,腰彩紅,高冠群,王建春
(天津市農業科學院 信息研究所,天津 300192)
我國是世界草莓屬植物種類分布最多的國家,草莓種植面積超13萬hm2,年產量超200萬t,產值達300億元。在我國北方,溫室栽培環境下,草莓通常在每年9月定植,1月初成熟,生長期一直持續到次年5月。草莓按次序先后開花結果,造成果實的不定期成熟,即同一時期可能有多種狀態的果實同時存在,需要人工不定期判斷、采摘。如果錯過采摘最佳時機,容易導致草莓過度成熟,甚至腐爛,影響收益。因此,采摘在草莓生產過程中的人力消耗較大[1],在草莓生產環節占有重要地位。
目前草莓采摘主要靠人工完成,周期長、次數多、勞動強度大、成本高[2]。近年來,人工智能的發展為草莓采摘自動化提供了可行性,而草莓的自動識別,則是機器采摘的前提,通過算法準確識別成熟草莓已經成為了研究熱點,研究重點主要在模型的準確度和檢測效率兩方面。
檢測模型準確度方面,科研人員已經取得了較好的效果。趙玲等[3]研究了在HIS顏色空間模型下的草莓成熟度識別,準確率達到90%以上,為草莓成熟程度判斷提供了方法。劉曉剛等[4]針對白天、傍晚、夜晚3個時間點,采用基于YOLO v3的方法實現了復雜環境下成熟草莓的檢測,mAP(平均精度均值,Mean Average Precision)達到87.51%,取得了較好的識別效果。Chen等[5]使用無人機從頂部拍攝草莓圖像,使用深度神經網絡對草莓果實進行檢測和產量預估,檢測準確率達到了84.1%。Zhang等[6]采用Faster R-CNN檢測框架對草莓植株的低空遙感圖像進行檢測訓練,用來對草莓生長健壯程度進行評估。Lin等[7]提出了基于草莓花的數量進行產量預估的方法,使用Faster R-CNN對草莓花進行檢測,準確率達到了86.1%。在目標檢測方面,現有的成果主要基于成熟草莓進行檢測,偶有對花期、植株進行檢測的,主要面向采摘應用,缺少對不同生長期草莓的檢測。
檢測效率是目前科研人員關注的另一重點,只有高效的檢測模型,才能夠最終在實際生產中得以應用。馬瑛等[8]研發了基于ARM和FPGA智能控制模塊及雙目機器視覺技術的草莓采摘機器人成熟果實及避障控制系統,當果實輪廓存在1/2以上時,該系統可以很好地識別出成熟果實目標,相對誤差在2.5%以下,具有一定的參考價值。李長勇等[9]設計了基于STM32F103vet6芯片的機器人,使用雙目定位識別,成熟草莓識別率達到95%以上。謝志勇等[10]提出一種基于Hough變換的成熟草莓識別方法,當成熟草莓輪廓信息丟失小于1/2時,無論單個分離的成熟草莓,還是被遮掩、重疊或緊靠的成熟草莓,皆有很好地識別效果,識別平均相對偏差為4.8%,能滿足草莓采摘機器人對目標識別精度的要求。丘強等[11]設計出一款草莓采摘車,實現了采摘時對草莓成熟度識別、自動采摘及位置移動等功能。Zhang等[12]改進了YOLO v4-tiny模型實現了對成熟期草莓的檢測,檢測精度比YOLO v4-tiny低了0.62%但檢測速度提升了25.93%,并在Jetson Nano上驗證了檢測效率,達到了25.2FPS,可以滿足實時性需求。
綜上,現有的研究成果大都是以成熟草莓為識別對象,對不同生長階段的草莓進行檢測的研究較少。事實上,花期和未成熟的草莓數量是農戶決定如何開展生產管理和預估下一次采摘時點的關鍵,而針對不同生長階段草莓的識別,是可以伴隨著采摘機器人同步識別完成的。因此在識別成熟草莓的基礎上,進一步開展基于嵌入式環境的不同階段草莓生長期果實識別,對于草莓采摘、生產管理和產量預測都具有十分重要的意義。本文以溫室土壤栽培草莓為研究對象,構建了多階段草莓檢測模型,實現了對各個生長期的草莓檢測,為草莓生產管理機器人的研發奠定基礎。
天津市北辰區鼎牛農業園2號日光溫室,種植草莓品種為‘紅顏’。
本研究使用軌道式移動車(圖1)模擬機器人采集視角,采集距離固定為30 cm。數據采集于溫室中不同位置共計10畦草莓的生產視頻,每隔7 d采集1次,共采集到視頻80個。

圖1 軌道式移動車
使用Python對采集到的視頻進行分割,每一段視頻拆分為15張圖片,共拆分1 200張圖片。
使用LabelImg按照花期、幼果期、青果期、膨大期、轉色期、成熟期6個階段對圖像進行標注。其中,成熟期草莓為紅色著色面積超過70%的草莓。標注結果如圖2所示。按照8∶1∶1的比例將標注好的數據隨機分配為訓練集、驗證集和測試集,分別包括960、120、120張。

圖2 草莓圖像標注
目前目標檢測任務主要包括兩階段(Twostage)模型和單階段(One-stage)模型2類。經典的兩階段模型如Fast-RCNN、Faster-RCNN等,檢測精度高,但檢測速度慢,對硬件要求較高。單階段模型相比兩階段模型,精度略低,但檢測速度快,推理時對硬件要求相對較低,更適合嵌入式應用場景,現階段主要的模型包括YOLO、SSD等。針對采摘系統的目標檢測任務是典型的嵌入式應用,需要綜合考慮檢測精度與速度,因此單階段模型更適合此任務場景。YOLO系列算法是現階段應用最廣泛的目標檢測算法,其中YOLO v5是目前較新的YOLO版本之一,保持了YOLO系列的整體架構,包含輸入(Input)、骨干網絡(Backbone)、頸部(Neck)和檢測頭(Prediction)4個部分。根據網絡深度和寬度的不同,主要分為5種,包括:YOLO v5n、YOLO v5s、YOLO v5m、YOLO v5l、YOLO v5x。其中YOLO v5n和YOLO v5s模型較小,主要面向嵌入式環境使用,而YOLO v5m雖然模型略大,但隨著新的嵌入式設備的不斷開發、升級,也可以應用在嵌入式設備中,因此本次目標檢測任務主要使用YOLO v5n、YOLO v5s和YOLO v5m版本進行試驗效果對比。
YOLO v5模型架構如圖3所示,其中輸入為草莓圖像,通過馬賽克(Mosaic)數據增強后的組合圖像。馬賽克數據增強方法是將多張圖像通過縮放、剪裁、拼接等處理形成一張圖像,作為模型的輸入,可以有效提升模型的訓練速度和網絡的精度。同時YOLO v5使用了一種自適應錨框計算與自適應圖片縮放方法,簡化了原先使用YOLO v4時需要單獨使用Kmeans算法進行初始錨框計算的步驟。

圖3 YOLO v5模型架構
YOLO v5的骨干網絡和頸部主要通過CBL結構、CSP1結構、CSP2結構、SPPF結構、拼接操作(Concat)和上采樣操作(UpSample)構成。其中CBL結構是由卷積、歸一化和Leaky激活函數構成的組合。CSP1和CSP2結構均為CSPNet的改進版,二者結構圖如圖4所示。SPPF結構如圖5所示,由卷積、多個最大池化和拼接操作構成。YOLO v5模型通過調節CSP1和CSP2的深度和寬度倍數構建不同版本的模型。

圖4 CSP結構

圖5 SPPF結構
YOLO v5的檢測頭部分損失函數包括3個部分,邊框損失(Bounding box loss)、分類損失(Class loss)和目標損失(Object loss)。對于一個模型預測出的邊界框,它與樣本真實邊界框的交集和二者并集之比稱為交并比(Intersection over Union,IoU),如公式(1)所示。

式中,B為預測框;Bgt為真實框。最初的YOLO系列算法使用IoU計算邊框損失,在后續的YOLO版本中,陸 續 引 入 了GIoU(Generalized IoU)、DIoU(Distance IoU)和CIoU(Complete IoU),對于模型識別效果有較大的提升。YOLO v5的邊框損失默認為CIoU,較之前的IoU,考慮了重疊面積、中心點距離、長寬比3個方面對于邊框損失的影響。在CIoU基礎上,Zhang等[13]進一步考慮了寬高分別與其置信度的真實差異,將縱橫比拆開,提出了EIoU(Efficient IoU),并且加入Focal聚焦優質的錨框。Gevorgyan[14]提出了一種新的損失函數SIoU(SCYLLA-IoU),考慮了所需回歸之間的向量角度,并重新定義了懲罰指標。Heo[15]提出了Alpha-IoU,對小數據集和噪聲較大數據集有較好的效果。本文使用CIoU、EIoU、SIoU和Alpha-IoU和YOLO v5n、YOLO v5s和YOLO v5m構成了12種模型,并對比其檢測效果,相應計算公式如下。

式中,b、bgt分別為預測框和真實框的中心點;c為預測框和真實框之間的最小外接矩形的對角線距離;w、h、wgt、hgt分別為預測框和真實框的寬、高;cw、ch為以預測框和真實框中心點為對角線的矩形的寬和高;cx、cy是預測框或真實框的中心點坐標ρ為歐氏距離。
分類損失采用交叉熵損失函數(Binary cross entropy loss,BCELoss),BCELoss計算公式如下:

式中,N為一次訓練的樣本數;xn表示第n次輸入的預測值;yn表示第n次輸入的實際值;ω相關系數,取值為1/N。
目標損失采用BCElogitsLoss(Binary cross entropy),其公式如下:

精度P(Precision)、召回率R(Recall)和mAP是目標檢測常用的評價指標,需要使用混淆矩陣進行計算,混淆矩陣如表1所示。

表1 混淆矩陣
以成熟期果實為例,真正例(True Positive,TP)是指預測類別和位置IoU都超過閾值,預測正確的結果,如圖6-A所示。假正例(False Positive,FP)包括類別錯誤FP和定位錯誤FP,分別指預測類別小于閾值但預測框與真實框IoU大于閾值和預測類別大于閾值但預測框與真實框IoU小于閾值的情況,如圖6-B和6-C所示。假反例(False Negative,FN)則是指漏檢的情況,如圖6-D所示。而真反例(True Negative,TN)則是對于成熟期這一類別,其他類別的預測框,如圖6-E所示的青果期預測框,對于成熟期這一真實框來說是真反例。

圖6 檢測結果分類
通過以上定義可以計算出精度和召回率,如公式(13)和公式(14)所示。

某一類別的平均精度(Average Precision,AP)就是該類別的PR曲線下所包圍的面積,如公式(15)所示。

mAP就是每個類別下AP的均值,如公式(16)所示。

mAP@0.5是指IoU≥0.5時的mAP值,本研究主要使用mAP@0.5評價模型效果。
模型訓練平臺使用Intel○R Xeon○RE5-2620 v2(6核2.10 GHz)處理器,GPU為NVIDIA○R GeForce RTX 2080Ti顯卡,顯存為11GB;操作系統為CentOS 7.9;運行環境為Python3.8,、Pytorch1.9.1、Cuda10.2。
模型訓練完成后的推理過程在Jetson Nano和Jetson Xavier NX兩款在嵌入式領域應用廣泛的開發板上運行,驗證本系統在嵌入式環境下的應用效果。Jetson Nano開發板,GPU為128-core Maxwell,顯 存 為4GB 64位LPDDR4,CPU為ARM○RCortex○RA57@1.43GHz。Jetson Xavier NX開發板,GPU為384-core Volta@110MHz+48 Tensor Core,顯存為8G 128位LPDDR4,CPU為ARMv8.2(6-core)@1.4GHz。2個開發板系統為Ubantu 18.04 LTS,運行環境為Python3.6.15、Pytorch1.10.0、Cuda10。
模型共訓練500次,初始學習率0.01,動量0.937,當模型損失在100個epoch中沒有改進時停止訓練,輸入圖像尺寸為640,批量大小設置為16,權重衰減系數0.000 5。使用YOLO v5n、YOLO v5s、YOLO v5m 3種模型與4種IoU組合后的12種組合結果進行訓練,其邊框損失、分類損失和目標損失曲線如圖7、圖8、圖9所示。由圖7可以看出,邊框損失和分類損失在第50次迭代之后基本趨于平緩,目標損失則在第100次迭代之后區域平緩。

圖7 邊框損失曲線

圖8 分類損失曲線

圖9 目標損失曲線
由表2可以看出,對于YOLO v5n、YOLO v5s、YOLO v5m 3個模型均是使用SIoU可以獲得更好的效果,精確度、召回率、mAP@0.5和mAP@0.5∶0.95均表現最優,而YOLO v5s比YOLO v5n的精度高了3%,模型大了10 MB,YOLO v5m比YOLO v5s的精度高了5.9%,但模型尺寸是YOLO v5s的3倍。

表2 模型測試結果
對比3個模型的精度、召回率、mAP@0.5和mAP@0.5∶0.95的曲線如圖10所示,相應指標已趨于穩定,進一步證明使用SIoU的YOLO v5模型在草莓多階段的目標檢測任務中更有效。

圖10 精度(A)、召回率(B)、mAP@0.5(C)和mAP@0.5∶0.95(D)
實際檢測效果圖如圖11所示。對比可以看出,YOLO v5n有3處誤檢(圖9(b)中A-C);YOLO v5s有1處漏檢和1處誤檢(圖9(c)中D和E),YOLO v5m檢測效果較好。

圖11 檢測效果
展開分析3個模型各個類別的檢測結果如表3所示。由表3可以看出,花期和成熟期的識別準確率更高一些,這與這2個階段形狀或顏色特征比較明顯有關,而幼果期、青果期、膨大期、轉色期的草莓由于其形態近似度高,所以檢測準確率相對低一些。

表3 分階段識別效果
將模型在嵌入式環境下應用,測試對比運行效率,結果如表4所示。由表4可以看出,Jetson Nano開發板上如果使用YOLO v5m模型單張圖片平均處理時長達到了397.5 ms,如果開發板還要再疊加其他處理任務的情況下,難以滿足實時性要求,而YOLO v5s和YOLO v5n平均處理時長分別為196.7、168 ms,相差30 ms左右,差別并不大,但在2.2節試驗中YOLO v5s精度比YOLO v5n高了3%。如果使用Jetson Nano開發板作為機器人控制主板的情況下,建議選擇YOLO v5s+SIoU模型。而Jetson Xavier NX開發板上YOLO v5m單張圖片平均處理時長為120.3 ms,比YOLO v5s和YOLO v5n長了不到1倍,精度高了將近6%,而Jetson Xavier NX開發板本身配置更高,尚有處理余量。如果使用Jetson Xavier NX開發板則建議使用YOLO v5m+SIoU模型。

表4 模型推理效率對比
本研究主要關注成熟期草莓的位置和各階段草莓的個數,面向為采摘機器人提供識別模型、產量預估和測算下一次采摘的時間等需求,是未來規模化智能化生產所必需的研究基礎。本研究首先構建了草莓多階段數據集,使用了YOLO v5n、YOLO v5s和YOLO v5m 3種不同復雜度的網絡模型,結合CIoU、EIoU、SIoU和AlphaIoU 4種損失函數,共計12個模型進行對比試驗,最終確認使用SIOU的算法在草莓生長期多階段檢測中更有效。在Jetson Xavier NX和Jetson Nano兩款嵌入式開發板上進行的推理效率測試,證明算法可以滿足實時性需求,明確了在Jetson Xavier NX上更適合使用YOLO v5m+SIoU組合的算法,在Jetson Nano上更適合使用YOLO v5s+SIoU的組合算法,為草莓智能化生產提供技術支持。