張星,高巧明,潘棟,張偉偉
(1. 廣西科技大學機械與交通工程學院,廣西柳州,545616; 2. 廣西科技大學廣西汽車零部件與整車技術重點實驗室,廣西柳州,545616; 3. 上海工程技術大學機械與汽車工程學院,上海市,200240)
隨著智慧農(nóng)業(yè)的提出以及計算機視覺技術的不斷發(fā)展,研發(fā)農(nóng)業(yè)機器人是農(nóng)業(yè)發(fā)展趨勢,而在丘陵山地地區(qū),研發(fā)果實拾撿機器人的首要關鍵技術是對復雜環(huán)境下果實的快速有效識別成為探討的熱點問題。
近年來,對于自然環(huán)境下果實的目標識別問題,針對番茄、獼猴桃、蘋果、柑橘等果實識別算法已有相關研究。在傳統(tǒng)機器視覺領域,多采用GrabCut分割算法[1]、Canny邊緣提取[2-3]、模糊聚類分割算法[4]、構建色彩模型分割的SVM分類器[5]、點云圖像的深度球截線分割[6],但以上這些方法主要基于果實顏色、形狀、紋理特征,在光照不均和復雜環(huán)境下算法的魯棒性和通用性差,其識別率無法滿足采摘機器人在多種復雜環(huán)境下的對果實的實時檢測。
相比傳統(tǒng)方法,深度學習中卷積神經(jīng)網(wǎng)絡已廣泛應用于果實目標識別與檢測中,目前深度卷積神經(jīng)網(wǎng)絡目標檢測模型主要分為兩類,一類是基于區(qū)域建議的檢測算法,代表如Faster RCNN[7]、Mask R-CNN[8];另一類直接將目標邊框定位的問題轉(zhuǎn)化為回歸問題處理,不需要產(chǎn)生候選框,代表如SSD[9]、YOLO[10]等。Yu[11]提出一種基于Mask R-CNN網(wǎng)絡模型和果實形狀的算法實現(xiàn)了成熟和未成熟草莓采摘點的視覺定位;岳有軍[12]提出一種基于原始Mask-RCNN網(wǎng)絡基礎上增加邊界加權損失函數(shù)實現(xiàn)復雜環(huán)境下的蘋果檢測;武星[13]提出一種同構殘差塊串聯(lián)的輕量化(Light-YOLOv3)網(wǎng)絡模型實現(xiàn)對蘋果的檢測;劉芳[14]提出一種改進型多尺度YOLO算法(IMS-YOLO)實現(xiàn)溫室環(huán)境下的番茄檢測;閆建偉等[15]提出改進感興趣區(qū)域的Faster-RCNN算法實現(xiàn)對自然環(huán)境下的刺梨檢測;薛月菊等[16]提出原始YOLOv2網(wǎng)絡基礎上替換密集連接網(wǎng)絡結構實現(xiàn)對遮擋和重疊的未成熟芒果的檢測;穆龍濤等[17]提出基于AlexNet卷積神經(jīng)網(wǎng)絡模型對獨立獼猴桃的檢測。綜上可以看出深度學習已顯示更好的優(yōu)越性。由于菠蘿存在人工采摘成本高,且菠蘿果實表面的紋理與周圍土地、枯葉顏色相近,目前還沒有卷積神經(jīng)網(wǎng)絡應用于菠蘿檢測的相關文獻,基于此本文提出改進的YOLOv3[18]卷積神經(jīng)網(wǎng)絡模型來實現(xiàn)田間復雜環(huán)境下的單類別待拾撿菠蘿的定位,為農(nóng)業(yè)拾撿機器人自主拾撿果實奠定基礎。
本文在研究拾撿機器人在田間拾撿菠蘿等各種環(huán)境下的實際采摘畫面后,人工設置菠蘿拾取環(huán)境,白天采集待拾撿菠蘿三種干擾狀態(tài)下圖像,如圖1所示。由于菠蘿的果實顏色、紋理在不同光照條件下容易受環(huán)境干擾,單獨采取R-G色差分割模型(圖2)受不同環(huán)境下的光照和背景的干擾,無法適應所有環(huán)境下的果實識別。因此考慮采取深度卷積神經(jīng)網(wǎng)絡的端到端的訓練自適應學習菠蘿識別所需要的特征,最終實現(xiàn)多種環(huán)境下的菠蘿定位。
(a) 重疊果實
(a) 重疊果實
如圖3所示,本文對采集的數(shù)據(jù)進行數(shù)據(jù)擴增,對原始圖像進行旋轉(zhuǎn)變換,旋轉(zhuǎn)角度隨機選取-30°~30°,并通過平移、翻轉(zhuǎn)、縮放、剪裁等幾何變換方式擴展數(shù)據(jù)集;通過調(diào)整圖像的亮度、對比度、高斯濾波等進行數(shù)據(jù)增強,篩選出數(shù)據(jù)集為1 000張。將數(shù)據(jù)集使用labelImg工具對圖像中果實采用矩形框人工標記,其操作界面如圖4所示,標注信息采用PASCAL VOC數(shù)據(jù)集的格式存儲,每組數(shù)據(jù)分別包含識別目標果實的類別序列、目標果實中心點的橫坐標、縱坐標以及目標的寬和高。
(a) 旋轉(zhuǎn)剪裁
圖4 labelImg操作界面圖
本文主要針對果實單類別檢測問題,原YOLOv3網(wǎng)絡定義的錨點框和網(wǎng)絡的層數(shù)不適用于田間復雜環(huán)境下單類別菠蘿的拾撿識別研究,因此,本文首先利用K-mean聚類算法對果實數(shù)據(jù)集進行聚類分析,然后基于深層殘差網(wǎng)絡對單類別識別果實修改網(wǎng)絡的層級結構。
YOLOv3吸收了當前主流的殘差網(wǎng)絡(ResNet)和特征金字塔(FPN)檢測思想,使用基于殘差網(wǎng)絡改進的Darknet53網(wǎng)絡作為特征提取器,將原始圖片縮小到416×416大小,采用類似FPN結構將特征圖的尺度大小劃分為S×S個等大的單元格后,通過K-means算法對數(shù)據(jù)集樣本進行聚類分析后,生成13×13、26×26、52×52大小的三個尺度特征圖,分別對應深層、中層與淺層的特征,使用2倍的上采樣使特征圖在相鄰兩尺度上傳遞。且每一個單元格借助3個錨點框(anchor box),一共產(chǎn)生(13×13+26×26+52×52)×3=10 647個邊界框。如圖5所示,卷積神經(jīng)網(wǎng)絡在每個單元格上的每個邊界框預測4個值分別記為tx,ty,tw,th作為預測目標中心坐標和目標的寬與高,當目標中心在單元格中相對于圖像左上角的存在偏移(cx,cy),對應錨點框的高度和寬度分別為pw,ph,則對應修正的邊界框的預測關系如式(1)。
bx=σ(tx)+cx
by=σ(ty)+cy
bw=pwetw
(1)
bh=pheth
式中:σ——Sigmoid函數(shù),作用是將坐標偏移量轉(zhuǎn)化到[0,1]區(qū)間;
bx,by——預測框的中心坐標;
bw,bh——預測框的寬和高。
圖5 YOLOv3中預測值示意圖
基于YOLOv3中對于初始錨點框的選擇影響網(wǎng)絡對目標的檢測精度和速度,YOLOv3中通過COCO數(shù)據(jù)集中采用歐式聚類計算得到的9組先驗框維度分別為(10,13),(16,30),(33,23),(30,61),(62,45),(59,119),(116,90),(156,198),(373,326),但不適用于實際中只檢測單類別果實場景,因此本文通過K-means算法采用矩形框的平均交互比(Avg IOU)作為度量,定義聚類的Avg IOU目標函數(shù)
(2)
式中:box——單個樣本中果實目標;
centroid——果實目標中心;
nk——第k個聚類中心中樣本的個數(shù);
p——樣本的總數(shù);
k——簇的個數(shù);
IIOU(box,centroid)——簇的中心框和聚類框的重疊比;
m——樣本序號;
n——聚類中心中的樣本序號。
選取合適的IOU值保證果實檢測的速度和精度,分別選取簇的數(shù)量k=1~10對果實數(shù)據(jù)集進行維度聚類分析,得出平均交并比與k的關系如圖6所示。
在k=9時曲線變的平穩(wěn),考慮本文果實數(shù)據(jù)集的尺度變換,選擇數(shù)量為9的先驗框:(34,62),(61,114),(86,118),(114,148),(55,73),(46,50),(51,92),(25,37),(74,91),將其面積按從小到大排序后均分到3個不同尺度實現(xiàn)較大、中等、較小的感受野中定位菠蘿圖像區(qū)域。
圖6 錨點框數(shù)量k與平均交并比(Avg IOU)的關系圖
在田間復雜環(huán)境下采集的圖像,雖然受到光照強度、雜草背景等干擾,但由于本文只針對單類別果實進行識別,需要縮減原始YOLOv3網(wǎng)絡結構,考慮殘差網(wǎng)絡[19]的思想,采用深層殘差網(wǎng)絡作為提取網(wǎng)絡,考慮特征金字塔(FPN)原理,構造如表1的網(wǎng)絡結構。
表1 提取單類別果實特征的深度殘差網(wǎng)絡結構
圖7 改進的YOLOv3果實識別算法
表1中Type表示網(wǎng)絡中每一層的類型,F(xiàn)ilters表示卷積核的個數(shù),Size表示卷積核的大小,Output表示輸出特征圖的大小,左側(cè)1×、2×、3×表示殘差塊堆疊的個數(shù)。改進的YOLOv3果實識別算法如圖7所示,首先采用24維度的3×3的卷積核過濾416×416的輸入圖像,然后采用36維度3×3的卷積核,以步長為2個像素卷積操作,通過2倍下采樣實現(xiàn)208×208的特征圖;類似地在網(wǎng)絡中通過1×、2×、3×、3×、2×的5組殘差模塊,殘差模塊間連接步長為2的3×3的卷積核,將下采樣中使用殘差單元的次數(shù)減少降低網(wǎng)絡深度,分別獲得52×52、26×26、13×13的特征圖后,與圖7中卷積層分成的3個分辨率相同的特征圖分支進行2倍上采樣后,將相同尺寸的特征圖進行級聯(lián)輸出3種不同尺度的圖像,最后通過非極大值抑制(NMS)算法,對輸出圖片上的多個預測框和單個預測框的置信度,采取如下算法。
1) 按照預測框的置信度的得分,對所有預測框降序排列,記錄排列的索引,新建一個列表作為最后篩選的邊框索引結果。
2) 將排序的第一個置信度最大的預測框作為當前框保留在列表中,計算其與剩余預測框的交并比(IOU)值。
3) 設定交并比(IOU)值的閾值,僅保留索引中IOU小于設定閾值的預測框,重復Step2,直到索引中僅剩下最后一個預測框,將其保留到列表中后退出循環(huán)。
基于PASCAL VOC數(shù)據(jù)集識別了80個類別目標,但本文只針對單目標的田間待拾撿的菠蘿定位,不需要預測多類別,因此在原有的YOLOv3損失函數(shù)的基礎上,刪除預測類別的損失,改進的損失函數(shù)
(3)
式中:s——劃分的網(wǎng)格數(shù);
B——每個網(wǎng)格中預測的先驗框的個數(shù);
λc o o rd——調(diào)節(jié)樣本中心點位置損失的權重,減少邊界框不包含果實目標的置信度預測損失,這里設置為5;
obj——該框?qū)斯麑崊^(qū)域;
xi、yi、wi、hi——預測框果實目標的中心點橫縱坐標、寬、高;
式(3)中第一項為果實樣本中心點坐標的損失,第二項為果實樣本寬高的損失,第三項為樣本置信度損失。
本文試驗基于Darknet神經(jīng)網(wǎng)絡框架實現(xiàn)果實定位網(wǎng)絡。試驗的計算機配置為PC Intel(R)Xeon(R)CPU E5-2673v3@2.40 GHz、11 GB的GPU GeForce GTX 1080Ti和32 GB的運行內(nèi)存。果實識別程序基于Python語言編寫在TensorFlow框架下并調(diào)用CUDA、Cudnn、Opencv庫在Windows10系統(tǒng)下運行,訓練參數(shù)設置每批量樣本個數(shù)為64,動量因子設置為0.9,權值衰減設置為0.000 5,起始學習率設為0.001,非極大抑制設為0.5。
本文針對田間待拾撿果實識別結果作出評價,主要由召回率R、準確率P和精度均值mAP來評價模型檢測單類別果實的性能,其計算公式如式(4)~式(6)所示。
(4)
(5)
(6)
式中:TP——被模型正確識別果實數(shù)量的正樣本;
FN——果實數(shù)目被模型識別為干擾環(huán)境的正樣本;
FP——被模型識別干擾環(huán)境為果實數(shù)目的負樣本。
模型訓練過程中的損失變化如圖8所示,改進的YOLOv3模型剛開始迭代時損失值很大,但經(jīng)過大約100次迭代后逐步趨于穩(wěn)定,震蕩幅度很小。
圖8 損失(Loss)值隨迭代次數(shù)的變化曲線
將本文算法模型與原YOLOv3網(wǎng)絡模型對比,識別效果如表2所示。由表2可以看出,減少網(wǎng)絡復雜度的情況下,本文算法在不降低檢測速度和檢測精度的情況下,試驗訓練環(huán)境下準確率達到了95.5%,召回率達到了93.4%,對比原網(wǎng)絡模型準確率、召回率分別提高了3.2%和2.8%,且本文算法檢測速度可以達到17.64幀/s,滿足后期農(nóng)業(yè)機器人實際工況下的模型部署檢測要求。
表2 測試結果的算法對比
(a) 重疊果實
從圖9可以看出,本文改進的單類別果實識別YOLOv3算法,在重疊、雜草遮擋、密集條件下果實都能很好地被識別,模型具有很好的魯棒性。
1) 針對復雜環(huán)境下的田間路邊單類別菠蘿果實的拾撿識別,基于菠蘿的顏色、紋理、形狀等特征的傳統(tǒng)算法識別魯棒性、準確性和適應性不足情況下,本文提出采用深層殘差網(wǎng)絡和特征金字塔改進YOLOv3網(wǎng)絡結構,并基于果實數(shù)據(jù)集中果實目標框的K-means 聚類分析改進先驗框的尺度,通過減少殘差單元次數(shù)降低網(wǎng)絡深度,降低了計算量。
2) 通過檢測精度和檢測速度等評判依據(jù),本文算法在減少網(wǎng)絡復雜度的情況下,試驗訓練環(huán)境下保證了檢測速度和檢測精度,準確率達到了95.5%,召回率達到了93.4%,對比原網(wǎng)絡模型分別提高了3.2%和2.8%,且可以達到17.64幀/s的檢測速度,本文提出的改進算法具有一定的可行性和優(yōu)越性。
3) 為了提高果實拾撿機器人的對多目標識別定位能力,后續(xù)將考慮在數(shù)據(jù)集的多樣性和平衡性上擴增數(shù)據(jù)集,提高小目標果實的識別正確率和識別實時性,并考慮田間多類別果實的識別作為下一步研究方向。