陳文,余康,李巖舟,陳遠玲,胡珊珊,喬曦
(1. 廣西大學機械工程學院,南寧市,530004; 2. 中國農業科學院深圳農業基因組研究所,廣東深圳,518000)
中國的甘蔗種植面積排名世界第三。然而,由于甘蔗破頭率、含雜率高,刀具磨損嚴重,傳統的甘蔗收獲機械多年仍未解決其機構穩定性、地貌適用性差及收獲質量不滿足糖料生產需求等問題。因此,目前甘蔗收割主要仍依靠人工操作。相比之下,人工收割質量高,操作靈活,但效率低、勞動密集度高。為解決傳統機械化甘蔗收割的問題,有必要從人類收獲甘蔗的行為上找到解決方法。若同時結合機器收割的高效率及人工收割的準確性,可為解決破頭和刀具磨損提供有效思路。因此,模仿人工收割的視覺識別和判斷甘蔗節砍斷位置是實現智能化甘蔗收獲作業的第一步。
在對甘蔗莖節的識別研究中,Moshashai等[1]首先通過比較甘蔗不同部分的直徑,研究了甘蔗莖節點的識別方法。陸尚平等[2]提出了一種基于支持向量機的甘蔗莖節特征提取與識別方法。黃亦其等[3]通過sob算子尋找灰度圖像的邊緣,再使用randon變換檢測和定位甘蔗莖節點。李尚平等[4]通過改進YOLO v3算法,建立去皮甘蔗莖節點的智能識別模型。Meng等[5]提出了一種基于多閾值和多尺度小波變換的甘蔗節點識別算法,運用于去皮甘蔗的莖節點識別。Zhou等[6]提出了一種基于Sobel邊緣檢測的甘蔗莖節識別方法,以滿足甘蔗切種機的工作要求。Chen等[7]提出了基于垂直投影函數最小點局部像素和的甘蔗節點識別算法,分析了單節點和雙節點的識別。
上述方法更適合在實驗室恒定光照和剝葉后的莖節識別,對本文所研究的田間蔗葉包裹、背景復雜下的莖節識別效果未知。
YOLO系列算法及其改進的方法[8-9]在農業領域已被廣泛應用,但這些方法具有復雜的網絡結構和大量的網絡參數,故利用它們在嵌入式設備和移動設備上實現實時目標檢測是一個很大的挑戰。為了解決這個問題,許多研究人員提出了輕量級目標檢測算法[10],其網絡結構相對簡單,參數也較少。YOLOv4-tiny[11]就是一種基于YOLOv4[12]改進的最先進的輕量級目標檢測算法,相對于YOLOv4算法,它進一步簡化了網絡結構和網絡參數,提高了網絡推理速度。
輕量級網絡設計和模型剪枝技術是減少深度學習模型的參數量和復雜度上常用的兩種方法,輕量級網絡設計主要是對算法的結構進行更改。例如:MobileNet[13]系列算法被運用于改進目標檢測算法上,如MobileNet-YOLO[14]、MobileNet-SSD[15]。而模型剪枝技術是對算法訓練完成后識別模型中不起作用的網絡通道并裁剪,以達到減小復雜度的目的。為了進一步優化YOLOv4-tiny算法,本文分別運用了這兩種方法對基于YOLOv4-tiny的甘蔗莖節識別算法進行了改進并通過試驗進行比較。
甘蔗莖節圖像的采集工作在廣西崇左市扶綏縣廣西大學農科新城基地完成,甘蔗品種為桂糖8號,甘蔗采集位置為靠近根部莖節位置,圖像獲取時間為8:00~19:00。為保證數據集盡可能與實際田間環境相似,采用包含不同光強度的陰天和晴天數據,從而確保了該方法對不同照明的適應性。采集數據量為735張,通過數據增強方法對數據集進行進一步的擴充,使總數據量到達5 880張。文中采用的數據增強方法為旋轉(左右旋轉45°、旋轉90°)、鏡像翻轉、亮度調節(亮度分別調為原來的1.3倍和0.7倍),如圖1所示。總數據量按照8∶1∶1的比例劃分訓練集、驗證集和測試集。

(a) 原圖

(b) 亮度0.7倍

(c) 亮度1.3倍

(d) 鏡像翻轉

(e) 左轉45°

(f) 旋轉90°

(g) 右轉45°
為降低移動和嵌入式平臺的算力需求,不能直接采用已有的大型深度學習視覺識別算法。因此本文嘗試利用輕量級卷積神經網絡作為目標檢測模型的特征提取網絡。為此,本文先對各特征提取網絡和目標檢測技術進行簡介。
1.2.1 MobileNet v1
MobileNet v1[13]是2017年提出的一種適用于移動和嵌入式平臺的輕量級卷積神經網絡。它主要是提出了一種深度可分離卷積模型,其將標準卷積分解為兩個步驟:深度卷積和點卷積(1×1卷積)。其分解過程如圖2所示。假設輸入與輸出的長×寬不變,標準的卷積過程是將輸入為Df×Df×M的輸入層轉化為維度為Df×Df×N的輸出層,其中Df×Df是輸入特征圖的長×寬,M是輸入通道數,N為輸出通道數。假設卷積核過濾器的大小為DK×DK,傳統標準卷積的計算量如式(1)所示。對于深度可分離卷積來說,卷積執行的計算分兩步,先用深度卷積對通道進行卷積,再用點卷積對通道數進行調整,深度可分離卷積的計算量如式(2)所示。
C1=Df2×M×N×Dk2
(1)
C2=Df2×M×Dk2+Df2×M×N
(2)
因此,深度可分離卷積與傳統標準卷積的參數量計算比為
(3)
實際上,在深度方向上可分離的卷積網絡中經常使用3×3卷積核,而輸出通道的數量N很大。因此,深度可分離卷積的參數量約為傳統標準卷積的1/9,從而到達降低網絡復雜度的目的。

圖2 深度可分離卷積模型
1.2.2 MobileNet v2
MobileNet v2網絡[16]在MobileNet v1基礎上提出了反向殘差網絡結構,而殘差網絡結構是何凱明等[17]在ResNet一文中提出的,兩者的結構如圖3所示。

(a) MobileNet v1中的線性塊

(b) ResNet50中的標準殘差塊

(c) MobileNet v2中的反向殘差塊
如圖3(c)所示,反向殘差結構是在深度卷積之前加一個1×1的卷積,目的在于提升通道的數量,獲取更多的圖像特征。因為深度卷積自身無法改變通道數量,輸出通道數量取決于上層輸出的通道數量,若上層通道數量較少,使得深度卷積在低維度無法獲得較好的特征,最后再使用一個1×1卷積進行降維操作,不再使用激活函數ReLu6(Rectified Linear Unit 6)對輸出特征進行操作,因為在低維度空間ReLu6層會破壞特征。ReLu6的定義如式(4)所示。
ReLu6(x)=min(max(x,0),6)
(4)
1.2.3 MobileNet v3
MobileNet v3網絡[18]吸收了MobileNet v1和MobileNet v2網絡的優勢,在反向殘差網絡結構上引入了SE(Squeeze-and-Excitation)注意力機制模塊,并且引入了新的激活函數。圖4(a)展示了MobileNet v3特有的倒殘差結構:SE Net[19]注意力模塊如圖4(b)所示,它是一種復雜度低、計算量小的簡單有效的注意力機制網絡模型,主要分為Squeeze和Excitation兩個部分。

圖4 MobileNet v3的反向殘差結構
Squeeze是將輸入進來的特征圖進行全局平均池化的壓縮處理,得到1×1×C大小的特征圖,這個特征圖具有H×W維的全局感受野。Exicitation操作是使用一個Fully Connection對1×1×C的特征圖進行非線性變換,預測每一個通道的重要性,然后再經過ReLu6和Fully Connection操作。使用兩個Full Connection層是為了增加非線性,更好地擬合通道之間的相關性。在激活函數上,引入了Hard-swish和Hard-sigmoid,定義如式(5)、式(6)所示,其有利于減少參數量,提高神經網絡的準確度。
(5)
(6)
本文選用了MobileNet v1、MobileNet v2和MobileNet v3三種適用于移動和嵌入式平臺的輕量級卷積神經網絡來優化YOLOv4-tiny算法的特征提取網絡,這一系列網絡在充當目標檢測算法的骨架中,可以很好地降低模型的計算量和復雜度,應用較為廣泛。
1.2.4 YOLOv4-tiny
YOLO(You Only Look Once)系列算法是目前最流行的一種一階段目標檢測算法。但由于YOLO網絡的深層次結構和巨大的參數量,一般的移動式設備和嵌入式設備難以滿足,于是各種輕量級目標檢測算法[10-11]被提出,而YOLOv4算法的簡化版本YOLOv4-tiny[11]是最先進的YOLO輕量級檢測算法,其參數量只有YOLOv4的1/10。圖5展示了YOLOv4-tiny的網絡結構。

圖5 YOLOv4-tiny模型
YOLOv4-tiny算法使用CSPDarknet53-tiny網絡作為骨干網絡替換了YOLOv4算法使用的CSPDarknet53網絡。CSPDarknet53-tiny在跨級網絡這部份使用了CSPBlock模塊而不是原先的ResBlock模塊。CSPBlock模塊把特征圖分成兩部分,再通過跨級殘差網絡把其結合起來,這使得梯度流可以在兩種不同的網絡路徑上傳播,進一步豐富了梯度信息。為了進一步簡化計算過程,YOLOv4-tiny算法使用了Leaky relu函數代替原先使用的Mish 激活函數。Leaky relu函數的定義如式(7)所示。
(7)
其中?i∈(0,+∞),它是一個常數。
在特征融合部分,YOLOv4-tiny算法使用FPN(Feature Pyramid Network)提取不同尺度的特征圖來提高目標檢測速度,替換YOLOv4 算法中的SPP(Spatial Pyramid Pooling)和PAN(Path Aggregation Network)。同時,Yolov4-tiny只使用13×13和26×26這兩種不同尺度來預測檢測結果。
1.2.5 YOLOv4-tiny的預測過程
首先,YOLOv4-tiny算法調整輸入圖像的大小,使所有的輸入圖像都具有相同的固定大小。其次,將輸入圖像分成大小為S×S的網格,每個網格都將使用B個邊界框來檢測對象。
因此,它將為輸入圖像生成S×S×B邊界框,且生成的邊界框覆蓋整個輸入圖像。如果某個物體的中心落在某個網格中,網格中的邊界框將預測該對象。為了降低預測過程中邊界框的冗余性,設置了置信度閾值。如果邊界框的置信度高于置信度閾值,則保留邊界框,否則將刪除邊界框。邊界框的置信度得分如式(8)所示。
(8)

表示預測框與真實邊界框的交集。分數越高,說明預測框越接近于真實邊界框。YOLOv4-tiny的損失函數和YOLOv4一樣,主要由以下三部分組成,如式(9)所示。
loss=loss1+loss2+loss3
(9)
式中:loss1——置信度損失函數;
loss2——分類損失函數;
loss3——邊界框回歸損失函數。
1.2.6 YOLOv4-tiny的訓練過程
圖6顯示YOLOv4-tiny在訓練期間的總損失函數曲線,可以看出,甘蔗莖節檢測模型在訓練的前30個epoch,模型的學習效率較高,訓練曲線的收斂速度較快。隨著訓練的深入,損失曲線斜率逐漸減小。最后在第80個epoch的時候,模型的學習效率達到飽和,Loss只在1.2左右略有波動。

圖6 YOLOv4-tiny甘蔗莖節檢測模型的訓練損失函數
訓練好的YOLOv4-tiny算法模型對甘蔗莖節檢測的效果如圖7所示。
從圖7可以看出,在隨機選取采集到的甘蔗莖節的3幅圖像中,該算法能夠完全檢測出甘蔗莖節,說明本文所采用的YOLOv4-tiny算法可以滿足對田間甘蔗莖節識別的要求。這為下一步的網絡瘦身和輕量化改進奠定了基礎。

(a) 早上

(b) 中午

(c) 傍晚
1.2.7 模型性能評估
為了驗證兩種模型的性能,本研究采用精度P、召回率R、mAP、Params(模型參數量)、FLOPs(模型的浮點運算數)和檢測速度6個指標進行評估。其計算公式如式(10)~式(15)所示。其中mAP是檢測到甘蔗莖節時AP(Average Precision)的平均值,該值越高,說明算法的檢測性能越好,在重要性上AP>P=R。Params和FLOPs是衡量模型復雜度的指標,該值越低,說明模型的復雜度越低,對運算平臺越友好。
(10)
(11)

(12)
(13)
FLOPs=2×H1×W1(CinK2+1)Cout
(14)
Params=Cin×K2×Cout
(15)
式中:H1——輸入圖像的寬;
W1——輸入圖像的高;
K——卷積核大小;
Cin——輸入的卷積核個數;
Cout——輸出的卷積核個數;
TP——真陽性個數;
FP——假陽性個數;
FN——假陰性個數;
C1——檢測目標的類別數量在本文中僅檢測甘蔗莖節,故其為1。
本文提出兩個研究方案——基于MobileNet的YOLOv4-tiny識別算法和基于網絡瘦身的YOLOv4-tiny識別算法,通過對比二者對田間環境甘蔗莖節識別的精度和模型復雜度來確定其優劣。具體的模型構建方法如下。
如圖8所示,YOLOv4-tiny的Backbone為CSPDarknet53-Tiny,它的主要作用是處理輸入的圖像,將提取到的圖像特征傳遞給FPN做進一步的特征融合。

圖8 MobileNet-YOLOv4-tiny
本文使用MobileNet系列網絡作為YOLOv4-tiny的Backbone來設計輕量級網絡結構。在YOLOv4-tiny的網絡結構中,輸入的圖像尺寸為416×416,然后Backbone分別將其26×26和13×13的特征層傳入了FPN結構中。
在Backbone-MobileNet v1中,它主要由深度可分離卷積模塊堆疊而成,將其26×26和13×13的特征層作為FPN的輸入層。在Backbone-MobileNet v2和Backbone-MobileNet v3它們的輸出層大小均和MobileNet v1相同,圖8展示了他們的具體結構。
YOLOv4-tiny在擁有80個類別數的COCO數據集的測試上取得了不錯的成績,其平均精度達到40.2%[11],但本文的數據集只取甘蔗莖節一個類別,訓練好的網絡模型上可能存在大量的冗余參數。故對模型進行進一步的修剪,有利于在移動式和嵌入式設備上進行部署。
網絡瘦身算法[20]的作用原理是通過識別網絡通道來消除不起作用的通道及其相關的輸入和輸出關系。其可以有效減小模型大小和運行時占用的內存,在幾乎不影響識別精度的同時,降低了計算量。如圖9所示,在對YOLOv4-tiny進行通道修剪過程中,批歸一化(BN)層的Gama系數直接被選作為網絡瘦身的縮放因子,用于評估輸入通道的重要性,沒有引入新的參數,降低了操作的難度。根據Gama系數的分布和所設置的修剪率,保留了起作用大的通道(藍色實線),并刪除起作用低的通道(橙色虛線)。
1) 正常訓練。訓練出一個收斂且精度高的YOLOv4-tiny甘蔗莖節識別模型。
2) 稀疏訓練。將L1正則約束應用于YOLOv4-tiny甘蔗莖節檢測模型的BN層的系數,在稀疏訓練過程中,模型內不起作用的網絡層所對應的縮放因子會趨向于0。
3) 進行網絡瘦身。稀疏訓練完成后,按設置好的修剪比例執行通道修剪,以生成占用較少內存空間的簡化模型。
4) 微調修剪后的模型。主要目的是克服通道修剪后模型精度損失過大的問題,可以有效恢復損失的精度。

圖9 網絡瘦身過程
網絡瘦身算法中的總損失函數如式(16)所示。其中第一項是網絡的訓練損失,第二項是BN層的Gama(γ)系數的L1正則約束項。
L=∑(x,y)l(f(s,W),y)+λ∑γ∈Γ(g(γ))
(16)
式中:x——模型訓練的輸入;
y——模型訓練的輸出;
W——網絡中的訓練參數;
λ——懲罰因子。
網絡瘦身過程的主要參數設置如表1所示。
如圖10(a)所示為正常訓練時BN層的γ系數的分布圖,可以看出γ值主要分布在1周圍。圖10(b)為稀疏訓練時BN層的γ系數的分布圖。隨著稀疏訓練的繼續,所有BN層的γ系數中心逐漸接近0,但并未全部衰減到0,這表明γ系數逐漸變得稀疏。直到第120個epoch的稀疏變化才逐漸變得微弱,這表明稀疏訓練已經飽和。

表1 網絡瘦身的主要參數設置Tab. 1 Main parameter settings of network slimming
稀疏訓練后,在保證精度不大幅度下降的前提下,本文選擇了0.6的剪枝率來對稀疏訓練后的YOLOv4-tiny甘蔗莖節檢測模型進行通道剪枝。一共剪掉 1 517 層通道,被修剪層的通道數前后變化如圖11所示。

(a) 正常訓練時BN層的γ系數分布

(b) 稀疏訓練時BN層的γ系數分布

圖11 被修剪層的前后通道數變化
試驗環境為Intel 5218×2、2.3 GHz處理器,64 GB RAM,500 GB硬盤和11 GB NVIDIA RTX 2080Ti GPU。算法的開發語言為Python3.6,深度學習框架為Pytorch。
為了驗證所提方法的有效性,使用測試集558張甘蔗莖節圖像進行了測試,結果如表2所示。在輕量化網絡設計方法中,嘗試使用不同MobileNet作為YOLOv4-tiny的Backbone進行特征提取,可以發現MobileNet v1-YOLOv4-tiny、MobileNet v2-YOLOv4-tiny和MobileNet v3-YOLOv4-tiny均可以顯著降低模型的復雜度、減少計算量,在平均精度AP上,分別為86.35%、92.78%、90.38%,在模型大小上分別為13.7 M、16.5 M、22 M。其中,試驗結果表現最好的是MobileNet v2-YOLOv4-tiny,其參數量為2 600 068,比YOLOv4-tiny的5 876 411減少一半。最優模型MobileNet v2-YOLOv4-tiny的FLOPs為1.29 G,約為YOLOv4-tiny的2/5,同時也優于MobileNet v1-YOLOv4-tiny和MobileNet v3-YOLOv4-tiny。在速度上,它們分別為0.001 1 s、0.014 s和0.017 5 s,均慢于原算法的0.009 9 s。主要原因是目前所用的GPU并未對深度可分離卷積做專門的優化推理[21]。綜上分析得知,輕量化結構設計中的MobileNet v2更適合作為YOLOv4-tiny的Backbone。
在網絡瘦身方法中,經過網絡瘦身算法后的YOLOv4-tiny模型其復雜度大大降低,它的參數量、FLOPs、模型大小分別為1 789 658、1.1 G、6.3 M,而未瘦身前YOLOv4-tiny模型的參數量、FLOPs和模型大小分別為5 876 411、3.4 G、22.4 M,綜上所述,瘦身前的模型復雜度約為瘦身后的3倍,而平均精度AP下降了0.6%,速度上,模型瘦身前后并無變化。

表2 MobileNet-YOLOv4-tiny和YOLOv4-tiny網絡瘦身的試驗結果Tab. 2 Experimental results of MobileNet-YOLOv4-tiny and YOLOv4-tiny after network slimming
綜上可知,基于網絡瘦身算法的YOLOv4-tiny的精確度和模型復雜度均要優于方法一中所使用MobileNet的輕量化網絡結構設計方法。因此,可采用本文基于網絡瘦身的YOLOv4-tiny模型在保證精度不下降的情況下,降低模型本身的復雜度,有效滿足嵌入式或移動式設備在田間實現對甘蔗莖節的準確快速檢測。圖12為五種方法的甘蔗莖節檢測效果圖。
從效果圖中可看出以MobileNet v1和MobileNet v2為Backbone的YOLOv4-tiny無法檢測到圖像中左下角的甘蔗莖節,而MobileNet v2-YOLOv4-tiny對該節點的識別率也僅為0.13。這表明了MobileNet的特征提取效果不如原先的CSPDarknet53-tiny,在降低原算法的復雜度上,網絡瘦身是更優的選擇。

(a) 原圖

(b) YOLOv4-tiny

圖12 不同方法的甘蔗莖節檢測效果圖
基于深度學習的目標檢測算法已被學者用于眾多農作物檢測和識別任務中[22]。為了驗證所提方法的有效性和優越性,本研究選擇4種已被使用于農作物識別上目標檢測算法進行了比較,包括YOLOv4[23]、YOLOv3[24]、YOLOv3-tiny[25]、SSD[26]。使用訓練集對上述幾種算法進行訓練,然后使用測試集評估算法的性能。測試結果如表3所示。

表3 五種算法的對比結果Tab. 3 Comparison results of five algorithms
從測試結果分析可以看出,本文所采用的基于網絡瘦身法的YOLOv4-tiny算法的速度、模型大小、FLOPs、Params均遠勝于其他四種算法。在平均精度AP上該方法分別比YOLOv4和YOLOv3低0.9%和0.2%,但參數量只為它們的1/60,FLOPs約為它們的1/30。與SSD和YOLOv3-tiny相比,在保持模型的復雜度遠低于它們的同時,其平均精度AP分別比SSD和YOLOv3-tiny高出0.93%和0.1%。綜上所述,本文提出的基于網絡瘦身算法的YOLOv4-tiny的甘蔗莖節識別模型不僅復雜度低,對嵌入式設備和移動式設備友好,還能保持較高的識別精度。
為了進一步降低基于YOLOv4-tiny算法的甘蔗莖節識別模型的復雜度,減少對嵌入式設備和移動式設備的算力需求,本文使用MobileNet對原算法進行輕量化結構設計和使用網絡瘦身算法對原算法模型進行剪枝,并對這兩種方式進行了對比分析,得出主要結論如下。
1) 在使用輕量級網絡MobileNet作為YOLOv4-tiny的Backbone來降低網絡復雜度的試驗中,以MobileNet v2作為Backbone的試驗效果最好。在精度只下降2.08%的前提下,其模型大小、參數量和FLOPs分別為原算法模型的73.7%、37.9%和44.2%。這表明該方式可有效降低模型的復雜度,但會損失一定的準確率。
2) 在基于網絡瘦身算法的YOLOv4-tiny的甘蔗莖節識別的試驗中,在精度只下降0.6%的基礎上,瘦身后的模型大小、參數量和FLOPs分別為原算法模型的28%、30.1%、32.4%。與輕量化結構改進試驗中表現最好的MobileNet v2-YOLOv4-tiny相比,其平均精度AP高出1.32%,且模型大小、參數量和FLOPs分別是MobileNet v2-YOLOv4-tiny的38%、85.3%和68.8%。
因此,基于網絡瘦身算法的YOLOv4-tiny甘蔗莖節檢測模型在保持較高識別精度的同時,能極大地降低模型的復雜度,這為未來智能化收割的應用提供了重要技術參考。