王權順,呂蕾, 2,黃德豐,付思琴,余華云
(1. 長江大學,湖北荊州,434023; 2. 中國農業科學院油料作物研究所,武漢市,430062)
蘋果素有“水果之王”的美稱,因其風味優美、營養價值高,是全球食用最廣泛的水果。蘋果是世界四大水果之一,中國已成為世界最大的蘋果生產國和消費國[1]。蘋果產業在我國部分農村經濟發展中占據著不可替代的主導產業地位,蘋果病害對蘋果的產量有著重要影響,也影響到國家和果農們的經濟收益[2],蘋果病害易發生在葉部,如果能夠快速準確地識別出病蟲害并及時對其進行控制,可以將果農們的經濟損失降到最低[3]。
目前,在蘋果的病害缺陷識別方面,主要是由果農們和專家們通過經驗來判斷病害的種類,但這些傳統識別方法的準確率和效率都低下,已慢慢不適用于蘋果葉部病害的診斷。隨著深度學習在計算機視覺領域的飛速發展,卷積神經網絡在各個領域得到了廣泛的應用[4-6]。深度學習算法在農作物病害識別方面產生了巨大作用,傅云龍等[7]基于YOLO算法對馬鈴薯表面缺陷檢測,平均識別精度達到99.46%,對腐爛、發芽、機械損失、蟲眼、病斑檢測的精度均高于98%。宋中山等[8]通過改進YOLOv3[9]對自然環境下綠色柑橘進行識別,采用DenseNet的密集連接機制替換YOLOv3網絡中的特征提取網絡DarkNet53中的后三個下采樣層,加強特征的傳播,實現特征的復用,最終訓練得到的模型在測試集上的精確率為83.01%。周宏威等[10]利用遷移學習構建VGG16,ResNet50,Inception V3三種神經網絡模型對蘋果葉片病蟲害進行識別,發現使用遷移學習能夠明顯提升模型的收斂速度以及準確率,三種模型的準確率分別達到了97.67%,95.34%和100%。王云露等[11]通過改進Faster R-CNN對蘋果葉部病害識別,模型使用拆分注意力網絡作為骨干特征提取網絡(backbone),采用級聯機制對建議框生成機制進行優化,與改進前相比,平均精度提升了8.7%。隨著大量研究者的研究實踐,深度學習也推動著農業方面的發展。
本研究以蘋果葉片作為研究對象,通過深度學習技術實現對蘋果病害葉片進行識別。在實際研究過程中蘋果葉片病斑多為小目標,在圖像所占比例較小,且在葉片中散布較廣,YOLOv4的預設錨框(anchor)不適合應用于病斑等小目標缺陷檢測[12]。另一方面,YOLOv4當中的CSPdarknet53特征提取網絡的參數量和模型大小較大,不適用于大多數生活場景中。針對上述問題,筆者在YOLOv4的算法上基礎上對其進行改進,主要改進工作如下:使用二分K均值聚類算法優化YOLOv4聚類算法能夠滿足對蘋果葉部病斑等小目標檢測;引用DenseNet121[13]網絡代替YOLOv4當中的CSPdarknet53作為YOLOv4的特征提取網絡,DenseNet121網絡通過使用密集連接卷積網絡,在保證其特征提取能力下還能夠減少計算量,并且可以提高對蘋果葉部病斑等小目標的檢測性能。
本次研究以選取蘋果灰斑病葉片,蘋果銹病葉片,蘋果黑星病葉片,蘋果斑點落葉病葉片4種病害類別的圖片作為研究對象,其中蘋果黑星病數據來自于PlantVillage數據集,圖片大小為256×256像素,蘋果灰斑病,蘋果銹病,蘋果斑點落葉病通過百度等網站獲取,圖片大小為512像素×512像素。通過人工篩選,將冗余圖片和模糊圖片手動刪除,對剩余圖片進行labelimg工具進行標注。本次研究共有840張圖片,其中蘋果灰斑病葉片230張,蘋果銹病葉片270張,蘋果黑星病葉片110張,蘋果斑點落葉病葉片230張,如圖1所示。

(a) 灰斑病 (b) 銹病
將蘋果葉片病害數據集以訓練集∶驗證集∶測試集=8∶1∶1劃分,數據集格式為VOC格式。
為避免數據集不足使得模型在訓練過程中出現擬合情況,現對數據集進行數據擴增操作,本文通過對角線鏡像變換、隨機旋轉、改變亮度(亮暗)對數據集進行數據擴充,由于圖像的旋轉會使得一部分信息損失,而且不能夠容易地判斷旋轉后的圖像是否還包含我們的完整目標。因此把原圖像先安裝長短邊的長度填充為一個正方形,這樣可以確保填充后的圖像在旋轉過程中,原圖中的目標信息不會丟失。數據擴增可以使得訓練數據盡可能的接近真實數據,從而提高預測精度。另外數據擴增可以使網絡學習有更好的魯棒性,從而使模型擁有更強的泛化能力。
通過數據擴增之后,原有840張蘋果葉片圖像擴增至4 200張,數據集變化如表1所示,擴增后的圖像如圖2所示。

表1 蘋果葉片數據集Tab. 1 Apple leaf data set

(a) 原圖 (b) 亮度改變(暗) (c) 亮度改變(亮)
YOLOv4算法網絡結構主要由主干特征提取網絡Backbone,特征融合網絡Neck,檢測頭Head部分組成。主干特征提取網絡主要是由CSPDarknet53組成,其主要是由五層殘差網絡[14]Resblock Body組成,其輸入的圖像像素是416×416,其中Resblock Body有專門的卷積操作來降低分辨率,每一層的Resblock Body將像素逐漸降低一倍,其主要功能是提取圖像數據的特征信息,Neck部分是由SPP[15]和路徑聚合網絡PANet[16]組成,SPP是空間金字塔池化網絡,目的是增加網絡的感受野,PANet是一種實例分割算法,PANet框架采用自底向上的路徑增強,通過上采樣(UpSample)操作使用先驗局部卷積層來縮短高分辨率和低分辨率特征之間的信息路徑。YOLOv4結構流程圖如圖3所示,并且YOLOv4使用了Mish[17]激活函數,極大的提高了檢測的準確性。其中,Mish激活函數公式如式(1)所示。
Mish=xtanh[ln(1+ex)]
(1)
式中:x——圖像像素經卷積操作后的像素值。

圖3 YOLOv4結構流程圖
缺陷檢測流程如圖4所示。

圖4 缺陷檢測流程圖
首先將采集到的數據集進行數據擴增操作,將處理之后的數據集通過二分K均值聚類算法聚類出9個錨框,將9個錨框坐標加入YOLOv4網絡參數,把YOLOv4模型中特征提取網絡CSPDarknet53網絡替換為DenseNet121網絡,最終得到B-YOLOv4-D網絡模型。將處理之后的數據集使用B-YOLOv4-D模型訓練得到一組訓練權重,選出最優權重驗證檢測效果。
YOLOv4算法預設錨框是通過采用K均值聚類算法[18](K-means)在COCO數據集上進行分析,得到一組先驗框,由于COCO數據集多種多樣而蘋果葉片病害缺陷多以小目標為主,容易篩選出不適合蘋果葉片病害數據集的Bounding Box。K均值聚類算法對于離群點和噪音點比較敏感,在計算過程中質心是隨機初始化的,雖然最后會通過劃分后的點加均值函數重新計算,但質心沒有真正的進行最優化收斂,K均值聚類算法收斂到了局部最小值,而非全局最小值。因此,將原始K均值聚類算法改進為二分K均值聚類算法可以克服收斂局部最小值的問題。二分K均值聚類算法首先將所有點作為一個簇,計算總誤差,使用K-means將數據集分成兩個簇,記錄誤差平方和(SSE),選擇使得誤差平方和最小的那個簇進行劃分操作,重復上述操作,直到得到用戶指定的簇數目為止。其中誤差平方和
(2)
式中:Ci——第i個聚類;
p——樣本點;
mi——第i個聚類中心。
經過多次試驗,使用改進二分K均值聚類算法對數據集進行聚類,共聚類出9個錨框,結果為(16,17),(26,26),(37,36),(50,49),(64,65),(72,89),(90,79),(105,109),(145,150)。聚類中心在數據集的分布如圖5所示。

圖5 二分均值聚類中心圖
YOLOv4算法以CSPDarknet53網絡作為特征提取網絡,共計有104層卷積網絡,其中卷積層72個。并且大量使用3×3卷積操作。YOLOv4模型參數量可達6 000多萬,模型參數大小達到245.53 MB,難以達到日常生活的需求,并且由于卷積層數的增多,使得YOLOv4對蘋果葉片病斑等小目標特征提取能力下降。因此,引入DenseNet121作為YOLOv4的特征提取網絡。
DenseNet主要包含卷積層、密集塊、過渡層和分類器組成,它采取密集連接機制[19],以前饋方式將各個密集塊中的層直接連接,Dense Block中每層均以密集連接方式連接到后續所有層中,將之前層的輸出作為當前層的輸入。Dense Block如圖6所示,在DenseNet121中,共有4個Dense Block,數目分別為6,12,24和16。DenseNet121的網絡參數少,由于Dense Block的設計,在Dense Block中每個卷積層輸出的Feature Map數量很少,同時這種連接方式使得特征和梯度的傳遞更加有效,網絡更加容易訓練,因為梯度消失的主要原因就是輸入信息以及梯度信息在很多層之間傳遞導致的,采用Dense Block連接則相當于每一層和Input及Loss直接相連,減輕梯度消失的發生。

圖6 Dense Block結構
因此,通過改進二分K均值聚類算法確定錨框,引入DenseNet121代替CSPDarknet53網絡作為YOLOv4的特征提取網絡,提出B-YOLOv4-D算法。算法模型結構如圖7所示。

圖7 B-YOLOv4-D結構流程圖
本試驗平臺操作系統為Windows 10 64位,中央處理器(CPU)為Intel Core i7-10870H CPU @ 2020GHz,計算機內存為16 G,圖形處理器(GPU)為NVDIA GeForce RTX 2060,顯存大小為6 G,深度學習框架為Pytorch。
在B-YOLOv4-D訓練過程中,輸入圖片大小設置為416×416,數據集大小為4 200張圖片,epoch設置為300,優化器使用Adam優化器,初始學習率設置為0.001,在50個epoch之后學習率設置為0.000 1,衰減系數設置為0.000 5。
在B-YOLOv4-D訓練過程中,損失值(Loss)能否迅速收斂并且達到穩定是模型性能的重要指標之一,此模型在300個epoch的損失曲線如圖8所示。從圖8中可以看到在第70個epoch之后損失值已經收斂,從收斂情況來看,算法模型訓練效果理想。

圖8 B-YOLOv4-D loss曲線
本文訓練模型采用mAP(mean average precision)和FPS作為模型評價標準,FPS為每秒模型能夠識別得圖片數量,mAP的計算是通過各類別的P-R曲線圖中面積AP的總和再進行平均得來的,AP由精確率(precision,P)與召回率(recall,R)計算的來的,其計算方法如式(3)~式(6)所示。
(3)
(4)

(5)
(6)
式中:TP——預測為正的正樣本;
FP——表示預測為正的負樣本;
FN——表示預測為負的正樣本;
n——類別總數。
試驗通過各個模型對蘋果葉部病害數據集進行訓練,得到的AP值如表2所示。經過對比,各個模型性能對比如表3所示。

表2 改進前后YOLOv4模型的AP值Tab. 2 AP values of YOLOv4 model with/without improvement

表3 模型性能對比Tab. 3 Model performance comparison
由表3可得,B-YOLOv4-D算法相對于YOLOv4算法檢測mAP提升0.89%,模型大小只有62.71 MB,相比于原來減小182.82 MB,并且在檢測速度上B-YOLOv4-D算法提升6.78 FPS。以上結果表明B-YOLOv4-D比YOLOv4性能更優。
為了更直觀的驗證本文算法的效果,將B-YOLOv4-D算法應用于蘋果葉部病害缺陷檢測,檢測效果如圖9所示。

(a) 灰斑病 (b) 銹病
由圖9可知,B-YOLOv4-D算法可以準確地檢測出蘋果葉部病害缺陷。
本次試驗基于深度學習技術通過改進YOLOv4算法應用于蘋果葉片病害識別研究,得到如下結論。
1) 使用數據擴增技術將數據集進行擴增,使網絡學習有更好的魯棒性,提高了模型的泛化能力。通過使用二分K均值聚類算法解決YOLOv4算法的預設錨框不適用于蘋果葉部病斑等小目標的問題,增強算法模型的識別性能。
2) 引入DenseNet121代替CSPDarknet53網絡作為YOLOv4的特征提取網絡,減少了網絡的參數量,減輕梯度消失的問題,提出B-YOLOv4-D算法。試驗結果表明,B-YOLOv4-D算法比原始YOLOv4算法mAP提升0.89%,檢測速度提高6.78 FPS,并且模型大小減小182.82 MB。
3) 通過上述對比試驗,B-YOLOv4-D算法具有較高的泛化能力,較小的模型大小以及較高的檢測精度。能夠滿足日常生活的需求,為蘋果葉部病害防治提供了科學的識別方法。