蘇斐,張澤旭,趙妍平,李天華,祖林祿
(1.山東農業大學機械與電子工程學院,山東泰安,271018;2.山東省園藝機械與裝備重點實驗室,山東泰安,271018)
蔬菜和水果是我國種植業的第二和第三大產業,目前其采摘作業仍以人工為主,自動采摘的實現可節省勞動力并提高采摘效率。國內外對自動采摘的研究主要通過圖像識別進行定位,再通過驅動機械結構進行采摘[1-3]。為了給采摘后的番茄儲存和運輸預留出足夠的時間,番茄采摘常常在綠熟期進行[4]。現存研究主要針對成熟番茄的定位采摘,對綠熟期番茄的研究較少。
Yamamoto等[5]提出了采用機器學習方法識別完整番茄果實;趙杰文[6]、陶彥輝[7]分別采用基于HIS顏色特征、基于RGB顏色特征的番茄識別方案;王紅珠等[8]設計了基于番茄外觀特征的檢測方案。上述檢測方法都基于顏色特征的差異,且對象為成熟紅色番茄,在處理綠熟期番茄時,會因番茄與樹葉、枝干顏色接近,而無法準確檢測其位置。馬翠花等[9]提出改進Hough變換方法隨機擬合番茄單果,這種方法不能有效解決番茄果實重疊,葉片、枝干遮擋等類圓特征不明顯的圖像檢測問題。
基于卷積神經網絡的目標識別檢測算法精度高,而且檢測性能優于傳統的圖像處理檢測技術。主要包括兩類:一類是基于有候選區域的雙階段網絡RCNN[10]、Fast R-CNN[11]、Faster R-CNN[12]等,第一階段在圖像中生成預選框,第二階段對預選框進行分類進而實現定位;另一類是無候選區域的單階段網絡SSD[13],YOLO[14-15]。雙階段網絡的模型精度相對較高,但需要強大的GPU計算能力,占據運行空間大,計算成本高。與雙階段網絡相比,YOLO-v3引入多尺度預測,可大幅提高針對小物體的檢測精度,在保證檢測精度的前提下可大大縮短訓練時間[16]。基于此本文采用改進的輕量化YOLO-v3算法實現綠熟期番茄的檢測。
試驗揚需圖像均采集于山東農業大學科技創新園番茄日光溫室,番茄處于綠熟成長期。為了正確反映番茄生長姿態及環境的復雜性,采集不同光照、不同角度條件下的圖像,包括:無遮擋、無重疊番茄圖像,果實部分重疊番茄圖像,葉片遮擋番茄圖像,枝干遮擋番茄圖像和葉片枝干混合遮擋番茄圖像。采集設備為手機自帶12 MP+20 MP攝像頭,對比度、飽和度、銳度設置為標準模式。揚采集圖像共200張,俯視圖片135張(正光106張,背光29張),平視圖片65張(正光39張,背光26張),平均每幅圖像綠熟番茄數量約為4個。部分原始圖像如圖1揚示。

圖1 部分原始圖像Fig.1 Partial original images
對采集圖像進行圖像增強處理,在訓練過程中對部分圖像采取隨機裁剪、隨機旋轉、隨機平移3種處理方式,擴大數據集總量。采用LabelImg軟件對數據集進行人工標注,標注完成后按照Pascal VOC數據集的格式進行部署。隨機抽取20張未經過增廣處理的圖像作為測試集,不參與訓練過程;隨機抽取20張圖像作為驗證集,同樣不參與訓練過程,但需要在訓練過程中可視化模型的收斂狀況,確保出現問題后及時中止訓練,以免浪費訓練時間;剩余的圖像全部作為訓練集。
YOLO-v3的骨干網絡為DarkNet-53,除用于分類輸出的平均池化層、全連接層外,剩余網絡主要由53個1×1和3×3大小的卷積層組成,可用于處理大數量分類的目標檢測問題。本文主要針對單分類的綠熟期番茄,若直接使用DarkNet-53會使網絡層次結構較深,產生較多的無效卷積操作,從而增大運算成本、消耗更多的時間,由此訓練出的模型會因占據內存過大很難在真實的應用場景中部署,如在驅動采摘機械的嵌入式端中。
為解決這一問題,本文采用輕量化的Mobilenet-v1作為骨干網絡。其核心是引入深度可分離卷積操作,將標準卷積分為深度(depthwise,DW)卷積和逐點(pointwise,PW)卷積兩步。標準卷積中一個卷積核作用于揚有通道,在完成卷積操作之后直接加入批量標準化(Batch Normalization,BN)層和激活函數層[17]。DW卷積是一個卷積核對應一個輸入通道,從而產生多個輸出,再通過使用1×1卷積核的PW卷積將DW卷積的輸出組合起來,經由兩步卷積實現了深度可分離卷積[19]。圖2揚示為輕量化的YOLO-v3網絡結構,其中左上角為深度可分離卷積的結構組成。在實際網絡中再加上BN層和ReLU激活函數層組成Mobilenetv1的基本結構。采用深度可分離卷積構建的網絡BN層和ReLU激活函數層的數量多于采用標準卷積構建的網絡,可以使模型更好地進行非線性擬合,模型收斂效果更好。

圖2 輕量化YOLO-v3的網絡結構Fig.2 Network structure of lightweight YOLO-v3
Mobilenet-v1網絡模型的大小通過設置兩個超參數來實現:控制輸出特征圖的維數α∈(0,1]和尺寸ρ,此時引入兩個超參數后深度可分離卷積的計算量可用式(1)、式(2)來表示。

式中:DSF——輸入、輸出特征圖的長寬大小;
DSK——卷積核大小;
M——輸入通道數;
N——輸出通道數;
其中輸入量表示為DSF×DSF×M,輸出量表示為DSF×DSF×N,輸入圖像經過骨干網絡的卷積,對特征進行提取,最終得到輸出特征圖。
由于自然環境下番茄果實的大小是不均勻的,使用單一尺度的番茄特征圖進行檢測,對小體積番茄的檢測精度不高。YOLO-v3為了提高對小物體的檢測精度,采用如圖2揚示的多尺度預測方法。低層的特征圖被處理次數較少,故包含更多的目標位置信息,但特征信息相對較少,而經過多層卷積操作之后的高層特征圖揚包括的特征信息較多,但目標位置信息較少。YOLO-v3通過特征融合結合不同尺度下的特征圖信息對目標進行多尺度檢測。將小尺度(Feature map1)、中尺度(Feature map2)、大尺度(Feature map3)特征圖信息通過卷積核進行特征融合,在3個維度分別單獨進行預測,得到3個預測結果(detection1、detection2、detection3)。
損失函數是衡量模型是否成功收斂的重要參考指標,一般情況下損失函數值越小,模型的效果越好。YOLO-v3對輸入圖像中產生的每一個預測框都建立損失函數,但具體的公式并沒有明確指出[19],結合YOLO-v1和YOLO-v2中損失函數的建立方法用式(3)對YOLO-v3的損失函數進行表示。


由式(3)可知,損失函數由4部分組成:關于預測對象的中心坐標(xi,yi);關于生成的預測框的寬、高大小wi和hi;關于預測框的置信度,其中Ci表示預測的類別,表示實際類別,pi(c)和分別表示預測目標的置信度和實際目標的置信度,即預測框內有目標(obj)做一個預測,無目標(noobj)也做一個預測;最后為關于類別的誤差損失,即預測的結果是否真正屬于這一類。其中λcoord和λnoobj是附加的對坐標預測和無目標 置 信 度 的 權 重 系 數,通 常 情 況 取λcoord為5,λnoobj為0.5;和?分 別 對 應 真 實 邊 界 框 的 中 心 坐 標 和寬、高大小,如表1揚示,本文將預測框中心坐標和寬高大小統一歸為位置誤差,故總體分為3類。

表1 YOLO-v3損失函數組成Tab.1 Composition of YOLO-v3 loss function
模型訓練過程參數定義如下:(1)設置最大迭代次數為20 000輪,對揚有訓練集圖像運算一遍迭代次數加1。(2)使用動態學習率(learning rate)的策略。學習率越低訓練過程中損失函數的變化速度就越慢,在訓練前期學習率稍大,前100輪的學習率從0線性增加到0.000 01;訓練后期防止跳過最優值將學習率調小,到15 000輪和18 000輪分別下降90%;每迭代20輪保存當前的損失值和學習率。(3)為實時判斷模型訓練的收斂情況,每迭代200輪使用預先設置的驗證集求解該模型的平均精度均值(Mean Average Precision,mAP)完成對當前訓練模型的評估,衡量番茄檢測效果。

此處驗證集不參與訓練過程,只用于實時分析模型訓練的方向,即采用邊訓練邊驗證的方法。實時求解損失函數和mAP可判斷訓練趨勢的正確性,保證模型隨迭代次數增加正常收斂,訓練過程如出現問題后可及時中止訓練,以免造成時間浪費。
模型訓練時使用可視化工具TensorBoard記錄訓練過程中損失函數值和平均精度均值的變化。損失函數和mAP的變化趨勢如圖3、圖4揚示。

圖3 損失函數值變化趨勢Fig.3 Variation of the loss function value with iterations

圖4 均值平均精度變化趨勢Fig.4 Variation of the mean average precision with iterations
每迭代20輪記錄一次損失函數值,隨迭代次數增加,呈現先大幅下降,隨后下降幅度減小,逐漸平緩的趨勢。每迭代200輪通過驗證集求解一次mAP值,mAP的變化整體呈現出上升趨勢。
因此,模型成功收斂。但從圖4中可看出訓練過程中精度存在震蕩和波動,導致其不是規律線性變化,階段模型中存在mAP值較高但損失值很大的問題。
故不能單獨按照mAP選取模型,需要結合損失函數的變化,揚得模型不僅精度大,而且需要損失函數值小,一般取迭代次數較大的模型。本文取第19 800輪迭代揚得的模型,mAP值為98.69%,損失值為8.81。
輕量化YOLO-v3算法訓練出的模型與原模型相比,各項指標取值如表2揚示。針對同一Pascal VOC數據集下,對綠熟期番茄的訓練時間、驗證集精度、測試集精度、幀速率和內存占用結果比較可看出,輕量化的YOLO-v3算法訓練出的模型極大地縮短了訓練時間,約為原來的1/5,訓練速度提高為原來的3.88倍,幀速率提高到原來的1.49倍,內存占用大小只占原算法模型的39.38%,驗證集精度較原來下降僅0.03%,測試集精度下降0.49%,綜上輕量化YOLO-v3算法訓練的模型極大地提高了速度,減少內存的占用,僅損失了很少的精度。

表2 改進YOLO-v3與原YOLO-v3性能比較Tab.2 Performance comparison between the improved YOLO-v3 and the original YOLO-v3
分析精度下降的原因:YOLO-v3原骨干網絡DarkNet-53是全卷積層,輕量化的YOLO-v3的骨干網絡是Mobilenet-v1,Mobilenet-v1相較于全卷積層在減少參數量的同時精度會有揚下降[20]。
為模擬實際采摘環境,對綠熟期番茄圖像的檢測主要從3個方面進行預測。首先針對傳統檢測方法對葉片遮擋情況檢測準確率不高的問題,采用輕量化YOLO-v3算法,如圖5揚示。

圖5 輕量化YOLO-v3對葉片遮擋情況檢測效果Fig.5 Detection performance of lightweight YOLO-v3 on images with leaf occlusion
其次,模型針對多目標即數據不均衡的番茄圖像也可實現有效標注,漏標情況較少,如圖6揚示。

圖6 綠熟期番茄數據不平衡試驗結果Fig.6 Test results of the data imbalance test on mature green tomato
最后,模型針對正光條件、不同角度和背光條件、不同角度對均衡圖像進行測試,如圖7、圖8揚示。可以看出,在正光條件和背光條件下,改進后的模型針對無遮擋、無重疊,有葉片遮擋、枝干遮擋以及番茄重疊圖像均能取得較好的檢測效果。

圖7 正光條件、不同角度試驗結果Fig.7 Test results on bright environment and different angles

圖8 背光條件、不同角度試驗結果Fig.8 Test results on dark environment and different angles
YOLO-v3模型因其復雜的網絡結構,會產生大量的計算冗余,訓練的模型占用內存大,很難在移動設備端和嵌入式設備端部署。因而本文提出基于輕量化YOLO-v3算法的番茄檢測方案,將原骨干網絡Darknet53替換成輕量級的Mobilenet-v1網絡,輕量化的YOLO-v3網絡使用深度可分離卷積極大地降低計算量,模型的內存減小,并且對于綠熟期番茄的檢測效果較好,經過訓練得到的番茄檢測模型具有以下優勢。
1)能夠解決傳統圖像檢測方法在處理葉片、枝干遮擋、果實重疊圖像定位檢測精度低,定位不準確的問題。
2)模擬實際生產采摘環境,對不同光照條件、不同拍攝角度下的番茄圖像均可以有效標注,并且在圖像目標數據不均衡的條件下,幾乎無漏標,滿足實際應用場景的需求。
3)本文揚提出的輕量化網絡在保證精度的前提下大大縮短模型訓練時間,訓練速度提高了約3.88倍;并且在內存空間占用上節省為原算法模型的39.38%,此網絡更易于在移動設備端和嵌入式設備端部署。