趙越,趙輝,姜永成,任東悅,李陽,衛勇
(天津農學院工程技術學院,天津市,300384)
植物病害在世界范圍內給農業部門造成了巨大的損失,因此及時、準確地診斷植物病害對于可持續農業的正確發展具有重要意義[1]。馬鈴薯是僅次于玉米、小麥和水稻的世界第四大農業糧食作物,它可以減少血液中膽固醇的總量,有助于治療高血壓、心臟病和癌癥等疾病[2]。然而,馬鈴薯的產量下降深受植物病害的影響。目前為止,經驗豐富的生產者的目視觀察仍然是發展中國家農村地區植物病害檢測的主要方法。此方法需要專家的持續監測,而在一些偏遠的地區,農民們可能要走很遠的路才能聯系專家,這使得咨詢費時費力[3]。
在過去的幾年里,深度學習已經解決了越來越多的復雜任務,并且準確率越來越高。人們對這類技術的興趣在于其在農業方面的潛在應用,推動高效自主系統的發展,而植物病害的自動識別就是其中一個重要的研究內容。2018年Ferentinos[4]使用了開放數據庫對多種植物病害圖像進行訓練,成功搭建了綜合植物病害識別系統,實現了簡單的卷積神經網絡病害圖像自動檢測和植物疾病診斷;2019年Saleem等[5]對植物病害可視化的深度學習模型進行了綜述,研究了在植物癥狀明顯之前,如何檢測可以獲得更大的透明度;2021年Atila等[6]使用Plant Village數據集通過遷移學習的方式訓練了EddicientNet架構和其他主流的深度學習網絡模型,通過不同網絡模型的對比,EfficientNet架構的檢測精度最高,提出了一種用于植物葉片病害分類的高精度深度學習網絡結構。
從上述的研究可以看出,深度學習在植物葉片病害檢測中有所增加。然而,在利用新的深度學習網絡結構進行植物葉片病害檢測及應用方面,仍缺乏研究。尤其是對網絡結構小,訓練速度快,檢測精度高的模型有強大的需求。因此,本文基于TensorFlow開發了Faster R-CNN深度學習網絡模型[7],并利用多個分類器檢測馬鈴薯葉片疾病,成功實現了馬鈴薯葉片病害的高精度檢測。
本文采用Kaggle國際競賽開源的數據庫[8],其中包含了各種植物病害的圖片,如玉米、葡萄、番茄、蘋果等。圖片儲存為jpg格式。本文選取馬鈴薯葉片為樣本,其中單張圖片的像素為256×256,包含了早疫病、晚疫病和健康的圖片。使用LABELIMG圖像圖形注釋工具對圖片進行標注[9]。由3個具有標注經驗的專家完成,每個病害或者健康的葉片都由一個矩形框包含,并且再次進行標注檢查,避免漏標錯標的可能性。將標注好的圖片保存在XML文件中,其中包含了邊框的位置坐標。在這個文件中,bounding box被保存為一個4元組(xmin,ymin,xmax,ymax),其中(xmin,ymin)表示bounding box的左上角坐標,而對應的(xmax,ymax)則表示包圍盒的寬度和高度,如圖1所示。

圖1 標注的馬鈴薯葉片圖像
為了解決數據集小、圖像缺乏多樣性的問題,本文采用本地增強的方式對數據集進行擴充,采用4種隨機增強的方式,包括平移、旋轉、鏡像這些變換來改變標注矩形框的位置信息,增加了植物病害圖像的多樣性。為了消除光照對圖像的影響,通過改變亮度的方式對圖像進行了變換,模擬出了不同光照下植物病害的生長情況。經過數據增強后的馬鈴薯葉片圖像為8 109 張,并按照7∶2∶1的比例分為了訓練集、驗證集和測試集,每種類別的數量如表1所示。

表1 數據增強后的馬鈴薯葉片數據集Tab. 1 Data augment of potato leaf data set
Faster R-CNN[7]是目標檢測領域主流的算法之一,相比YOLO算法[10],其檢測精度更高。本文的整體網絡結構如圖2所示,首先在子圖像中搜索潛在的候選對象,因此需要一個區域建議(region proposal)的方法。將子圖像輸入到卷積神經網絡中(CNN),進行特征提取[11]。區域建議網絡(RPN)[12]在輸入的子圖像上生成多個密集的先驗框(anchors)區域網格,具有指定的大小和橫縱比。裁剪過濾后通過softmax函數來判斷先驗框屬于前景或者背景,同時用另一個邊界框回歸(bounding box regression)來修正先驗框,形成精確的建議框。然后把建議框映射到CNN最后一層卷積的特征圖譜(feature map)上,并通過ROI pooling層使每個感興趣區域(ROI)在特征圖譜上生成固定的尺寸。如果先驗框與真實物體的交并比IoU[13]大于一個相對較大的重疊閾值,則該先驗框被賦為正,反之則被賦為負。由卷積神經網絡(CNN)組成的區域建議網絡(RPN)預測每個病害的分數,從而檢測其為某種病害的概率,這種方法的優點是模型有效地學習了圖像的背景特征,從而消除了分類步驟中的負面位置。
2.1.1 特征提取
本文選取VGG16[14]的卷積神經網絡對馬鈴薯葉片圖像進行特征提取,模型包括13個卷積層、4個池化層和13個Relu激活函數層。以224×224×3為固定尺寸作為圖像的輸入,全部使用3×3的卷積核以及2×2的池化核,前4個卷積層主要提取目標的淺層特征,保留初始參數。后9個卷積層進行遷移學習,提取目標更深層次的特征。網絡結構以及卷積變換如圖3所示,經過卷積處理后得到特征圖譜,在特征圖譜上每一個像素點對應原圖上的某一個區域。

圖2 Faster R-CNN網絡結構
2.1.2 RPN網絡
RPN網絡連接在卷積的特征提取之后,將卷積后的特征圖譜上的點與原圖像的位置對應,并以每個點為中心作為滑動窗口,生成區域建議框,如圖4所示。
經過滑動窗口的處理,每個滑動窗口都映射到一個低維向量上[15],這個向量輸出到同一級別的兩個全連接層,即邊界框的回歸層和邊界框的分類層,然后通過兩次全連接得到2 000個分數和4 000個坐標。

圖4 RPN網絡結構
經過RPN網絡處理,得到很多個目標候選區域,而ROI Pooling的作用就是把大小形狀各不相同的候選識別區域歸一化為固定尺寸的目標識別區域[16]。分類層利用已經獲得的候選特征圖譜,經過全連接層和softmax函數計算每個候選區域屬于哪個類別,以及輸出這個類別的概率,同時再次利用邊界框回歸來獲得每個候選區域與真實背景位置的偏移量,用于回歸計算更加精準的檢測框及其置信度。置信度[17]的公式見式(1)。

Pr(Object)∈[0,1]
(1)
式中:Pr——預測含有對象的概率;
IoU——預測框和真實框的交并比值。
預測目標的結果為[0,1]。其中0表示檢測到目標的最低置信度,1表示最高置信度。本文中選擇使用置信度為0.5,因為它提供了兩種情況之間令人滿意的權衡結果。
本試驗中使用Intel(R) Xeon(R)CPU E5-2650v4的處理器,GPU為GeForce RTX 2080Ti加速模型訓練。采用python3.6,基于TensorFlow2.2.0-gpu開發的Faster R-CNN深度學習模型框架。將RPN層插入到第4個卷積層和第5個卷積層之間,并且在RPN層中的每個位置都設置了一個先驗框。按照默認設置,在每個位置分配了12個不同大小、不同長寬比的先驗框。如果先驗框和標注的馬鈴薯病害葉片間的IoU在0.5~1.0之間,則認為馬鈴薯存在某種病害。Batch size大小固定為1,它節省了計算時間和內存需求。每個包圍框都與一個分數值相關聯。用0.5的置信度閾值來判斷一個包圍框是否存在病害或者健康。
一個模型的精準度可以通過觀察模型在學習過程中的訓練損失值和錯誤率來分析。該模型采用COCO數據集[18]的初始權重,對訓練集上的5 676張圖片進行了預訓練,并根據驗證集上的圖片調整網絡超參數,經過幾個時期后,它們逐漸減少錯誤率和訓練損失值,接近它們的最終值,圖5和圖6分別展示了模型訓練損失值以及準確率的變化。雖然最初損失值和錯誤率都很高,但在每個訓練階段之后錯誤率的降低伴隨著模型檢測精度的提高[19]。根據不斷的試驗,為了避免模型過擬合,將epoch的數目固定在200,最終以0.000 1的學習率和0.9的動量模型達到收斂,最后在測試集上進行測試,模型的最佳檢測精度達到了99.5%。

圖5 模型損失值的變化

圖6 模型準確率變化
根據模型檢測真正類別和預測類別的組合,樣本可以分為真正(TP)、假正(FP)、真負(TN)和假負(FN)4種類型[20]。其中TP是實際上屬于類C并被模型正確識別的實例數量,而FN則相反,它是屬于類C但被錯誤分類的實例數量,TN是實際不屬于類C的實例數量,并且他們被正確識別,FN是不屬于類C但被錯誤識別為類C的實例數量。通過正確檢測和錯誤檢測的統計,用精度(Precision)、召回率(Recall)和準確性(Accuracy)和模型評分(F1-Score)來評價模型的性能[21],其定義如下
(2)
(3)
(4)
(5)
IoU(Intersection over Union)[13]全稱為交并比,是計算目標對象檢測精度的標準,通過計算預測的邊界框和真實邊界框的重疊率來評估模型的性能,其定義如下
(6)
式中: Soverlap——預測邊框和真實邊框相交的區域;
Sunion——兩個邊框并集的區域。
AP(Average Accuracy)衡量的是模型在每個類別上訓練的好壞,mAP(Mean Average Accuracy)[22]衡量的是訓練出來的模型在所有類別上的好壞,mAP意義上是取所有類別上AP的平均值。其中AP,mAP的定義如下

(7)
(8)
式中:P(r)——召回測量的精度;
N——目標分類的數目。
本文使用mAP@0.5表示置信度以0.5為標準的目標檢測平均準確率。
利用訓練好的權重文件對測試集上帶有早疫病、晚疫病、健康的馬鈴薯葉片分別作了檢測,其中測試了333張健康的馬鈴薯葉片,有1張圖像被錯誤檢測,識別率為99.7%;測試了240張早疫病的圖片,同樣有1張圖片被錯誤檢測,識別率為99.5%;測試了240張晚疫病的圖片,有2張圖片被錯誤檢測,識別率為99.2%。模型的最佳精度達到了99.5%。檢測結果如圖7所示。

圖7 馬鈴薯葉片檢測結果
為了比較數據類別對檢測結果的影響,使用Faster R-CNN[9]對早疫病、晚疫病和健康的馬鈴薯葉片圖像分別進行訓練,并且和病害、健康混合訓練的模型進行了對比,訓練后模型的P-R(Precision-Recall)曲線[23]如圖8所示,對應的F1-Score如表2所示。從圖8可以看出,模型的精度隨著召回率的增加而不斷降低,最小收斂精度在0.95左右。通過比較模型的性能,在同一精度下,任意單類別訓練模型的召回率要高于混合訓練的模型;在同一召回率下,任意單類別訓練的模型精度也要高于混合訓練的模型。同樣,從表2可以看出,健康模型F1-Score值最高為0.961,晚疫病模型最低也達到了0.953,而組合訓練模型僅達到0.951。不論是精度、召回率還是F1-Score,任意單類別訓練模型都要高于混合訓練模型。這表明了輸入類別數量的增多會導致模型性能的降低。

圖8 不同類別下的P-R曲線

表2 不同類別下的模型表現Tab. 2 Model performance at different categories
為了驗證所提出的Faster R-CNN模型的性能,同時訓練了YOLOv3[24],YOLOv4[25]與該模型進行對比,每種模型都達到了最大程度的收斂(AP@0.5IOU),訓練完成模型的P-R曲線如圖9所示,對應的F1-Score,IoU和mAP如表3所示。
由圖9可以看出,在同一精度下,Faster R-CNN的召回率要高于其他兩種網絡模型;在同一召回率下,Faster R-CNN的精度也高于其他兩種網絡模型。從表3可以看出,對比F1-Score,Faster R-CNN的值最高為0.951。這表明了Faster R-CNN的綜合召回性能和精度要優于其他兩種網絡模型。同樣,Faster R-CNN的IoU值最高達到了0.957,mAP值最高為0.965,均高于其他兩種網絡模型,這表明了不論是檢測包圍盒準確率還是模型的類平均精度,Faster R-CNN 都是最優的。對于檢測速度Faster R-CNN 作為雙階段網絡要低于其他單階段網絡模型,但仍然滿足實時性檢測的需求。通過對比不同網絡模型的性能,Faster R-CNN展現出了更優的潛力。

圖9 不同網絡模型下的P-R曲線

表3 不同網絡模型的性能表現Tab. 3 Performance of different network models
1) 本文提出了一個馬鈴薯葉片病害自動檢測的模型,解決了傳統病害檢測專業性高、費時費力的問題。該模型包含了馬鈴薯葉片的早疫病、晚疫病和健康的圖像。
2) 通過對馬鈴薯葉片早疫病、晚疫病和健康的圖像單獨訓練和混合訓練模型的對比,不論是精度、召回率、F1-Score值單獨訓練的模型都要高于混合訓練的模型,表明了輸入圖像類別的數量會對檢測結果產生偏差,隨著類別數量的增多,模型的檢測性能略有降低。
3) 訓練了YOLOv3、YOLOv4網絡模型與該模型進行對比,結果表明,該模型的性能優于其他網絡模型。本文模型的F1-Score值為0.951,IoU為0.957,mAP為0.965。該模型的最佳檢測精度達到了99.5%,為農民早期發現疾病,提高作物的產量提供了技術支持。
4) 在未來的工作中,將進一步對模型識別病害的種類進行擴展,將其發展為多種作物不同病害識別系統。并從實際生活中的不同地域、不同環境采集更多的數據來設置更廣泛的訓練。與此同時,將對Faster R-CNN中的RPN網絡進行優化,保證精確度的同時,通過降低計算量的方式,來提升網絡的檢測速度。