楊波,何金平,張立娜
(1. 長春財經學院信息工程學院,長春市,130122; 2. 吉林農業(yè)大學信息技術學院,長春市,130118)
水稻是禾本科一年生水生草本植物,原產于中國,是亞洲熱帶種植最廣泛的重要谷物。全球一半以上的人口以稻米為主要食物來源,近年來消費者對優(yōu)質稻米的需求正在不斷增長。但是水稻在種植過程中極易發(fā)生病害,水稻病害是水稻降低產量的主要因素之一[1-3],水稻每年因病害所造成的經濟損失巨大[4],因此快速識別發(fā)現水稻病害類型并提供后續(xù)的解決治療方案極其重要。
目前基于深度學習且應用比較廣泛的目標檢測算法[5-15]分為兩類:(1)雙步目標檢測算法two-stage:如Fast R-CNN[5]、Faster-RCNN[6-8]、Mask R-CNN[9-10]等這些模型都是將目標檢測分為兩個階段,首先使用區(qū)域候選網絡(RPN)提取候選目標區(qū)域信息,再利用高質量的分類器進行分類檢測,最后使用檢測網絡完成對候選區(qū)域類別和位置的預測與識別,此類算法雖在檢測精度上有優(yōu)勢,但是計算機消耗資源大,不利于在嵌入式等設備上進行實時檢測。(2)單步目標檢測算法one-stage:如R-FCN[11]、SSD[12]、YOLO[13]、YOLOv3[14-15]、YOLOv4[16]等此類算法將提取候選區(qū)域和進行分類兩個任務融合到一個網絡中,不使用RPN和預定的邊界框來進行尋找目標物體,通過卷積核直接計算卷積網絡中特征的類別分數和位置偏差,此類算法在計算效率上有優(yōu)勢,具備更快的檢測速度。
目前國內在植物分類識別領域的研究已經取得一定的進展,呂石磊等[17]提出一種基于改進YOLOv3-LITE輕量級神經網絡的柑橘識別方法,使用MobileNet-v2作為該模型的骨干網絡并使用混合訓練與遷移學習結合的預訓練方式來提高模型的泛化能力。曹躍騰等[18]提出一種基于改進ResNet模型的輕量化植物葉片病蟲害識別算法Simplify-ResNet,使用5×5卷積和殘差塊的瓶頸結構以及模型剪枝來處理訓練后的模型,識別準確率為92.45%。鮑文霞等[19]提出一種基于輕量型殘差網絡LW-ResNet的自然場景水稻害蟲識別方法,LW-ResNet網絡在特征提取模塊減少了殘差塊的數量,在注意力子模塊中采用深度可分離卷積,減少了浮點運算量,實現了模型的輕量化。孫俊等[20]提出一種空洞卷積與全局池化相結合的多尺度特征融合卷積神經網絡識別模型,通過對卷積層的輸入數據進行批歸一化處理,加速了網絡收斂,進一步縮減特征圖數目,并采用全局池化的方法減少特征數,上述研究為本文的水稻病害葉片的識別提供了參考。
本文以單步目標檢測算法的深度卷積神經網絡YOLOv5為基礎,對YOLOv5的結構進行改進。將水稻病害數據集中的病害葉片作為訓練和檢測的目標,探究改進后的YOLOv5模型在實際場景下對不同病害類別葉片的識別率與準確率;將改進后的YOLOv5網絡結構與ResNet-34網絡模型進行對比試驗。
本文采用佳能EOS1500d單鏡頭反光照相機,針對同一個品種水稻進行數據采集,并對采集的樣本進行人工篩選,所采集圖像均為自然正常生長狀態(tài)下的水稻葉片圖像。為了滿足水稻病害數據的普遍性和多樣性,選取了水稻常見的三種病害:白葉枯病(Bacterial leaf blight)、褐斑病(Brown spot)、稻瘟病(Rice blast)和健康(Healthy)葉片4種對象來構建數據集。原始圖像共476張,圖像分辨率為300像素×300像素、300像素×500像素。
由于水稻病害隨著時間的變化,在真實自然環(huán)境下其病害葉片的紋理、顏色等特征會呈現出季節(jié)性、隨機性的特點,因此難以搜集齊完整的病害葉片樣本。同時,為了擴大樣本數量以提高模型訓練的精度并防止卷積神經網絡過擬合線性,本文采用HSV顏色處理、改變色溫、高斯模糊和椒鹽噪聲等基于幾何變換的數據增強。將樣本數據集按10∶2∶1比例劃分為訓練集、驗證集和測試集。對白枯葉病樣本數據增強后圖像如圖1所示。經過數據增強的數據集分布情況如表1所示。
(a) 原圖
(b) HSV
(c) 不等比例縮放
(d) 等比例縮放
(e) 改變色溫
(f) 高斯模糊
圖1 數據增強處理Fig. 1 Data enhancement processing
表1 數據集分布情況Tab. 1 Data set distribution 張
YOLOv3之前的YOLO模型采用K-means和遺傳算法對自定義數據集進行分析,從而獲得自定義數據集中目標對象的預設定錨框。而YOLOv5的預設定框是基于在訓練水稻數據集時自動學習的,由于目標框架需要縮放自定義水稻病害葉數據集中原始圖片的尺寸,并且數據集中原始圖片尺寸小于原YOLO的標準輸入尺寸640×640,因此在YOLOv5設置了自適應錨定框(Auto Learning Bounding Box Anchors)。YOLOv5使用了跨階段局部網CSPDarknet53作為Backbone網絡,在借鑒了殘差網絡的思路:在部分層之間設置捷徑連接(Shortcut connection)的同時,還借鑒了DenseNet的思想:疊加(Concat)前面所有層的特征映射圖,通過Dense block發(fā)送到后面的網絡層,進行密集連接,從而將前層的特征映射圖分離出來,實現特征重用,即減少模型參數數目、尺寸和FLOPS數值,還保證了推理速度和準確率,同時還有效緩解反向傳播中的梯度消失、梯度爆炸等問題。
在YOLOv5中使用基于Mask R-CNN的FPN框架和路徑聚合網絡(PANET)作為Neck來聚合特征,將原FPN結構改進為一種新增強的自下向上路徑的FPN結構,并用3×3卷積來處理前一階段的特征映射。同時使用自適應特征池化(Adaptive feature pooling)恢復每個候選區(qū)域和所有特征層次之間被破壞的信息路徑,聚合每個特征層次上的候選區(qū)域,從而增強底層特征的傳播。
2.2.1 隨機梯度下降SGD
YOLOv5默認的優(yōu)化器(Optimizer)是隨機梯度下降SGD(Stochastic Gradient Descent ),其更新規(guī)則:每次更新時對單個樣本使用梯度下降更新,一次只進行一個樣本的更新。SGD算法一次只進行隨機單個樣本的迭代更新,使得SGD并不是每次迭代都向著整體最優(yōu)化方向,準確率會降低。同時SGD還需預先設置一個合適的學習率lr,當預設的lr過小,會導致網絡在深層訓練時收斂速度過慢;預設的lr過大,會導致在訓練過程中優(yōu)化的幅度跳出函數的范圍(最優(yōu)點),因此選擇一個自適應學習算法來解決上述問題。
2.2.2 自適應矩估計Adam
自適應矩估計Adam(Adaptive Moment Estimation)[21]作為SGD-M和RMSprop的結合體,融合了動量和自適應的優(yōu)點,是一種計算每個參數的自適應學習率的優(yōu)化方法。Adam利用梯度的一階矩估計和二階矩估計來動態(tài)的調整學習率,來進行修正偏差,其計算過程如下。
mt=β1mt-1+(1-β1)gt
(1)
vt=β2vt-1+(1-β2)gt2
(2)
式中:mt——一階動量,梯度的第一矩,各個時刻梯度方向的指數移動平均值;
vt——二階動量,梯度第二矩(無中心方差)的估計值,代表所有梯度值的平方和;
gt——當前參數的梯度。
當mt和vt被初始化為0向量時,mt和vt就會向0偏置,所以需要經過式(3)和式(4)來偏差校正第一和第二階矩估計值來抵消這些偏差。
(3)
(4)
(5)
(6)
(7)
式中:θt——當前待優(yōu)化的參數;
ε——平衡因子;
η——學習率。
超參數設定值:一階動量衰減系數β1=0.9;二階動量衰減系數β2=0.999;設置平衡因子ε=10-8來保持數值穩(wěn)定。
SPP-x模塊的改進策略:原YOLOv5中的SPP模塊是將5×5、9×9、13×13三個不同尺寸的MaxPool層并行連接,并借鑒了殘差網絡中的捷徑連接思想,然后做進一步融合,在一定程度上解決了目標多尺度問題。項目組將SPP模塊三個不同尺寸大小的MaxPool層,改成三個尺寸相同的5×5MaxPool層連接,最后借鑒卷積映射思想,連接一個1×1卷積層,調整輸出尺寸大小,改進前后模塊如圖2所示。替換SPP-x模塊后完整YOLOv5網絡結構圖如圖3所示。
(a) 原SPP模塊結構
(b) SPP-x模塊結構圖圖2 SPP和SPP-x模塊結構圖Fig. 2 SPP and SPP-x module structure diagram
圖3 YOLOv5整體網絡結構Fig. 3 YOLOv5 overall network structure
優(yōu)化后的SPP-x模塊中兩個5×5MaxPool層與原來一個9×9MaxPool層計算輸出結果相同,三個連接的5×5MaxPool層與原來一個13×13MaxPool層計算輸出結果相同。為保證試驗公平以及驗證試驗結果的準確性,在試驗中將SPP-x模塊最后的1×1卷積層刪除,只對比了只含有MaxPool層改進前后的兩個模塊。試驗數據如表2所示。
表2 模塊參數設置與運算時間Tab. 2 Module parameter setting and calculation time
表2試驗結果表明,原SPP模塊的運算時間為0.483 6 s, SPP-x模塊運算時間為0.226 4 s。SPP-x模塊的平均運算時間減少了50%,計算速度比原模塊更快。
傳統(tǒng)優(yōu)化深度卷積神經網絡的思路幾乎都是根據卷積計算公式原理來不斷疊加網絡層數,隨著網絡深度的增加,當深層次的網絡開始收斂時,訓練時產生的誤差會使得:當平均精度mAP達到飽和后,會迅速下降,使得學習的方向偏離最優(yōu)方向,并沒有淺層的網絡模型訓練效果好。因此在不引入額外參數,也不引入計算復雜度的條件下,文獻[22]提出了直接映射和卷積映射2種映射方法,在理論上使得模型在訓練時學習到的結果不會比原結果差,并且會優(yōu)先訓練淺層的網絡模型,再逐步訓練深層的網絡模型。(1) 直接映射:當輸入尺寸和輸出特征參數、尺寸相同時,可以直接進行相加映射。(2) 卷積映射:當輸入輸出不同時,為滿足輸出特征個數、尺寸與輸入相同,加上一個1×1卷積來增加維度,以匹配尺寸,使得輸入輸出一致。
為降低ResNet網絡模型參數數目,對殘差塊進行優(yōu)化,即將兩個3×3串聯(lián)的卷積層瓶頸結構替換成1×1、3×3、1×1串聯(lián)的卷積層。在卷積核參數改進的基礎上,結合直接映射和卷積映射構建出新的卷積模塊,如圖4所示。新結構中3×3卷積層首先通過第一層1×1卷積把256維channel降到64維,然后在下一層的1×1卷積做出還原,從而保證精度。對比兩種卷積核整體參數數目可知:修改前為3×3×256×256+3×3×256×256=1 179 648;修改后為1×1×256×64+3×3×64×64+1×1×64×256=69 632,數量相差16.94倍。
(a) 修改前模塊
(b) 修改后模塊圖4 卷積核Fig. 4 Convolution kernel module
基于卷積神經網絡的基礎架構以及卷積核的改進,通過2種映射方式交替更迭構建出了ResNet-34模型結構,改進后的模型網絡結構圖如5所示。
圖5 改進后的ResNet-34網絡模型結構Fig. 5 Improved ResNet-34 network model
本文分別在YOLOv5中設置兩種優(yōu)化器SGD和Adam,并隨機選取水稻病害葉片數據集中754幅圖像,在相同的網絡層數下訓練400輪epochs=400。SGD初始學習率lr0=0.01;Adam的lr0=0.001。為控制模型一致,保持訓練數據batch size一致,并且關閉shuffle,其余超參數循環(huán)學習率lrf=0.2,學習率動量momentum=0.937等均設置相同,模型其余部分已經盡量保持一致。
YOLOv5的最終損失函數Lall=λ1Lobj+λ2Lcla+λ3Lloc,主要由目標損失Lobj、分類損失Lcla和定位損失Lloc三部分損失加權求和組成,其中Lobj和Lcla均采用BCEWithLogits loss計算,Lobj計算所有樣本的目標損失,Lcla只計算正樣本的分類損失,其計算公式如式(8)所示。
Lobj=Lcla
(8)
xi、yi——將訓練樣本分割成網格后的坐標位置。
其中定位損失Lloc采用CIoU loss計算,只計算正樣本的定位損失,計算公式如式(9)所示。
Lloc=CIoU_loss
(9)
(10)
(11)
式中:λ1、λ2、λ3——多任務損失函數權重;
B、w、h——中心點、寬、高;
c——預測框pre和真實框gt最小閉包區(qū)域對角線距離;
v——預測框和真實框長寬比例差值的歸一化;
α——平衡因子,長由于寬造成的損失和IoU部分造成的損失之間的比值。
為了驗證兩種優(yōu)化器的性能,項目組在pytorch中的對同一網絡YOLOv5進行試驗,并比較了兩種模型的交叉熵損失函數和精準率,隨著訓練層數epoch收斂變化的情況,如圖6所示。
(a) 訓練集定位損失值
(b) 訓練集分類損失值
(c) 訓練集目標損失值
(d) 精準率圖6 優(yōu)化器的性能對比圖Fig. 6 Performance comparison diagram of the optimizer
試驗用相同數量的超參數來調參SGD和Adam模型,在本文的水稻病害葉訓練集上,Adam模型的定位損失Lloc和分類損失Lcla在第3輪就開始分別就收斂于0.07和0.02,雖然SGD模型對應的loss值收斂于0.05和0.01均比Adam模型低,但卻是從第10輪左右開始收斂;在訓練前期SGD模型Lloc、Lcla一直單調減,出現了較大坡度的下降趨勢,未出現收斂趨勢,而Adam模型的定位和分類loss值呈現上下波動,開始出現收斂趨勢。雖然SGD在train集上的loss最終收斂值均分別比Adam低1.5%、0.8%,但是Adam的收斂速度明顯優(yōu)于SGD。并且從圖6(c)可看出Adam模型目標損失值Lobj整體呈現收斂趨勢,SGD依舊出現了先下降后收斂的現象,同時由圖6(d)可看出Adam模型的精準率最終收斂于97%,而SGD模型的精準率收斂于95%,Adam比SGD模型高2%,所以當需要訓練較小的自定義水稻病害葉片數據集,Adam是更合適的選擇。
模型的Precision和Recall數據結果如圖7所示。
(b) 召回率圖7 精準率和召回率Fig. 7 Precision and Recall
試驗將水稻葉片病害數據集中4種不同類別共4 401幅圖像一起進行訓練。通過對比改進后的YOLOv5和ResNet-34神經網絡模型,來探究找出最合適進行水稻葉片病害識別的模型,并應用到實踐當中。為科學地評估兩個的模型的性能,引入精準率Precision、召回率Recall作為衡量改進后的YOLOv5和ResNet-34模型性能的主要指標,初始學習率lr0=0.01,anchor=4,采用Adam優(yōu)化器(weight_decay=5×10-5)。經過400次迭代,當YOLOv5的3個損失函數取值小幅波滿足了閾值條件(IoU≥0.5),意味著網絡模型已經穩(wěn)定,然后輸出穩(wěn)定的YOLOv5網絡模型結構。
對比精準度發(fā)現,YOLOv5在epoch=200開始收斂,收斂于95.6%左右,ResNet-34在epoch=240時開始收斂,收斂于89.8%附近,YOLOv5比ResNet-34模型高5.8%;對比召回率發(fā)現,YOLOv5和ResNet-34分別在200,280開始收斂,YOLOv5最終收斂于97.4%附近,而ResNet-34收斂于89.1%左右,YOLOv5整體比ResNet-34模型高8.3%,這表明改進后的YOLOv5在性能上得到了一定程度的改善。
傳統(tǒng)目標檢測結果Precision和Recall值呈現正相關分布,并且希望兩者值越高越好,但在特殊情況下會出現二者呈現負相關的極端情況(Precision值極高,Recall值極低或相反),致使無法判定神經網絡的性能。
為了更加科學的評價改進后的YOLOv5模型,本文引進通過在水稻病害葉數據集計算得出的IoU設為0.5時的平均精度mAP_0.5和IoU∈[0.5, 0.95],步長stride=0.05的mAP_0.5:0.95作為另外兩種衡量改進后的YOLOv5性能指標,其結果如圖8所示。
圖8 mAP值圖Fig. 8 mAP of data
mAP_0.5和mAP_0.5:0.95分別收斂于0.983、0.822,二者相差0.161。主要原因為mAP_0.5在水稻數據集中的4個類別在計算平均精準度時,將Precision-Recall曲線的橫軸坐標平均分成10等份(精度低)和100等份(精度高),即使是在精度提高了10倍的情況下,mAP_0.5:0.95值依舊處于中上階段,這表明本文的水稻數據集中不良數據很少且改進后的YOLOv5對水稻數據集訓練效果良好。
本文將訓練好的YOLOv5模型對測試集中4個樣本,標簽名稱設置為白葉枯病blight、褐斑病spot、稻瘟病blast和健康healthy,共437幅圖像樣本進行識別,每張識別結果圖給出類別置信度,單張圖片識別速度為0.34 s,部分樣本識別效果如圖9所示。
(a) 稻瘟病
(b) 褐斑病
(c) 白葉枯病
(d) 健康狀態(tài)圖9 識別效果圖Fig. 9 Recognition effect graphics
1) 本文提出一種基于改進的YOLOv5模型,對自然環(huán)境下的水稻病害葉片進行識別檢測,首先通過將水稻原始圖像進行數據增強操作,擴增數據集。然后對YOLOv5模型中的SPP模塊進行改進,并與原模塊進行對比試驗。同時替換YOLOv5中的優(yōu)化函數為Adam,試驗分別比較Adam和SGD的YOLOv5在訓練集上損失函數的收斂情況。最后將改進后的YOLOv5與ResNet-34模型進行對比試驗。
2) 通過試驗發(fā)現,改進后的SPP-x運算時間僅為原SPP模塊的50%。同時,通過比較SGD和Adam優(yōu)化器在訓練集上3種損失函數 在訓練前期的收斂速度和Precision值,表明Adam的收斂速度更快,且Adam的精準率最終收斂值97%,比SGD優(yōu)化器高2%。將改進后的YOLOv5模型和ResNet-34在相同數據集里訓練迭代400輪比較發(fā)現,基于SPP-x的YOLOv5模型的精準率高5.8%,召回率高8.3%。同時,YOLOv5自身的mAP_0.5和mAP_0.5:0.95兩項指標分別達到了0.983、0.822,表明樣本數據集不良數據較少,且模型訓練效果較好。通過對訓練后的YOLOv5模型進行實際應用發(fā)現,檢測效果比較理想,能夠達到輔助水稻病害識別診斷的目的。