李慶松,康麗春,饒洪輝,李澤鋒,劉木華
(江西農(nóng)業(yè)大學工學院,南昌市,330045)
中國是油茶種植面積最大的國家,由于油茶林地環(huán)境比較復雜,目前主要依靠手工收獲[1]。在農(nóng)業(yè)勞動力緊缺、采摘成本不斷增加的情況下,以油茶果采摘機器人代替人工采摘具有重要的現(xiàn)實意義和廣闊的應用前景[2]。由于油茶果顏色與枝葉顏色相近,果實密集分布、重疊、體積小或受枝葉遮擋的現(xiàn)象嚴重[3]。因此,對復雜環(huán)境下油茶果實的特征學習從而準確識別重疊與遮擋的油茶果是油茶果采摘機器人亟待解決的關鍵性問題[4]。
目前,國內(nèi)外學者對重疊與遮擋果實的識別算法進行了大量研究[5-10]。劉麗娟等[11]使用YUV空間U、V分量對重疊與遮擋蘋果圖像進行分割,該方法有較高的識別精度和較快的識別速度,但由于蘋果非標準圓形,對單一目標會出現(xiàn)過分割的問題。劉妤等[12]針對自然環(huán)境下重疊柑橘,提出了一種基于輪廓曲率和距離分析的分割方法,該算法相比Hough變換定位誤差較小,但算法實用性有待提高。雖然上述方法在解決重疊與遮擋果實識別的問題上具有一定的魯棒性,但識別目標主要是與背景顏色不同且體積較大的果實。
油茶果作為特有的木本油料作物,近年來,我國學者對自然環(huán)境下油茶果的識別也進行了大量研究。如陳斌等[13]利用Faster-RCNN網(wǎng)絡對自然環(huán)境中的油茶果圖像進行檢測,該算法在相鄰、單獨和密集分布果實的識別上有較好的準確率和召回率,但對存在重疊和遮擋果實的檢測效果不佳。張習之等[14]在原有自編碼機的基礎上進行改進,并利用金字塔池化模型融合高階特征,試驗表明,該算法油茶果識別準確率為90.4%,但單張圖片的檢測速度較慢。李立君等[15]通過凸殼理論對遮擋和重疊油茶果的輪廓進行重建從而識別被遮擋和重疊的油茶果,改算法的識別準確率比自編碼機高,但也存在檢測速度較慢的問題。
YOLOv4-Tiny是YOLOv4的輕量化版本,該算法兼顧識別準確率和識別速度,在果實圖像識別中尤其是小目標檢測中有一定的效果,但檢測精度還有待提高。因此本文在YOLOv4-Tiny網(wǎng)絡的基礎上,針對現(xiàn)有算法在遮擋或重疊油茶果識別上識別準確率低、檢測速度慢的問題,提出了一種基于改進YOLOv4-Tiny的自然環(huán)境下油茶果識別方法,以期提高被遮擋和重疊油茶果的識別準確率和速度。
2019年10月在江西省南昌市油茶良種種植基地使用索尼相機采集油茶果圖像2 376幅,圖像分辨率為640×480,采集油茶品種為贛無1。采集到圖像包含單個油茶果的圖像幅1 074幅,復雜光照(順光、逆光、自然光照、陰天、燈光照射)下的油茶果圖像286幅,存在枝葉遮擋的油茶果圖像幅272,多個且存在重疊油茶果圖像357幅,多個且不重疊油茶果圖像387幅(相鄰果實圖像179幅,獨立果實圖像208幅)。為了減少后期神經(jīng)網(wǎng)絡提取特征時對硬件處理的壓力和縮短運算時間,將圖像的分辨率縮放為416×416。使用labelimg標注軟件對縮放后的油茶果圖像進行標注,并生成XML類型的標注文件,數(shù)據(jù)集標注的格式為PASCAL VOC。
增強后圖像分別如圖1所示。
(a) 原圖
訓練卷積神經(jīng)網(wǎng)絡需要大量的樣本數(shù)據(jù),過小的樣本數(shù)據(jù)易導致網(wǎng)絡在學習過程中發(fā)生過擬合,因此需要對數(shù)據(jù)樣本進行增強,以提高算法的魯棒性和模型的泛化能力。本文使用水平翻轉(zhuǎn)、旋轉(zhuǎn)、添加噪聲、高斯濾波(gaussian blur)和顏色抖動(對圖像的亮度、對比度和飽和度進行調(diào)整)等方法對采集到的圖像數(shù)據(jù)進行增強,使數(shù)據(jù)集更加豐富性、多樣化,提升樣本質(zhì)量[16]。樣本數(shù)據(jù)增強時需對每幅圖像對應的XML文件進行同步變換。
每幅圖像生成7幅增強圖像,共得到19 005幅圖像。訓練集和驗證集與測試集按照9∶1的比例隨機從樣本數(shù)據(jù)中獨立同分布采樣得到,其中訓練集和驗證集之和為17 104幅,測試集1 901幅。隨之訓練集與驗證集也按照9∶1的比例隨機從劃分到的樣本數(shù)據(jù)中獨立同分布采樣得到,其中訓練集15 394幅,驗證集1 710幅。
YOLOv4-Tiny是YOLOv4的輕量化版本,使用CSPDarknet53-Tiny作為特征提取的主干網(wǎng)絡,整個主干網(wǎng)絡共有38層。為了提高檢測速度,使用Leaky激活函數(shù)代替YOLOv4網(wǎng)絡中的Mish激活函數(shù)。整個網(wǎng)絡共有600萬參數(shù),僅為YOLOv4參數(shù)的十分之一。雖然檢測精度有所降低,但大大提高了檢測速度,滿足實時檢測的需求,且對硬件要求低,極大地提高了將目標檢測方法部署在移動設備或嵌入式系統(tǒng)上進行戶外實時檢測目標的可行性[17]。
原始YOLOv4-Tiny網(wǎng)絡的兩個有效輸出特征圖分別經(jīng)過16倍和32倍下采樣得到,感受野較大,適用于檢測中、大目標。自然環(huán)境下遮擋或重疊油茶果的顯著區(qū)域較小,屬于小目標檢測,且油茶果顏色與周圍枝葉顏色相近,若使用原始YOLOv4-Tiny網(wǎng)絡的兩個有效輸出特征層(P4和P5)對油茶果進行特征提取時,易丟失邊緣特征信息,造成部分遮擋或重疊的油茶果出現(xiàn)錯檢和漏檢的現(xiàn)象。而對原始圖像做8倍下采樣的第二個CSPNet結(jié)構(gòu)包含較多遮擋和重疊的細節(jié)特征,因此本文在原有YOLOv4-Tiny網(wǎng)絡中添加52×52(P3)的檢測分支,并將P3輸出通道經(jīng)過卷積和下采樣與P4相連,以減少訓練過程中油茶果邊緣特征信息的丟失,降低目標因被遮擋和重疊導致的錯檢和漏檢的概率,不僅提升了網(wǎng)絡的檢測范圍,而且使淺層特征信息更加豐富。為了降低YOLOv4-Tiny網(wǎng)絡的參數(shù)量,將第一個CSPNet結(jié)構(gòu)中第2層的3×3卷積換成1×1卷積。改進后的YOLOv4-Tiny骨干網(wǎng)絡如圖2所示。
圖2 改進的骨干網(wǎng)絡
由于原有YOLOv4-Tiny骨干網(wǎng)絡的深度較深,在訓練過程中易導致感受野發(fā)生偏差,使網(wǎng)絡無法有效融合全局特征,從而丟失特征信息[18]。針對此問題,本文將金字塔池化模型(Pyramid Pooling Module,PPM)引入到第四個CSPNet結(jié)構(gòu)中,使用4種不同的平均池化窗口(1×1、2×2、3×3、6×6)將高層次特征信息向低層次特征映射,通過跳躍連接將未經(jīng)過池化的特征層的高層語義信息與經(jīng)過池化的特征層的淺層特征信息進行級聯(lián)融合,保留全局信息,以克服被遮擋或重疊油茶果因網(wǎng)絡加深時模型的表征能力不足所帶來的網(wǎng)絡性能損失。金字塔池化模型的結(jié)構(gòu)如圖3所示。
圖3 CSP_PPM結(jié)構(gòu)
原有YOLOv4-Tiny網(wǎng)絡包含2個有效輸出特征層,共6個先驗框(anchors),改進后的YOLOv4-Tiny網(wǎng)絡包含3個有效輸出特征層,因此網(wǎng)絡訓練過程中需要9個先驗框。為此本文使用K-means算法對19 005幅圖像標注文件中的目標位置信息進行計算,并聚類出適合本文數(shù)據(jù)集的先驗框,以提高bounding box的檢出率。K-means聚類出的9個先驗框的聚類中心如圖4所示。
圖4 K-means聚類
由圖4可知,聚類出的9個先驗框分別為(20,25)、(34,43)、(54,57)、(76,88)、(129,175)、(161,219)、(183,254)、(208,279)和(236,314)。K-means聚類算法采用bounding box與ground truth之間的交并比作為衡量每幅圖像應該劃進那一簇。K-means算法距離的計算如式(1)所示。
d(box,centroid)=1-IOU(box,centroid)
(1)
式中:d——每幅圖像與聚類中心之間的距離;
IOU——bounding box與ground truth之間的交并比;
box——bounding box;
centroid——聚類中心。
使用Pytorch框架搭建CNN網(wǎng)絡,并在臺式計算機上進行訓練。其配置為Inter(R) Core(TM) i5-9400F CPU@2.90 GHz×6,32 GB內(nèi)存和顯存6 GB的GeForce GTX1660Ti,使用的系統(tǒng)為Windows10,安裝了CUDA和cuDNN庫,Python版本為3.6.13,Pytorch版本為1.2。
網(wǎng)絡訓練的batch_size前30輪設為16,后70輪設為4,共迭代100輪;學習率(learning_rate)前30輪為10-3,后70輪設為10-4;模型優(yōu)化器選用隨機梯度下降(SGD),根據(jù)訓練模型梯度下降的程度對初始學習率進行動量減少,以達到更好的模型收斂結(jié)果,將動量參數(shù)(momentum)設為0.937;為了加快模型收斂,采用YOLOv4-Tiny網(wǎng)絡模型的預訓練權重;為了防止在模型訓練過程中發(fā)生過擬合,設置權值衰減(weight_decay)為5×10-4。
訓練過程中每迭代完一個epoch,使用驗證集對模型訓練效果進行評估,計算模型的平均準確率均值mAP、準確率P、F1值和召回率R這4個指標,并將數(shù)據(jù)保存在日志文件中。準確率P、召回率R以及F1值的計算公式如下。
(2)
(3)
(4)
式中:TP——被模型預測為正類的正樣本;
FP——被模型預測為正類的負樣本;
FN——被模型預測為負類的正樣本;
TN——被模型預測為負類的負樣本。
訓練結(jié)束后,從保存在日志文件中的數(shù)據(jù)讀取每迭代一個epoch后模型的訓練Loss值和驗證Loss值并繪制如圖5所示的Loss曲線。
圖5 損失值變化曲線
由圖5可知,隨著訓練迭代次數(shù)的增加,模型的訓練損失值和驗證損失值不斷減少,且訓練集和驗證集之間的分類誤差逐漸降低。當訓練迭代到第30輪左右時,訓練損失曲線趨于穩(wěn)定,沒有發(fā)生過擬合和欠擬合現(xiàn)象,表明網(wǎng)絡模型達到了預期的訓練效果。改進后的YOLOv4-Tiny算法的訓練損失值收斂于0.013,趨近于0,表明改進后YOLOv4-Tiny網(wǎng)絡模型的識別精度較高,各項超參數(shù)設置合理。
為了驗證改進后YOLOv4-Tiny算法模型的穩(wěn)定性與可靠性,選取迭代次數(shù)為100時保存的權重文件作為模型最終的訓練結(jié)果,對該算法在1 901幅測試集上油茶果的識別效果進行進一步分析。通過分析結(jié)果可知,本文算法在測試集上的召回率為86.15%,mAP為94.19%,F1值為0.9,準確率為94.76%。本文算法在不同環(huán)境下油茶果的識別效果如圖6所示。
(a) 遮擋果實
如圖6(a)和圖6(b)所示,當圖像中的油茶果被枝葉遮擋或油茶果之間發(fā)生重疊時,該算法可以準確識別處圖像中被遮擋或存在重疊的油茶果,但預測框與真實框之間的交并比小于無遮擋或無重疊現(xiàn)象油茶果的交并比。如圖6(c)所示,該算法在密集分布的油茶果圖像識別時的準確率較高,但仍有極少數(shù)油茶果未被識別到,這是因為處于遠景位置的油茶果特征信息少,不易被網(wǎng)絡識別到。
從圖6可以看出,改進后的YOLOv4-Tiny算法不僅適用于相鄰和獨立分布的油茶果圖像的識別,也適用于遮擋、重疊及密集分布的油茶果圖像的識別,并且在較模糊的油茶果圖像識別效果上也有較好的表現(xiàn)。雖然圖6中預測框的位置因油茶果存在遮擋或折疊稍有偏離油茶果實際區(qū)域,但整體而言油茶果的主要區(qū)域已被識別到,且本文算法識別單幅油茶果圖像僅需0.025 s,滿足實時采摘的要求。
為了驗證本文所提出的YOLOv4-Tiny改進措施的可行性,使用與本文改進算法相同的數(shù)據(jù)集和訓練超參數(shù)對傳統(tǒng)YOLOv4-Tiny網(wǎng)絡進行訓練,并在測試集上進行檢測,測試集共有1 901幅油茶果圖像。對改進前后YOLOv4-Tiny網(wǎng)絡的檢測時間與各項性能指標進行比較,網(wǎng)絡檢測時間如表1所示,召回率、mAP、F1值如表2所示。
表1 改進前后網(wǎng)絡檢測時間對比
表2 改進前后網(wǎng)絡性能對比
由表1和表2可知,改進后的YOLOv4-Tiny網(wǎng)絡相比于傳統(tǒng)YOLOv4-Tiny網(wǎng)絡,在相同測試集上檢測速度更快,網(wǎng)絡性能更好。改進后YOLOv4-Tiny網(wǎng)絡的召回率、mAP和F1值分別提高了1.2、0.34和2個百分點,單幅圖像的平均檢測時間減少了7.41%,檢測速度提高了3.87%。
相關文獻提出了基于自然環(huán)境下油茶果圖像的識別方法,為了進一步分析本文所提出的算法性能,與Faster-RCNN[13]、自編碼機[14]、凸殼理論[15]3種常規(guī)方法進行比較,結(jié)果如表3所示。
表3 不同油茶果識別方法的性能比較
從表3可以看出,Faster-RCNN的F1值和識別準確率比本文算法的F1值和識別準確率分別高6.04和4.16個百分點,但其針對的主要是密集、相鄰和獨立果實檢測的檢測效果,關于遮擋和重疊果實的識別準確率和F1值未提及,就單幅圖片的檢測時間而言,該算法的檢測時間是本文算法的8.4倍,檢測時間較長。自編碼機的識別準確率比本文算法降低了4.36個百分點,且單幅圖片的檢測時間遠大于本文算法檢測時間。凸殼理論算法的識別準確率與本文算法相近,但單幅圖片的檢測時間是本文算法的19.64倍,檢測時間較長。與上述3種常規(guī)算法相比,改進后的YOLOv4-Tiny網(wǎng)絡對遮擋、重疊、密集等復雜環(huán)境下油茶果的識別準確率位于第2,檢測單幅圖片的時間最少,綜合效果較優(yōu),且檢測速度滿足實時采摘的要求。
1) 在原有YOLOv4-Tiny網(wǎng)絡的兩個有效輸出特征層的基礎上增加了一個大尺度有效輸出特征層,并引入金字塔池化網(wǎng)絡對高、淺層特征信息進行融合,使網(wǎng)絡學習更多遮擋和重疊目標信息。使用K-means算法聚類出適合本文數(shù)據(jù)集的先驗框,提高模型檢測效果。
2) 改進后的YOLOv4-Tiny算法在PASCAL VOC測試集數(shù)據(jù)上的召回率為86.15%,mAP為94.19%,F1值為0.9,比改進前分別提高了1.2、0.34和2個百分點;改進后該算法在單幅圖片的平均檢測時間為0.025 s,檢測速度為40.45 f/s,比改進前檢測時間減少了7.41%,檢測速度提高了3.87%,滿足實時采摘的要求。
3) 本文算法的識別準確率比自編碼機和凸殼理論分別提高4.36和1.55個百分點,比Faster-RCNN降低了4.16個百分點,Faster-RCNN、自編碼機和凸殼理論的單幅圖片檢測時間分別是改進后算法的8.4、66.4和19.64倍。