馬 帥,張 艷,周桂紅,劉 博
(河北農(nóng)業(yè)大學(xué) 信息科學(xué)與技術(shù)學(xué)院 / 河北省農(nóng)業(yè)大數(shù)據(jù)重點(diǎn)實(shí)驗(yàn)室,河北 保定 071001)
中國是世界上最大的梨生產(chǎn)國。在我國,梨是僅次于蘋果和柑橘的第三大水果,有著悠久的栽培歷史[1]。而河北省是梨的重要產(chǎn)區(qū),栽培面積和產(chǎn)量均為全國第一[2]。
近年來隨著人工智能的發(fā)展,工業(yè)、農(nóng)業(yè)等傳統(tǒng)行業(yè)通過人工智能技術(shù)改進(jìn)傳統(tǒng)的作業(yè)模式取得了良好的效果,而卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network)在圖像識別領(lǐng)域良好的表現(xiàn),被廣泛應(yīng)用于檢測圖像中目標(biāo)的場景中。Kang Hanwen等[3]采用LedNet 卷積神經(jīng)網(wǎng)絡(luò)對蘋果果實(shí)進(jìn)行檢測和識別,其召回率和精確率分別達(dá)到0.821和0.853,表明卷積神經(jīng)網(wǎng)絡(luò)在果實(shí)檢測場景中具有可行性。閆建偉等[4]將Faster RCNN 中的ROI Pooling 替換為ROI Align,對刺梨果實(shí)進(jìn)行識別,平均識別精度達(dá)到92.01%,但對果實(shí)顏色與背景顏色相近的果實(shí)識別率較低。Longsheng Fu 等[5]采用ZFNet 作為Faster RCNN 的主干特征提取網(wǎng)絡(luò),對遮擋、重疊、多果實(shí)相鄰等不同場景下的獼猴桃果實(shí)圖像進(jìn)行識別,其總體識別率為92.3%。呂石磊等[6]提出使用1 種基于GIoU 邊框回歸損失函數(shù),并采用MobileNet-v2 作為特征提取網(wǎng)絡(luò)改進(jìn)YOLOv3-LITE 算法,使用 GIoU 回歸框損失函數(shù)替代傳統(tǒng)損失函數(shù)邊框回歸的均方誤差部分(MSE),對自然環(huán)境下柑橘果實(shí)圖像進(jìn)行識別,平均精度達(dá)到90.38%,為柑橘采摘機(jī)器人定位提供良好的技術(shù)支持。閆建偉等[7]采用改進(jìn)YOLOv3 算法對刺梨果實(shí)圖像進(jìn)行識別,其平均準(zhǔn)確率達(dá)88.5%,平均召回率為91.5%,在刺梨果實(shí)檢測場景下具有良好的表現(xiàn)。目前,YOLOv4 為較新的YOLO 系列算法,已有相關(guān)研究將YOLOv4 應(yīng)用于在柑橘、蘋果、番茄、獼猴桃、櫻桃、香蕉、小麥等作物識別與應(yīng)用場景中[8-16]。目前,將卷積神經(jīng)網(wǎng)絡(luò)直接應(yīng)用于梨的果實(shí)識別的場景中的相關(guān)研究較少,而以上研究成果為梨的果實(shí)識別研究提供了良好的參考。
目前,梨園的生產(chǎn)方式以傳統(tǒng)的栽培模式為主,在這種模式下,主要以人工的方式進(jìn)行花果管理、果實(shí)采摘以及產(chǎn)量統(tǒng)計(jì)。而這種模式存在著人工成本高、生產(chǎn)效率低等問題。梨的成熟果實(shí)體積較小,部分梨果實(shí)易被其它果實(shí)或葉片遮擋,且梨果實(shí)的顏色與葉片顏色相近,這就增加了對自然條件下梨果實(shí)的識別與定位的難度。本試驗(yàn)通過對自然環(huán)境中梨樹的栽培模式與生長模式進(jìn)行分析,通過對YOLOv4 網(wǎng)絡(luò)模型進(jìn)行調(diào)整和改進(jìn),對梨果實(shí)數(shù)據(jù)集進(jìn)行訓(xùn)練,得到改進(jìn)YOLOv4 的梨果實(shí)識別模型,在保證檢測精度的同時(shí)使查全率得到提升,實(shí)現(xiàn)對梨果實(shí)的識別與定位。
本試驗(yàn)所使用的梨果實(shí)圖像采集于河北省邢臺(tái)市威縣,品種為‘紅香酥’,果園的栽培模式為株距1 m、行距3.5 m,采集6 年生和4 年生的成熟時(shí)期梨樹圖像共800 幅。所用圖像通過HUAWEI Mate 30 設(shè)備,于距目標(biāo)果樹約3 m 處進(jìn)行水平拍攝。拍攝的圖像原始格式為JPG,分辨率為2 736×3 648像素。采集的梨樹圖像樣本示例如圖1 所示。
圖1 梨樹圖像樣本示例Fig.1 Examples of pear tree image samples
本實(shí)驗(yàn)將采集的800 幅圖像用于訓(xùn)練和測試神經(jīng)網(wǎng)絡(luò)模型,為保證訓(xùn)練效果,使用OpenCV 對圖像進(jìn)行數(shù)據(jù)增強(qiáng),數(shù)據(jù)增強(qiáng)的方式為水平翻轉(zhuǎn),擴(kuò)充數(shù)據(jù)集至1 600 幅圖像。
由于原圖像和數(shù)據(jù)增強(qiáng)后的圖像分辨率較大,直接作為網(wǎng)絡(luò)模型訓(xùn)練的輸入會(huì)導(dǎo)致占用顯存過大、特征提取難度高以及訓(xùn)練效果差等問題,故將每幅分辨率為2 736×3 648 像素的圖像裁剪為5×6 共30 幅608×608 像素的圖像。由于原圖像分辨率無法滿足裁剪的每幅子圖像都為608×608 像素,故對圖像進(jìn)行填充,即在原圖的右側(cè)以及數(shù)據(jù)增強(qiáng)后圖像的左側(cè)進(jìn)行填充,填充尺寸為304×3 648 像素,填充顏色為RGB(0,0,0),使原圖像和數(shù)據(jù)增強(qiáng)后的圖像為3 040×3 648 像素,之后對圖像進(jìn)行裁剪,圖1 所示圖像樣本裁剪后的效果如圖2 所示。
圖2 單幅圖像裁剪示例Fig.2 Example of single image cropping
裁剪后的圖像共48 000 幅,使用LabelImg 軟件對圖像中的梨果實(shí)目標(biāo)進(jìn)行標(biāo)注,生成標(biāo)簽,本試驗(yàn)采用Pascal VOC 2007 數(shù)據(jù)集格式進(jìn)行圖像樣本標(biāo)簽的制作。
本研究采用的實(shí)驗(yàn)環(huán)境為Ubuntu 18.04,64位操作系統(tǒng),硬件配置為服務(wù)器,采用Intel(R)Xeon(R) Gold 5220 處理器,主頻2.20 GHz;顯卡為NVIDIA Quadro RTX 5000,顯存為16 GB。本研究采用的編程語言為Python 3.8,采用Pytorch 1.7.1框架,CUDA 版本為10.0。
本研究選擇YOLOv4 作為梨果實(shí)識別的基礎(chǔ)網(wǎng)絡(luò)模型,并對該網(wǎng)絡(luò)模型進(jìn)行改進(jìn)和優(yōu)化,使訓(xùn)練后的模型可以達(dá)到更好的檢測和識別效果。
YOLOv4 網(wǎng)絡(luò)模型[17]由3 個(gè)部分構(gòu)成:主干特征提取網(wǎng)絡(luò)CSPDarknet53、SPP 模塊以及PANet模塊。網(wǎng)絡(luò)模型首先對輸入的圖片通過主干網(wǎng)絡(luò)進(jìn)行特征提取,然后對主干網(wǎng)絡(luò)的最后1 層輸出進(jìn)行3 次卷積操作,之后通過空間金字塔池化層(SPP)不同尺寸的池化核進(jìn)行最大池化,將池化結(jié)果進(jìn)行融合得到1 個(gè)輸出,并與主干網(wǎng)絡(luò)的倒數(shù)第2 層及倒數(shù)第3 層的輸出通過PANet 模塊得到3 個(gè)輸出,之后進(jìn)行分類回歸,得到預(yù)測結(jié)果。
2.3.1 改進(jìn)SPP 模塊 空間金字塔池化[18](Spatial Pyramid Pooling,以下簡稱SPP),是基于RCNN 進(jìn)行改進(jìn)的,能夠增加感受野,可以對不同尺寸的特征圖輸入,輸出固定尺寸的特征圖,其基本思想是對輸入的特征圖,通過不同尺寸的池化核,進(jìn)行最大池化處理。在YOLOv4 模型結(jié)構(gòu)中,SPP 結(jié)構(gòu)位于CSPDarknet53 的最后1 個(gè)特征層的輸出后,先對CSPDarknet53 最后1 個(gè)特征層進(jìn)行3 次卷積和激活函數(shù)的處理,之后利用4 個(gè)不同尺寸的池化核對其輸出進(jìn)行最大池化處理,即13×13、9×9、5×5和1×14 種尺寸,在池化過程中對不同尺寸池化核要處理的特征圖分別加入poolsize/ 2 的填充,其中poolsize表示池化核的尺寸,以將不同尺寸池化核處理后的結(jié)果拼接在一起。
采用最大池化下采樣方法進(jìn)行池化處理,可以更多地保留目標(biāo)的紋理特征信息。而在本試驗(yàn)數(shù)據(jù)集中,梨果實(shí)目標(biāo)與葉片背景的顏色與形狀較相似,采用最大池化方法會(huì)丟失目標(biāo)信息,造成漏檢和誤檢,因此,在SPP 結(jié)構(gòu)的基礎(chǔ)上,采用平均池化的方法替換原有的最大池化,以提高目標(biāo)檢測的精確率和召回率。
2.3.2 改進(jìn)部分卷積模塊 本研究采用深度可分離卷 積[19](Depthwise Separable Convolution) 結(jié) 構(gòu) 替換了SPP 模塊之前與之后的卷積、PANet 中的部分卷積以及輸出部分的卷積。深度可分離卷積由2 個(gè)部分組成,即逐通道卷積與逐點(diǎn)卷積。對于輸入的1 個(gè)特征圖,首先進(jìn)行逐通道卷積,其主要思想為對特征圖的每個(gè)通道分別進(jìn)行1 次單通道卷積,即通道和卷積核一一對應(yīng),對于輸入通道數(shù)為n的特征圖,通過逐通道卷積后將產(chǎn)生的輸出也為n通道。之后對產(chǎn)生的n通道的輸出進(jìn)行卷積核為1×1×n的卷積操作,若逐點(diǎn)卷積的卷積核為m,則會(huì)產(chǎn)生通道數(shù)為m的輸出特征圖。采用深度可分離卷積可以在保證與常規(guī)卷積輸出維度相同的前提下[20],大幅減少參數(shù)量。
改進(jìn)的YOLOv4 網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示,其中dw_Conv 為使用深度可分離卷積塊改進(jìn)的卷積模塊;AvgPooling 為平均池化層,k表示池化核尺寸。
圖3 改進(jìn)的YOLOv4 網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Network structure of improved YOLOv4
先驗(yàn)框是在圖像上預(yù)設(shè)好的框,用來對圖像上的目標(biāo)更好地進(jìn)行預(yù)測。為了平衡模型的準(zhǔn)確度和復(fù)雜度,YOLOv4 中采用9 組先驗(yàn)框,本研究采用K-means++聚類算法對數(shù)據(jù)集中人工標(biāo)注的梨果實(shí)邊界框的寬與高進(jìn)行聚類[21]以得到9 組不同尺寸的先驗(yàn)框,聚類結(jié)果分布如圖4 所示,其中橫縱坐標(biāo)分別為標(biāo)簽的寬與高,每一類的聚類中心的坐標(biāo)即為先驗(yàn)框的尺寸。
圖4 標(biāo)簽尺寸聚類分布圖Fig.4 Scattergram for clustering of label size
本研究從1 600 幅原圖及數(shù)據(jù)增強(qiáng)后的圖像中,隨機(jī)挑選1 280 幅 (80%)圖像作為訓(xùn)練集和驗(yàn)證集,剩余的20%的圖像作為測試集;在訓(xùn)練集和驗(yàn)證集中,選擇其中的90%作為訓(xùn)練集,剩余的10%作為驗(yàn)證集。訓(xùn)練驗(yàn)證集和測試集劃分完成后,將訓(xùn)練驗(yàn)證集中圖像的裁剪后的子圖像進(jìn)行模型的訓(xùn)練,測試集圖像裁剪后的子圖像用于模型的測試。
對訓(xùn)練驗(yàn)證集中的1 280 幅圖像進(jìn)行裁剪,共產(chǎn)生38 400 幅圖像。由于在裁剪時(shí)未進(jìn)行人工干預(yù),故裁剪所產(chǎn)生的子圖像中存在大量未包含梨果實(shí)目標(biāo)的圖像,這些不包含目標(biāo)的圖像在訓(xùn)練過程中會(huì)加重正負(fù)樣本分布不均勻的問題,故在訓(xùn)練過程中隨機(jī)去除了部分不含目標(biāo)的子圖像,最后參與訓(xùn)練的訓(xùn)練驗(yàn)證集子圖像共25 000 幅。而對于測試集中不包含目標(biāo)的子圖像則進(jìn)行了保留,參與模型最終的檢驗(yàn),測試集圖像共9 600 幅。
本研究的網(wǎng)絡(luò)模型采用YOLOv4 推薦輸入尺寸608×608 像素作為輸入圖像的尺寸,采用遷移學(xué)習(xí)的方法,引入主干特征提取網(wǎng)絡(luò)的預(yù)訓(xùn)練權(quán)重。模型共訓(xùn)練150 代,對前50 代凍結(jié)主干特征網(wǎng)絡(luò)的權(quán)重,對之后的100 代使用全部的權(quán)重進(jìn)行訓(xùn)練。在主干特征提取網(wǎng)絡(luò)中,采用Mosaic 數(shù)據(jù)增強(qiáng)算法,并采用余弦退火衰減法修改學(xué)習(xí)率。對于輸入的梨樹圖像的子圖像,首先經(jīng)過CSPDarknet53 網(wǎng)絡(luò)進(jìn)行特征提取,保存該網(wǎng)絡(luò)最后3 層網(wǎng)絡(luò)結(jié)構(gòu)的輸出分別為out1、out2 及out3。對于最后1 層網(wǎng)絡(luò)結(jié)構(gòu)的輸出out3,進(jìn)行卷積與深度可分離卷積的操作,之后作為改進(jìn)SPP 模塊的輸入進(jìn)行不同尺寸的平均池化,并將池化結(jié)果拼接后再進(jìn)行卷積與深度可分離卷積操作,得到輸出out3_s,之后將out1、out2 及out3_s作為PANet 的輸入,對經(jīng)過PANet 的特征提取后得到的3 個(gè)加強(qiáng)特征圖傳入YOLO Head 進(jìn)行最終的預(yù)測。
在模型訓(xùn)練過程中,模型訓(xùn)練的迭代次數(shù)與損失率的曲線如圖5 所示,其中Train Loss 表示訓(xùn)練集損失率隨迭代次數(shù)增加的變化,Val Loss 表示驗(yàn)證集損失率隨迭代次數(shù)增加的變化。
圖5 改進(jìn)YOLOv4 網(wǎng)絡(luò)模型的Loss 曲線圖Fig.5 Loss curve of improved YOLOv4 network model
從圖5 的訓(xùn)練過程中迭代次數(shù)和損失率的關(guān)系曲線圖中可以看出,在前50 代的訓(xùn)練集損失率與驗(yàn)證集損失率均波動(dòng)較大,原因在于這部分的訓(xùn)練過程中凍結(jié)了主干特征提取網(wǎng)絡(luò)的權(quán)重;在第50 到53 代之間時(shí),訓(xùn)練集損失率與驗(yàn)證集損失率下降幅度較大,原因在于從第51 代開始,使用全部權(quán)重進(jìn)行訓(xùn)練;在第110 代后,驗(yàn)證集損失率趨于穩(wěn)定,模型收斂。
使用訓(xùn)練完成的最優(yōu)模型對9 600 幅未參與訓(xùn)練的梨樹圖像子圖像進(jìn)行檢測,平均每秒可以對20幅圖像進(jìn)行檢測。通過對比測試集真實(shí)標(biāo)簽及標(biāo)簽數(shù)量與模型檢測出來的結(jié)果進(jìn)行驗(yàn)證和分析,以得到模型的評價(jià)指標(biāo)。
對于模型效果的驗(yàn)證通常采用的評價(jià)指標(biāo)為精確率(Precision)、召回率(Recall)、F1分?jǐn)?shù)以及mAP。對于任意模型,在檢測圖像時(shí)有4 種不同的情況:把正樣本正確預(yù)測(True Positive, TP)、把負(fù)樣本正確預(yù)測(True Negative, TN)、把負(fù)樣本錯(cuò)誤預(yù)測(False Positive, FP)以及把正樣本錯(cuò)誤預(yù)測(False Negative, FN),則精確率、召回率、F1分?jǐn)?shù)的計(jì)算公式如公式(1)到公式(3)所示。
本試驗(yàn)分別采用YOLOv3 模型[22]、YOLOv4模型以及YOLOv4Lite-MobileNet v3 模型[23]對相同數(shù)據(jù)集進(jìn)行了實(shí)驗(yàn),本試驗(yàn)?zāi)P团c上述模型的實(shí)驗(yàn)結(jié)果如表1 所示。
表1 不同網(wǎng)絡(luò)模型的實(shí)驗(yàn)對比Table 1 Comparison of different network models
由表1 可以看出,采用YOLOv4 神經(jīng)網(wǎng)絡(luò)模型進(jìn)行識別比采用YOLOv3、YOLOv4Lite-MobileNet V3 等模型的精確率更高,達(dá)到了93%以上,mAP高于90%,但存在召回率較低的問題,而本試驗(yàn)所改進(jìn)后的YOLOv4 模型,在保證精確率高于93%的前提下,將召回率提高到了85%以上,mAP值也比原模型更高,檢測效果比原模型更好。
在模型空間占用方面,YOLOv4Lite-MobileNet V3 模型所占空間最少,但精確率、召回率、mAP等較低;本試驗(yàn)所改進(jìn)后的YOLOv4 模型所占空間為136 MB,比YOLOv3、YOLOv4 模型的所占空間更少,且檢測效果更好。改進(jìn)前后的YOLOv4 網(wǎng)絡(luò)模型的檢測效果如圖6 所示。
圖6 改進(jìn)前后的模型檢測效果對比圖Fig.6 Comparison of the detection effect of the model before and after improvement
由圖6 可以看出,使用平均池化法代替SPP 模塊中的最大池化所訓(xùn)練出的模型對梨果實(shí)的識別效果較好,主要表現(xiàn)為通過采用改進(jìn)后的SPP 模塊,對自然環(huán)境下梨樹圖像中的果實(shí)檢測更全面,部分通過原YOLOv4 網(wǎng)絡(luò)模型未檢測出的果實(shí)主要存在陰影、遮擋或占圖中面積相對較小等問題,而采用改進(jìn)后的YOLOv4 網(wǎng)絡(luò)模型可以更準(zhǔn)確地對這些較難識別的果實(shí)正確地檢測。
本研究針對自然環(huán)境下梨樹果實(shí)的識別場景存在果實(shí)與背景顏色相近,果實(shí)體積較小、遮擋嚴(yán)重等問題,提出了1 種基于改進(jìn)YOLOv4 神經(jīng)網(wǎng)絡(luò)模型的近色背景梨果實(shí)識別的方法,通過對YOLOv4中的SPP 模塊進(jìn)行改動(dòng),將其中最大池化法改為平均池化法;將YOLOv4 模型結(jié)構(gòu)中的部分卷積替換為深度可分離卷積,其精確率達(dá)到93.24%,召回率達(dá)到85.56%,F(xiàn)1得分為0.89,mAP為90.18%,模型所占空間減少44%,能夠?qū)ψ匀画h(huán)境下梨樹圖像中的果實(shí)進(jìn)行準(zhǔn)確地識別,可為實(shí)現(xiàn)梨果實(shí)自動(dòng)采摘、梨園產(chǎn)量測量提供新的方法,可為產(chǎn)量預(yù)估提供數(shù)據(jù)基礎(chǔ),可為實(shí)現(xiàn)智慧果園提供新思路。