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