何 欣,李書琴,劉 斌
(西北農(nóng)林科技大學信息工程學院,陜西楊凌 712100)
葡萄在生長過程中受到環(huán)境、細菌等影響而產(chǎn)生黑腐病、褐斑病、黃葉病和毛氈病等病害,這些病害多數(shù)發(fā)生在葡萄樹的葉片部位,對葡萄的產(chǎn)量和品質(zhì)造成不利影響。傳統(tǒng)憑借經(jīng)驗和病理知識的人工確診方式存在周期長且耗費人力的問題,而計算機視覺的發(fā)展給農(nóng)作物病害識別帶來了新的研究方向[1?2],比如日趨成熟的機器學習[3?5]與深度學習[6?8]為葡萄葉片病害識別提供了新的解決方案。不同程度的同種葡萄病害在病斑的紋理和顏色等方面具有較強的相似性,導致識別不同程度病害的準確率降低。基于深度學習的卷積神經(jīng)網(wǎng)絡能夠避免人為設計提取病害特征的問題,為實現(xiàn)葡萄葉片病害識別的自動化,文獻[9]采用多類支持向量機對葡萄葉片病害進行分類,平均識別準確率可達到90%。文獻[10]采用UnitedModel 對4 種葡萄葉片病害進行識別,使得識別準確率達到99.17%。文獻[11]采用尺度不變特征轉(zhuǎn)換(Scale Invariant Feature Transform,SIFT)特征對葉片序列日期進行匹配得到生長序列圖,并通過檢測序列圖中病斑面積與數(shù)量的變化情況診斷葉片病害。但是該方法對葉片姿態(tài)要求較為嚴格,存在一定的局限性。文獻[12]使用MobileNet 對6 種葡萄病害進行識別,獲得了87.50%的平均識別準確率。文獻[13]采用OTSU 算法對葡萄葉片病害區(qū)域進行分割,并利用形態(tài)學算法改善病害形態(tài),選擇Prewitt 算子提取病變區(qū)域的完整邊緣,使用BP 神經(jīng)網(wǎng)絡進行病害識別。文獻[14]提出一種葡萄葉片病害自動分割識別系統(tǒng),平均分割準確率和分類準確率可分別達到90%和92%。文獻[15]采用全局閾值法提取葡萄病害部位,通過支持向量機對葡萄葉片圖像進行分類,并在1 135 張葡萄葉片病害測試圖像上獲得了93.035%的最佳識別準確率。文獻[16]提出一種基于圖像分析和BPNN 的葡萄葉片病害自動檢測方法,使得準確率高達91%。
以上傳統(tǒng)的機器學習方法需要人工提取病斑特征,對病害表征相似的病害提取特征能力有限,且不同病害通常需要提取不同的特征,因此此類方法不具有普適性。本文在ResNet[17]網(wǎng)絡的基礎上,通過引入多卷積組合[18]結(jié)構(gòu)和SENet(Squeeze-and-Excitation Networks)[19]來提高網(wǎng)絡特征提取能力,并利用構(gòu)建的識別模型實現(xiàn)對葡萄葉片病害的準確識別。
本文研究的葡萄葉片病害圖像由以下2 個數(shù)據(jù)集組成:AI Challenger 中葡萄葉片的數(shù)據(jù)集和從寧夏志輝源石酒莊葡萄酒莊采集的葡萄葉片毛氈病與健康圖像數(shù)據(jù)集,采集時間為2019 年5 月,在自然光條件下使用小米6X 手機拍攝。8 種葡萄葉片病害樣本圖像如圖1 所示。
圖1 8 種葡萄葉片病害樣本圖像Fig.1 Sample images of eight grape leaf diseases
由于AI Challenger 中黃葉病一般程度的病害葉片數(shù)量較少,為平衡各類別病害樣本數(shù)量,對黃葉病一般程度的病害葉片進行90°、180°和270°的旋轉(zhuǎn)和明亮度的變化操作,使得數(shù)據(jù)擴充至原始數(shù)據(jù)的7 倍,擴充后的數(shù)據(jù)集構(gòu)成如表1 所示。
表1 實驗數(shù)據(jù)集構(gòu)成Table 1 Composition of experimental dataset
為更好地識別葡萄葉片病害,防止病害圖像的非葉片區(qū)域影響病害識別而導致識別準確率下降,應先提取葡萄病害圖像中的葡萄葉片區(qū)域,再對葡萄葉片區(qū)域進行病害識別。采用Mask R-CNN[20]對葡萄葉片區(qū)域進行提取,并將提取的葡萄葉片輸入Multi-Scale ResNet 中進行處理和識別。
損失函數(shù)能夠反映模型與實際數(shù)據(jù)的差異,且損失函數(shù)越小則表明模型效果越好。采用Mask R-CNN提取葡萄葉片時,每一個感興趣區(qū)域(Region of Interest,RoI)的損失函數(shù)L如式(1)所示:
其中,L(class)表示分類損失,L(bbox)表示邊框回歸損失,L(mask)表示掩膜(mask)損失。
L(class)的計算方法如式(2)所示:
其中,pu表示真實分類u對應的概率。根據(jù)數(shù)據(jù)集中葡萄葉片的種類劃分了復雜背景下病害葉片、復雜背景下健康葉片和簡單背景下病害葉片這3 種類別。
邊框回歸的目的是增大輸出邊框與真實邊框之間的IoU(Intersection-over-Union)重疊區(qū)域。L(bbox)評估檢測框定位的損失函數(shù)為:
其中,tu表示真實分類對應的預測平移縮放參數(shù)且,v表示真實平移縮放參數(shù)且v=(vx,vy,vw,vh)。smoothL1損失函數(shù)如下所示:
L(mask)表示平均二值交叉熵損失,對于一個屬于第k個類別的RoI,Mask R-CNN 中的mask 分支用于預測k個種類的二值掩膜輸出,對于第k類的RoI,第k個二值掩膜輸出是RoI 的損失L(mask)。L(mask)僅考慮第k個mask,從而使得網(wǎng)絡能夠輸出每一類的mask,且不存在不同類別mask 之間的競爭,具體如式(5)所示:
其中,k表示葉子種類數(shù)目。
為更好地提取葡萄葉片,本文利用Mask R-CNN提取葡萄葉片。在提取葡萄葉片之前,由于Mask R-CNN需要統(tǒng)一圖像大小作為網(wǎng)絡輸入,因此選取雙線性插值法對輸入圖像進行處理。雙線性內(nèi)插法示意圖如圖2 所示,即P點值先在x方向上進行一次線性插值,再在y方向上進行一次線性插值。
圖2 雙線性內(nèi)插法示意圖Fig.2 Schematic diagram of bilinear interpolation method
綜合x和y這2 個方向上的雙線性插值如式(6)所示:
其中,f(x,y)表示坐標為(x,y)點的值,Q11表示坐標為(x1,y1)的點,Q12表示坐標為(x1,y2)的點,Q21表示坐標為(x2,y1)的點,Q22表示坐標為(x2,y2)的點。
將圖像縮放到統(tǒng)一大小后使用LabelMe[21]標注數(shù)據(jù)集,標注類別為葡萄葉片和背景區(qū)域。標注數(shù)據(jù)集后將葡萄葉片病害圖像輸入Mask R-CNN網(wǎng)絡中進行檢測,選取ResNet101 作為Mask R-CNN 的主干網(wǎng)絡,將Microsoft COCO數(shù)據(jù)集上訓練好的Mask R-CNN模型遷移至葡萄葉片病害數(shù)據(jù)集上進行訓練,并對網(wǎng)絡模型的參數(shù)值進行初始化。Mask R-CNN是由何凱明等人在原始Faster R-CNN[22]基礎上增加全卷積網(wǎng)絡(Fully Convolutional Networks,F(xiàn)CN)[23]而改進得到的,可以快速準確地進行目標檢測和精準語義分割。Mask R-CNN 網(wǎng)絡結(jié)構(gòu)如圖3 所示,該框架可以用來完成目標檢測、目標分類和像素級目標分割,且具有良好的擴展性和易用性。
圖3 Mask R-CNN 網(wǎng)絡結(jié)構(gòu)Fig.3 Mask R-CNN network structure
Mask R-CNN 的創(chuàng)新點在于采用RoI Align 解決了像素偏差(Misalignment)問題。RoI Align 通過遍歷每個候選區(qū)域而將其分割成K×K個單元,采用雙線性內(nèi)插法計算每個單元中4 個坐標的位置并進行最大池化。
在輸入圖像到CNN 網(wǎng)絡中獲得對應的特征圖后,從特征圖中獲得多個候選RoI,再將這些候選的RoI 發(fā)送至RPN 網(wǎng)絡進行二值分類和邊框回歸,從而過濾掉一部分候選RoI,并對剩余的RoI進行RoI Align 操作得到大小固定的特征圖。將上述RoI 通過全連接層進行分類,邊框回歸通過對每一個RoI 進行FCN 操作,從而生成mask。
經(jīng)過Mask R-CNN 處理后可得到葡萄葉片的mask 圖像,對圖像的非葉片區(qū)域進行零像素填充,即保留葡萄葉片的像素值,其余部分填充零像素。本文提取的葡萄葉片病害圖像如圖4 所示。根據(jù)填充后的圖像中葉片區(qū)域占比決定對葉片是否進行縮放,當占比值低于50%時,對mask 圖像再次使用雙線性插值法將葉片區(qū)域恢復至原始大小,便于后續(xù)識別網(wǎng)絡進行有效識別。
圖4 本文提取的葡萄葉片病害圖像Fig.4 Grape leaf disease image extracted by this paper
圖5 殘差塊結(jié)構(gòu)Fig.5 Structure of residual block
ResNet 通常被廣泛用于病害和蟲害的識別[24-26],它通過增加網(wǎng)絡的深度有效提升神經(jīng)網(wǎng)絡的特征提取性能,并采用殘差學習的思想在一定程度上解決了信息傳遞時信息丟失、損耗和梯度消失與爆炸等網(wǎng)絡退化問題。殘差網(wǎng)絡中通過直接添加輸入信息到輸出來保證原始信息的完整性。典型的殘差塊結(jié)構(gòu)如圖5所示。病斑較大且較為密集,多數(shù)高于56 像素×66 像素,毛氈病的病斑區(qū)域較小且通常較為稀疏,多數(shù)低于19 像素×12 像素。由于固定尺度的卷積核在感知不同大小的病斑時效果不佳,因此本文將原始ResNet中conv1 的7×7×64 卷積改為多卷積組合結(jié)構(gòu),并采用數(shù)量依次為48、24 和24 的7×7、5×5 和3×3 不同尺度進行特征提取,利用1×1 卷積降低通道數(shù),將ResNet18 的conv1 設置成不同尺寸的卷積核組合的形式,以改善網(wǎng)絡底層對不同特征的響應。多卷積組合結(jié)構(gòu)如圖6 所示,加入多卷積后的ResNet18 與原始ResNet18 網(wǎng)絡結(jié)構(gòu)對比如表2 所示。
葡萄葉片病害在不同時期具有不同的表征,比如黑痘病和褐斑病一般程度的葡萄葉片病斑較小且較為稀疏,多數(shù)低于26 像素×28 像素,而嚴重程度的
圖6 多卷積組合結(jié)構(gòu)Fig.6 Multi-convolution combination structure
表2 原始ResNet18 和改進ResNet18 結(jié)構(gòu)對比Table 2 Structure comparison between original ResNet18 and improved ResNet18
文獻[19]從特征通道間的關系出發(fā),提出SE(Squeeze-and-Excitation)模塊。SE 模塊先對卷積得到的特征圖進行擠壓(Squeeze),即將每個二維特征通道變?yōu)橐粋€實數(shù)從而得到通道級的全局特征,再對全局特征進行激勵(Excitation)以學習各個通道間的關系,從而得到不同通道的權(quán)重,并與原始特征圖相乘得到最終特征圖。SE 模塊是在通道維度上加上注意力機制,該注意力機制可使得模型更加關注信息量最大的通道特征且抑制不重要的通道特征,即學習通道之間的相關性從而對不同通道進行權(quán)重分配,以幫助網(wǎng)絡學習重要特征?;赟E 模塊注意力機制,可將SE 模塊與現(xiàn)有的網(wǎng)絡結(jié)構(gòu)進行融合[27]。
通過在ResNet18結(jié)構(gòu)中加入SE模塊,構(gòu)成的新結(jié)構(gòu)如圖7所示。網(wǎng)絡中引入2個全連接層,用于限制模型復雜度、輔助增加模型的泛化能力,并在求和之前對殘差部分進行特征重定向。SE模塊使得神經(jīng)網(wǎng)絡根據(jù)重要度提高對網(wǎng)絡有用的特征并抑制用處較小的特征。
圖7 加入SENet 后的ResNet 結(jié)構(gòu)Fig.7 ResNet structure after adding SENet
實驗環(huán)境配置如表3 所示,Mask R-CNN 的主干網(wǎng)絡選用ResNet101,先訓練20 epoch 的head layers,再訓練40 epoch 的all layers。Multi-Scale ResNet 模型選用Momentum 優(yōu)化器,且分別訓練100 epoch、70 epoch 與90 epoch 時,學習率初始值分別選取為0.01、0.001 和0.000 1,動量值均為0.9,batch 設置為64,選用識別準確率作為評價指標。
表3 實驗環(huán)境配置Table 3 Experimental environment configuration
為驗證Multi-Scale ResNet 的有效性,實驗對SVM、Inception-ResNet、ResNeXt-50 和文獻[10]中的UnitedModel 這4 種方法的識別準確率進行對比分析,結(jié)果如表4 所示。其中,SVM 方法的主要過程是先使用Mask R-CNN 提取葡萄葉片,再提取各病斑的HSV 顏色特征和HOG 紋理特征,并輸入SVM中獲取結(jié)果。從表4 可以看出,SVM 對葡萄葉片病害的識別準確率較低,這是因為它在識別過程中需要人工設計特征進行特征提取,而顏色和紋理特征比較有限,同種病害的一般程度和嚴重程度在顏色和紋理特征方面較為相似,黑痘病與褐斑病在葡萄葉片的病斑表象比較相似,毛氈病病斑顏色與葉片正常部位相似,因此不能較好的識別,且對于不同的病害需要提取不同的特征,不具有廣泛的適用性。Inception-ResNet 和ResNeXt-50 的平均識別準確率分別為87.00%和87.68%,這2 種模型對褐斑病嚴重程度和黑痘病一般程度的識別準確率較低。Inception-ResNet 通過使用1×n的卷積核和n×1 的卷積核代替n×n卷積,使用多個3×3 卷積代替5×5 卷積和7×7 卷積,因此對于不同程度的病害的識別準確率較低。UnitedModel 的平均識別準確率為87.94%。本文的Multi-Scale ResNet 的平均識別準確率可達90.83%,相對于ResNeXt 網(wǎng)絡(層數(shù)為50)網(wǎng)絡參數(shù)減少了11.72×106。
表4 不同方法的識別準確率對比Table 4 Comparison of recognition accuracy of different methods %
為確定ResNet的層數(shù),實驗對ResNet18、ResNet50和ResNet101 這3 種結(jié)構(gòu)的擬合能力進行對比,結(jié)果如表5 所示。
表5 3 種結(jié)構(gòu)的擬合能力對比Table 5 Comparison of fitting ability of three structures
從表5 可以看出,ResNet101 的平均識別準確率最高可達88.80%,ResNet50 比ResNet18 的平均識別準確率低,這是因為ResNet50 對褐斑病和黑痘病一般程度的識別準確率雖然較高,但是對其他程度的病害的識別準確率均有所下降,最終導致識別準確率下降。ResNet18 在平均識別準確率比ResNet101 低0.84 個百分點的情況下,網(wǎng)絡參數(shù)減少了31.33×106個,且所需存儲空間也減少了119.54 MB,考慮到之后模型移植到移動端,因此本文選用ResNet18 作為葡萄葉片病害識別的基礎網(wǎng)絡。
為確定多卷積核組合時不同卷積核個數(shù)對模型的影響,針對(7×7,64),這4 種卷積核個數(shù)的模型,實驗對其識別準確率進行對比分析,結(jié)果如表6所示。從表6可以看出,的多卷積組合取得了89.08%的平均識別準確率,對于褐斑病、黑痘病和黃葉病一般程度的識別準確率分別為86.36%、65.71%和95.56%,相比原始(7×7,64)卷積核在褐斑病、黑痘病和黃葉病一般程度分別提高了9.09、8.57和2.23個百分點,這3種病害的一般程度均呈現(xiàn)出病斑較小且較為稀疏的特征,且原始卷積核較大,因此不能較好感知一般程度的病害。多種卷積核組合的方式通過不同的卷積核使得ResNet18 感知不同的特征,因此能夠較好感知不同大小的病斑,提高網(wǎng)絡的特征提取能力。綜合數(shù)據(jù)集中各種病害的表征,多種卷積核個數(shù)分別為24、24和48的組合取得了較好的實驗結(jié)果,比其他3 種網(wǎng)絡分別提高了1.12、2.24 和1.12 個百分點。
為增強實驗結(jié)果的準確性并驗證改進點對模型的影響,針對多種卷積核組合和SE 模塊這2 個改進點,將改進點與ResNet18模型分別組合為以下4組模型:1)原始ResNet18;2)ResNet18+多卷積;3)ResNet18+SENet;4)ResNet18+SENet+多卷積。實驗對上述4 種模型的識別準確率和平均識別準確率進行對比,結(jié)果如表7所示。
表7 多卷積與SENet 對識別準確率的影響Table 7 Effect of multi-scale and SENet on recognition accuracy %
從表7 可以看出,加入多卷積的ResNet18 對褐斑病嚴重程度的識別準確率相比ResNet18 下降了10 個百分點,這是因為褐斑病嚴重程度的葡萄葉片中呈現(xiàn)出連續(xù)的大片病斑區(qū)域,多卷積核中對于大卷積核的個數(shù)設置的比原始卷積少,因此識別準確率下降。加入SE 模塊的ResNet18 在褐斑病一般程度、黑痘病一般程度上平均識別準確率相比原始ResNet 分別提升了6.82 和6.29 個百分點,但是對黑痘病嚴重程度和黃葉病一般程度的識別準確率均下降了2.22 個百分點,這是因為SENet 注意力機制能夠自動獲取各特征通道的重要性,使得網(wǎng)絡學習到更加重要的特征,從而在網(wǎng)絡學習特征時更加均衡,這種均衡導致對褐斑病一般程度和黑痘病一般程度的識別準確率提升,而對于褐斑病和黑痘病嚴重程度的識別準確率有所下降。同時加入SE 模塊和多卷積結(jié)構(gòu)在平均識別準確率上達到了90.83%,相比原始ResNet18 提高了2.87 個百分點,彌補了單獨加入SE 模塊和多卷積結(jié)構(gòu)的不足,解決了僅加入多卷積核組合或僅加入SE 模塊造成部分病害識別準確率下降的問題。
為提高對不同程度葡萄葉片病害的識別準確率,本文提出一種基于Multi-Scale ResNet 的葡萄葉片病害識別方法。該方法使用Mask R-CNN 提取葡萄葉片,以減少復雜背景區(qū)域的影響,并把提取的病害圖像輸入改進的ResNet18網(wǎng)絡中,通過將ResNet18 的conv1 層改為多卷積核組合的方式改變網(wǎng)絡對不同特征的響應,同時在ResNet18 中加入SENet 模塊以提高網(wǎng)絡特征提取能力。實驗結(jié)果表明,本文方法相比傳統(tǒng)SVM 方法的適用性更強,且平均識別準確率達到90.83%。下一步將結(jié)合低照度增強算法研究不同照度對病害識別準確率的影響,以進一步提高模型的魯棒性。