岳有軍, 孫碧玉, 王紅君, 趙 輝,2
(1.天津理工大學電氣電子工程學院, 天津市復雜控制理論與應用重點實驗室, 天津 300384;2.天津農學院工程技術學院, 天津 300392)
近年來,中國溫室番茄種植面積日益增加,而溫室內番茄采摘工作主要依靠人工進行,工作效率低,勞動強度大,農業勞動力短缺問題日益嚴重。研制番茄采摘機器人是解決這個問題的有效手段。Rong[1]采用共熵梯度的簡化脈沖耦合神經網絡,在夜間環境下對番茄果實進行分割,其最佳分割率達到了91.6%;劉芳等[2]使用改進的YOLO網絡對復雜環境下的番茄果實進行了檢測識別,其準確率為96.36%;Liu等[3]在YOLOv3的基礎上提出了一個密集的體系結構,可以更加精準地匹配番茄,其正確率達到了94.58%。
隨著人工智能的不斷發展,深度學習逐漸地應用到各個領域[4-5],并取得了很大的成就。其中,深度學習在農業方面也獲得了很好的成果,被廣泛地應用到農業的果實采摘、果實質量檢測、疾病判別等方面[6-9]。深度學習讓現代農業變得更加自動化、智能化,彌補了傳統農業的不足[10]。
在采摘果實時,采摘機器人通過目標檢測對果實進行識別定位。在傳統的目標檢測方法中,多采用K-means聚類算法、支持向量機法、K最鄰近法等方法。陳禮鵬等[11]采用RGB(red,green,blue)分量圖對簇狀生長的獼猴桃果實和果萼進行閾值分割,取得了較好的識別效果。伴隨著深度學習不斷地蓬勃發展,卷積神經網絡開始應用于目標檢測。卷積神經網絡主要由以SSD網絡,YOLO網絡為代表的one-stage網絡和以Faster-RCNN、Mask-RCNN為代表的two-stage網絡構成。one-stage網絡直接由主干網絡對目標的種類和位置進行檢測。而two-stage網絡首先由前端網絡進行特征提取,再由RPN(region proposal network)網絡生成候選區域,然后再進行進一步的分類與回歸處理,最后完成目標檢測。趙德安等[12]提出了基于YOLOv3網絡的復雜環境下蘋果果實的識別定位方法,作者在不同的果實數目、環境和時間段對果實進行了識別,其準確率達到了97%。
現采用改進的Cascade RCNN網絡在溫室環境下對番茄果實進行目標檢測。同時,對番茄的成熟度做了分類。為驗證網絡的有效性,分別采用改進網絡和Faster RCNN網絡、YOLOv3網絡對不同數量的番茄果實進行了識別檢測。
Cascade RCNN網絡是由幾個檢測網絡級聯得到,這幾個檢測網絡是通過基于不同交并比IOU(intersection over union)閾值確定的正負樣本訓練得到。該網絡通過逐步提高網絡的IOU閾值來提高網絡精度,解決了在卷積神經網絡中單純地提高IOU閾值帶來的過擬合和誤匹配問題[13]。
Cascade RCNN的網絡結構如圖1所示,Ci表示分類,Bi表示回歸。Cascade RCNN網絡在Faster RCNN網絡的基礎上做了改進,在經過RPN網絡生成候選區域后構建了3個階段的檢測網絡進行檢測框回歸和分類。回歸公式為
f(x,b)=fT°fT-1°…°f1(x,b)
(1)
式(1)中:fi為回歸器;T為級聯的個數;x為輸入的圖片;b為圖片所對應的檢測框。Cascade RCNN的級聯個數為3,3個檢測網絡的IOU閾值分別為0.5、0.6、0.7。在前一階段檢測完成后,它的檢測框的回歸結果會作為下一個階段的輸入,再進行進一步的檢測。每個階段提升一點IOU閾值能夠保證每個階段的正負樣本保持平衡,減少假正樣本出現的次數以獲得更精確的檢測效果。Cascade RCNN在對檢測框進行分類檢測時,該網絡會取3個階段的分類結果的平均值作為最后的分類結果。
Cascade RCNN被提出后,相繼被用于多個領域,都獲得了很好的檢測效果。其中,徐昕軍等[14]使用Cascade RCNN網絡對鐵路路基翻漿冒泥病害進行了識別,得到了較好的識別精度。
在進行目標檢測時,網絡會產生1個檢測框集合B,集合B中各個框會有相對應的分數,為了選取效果最佳的檢測框,非極大值抑制(non-maximum suppression,NMS)算法會選擇分數最高的檢測框M,將該檢測框放入最終檢測結果的集合D中,并且將與其重疊度過大、分數較低的檢測框分數置0后刪除。但是,在一些場景中,會有2個物體重疊出現的情況,如本文中的番茄果實。番茄果實大多為簇狀生長,在生長到綠熟時期,果實會出現不同程度的重疊情況。對番茄果實進行檢測時,傳統的非極大值抑制算法會因為檢測框分數低,將2個重疊度較大的檢測框刪掉1個,導致對番茄目標的檢測失誤。所以,在機器人對果實進行采摘的過程中,采摘機器人對相互重疊的番茄果實進行識別時容易出現漏檢或果實定位不準確的問題。
為了改善這種情況,采用Soft-NMS[15](soft non-maximum suppression)算法對網絡進行了改進。傳統的非極大值抑制算法會直接將與分數最大的檢測框重疊的檢測框分數強制歸0,而Soft-NMS算法會基于重疊部分的大小,為相鄰檢測框設置1個衰減函數,與其重疊度越大,分數衰減得越厲害。也就是說,當1個檢測框與分數最大的檢測框大部分重疊時,該檢測框會有1個較低的分數而不是被直接置為0[14]。Soft-NMS算法表示公式為

(2)
式(2)中:si表示當前檢測框的得分;bi表示當前檢測框;M為得分最高的檢測框;iou(M,bi)表示當前檢測框和得分最高的檢測框的重疊度;σ表示高斯函數的方差;D表示最終的檢測框集合。在數據集PASCAL VOC和MS-COCO上,Soft-NMS算法有助于提高大部分檢測算法對重疊物體的檢測精度。
原始算法中部分錨框的形狀與本研究的番茄形狀并不符合,對原始的錨框形狀進行了調整,采用了適合番茄形狀的錨框。
試驗采用的服務器為Intel Xeon(R)CPU E5-2650 v4@2.20 HZ×48/12 GB的GeForce GTX1080Ti×2 GPU,運行內存64 GB,操作系統為Ubuntu18.04,深度學習框架為TensorFlow。
試驗收集了1 200張溫室環境下大果番茄圖片,將圖片分辨率統一設置為640×512,使用labelImg對目標果實進行標注后獲得了3 526個成熟番茄樣本和3 014個不成熟番茄樣本。在采摘番茄時,基于對番茄儲藏運輸時存在時間損耗的問題,一般會將半成熟的番茄進行采摘儲藏。所以,在實驗中,標記紅色和偏紅色的番茄為成熟番茄,類別名為red。標記綠色番茄為未成熟番茄,類別名為green。
對以ResNet-101為基礎網絡的Cascade RCNN網絡進行改進。對改進網絡進行了100 000次訓練,原始網絡與改進網絡的檢測結果如圖2所示。

圖2 檢測結果Fig.2 Test results
由以上結果可以看到,改進的Cascade RCNN可以將番茄果實準確地識別出來,并且對于重疊度較高的番茄果實也有很好地識別效果。
改進網絡的總損失曲線如圖3所示,網絡經過訓練,分類損失和回歸損失處于接近于0的狀態,總損失值在0.03左右,網絡的損失函數可以達到很好的收斂效果。

圖3 總損失曲線Fig.3 Total loss curve
原始網絡與改進網絡的性能對比如表1所示。

表1 兩種網絡性能對比Table 1 Comparison of two network performance
在同1個番茄植株上會存在不同成熟程度的果實,所以,在進行番茄采摘時需要采摘機器人在識別出番茄果實后,對番茄的成熟度做出分類判斷,選擇已經成熟的和半成熟的果實進行采摘,保留還沒有成熟跡象的青色番茄果實。成熟番茄和不成熟番茄都識別出來可以避免機器人對未不成熟的番茄造成傷害。改進網絡對果實成熟度分類效果如圖4所示。

圖4 果實成熟度檢測圖Fig.4 Fruit maturity survey
由圖4可以看出,網絡通過訓練可以很好地將成熟番茄與不成熟番茄進行分類。對于半成熟的番茄,網絡可以正確地判斷為成熟果實。對于被枝葉遮擋的綠色果實也能夠準確地識別。
為了驗證改進網絡的性能,分別用Faster RCNN網絡、YOLOv3網絡和改進的Cascade RCNN網絡對溫室環境下的番茄果實進行檢測,各網絡的準確率如表2所示。

表2 各網絡準確率對比Table 2 Comparison of network accuracy
番茄果實的生長狀態為簇狀生長,每簇生長的果實數量不等。并且番茄果實品種較多,植株的大小也會因品種不同而有一定的差別。在采摘過程中,相機捕獲的番茄果實數量會因為番茄植株品種、生長狀態以及對番茄果實拍照的方位距離不同,造成相機捕獲的番茄果實數量有所不同,所以按照番茄果實數量分類分別檢驗了各個網絡的檢測效果,如圖5所示。

圖5 各個網絡檢測效果Fig.5 Detection of each network
由圖5可以看到,3個網絡對數量較少并且沒有重疊和被遮擋的番茄果實的識別效果相差不大,3個網絡都可以準確地將番茄果實識別出來。對于簇狀生長數量較多的情況,前2個網絡會出現漏檢和誤檢的現象。而Cascade RCNN網絡相較于前2個網絡表現較好,檢測的精確度和準確率都可以得到保障,沒有出現定位不準確和遺漏果實的現象。
提出了基于Cascade RCNN的番茄果實檢測方法,該方法選用的Cascade RCNN網絡使用了Soft-NMS算法進行非極大值抑制,并選取了適合的錨框,提高了網絡對重疊果實的檢測能力,網絡的準確率提升了近2%。通過與Faster RCNN、YOLOv3網絡的對比實驗,可以看出,Cascade RCNN網絡可以有效地將溫室環境下的番茄果實識別出來,檢測時間在0.2 s左右,可以為采摘機器人高效準確地識別番茄果實目標提供技術支持。