賈 璐 葉中華
(中國農業大學信息與電氣工程學院, 北京 100083)
葡萄是世界上最重要的果樹樹種之一,它是一種廣泛種植在世界各地的作物,并且具有豐富的營養價值、藥用價值和經濟價值等。然而,每年包括葡萄在內的農作物由于病害侵襲,對其產量造成了嚴重的損失。最近研究發現,植物病害是造成世界各地農作物產量下降的主要原因之一,這對全球糧食安全也造成了嚴重的威脅[1-3]。此外,傳統的農作物病害識別方法大多依靠人工觀察和經驗判斷或者在實驗室依賴特定的實驗分析來識別病害的類別,非常低效并且操作復雜,難以滿足實際農業生產的需求。因此研究農作物病害的智能識別,具有重要意義。
隨著人工智能技術的飛速發展,許多研究人員使用機器視覺和圖像處理的方法來識別農作物病害[4-7]。傳統的機器視覺和圖像處理的病害識別方法是從顏色、形狀、紋理和小波特征或組合中提取外部特征[8-11],然后利用分類器對提取的特征進行分類。最后,實現農作物病害的分類。其中常用的分類器包括支持向量機[12-13]、貝葉斯[14]、主成分分析[15]、隨機森林[16-17]和決策樹[18]等。例如,MAJUMDAR等[5]首先采用模糊c-means聚類算法來提取小麥葉片的病害特征,然后利用人工神經網絡(ANN)對提取的病害特征進行分類,最終實現對小麥病害的識別。PANTAZI等[6]采用局部二值模式(LBPs)進行病害特征的提取,并實現了對不同作物病害的自動識別。張燕等[19]將農作物的顏色紋理等特征結合支持向量機(SVM)提出了一種有效的病害識別模型。然而,這些研究大都是實驗室環境下進行的,采集的病害圖像數據噪聲較少,這與自然環境下的病害圖像差距較大,難以滿足實際農業生產的需求。
近年來,深度學習方法被應用到各個領域,并且取得了較大的進展,其中卷積神經網絡(CNNs)在圖像識別領域取得了顯著的效果。目前有許多研究者已經提出了一系列經典的CNN模型,比如AlexNet[20]、VGG[21]、ResNet[22]和DenseNet[23]等。同時,隨著移動設備的普及,一些學者也提出了一些輕量級CNN模型,比如MobileNetV1[24]、MobileNetV2[25]、ShufftNetV1[26]、ShufftNetV2[27]和GhostNet[28]等。此外,許多研究者已將深度學習應用到農作物病蟲害識別領域。MOHANTY等[29]訓練了一個深度卷積神經網絡模型,用來識別14種作物的26種病害,在測試集上的準確率達到99.35%。LU等[30]提出了一種基于深度卷積神經網絡的模型,并且基于自然環境下采集的水稻病害數據集進行實驗,在10倍交叉驗證策略下,提出的模型準確率達到95.48%。PRIYADHARSHINI等[31]提出了一種基于深度卷積神經網絡的玉米葉片病害識別模型,然后使用公開數據集PlantVillage中的玉米葉片圖像進行實驗,最終模型在測試集上的識別準確率達到97.89%。ZHANG等[32]對AlexNet模型進行改進,提出了一種新的植物病害識別模型GPDCNN,并且在黃瓜病害數據集上展開實驗,實驗結果表明該模型可以有效識別黃瓜病害。CHEN等[33]改進了DenseNet模型,并設計了一個新的玉米病害識別模型Mobile-DANet,在其自建數據集上的平均準確率為95.86%。李書琴等[34]設計了一種輕量級卷積神經網絡模型Scale-Down ResNet,該模型對植物病害葉片具有較好的識別效果。以上深度學習模型,雖然在植物病害識別領域已經取得了一定的進展,但是經典的CNN模型依然存在模型參數量和計算量較大的問題,輕量級的CNN模型雖然參數量和計算量大幅降低,但是當應對自然狀態下復雜背景的病害圖像時,其識別準確率仍有待進一步提高。上述研究大多在實驗室環境下進行,或者是專業人員為了研究而專門拍攝,并不是在實際生產中拍攝,所以采集到的病害圖像噪聲較小,與在自然復雜環境中拍攝的病害圖像有較大差距,難以滿足實際農業生產的需要。
為解決上述問題,本文提出一種新的網絡模型MANet,用于自動識別自然狀態下的葡萄病害圖像,如白腐病、褐斑病和霜霉病。在該模型中嵌入倒殘差模塊[25]來構建網絡,以降低模型參數量和計算成本。同時,提出一種多尺度特征融合模塊(Multi-scale convolution, MConv),可以提取病害圖像多尺度的特征并進行融合,提高模型對不同病害的識別準確率。此外,在MANet中嵌入注意力機制SENet[35]模塊,以增強模型在復雜背景的圖像中提取關鍵病害特征的能力,并抑制其他無關信息。
本文使用2個植物病害數據集進行實驗,一個是本文構建的復雜背景葡萄病害數據集(命名為Grape_Complex),另一個是公開的PlantVillage數據集(http:∥www.plantvillage.org)。
PlantVillage是一個公開的農作物病害數據集,共有54 305幅圖像,包含13種作物,涉及26類作物病害葉片和12類健康葉片,共計38種類別[36]。這個數據集中的圖像是由專業人士出于科學研究目的而拍攝的,因此其病害圖像的背景比較簡單。實驗中,按照比例8∶2將圖像隨機分成訓練集和測試集。同時將數據集中的原始圖像歸一化為3×224×224,使其適應模型的輸入。PlantVillage數據集中的部分樣本圖像如圖1所示。

圖1 PlantVillage數據集中的部分樣本圖像
Grape_Complex數據集包括3種病害(白腐病、褐斑病、霜霉病)和健康葉片,數據主要來源于農管家在線農技問答平臺(http:∥www.laodao.so/)。農管家是一種為農民在實際生產中提供交流的在線農技問答平臺,其中問答板塊主要是農民在種植農作物過程中遇到的各種作物病害、蟲害等問題,農民提出問題后會有相關的專家進行解答。基于此,收集該在線農技問答平臺的相關數據,然后根據專家領域的知識對圖像標記病害類別,并保存為JPG格式。Grape_Complex數據集中的各類別樣本示例如圖2所示。明顯可以看出,這些圖像是農民在實際生產中拍攝的,比為科學研究目的而去專門拍攝的圖像背景更加復雜。本研究收集的病害圖像數據更加符合實際農業生產的情況。最終,Grape_Complex數據集共收集2 022幅圖像,包括548幅白腐病圖像,717幅褐斑病圖像,414幅霜霉病圖像,343幅健康圖像。

圖2 Grape_Complex數據集中的樣本圖像
由于收集的Grape_Complex數據集中的圖像分辨率和尺寸不同,首先將圖像尺寸調整為3×224×224,以適應模型的輸入尺寸,然后,將數據集按照比例8∶2分為訓練集和測試集。其中訓練集有1 616幅圖像,包括438幅白腐病圖像、573幅褐斑病圖像、331幅霜霉病圖像以及274幅健康圖像。測試集有406幅圖像,包括110幅白腐病圖像、144幅褐斑病圖像、83幅霜霉病圖像以及69幅健康圖像。由以上統計可以發現,自建數據集中樣本分布存在不平衡的現象,這種不平衡的訓練數據會干擾到深度學習模型的識別效果[37-39],所以本文對原始數據進行數據增強,擴充訓練樣本的數量,以增加訓練圖像中樣本的多樣性,防止模型出現過擬合現象,同時使模型對自然狀態下的病害圖像具有較強的泛化能力。本文主要通過隨機旋轉、水平翻轉和垂直翻轉來擴充訓練樣本的數量。數據增強后的樣本分布如表1所示。

表1 Grape_Complex數據集數據增強后的樣本分布
葡萄葉片病害識別的總體流程如圖3所示。首先進行病害圖像數據的收集,并通過人工方式剔除無法使用的圖像。其次對構建的數據集進行預處理操作。然后按照比例8∶2將數據集劃分為訓練集和測試集,并且通過隨機旋轉、水平或者垂直翻轉等方式對原始數據集進行數據擴充,這樣原有數據的多樣性得以增加,使得最終訓練得到模型的泛化能力更強。最后用數據增強過的數據集訓練MANet模型,保存訓練過程中性能最佳的模型權重。基于以上訓練的MANet模型用測試集中的圖像進行測試,得到測試樣本的預測類別,以實現葡萄葉片病害的識別。

圖3 葡萄葉片病害識別的整體流程
1.4.1模型結構
本研究提出了一種對葡萄葉片病害具有更高識別準確率的CNN模型,將其命名為MANet。MANet模型的整體結構如圖4所示。從圖4可看出,MANet模型主要由多尺度特征融合模塊(Multi-scale convolution,MConv)、最大池化層、SENet-InvertedResidual模塊(由SENet模塊和倒殘差模塊[25]交替連接構成)、注意力機制模塊、自適應平均池化層和全連接層組成。MANet首先利用一個多尺度特征融合MConv模塊來提取病害多尺度的特征信息,獲得圖像的豐富特征表示。其次,連接一個最大池化層用于降低圖像的尺寸,然后,在最大池化層后將SENet和倒殘差模塊交替連接,用少量參數增加網絡的深度,從而提高模型的非線性表示能力。同時,在MANet中加入了注意力機制SENet模塊,使其能夠更加關注圖像中葡萄葉片的病害區域,從而減少圖像中復雜背景產生的噪聲對識別效果的影響。自適應平均池化層主要起到降低特征圖的空間維度的作用,并在一定程度上增加模型的感受野。最后通過一個分類器模塊使用全連接層和Softmax函數來實現病害的分類。

圖4 MANet模型結構
1.4.2多尺度特征融合模塊
由于在自然狀態下采集的葡萄葉片病害圖像往往包含較多噪聲,并且圖像背景較為復雜,所以這使得病害識別難度更大。為此,本文提出了一種多尺度特征融合模塊(Multi-scale convolution,MConv),在不同感受野和多尺度空間下盡可能多地提取病害的關鍵特征。MConv模塊結構如圖5所示。在該模塊中,輸入特征圖經過卷積核大小分別為1×1、3×3、5×5和7×7的卷積層進行并行處理,以獲取病害圖像更加豐富的特征信息。然后將各個支路卷積得到的特征圖合并為一個新的特征圖,并利用一個1×1的卷積對新的特征圖進行特征融合。綜上所述,本文提出的MConv模塊可以捕獲多尺度的病害信息,從而使得對于復雜背景的病害圖像,獲得更有辨別力的病害特征信息,有助于更加準確地識別葡萄葉片病害。

圖5 MConv模塊結構
1.4.3倒殘差結構模塊
本文提出的MANet中使用倒殘差結構[25]來減少模型的參數量,其主要亮點在于深度可分卷積。倒殘差模塊結構如圖6所示。從圖6中可以看出,倒殘差模塊主要由普通卷積、Depthwise convolution和Pointwise convolution組成。當輸入特征圖進入倒殘差結構時,首先由卷積核大小為1×1的普通卷積進行升維操作,然后Depthwise convolution提取特征圖的深度特征,并且特征圖的通道數不會發生改變,最后由Pointwise convolution對特征圖進行降維操作。同時當Depthwise convolution的步長為1時,即輸入輸出特征圖的形狀一致,則通過ShortCut支路將Pointwise convolution的輸出特征圖和輸入特征圖進行相加操作,得到倒殘差模塊最終的輸出特征圖,如圖6a所示。當Depthwise convolution中的步長為2時,倒殘差模塊沒有ShortCut支路,Depthwise convolution在提取深度特征的同時進行下采樣操作,擴大網絡的感受野,最終倒殘差模塊輸出特征圖的空間維度H和W都將減半,如圖6b所示。

圖6 倒殘差模塊結構
與普通卷積相比,使用深度可分卷積可以大大減少模型的參數量和成本。普通卷積和深度可分卷積的卷積操作如圖7所示。在圖7a中假設輸入特征圖的寬和高都為D,通道數為M,卷積核大小為K×K,輸出特征圖的通道數為N,則普通卷積的參數量為K2MND2。同理在圖7b中深度可分卷積的參數量為K2MD2+MND2。由此可計算深度可分卷積與普通卷積參數量的比值為

圖7 普通卷積和深度可分卷積的卷積過程比較
(1)

綜上所述,本文在提出的模型中嵌入倒殘差結構,這不僅大大減少了模型參數量和成本,而且在一定程度上增加了網絡的深度,提高了模型的非線性表示能力。
1.4.4Squeeze-and-Excitation Networks模塊
本文提出的MANet中嵌入了注意力機制模塊(Squeeze-and-Excitation Networks,SENet),使其能夠關注圖像中的葡萄葉片病害區域,并減少復雜背景對病害識別的影響。SENet是一種通道注意力機制,通過網絡學習得到不同通道特征的重要程度,并且按照不同的重要程度依次為不同的通道賦予不同的權重,通道的特征重要程度越高被賦予的權重越大,通道的特征重要程度越小被賦予的權重越小。SENet模塊主要分為壓縮、激勵和重構3個步驟,其中前兩個是最為關鍵的步驟。SENet模塊的結構如圖8所示。

圖8 SENet模塊結構
在圖8中X表示輸入特征圖,Ftr表示特征圖X到特征圖U的變換過程,即Ftr:X→U,X∈RC1×H1×W1,U∈RC×H×W,其中C1、H1和W1分別表示特征圖X的通道數、高度和寬度;同理對于特征圖U,C、H和W分別表示通道數、高度和寬度。卷積核為K=[k1,k2,…,kc],其中k1表示第1個卷積核,kc表示第c個卷積核,由此可得輸出特征圖為U=[u1,u2,…,uc],其中uc的計算公式為
(2)
式中uc——第c個通道的特征圖
kc——第c個卷積核
C1——特征圖X的通道數
i——計數變量

xi——第i個特征圖
在圖8中,Fsq表示SENet的壓縮操作,它通過一個全局的平均池化層將每個通道上整個空間的信息壓縮編碼成一個全局特征。如圖8所示,具有C個通道的特征圖U,將其每個通道H×W的空間維度壓縮為1×1的全局特征。Fsq操作結束后得到shape為C×1×1的特征圖,具體的計算公式為
(3)
式中zc——第c個通道的特征圖
Fsq(uc)——壓縮操作
i、j——計數變量
在圖8中Fex表示SENet的激勵操作,主要作用是學習到特征圖各個通道之間的關系,并且根據每個通道不同的重要程度為其賦予不同的權重。Fex操作的具體實現過程為將Fsq操作得到的所有全局特征傳入兩個全連接層,并且在兩個全連接層后分別用ReLU和Sigmoid激活函數進行激活,從而使得模型學習到特征圖每個通道的重要程度。Fsq操作的具體計算公式為
s=Fex(z,W)=σ(g(z,W))=σ(W2ReLU(W1z))
(4)
式中s——權重W1、W2——權重
Fex(z,W)——激勵操作
z——特征圖σ——激活函數
Fscale表示重構操作,即將SENet預測出的通道特征權重加權到特征圖的每個通道空間上,得出一個新的特征圖U1。Fscale的具體計算公式為
U1=Fscale(uc,sc)=scuc
(5)
式中Fscale(uc,sc)——重構操作
sc——特征圖中第c個通道的權重
在式(5)中Fscale(uc,sc)表示在特征映射之間的通道運算,其中uc∈RH×W。綜上所述,SENet模塊具有很強的移植性,可以靈活地嵌入到各種圖像識別的深度學習模型中,并且在很大程度上提升了模型的性能。
本研究實驗平臺的硬件環境為Windows 10企業版64位操作系統,處理器為Intel(R)Xeon(R)Silver 4210R,RAM為128 GB,顯卡為NVIDIA GeForce RTX 3090,顯存為24 GB。同時使用Python語言進行編程,選用深度學習框架Pytorch 1.7.1進行模型的搭建和訓練。
綜合考慮模型的訓練效果,本文對模型超參數進行以下設置:模型在訓練和測試時采用批處理的方式,每批數據包含32幅圖像,即批訓練數據量的大小設置為32。模型訓練的迭代總次數(Epoch)設置為100,采用隨機梯度下降(Stochastic gradient descent, SGD)優化器,初始學習率設置為0.01,動量設置為0.9,同時在訓練過程中,學習率采用自適應動態調整的策略,它會隨著驗證集的準確率而變化,損失函數使用交叉熵損失。最后,為了避免模型出現過擬合現象,在訓練過程中使用EarlyStopping策略。
本研究中,使用平均識別準確率和F1值來綜合評價模型的識別效果。同時為了進一步評價各個深度學習模型的性能,在實驗中還計算每個模型的參數量以及模型的浮點運算量(Floating point operations,FLOPs)。模型參數量決定各個模型的尺寸,也影響模型推斷時對內存的消耗。模型浮點運算量用于評價各個模型的計算復雜性。
在本實驗中,將不同注意力機制SENet模塊和CBAM[40](Convolutional block attention module, CBAM)模塊分別嵌入MANet,具體實驗結果如表2所示。MANet_CBAM表示在MANet中采用CBAM注意力機制,MANet_SENet表示在MANet中采用SENet注意力機制。從表2中可以看出,當向MANet中添加SENet注意力機制模塊時,模型表現效果更好,平均識別準確率為87.93%,高于MANet_CBAM模型0.74個百分點,所以本研究選擇將SENet模塊嵌入到MANet中來建立模型。同時為了驗證MANet模型的MConv模塊、倒殘差模塊和注意力機制SENet模塊的有效性,在自建Grape_Complex數據集展開了實驗。消融實驗結果如表3所示,MANet的平均識別準確率比Base、Base_SE、Base_MConv分別高5.17、3.45、0.5個百分點。其中Base表示只有倒殘差結構而沒有MConv和SENet模塊的基準模型,Base_SE表示向基準模型加入SENet模塊,Base_MConv表示向基準模型加入MConv模塊,MANet為本文提出的新模型,此時向基準模型中同時加入SENet和MConv模塊。

表2 不同注意力機制的實驗結果

表3 消融實驗結果
從表3中可以發現,當向基準模型中分別單獨引入SENet和MConv模塊時,模型在訓練集和測試集上平均識別準確率都得到了明顯提升。這是因為當在模型中加入SENet時,模型在幾乎不增加網絡開銷的情況下,可以更加專注于葡萄葉片的病害部分信息,抑制其他無關信息的干擾。當在模型中加入MConv模塊時,模型可以提取葡萄葉片多尺度的病害信息,并進行融合,從而使模型的性能得到了進一步的提升。同時,用Grad-CAM[41]對每個模型識別病害的結果進行了可視化,如圖9所示。可以發現圖9b、9c可能關注了與病害無關的區域,同時也忽略了一些有用的信息。當加入SENet模塊時,模型可以更加專注于病害區域,如圖9d所示。與其他基準模型相比,所提出的MANet模型可以準確地關注病害區域,而很少關注不相關的復雜背景(圖9e),從而獲得比其他模型更高的病害識別精度。綜上所述,本文提出的MANet模型,當在基準模型中同時引入SENet和MConv模塊時,模型性能表現最佳。

圖9 不同模型識別效果的可視化
為了測試MANet模型在自然復雜環境下識別病害圖像的效果,本實驗選擇了一些先進的模型作為對比,包括AlexNet[20]、VGG16[21]、ResNet50[22]、MobileNetV1[24]、MobileNetV2[25]、MobileNetV3[42]、ShuffleNetV2[27]、GhostNet[28]和Swin Transformer[43]。Grape_Complex數據集的預處理、數據增強方法和數據集的分布與1.2節一致。不同算法的識別效果如表4所示。總體來看,通過與這些模型的比較,MANet的識別表現最好,它達到了最高的平均識別準確率。MANet的平均識別準確率和參數量分別為87.93%和2.20×106。除了MobileNetV3和ShuffleNetV2之外,MANet的參數量比其他模型少。MANet模型的缺點是浮點運算量為5.2×108,略高于MobileNetV2、MobileNetV3、ShuffNetV2和GhostNet。然而,與MobileNetV2、MobileNetV3、ShuffleNetV2和GhostNet相比,MANet的平均識別準確率分別高4.68、3.45、10.10、5.17個百分點。除了這4個模型外,MANet模型的浮點運算量最小,準確率最高。

表4 不同模型基于Grape_Complex數據集的識別效果
不同模型對每種病害的F1值如表5所示。與其他模型相比,MANet對每種病害都有相對較高的F1值。白腐病的病害特征較為明顯,各個模型識別效果都比較好,但是褐斑病和霜霉病的識別效果要略微差一些,這是因為自建數據集是自然狀態下收集的圖像,其背景較為復雜,這也增加了識別的難度。同時褐斑病和霜霉病在發病早期時,其病斑極其微小,即使人眼也很難辨別,所以模型容易將其誤判為健康類別。而且褐斑病在發病晚期時,其枯葉病斑較大,模型也容易將其誤判為白腐病。MobileNetV1和ShuffleNetV2模型對葡萄葉片褐斑病和霜霉病的F1值相對較低,這可能是因為模型錯誤地將圖像背景判斷為識別目標,從而造成了干擾。MANet對葡萄葉片褐斑病和霜霉病的F1值分別為85.83%和85.87%,高于MobileNetV1和ShuffleNetV2。綜上所述,與這些模型相比,雖然MANet的參數量和浮點運算量略高于一些輕量級的模型,但它取得了最高的平均識別準確率,模型識別效果也優于上述對比模型。
為了進一步評估MANet的魯棒性,本研究還在公開農作物病害數據集PlantVillage上對其進行了測試。與2.5節類似,選擇一些模型進行對比實驗,實驗結果如表6所示。與這些模型相比,MANet在測試集的平均識別準確率最高,達到99.65%。實驗結果表明,本文設計的MANet模型具有良好的魯棒性,在公共農作物病害PlantVillage數據集上也表現出較好的識別效果。

表6 不同模型基于PlantVillage數據集的識別效果
(1)提出了一種新的網絡模型MANet,其模型的參數量和浮點運算量相對較小,并且對葡萄葉片病害具有更高的識別準確率。在MANet中嵌入倒殘差模塊來構建網絡,這極大降低了模型參數量和計算成本。同時,在模型中采用設計的MConv模塊來提取病害圖像多尺度的特征并進行融合,提高了模型對不同病害的識別準確率。此外,在MANet中嵌入注意力機制SENet模塊,增強了模型在復雜背景的圖像中提取關鍵病害特征的能力,并抑制其他無關信息,從而使得模型的平均識別準確率得到進一步的提高。
(2)為了驗證該模型的有效性,在自建Grape_Complex數據集和PlantVillage數據集上進行了實驗。實驗結果表明,MANet的平均識別準確率為87.93%,明顯高于經典CNN模型,如ResNet50、AlexNet、VGG16,以及輕量級CNN模型,如MobileNetV1、MobileNetV2、MobileNetV3、ShuffleNetV2和GhostNet等。此外,為了進一步證明模型的魯棒性,還在公開農作物病害數據集PlantVillage上進行了測試,實驗結果表明,本文提出的模型在這個數據集上仍然取得了較好的識別效果。然而,與一些輕量級模型相比,MANet的不足之處在于模型的浮點運算量略高。