湯旸, 楊光友,2*, 王焱清,2
(1.湖北工業大學農機工程研究設計院, 武漢 430068; 2.湖北省農機裝備智能化工程技術研究中心, 武漢 430068)
柑橘人工采摘勞動強度大、效率低,機器人代替人工作業是未來的發展趨勢,柑橘識別作為機器人采摘的首要任務,其識別方法的高效精準至關重要。
隨著深度學習技術發展[1],基于卷積網絡模型的水果識別方法獲得了廣泛應用,如王丹丹等[2]在ResNet-50和ResNet-101的基礎上,改進設計了ResNet-44全卷積網絡,并由ResNet-44全卷積網絡、區域生成網絡以及感興趣區域子網構成了R-FCN深度卷積神經網絡,實現了對于蔬果前期蘋果的識別,識別準確率達到95.1%,召回率達到了85.7%,平均每幅圖像的識別時間為0.187 s;岳有軍等[3]將Cascade RCNN網絡中的非極大值抑制算法替換為了Soft-NMS算法對模型進行優化,改進后的Cascade RCNN番茄識別準確率提高了2%,同時也能用于區分番茄的成熟度;呂石磊等[4]采用MobileNet-v2網絡作為模型的骨干網絡,采用GIoU損失函數改進了YOLOv3的損失函數,建立了YOLOv3-LITE輕量化卷積網絡模型,實現了對柑橘的實時識別,平均識別精度達到了91.13%,在高性能GPU下的識別單幅圖像所耗時間為16.9 ms,模型占用內存28 MB,通過改進提高了識別精度和識別速度,減少了模型權重所占用內存;趙輝等[5]提出了一種改進YOLOv3的果實識別方法,將DarkNet53網絡的殘差結構與CSPNet結合,加入空間金字塔池化(spatial pyramid pooling,SPP)模塊,采用Soft NMS替換NMS,采用Focal Loss和CIoU Loss聯合損失函數對模型進行優化,針對果園復雜環境下不同成熟度的蘋果進行識別平均精度均值(mean average precision, mAP)達到了96.3%,F1達到了91.8%,在高性能GPU下的檢測速度達到了27.8 幀/s。與傳統識別方法[6-7]相比,這類方法減少了對人的依賴,具有復雜場景適應性強、識別精度高等優點[8-13],然而上述文獻方法所用網絡模型計算量普遍較大,應用于配置性能較差、算力有限的采摘機器人控制系統時,會占用大量的計算資源,識別速度大幅降低,影響控制系統的實時性。YOLOv3-tiny卷積網絡模型作為YOLOv3[14]的簡化版,網絡結構更簡單,更適合算力有限的應用場景[15-16],但在一些應用中也存在著識別精度不足的問題。
針對上述問題,提出一種基于改進YOLOv3-tiny輕量化卷積網絡模型的柑橘識別方法,用DIOU(distance intersection over union)損失函數[17]替換YOLOv3-tiny原有的損失函數,用MobileNetv3-Small[18]卷積網絡替換了主干特征提取網絡,并為其添加新的殘差結構,在加強特征提取網絡中加入了簡化的SPP網絡結構[19]、深度可分離卷積層集、下采樣層以及hard Swish激活函數,以達到減少識別所耗時間、提高識別精度、減小模型占用內存并且能夠應用于采摘機器人控制系統的目的。
YOLOv3-tiny卷積網絡模型的主干特征提取網絡由七個3×3卷積層和六個最大池化層組成,加強特征提取網絡為雙尺度結構包含一個上采樣層,預測網絡有兩個輸出層,相比于YOLOv3網絡模型的結構進行了大幅簡化,因此計算量更小、識別速度更快,但也導致識別精度相對較差。如圖1所示為YOLOv3-tiny的網絡模型結構。

圖1 YOLOv3-tiny模型結構示意圖Fig.1 Structure diagram of YOLOv3-tiny mode
改進的YOLOv3-tiny損失函數主要由定位損失、置信度損失以及分類損失3個部分組成,表達式為


(1)

式(1)的第1行負責計算定位損失值,所采用的就是DIOU(distance intersection over union)損失函數,替換了YOLOv3-tiny原有的邊框回歸損失函數,第2行和第3行負責計算置信度損失值,第4行負責計算分類損失值。
相比原有的損失函數,DIOU中的IOU能更直接地反映預測框和真實框之間的重合程度,保證預測框在訓練中趨向于和真實框的形狀一致,中心點距離和對角線長度則能保證在訓練中當預測框和真實框還未發生重合時,預測框趨向于和真實框發生重合,避免出現無法重合的情況,因此DIOU能有效提高模型的識別精度。
如圖2所示為改進YOLOv3-tiny網絡模型結構。如表1所示為改進YOLOv3-tiny模型結構參數。
1.3.1 主干特征提取網絡的改進
如圖2、表1所示的1~13層為改進后的主干特征提取網絡,主要負責特征信息提取。

圖2 改進YOLOv3-tiny模型結構示意圖Fig.2 Structure diagram of improveYOLOv3-tiny model

表1 改進的YOLOv3-tiny模型結構參數Table 1 Improve YOLOv3-tiny network model parameters
采用MobileNetv3-Small作為新的主干特征提取網絡,替換了如圖1所示的YOLOv3-tiny原有的主干特征提取網絡,保證了模型更快的識別速度、更小的計算量以及對設備更低的算力要求。
同時,為了改善MobileNetv3-Small作為主干特征提取網絡會降低模型識別精度的問題,如圖3所示,在MobileNetv3-Small的bottleneck網絡結構層中添加新的包含1×1卷積層和BatchNorm層的殘差結構,提升主干網絡保留特征信息的能力,減少其特征信息的損失,進一步提高模型的識別精度。

圖3 改進MobileNetv3-Small的bottleneck網絡結構層Fig.3 Improved MobileNetV3-Small bottleneck layers
1.3.2 加強特征提取網絡的改進
如圖2、表1所示的14~28、31~33層為改進后的加強特征提取網絡,主要負責對特征信息做進一步的處理。
為了更進一步提高模型的識別精度,在如圖1所示的YOLOv3-tiny原有的加強特征提取網絡中添加了一個僅有9×9和13×13最大池化層的簡化空間金字塔池化(spatial pyramid pooling,SPP)網絡結構、兩個由5×5深度可分離卷積層、1×1卷積層組成的深度可分離卷積層集,然后加入一個由大小為5×5步長為2的深度可分離卷積組成的下采樣層,同時將加強特征提取網絡中原有的Leaky ReLU激活函數全部替換成了hard Swish激活函數,上述這些新添加的網絡結構的具體結構參數分別對應如表1所示的14~17層、18~21層、25~28層以及31~33層。簡化SPP網絡結構可以通過其中的最大池化層加強模型提取特征信息的能力,同時保留之前主干網絡的特征信息,并進行特征融合,深度可分離卷積層集的5×5深度可分離卷積層同樣加強了模型提取特征信息的能力,同時又可以減少5×5卷積運算所帶來的計算量,其中的1×1卷積層則是為了對提取出的特征進行降維、整合,也起到降低后續卷積運算計算量的作用,下采樣層可以將兩個尺度間的特征信息進一步融合,而hard Swish激活函數能夠提升模型的識別精度且計算量小。
使用深度相機對室內場景中的仿真柑橘進行多角度拍攝,共采集572張圖像,利用翻轉、平移、尺寸縮放等方法對圖像進行數據增強,將圖像數量擴增至1 144張。如圖4所示為柑橘數據集中的部分圖像。

圖4 柑橘數據集中的部分圖片Fig.4 Part of the citrus datase
使用labelImg標簽工具軟件對圖像中的柑橘進行標注,再將圖像和標簽文件組成的柑橘數據集按照訓練集64%、驗證集16%、測試集20%的方式進行劃分。
在搭載Windows10系統,硬件為NVIDIA GTX950M 2G DDR3獨立顯卡、Intel Core i5-4210M雙核處理器、4 GB DDR3L內存的筆記本電腦上,基于Tensorflow-gpu、Keras深度學習框架,采用Python編程語言和PyCharm編程工具來搭建模型,并進行模型的訓練、測試。
如圖5所示,左側是模型訓練、測試流程,右側是基于模型的柑橘識別方法流程。

圖5 模型訓練、測試以及識別流程Fig.5 Model training, testing and recognition method flow chart
模型以小批量樣本的方式訓練,每批量樣本數為8,模型每訓練完一次訓練集中的圖像就稱為一次迭代,每完成一次迭代就通過驗證集進行一次驗證,計算出驗證集損失值,模型采用10-3作為初始學習率,學習率會根據學習率階層下降法來調整,即當模型在訓練過程中連續兩次迭代損失值都不下降時,學習率將下降到原來的1/2,根據驗證集損失值的變化以及當前學習率,通過Adam優化器來反向調整模型的參數,通過不斷的迭代來獲得最優模型,每迭代一次保存一次模型。
如圖6所示,為改進YOLOv3-tiny在訓練過程中的損失曲線圖。

圖6 損失曲線圖Fig.6 Loss graph
為了測試改進YOLOv3-tiny模型的性能,搭建了原有的YOLOv3-tiny模型作為對比模型。
2.4.1 不同模型之間的性能對比
通過模型的平均識別精度均值(mean average precision,mAP)、F1、識別單幀圖像所耗時間、模型權重大小這四項指標來對比模型性能。其中mAP和F1兩者共同衡量模型的識別精度,其計算公式為

(2)
根據IOU=0.5將不同的預測框劃分成正負樣本,TP(true positive)表示正確預測為正樣本的樣本;FP(false positive)表示錯誤預測為正樣本的樣本;FN(false negative)表示錯誤預測為負樣本的樣本;P(precision)表示精準度,正確預測為正樣本的樣本在所有被預測為正樣本的樣本中所占的比重;R(recall)表示召回率,正確預測為正樣本的樣本在所有真正為正樣本的樣本中所占的比重;C表示識別對象的類別數量,mAP的計算實際上就是計算根據不同置信度繪制出的P-R曲線下方的面積,再根據類別數量取平均值。
如表2所示為模型的性能對比結果。

表2 模型之間的性能對比Table 2 Performance comparison between the models
由表2可知:相較于YOLOv3-tiny,改進的YOLOv3-tiny模型的平均識別精度均值mAP達到了96.52%,提高了3.24%;F1達到了0.92,提高了0.03;平均識別單幅圖像所耗時間僅為47 ms,減少了24%;模型權重大小僅為16.9 MB,減少了49%,約占YOLOv3-tiny權重大小的1/2。
2.4.2 不同場景條件下的識別情況對比
根據模型的識別結果統計出四種不同場景條件下的柑橘識別情況,計算出正確識別率,其中類別預測準確、預測框定位準確即為正確識別。如表3所示,為不同場景條件下的柑橘識別情況對比。

表3 不同場景條件下柑橘的識別情況對比Table 3 Comparison of citrus recognition in different scenes
由表3可知:相較于YOLOv3-tiny,改進的YOLOv3-tiny在光照充足且未遮擋條件下的柑橘正確識別率為98.6%,提高了0.7%;在光照充足且遮擋條件下的柑橘正確識別率為90.5%,提高了6.5%;在光照不足且未遮擋條件下的柑橘正確識別率為95.8%,提高了3.2%;光照不足且遮擋條件下的柑橘正確識別率為86.8%,提高了7.7%。
2.4.3 識別結果對比
如圖7所示,為改進YOLOv3-tiny和YOLOv3-tiny的部分柑橘識別結果對比。
由于圖7(a)①中的柑橘離相機較遠,目標較小,處于背光環境光照不足,存在柑橘相互堆疊現象,圖7(a)②中的柑橘一部分離相機較近目標較大且受到枝葉遮擋,圖7(a)③中的柑橘一部分離相機較近目標較大且受到枝葉略微遮擋,一部分離相機較遠且受到枝葉嚴重遮擋,YOLOv3-tiny的識別結果出現了預測框不準確、重復識別、未識別的問題,而在相同條件下改進YOLOv3-tiny的識別結果如圖7(b)④~⑥所示,未出現識別錯誤且預測框更準確,實際識別結果要優于YOLOv3-tiny。

圖7 識別結果對比圖Fig.7 Comparison of recognition results
根據網絡模型的對比測試結果,改進YOLOv3-tiny輕量化柑橘識別方法提高了識別速度和識別精度,減少了模型權重占用內存,在不同場景條件下的柑橘識別效果也有所提升,達到了預期的改進效果。
將改進YOLOv3-tiny輕量化柑橘識別方法應用于柑橘采摘試驗,通過采摘測試平臺識別并抓取仿真柑橘樹上隨即擺放的30個柑橘,用以驗證識別方法在采摘機器人控制系統中的性能。
采摘機器人硬件平臺如圖8所示,由上位機、深度相機、機械臂及其控制器、柔性手爪及其控制器組成,上位機采用的是與之前模型訓練、測試相同的筆記本電腦。

圖8 采摘機器人平臺Fig.8 Picking robot platform
采摘控制系統程序界面如圖9所示。

圖9 采摘控制系統程序界面Fig.9 Program interface of picking control system
實驗室環境下,基于改進YOLOv3-tiny輕量化柑橘識別方法的采摘機器人平臺執行柑橘采摘作業的實際過程如圖10所示。

圖10 柑橘采摘過程Fig.10 Citrus picking process
實驗室環境下,基于改進YOLOv3-tiny輕量化柑橘識別方法的采摘機器人平臺在執行柑橘采摘作業過程中的識別測試結果如表4所示。

表4 柑橘采摘測試結果Table 4 Citrus picking test results
根據測試結果可知,改進YOLOv3-tiny輕量化柑橘識別方法能夠在算力有限的采摘機器人平臺上良好運行,為自主柑橘采摘作業提供識別功能,該方法的實時性、識別成功率均達到了預期效果。
(1)提出了一種面向算力有限的采摘機器人平臺的改進YOLOv3-tiny輕量化柑橘識別方法,用于識別不同光照條件、不同遮擋情況下的柑橘。該方法用DIOU損失函數改進了原有的損失函數,提高模型的識別定位精度;采用MobileNetv3-Small替換了原有的主干特征提取網絡,使模型更加輕量化,提高識別速度;通過在MobileNetv3-Small中加入新的包含1×1卷積層和BatchNorm層的殘差結構,使主干網絡能夠更好地保留之前提取出的特征信息,減少特征信息的損失,從而提高模型的識別精度;在加強特征提取網絡加入一個僅有9×9和13×13最大池化層的簡化空間金字塔池化SPP網絡結構和兩個包含5×5深度可分離卷積層、1×1卷積層的深度可分離卷積層集,提升模型提取特征信息的能力,再加入一個由5×5深度可分離卷積組成的下采樣層,將兩個尺度間的特征信息進一步融合,進而提高模型的識別精度;將加強特征提取網絡中原有的Leaky ReLU激活函數全部替換成hard Swish激活函數,進一步提高模型的識別精度。
(2)通過與YOLOv3-tiny在柑橘測試集上的識別效果進行對比,改進的YOLOv3-tiny的平均識別精度均值mAP、F1分別達到了96.52%、0.92,提高了3.24%、0.03,平均識別單幅圖像所耗時間、模型權重大小僅為47 ms、16.9 MB,分別減少了24%、49%;通過與YOLOv3-tiny在針對柑橘測試集中處于不同環境條件下的柑橘的識別效果進行對比,改進的YOLOv3-tiny在光照充足且未遮擋條件下、光照充足且遮擋條件下、光照不足且未遮擋條件下、光照不足且遮擋條件下的柑橘正確識別率分別為98.6%、90.5%、95.8%、86.8%,分別提高了0.7%、6.5%、3.2%、7.7%。該方法改進效果顯著。
(3)改進YOLOv3-tiny輕量化柑橘識別方法結合采摘機器人平臺進行了柑橘采摘試驗,柑橘的識別成功率達到了100%,平均識別時間約為47 ms。該方法能夠應用于算力有限的采摘機器人平臺,為平臺提供了一種高效準確的柑橘識別方法。