代 麗,倪光亮
(浙江理工大學經濟管理學院,浙江 杭州 310018)
玉米是全世界產量最高的作物,是我國重要的谷類作物、飼料和工業(yè)原料作物[1,2]。玉米作物的病蟲害嚴重影響其產量,近年來,全球氣候的持續(xù)改變進一步加劇了玉米病蟲害的發(fā)生。及時發(fā)現并準確地識別出玉米病害的類型,對于病害的防治十分重要。隨著計算機視覺技術的快速發(fā)展,機器學習技術在農業(yè)領域得到了廣泛應用。傳統的機器學習方法在農作物病害的識別中主要依靠人工設計特征,利用顏色、紋理和形狀等信息構建特征向量,再通過支持向量機、貝葉斯分類器和隨機森林等方法將特征向量分類[3,4]。然而,依靠人工選定特征,要消耗大量的時間對圖像做預處理以及評估特征的有效性[5]。由于受植物類型、生長階段、病害種類等因素的影響,病害癥狀復雜,特征提取困難,而識別模型缺乏普遍適用性,不能滿足實際農業(yè)生產中的需求[6,7]。
近年來,卷積神經網絡成為農作物病害圖像分類上的核心模型,由于提取農作物病害的有效特征對于病害的識別非常重要,而卷積神經網絡能夠系統地從原始輸入圖像中自動學習特征,其端到端的結構簡化了識別流程為農業(yè)領域的研究提供了便利[8,9]。Zhao等[10]通過將注意力機制模塊SENet集成到ResNet50每個stage 之后,提出了SE-ResNet50 模型,模型對番茄中10 種病害的識別準確率達到96.81%。Zeng 等[11]提出了一種SKPSNet-50 卷積神經網絡模型用于自然場景中玉米葉部病害的識別,該模型將骨干網絡ResNet-50 中3×3 的卷積核替換為Kernel-Point-Swish_B(SKPS),并將ReLU 激活函數替換為Swish_B激活函數來提高病斑的特征提取能力,采用焦點損失函數解決數據類別不平衡問題,該模型對自然場景中玉米葉部病害的識別準確率達到了92.9%。因此,本文以玉米病害圖像為研究對象,提出一種基于注意力機制與殘差網絡的玉米病害識別方法,來實現對玉米病害準確、快速地識別。
本實驗所采用的玉米葉部病害圖像來自于公開數據集PlantVillage,從中選取四類玉米葉部病害(包含健康葉片)的圖像進行識別,分別為玉米銹病1192張、玉米灰斑病513 張、玉米健康1162 張、玉米大斑病985張。每幅圖像的像素大小為256×256,4種玉米葉部病害的樣本圖像如圖1所示。
圖1 玉米葉部病害樣本示例
為了減少模型在訓練時的過擬合問題,提高模型的泛化能力,使用數據增強方法對數據進行擴充。所采用的數據增強手段包括隨機旋轉、隨機翻轉、改變銳化、改變亮度、改變飽和度以及對比度變換。最終獲得的玉米病害數據集包含有16400 張圖片,數據集按照8∶2的比例隨機分為訓練集和驗證集。數據集的具體信息如表1所示。
表1 玉米病害數據集
卷積神經網絡能夠在不同語義層級上對圖像進行特征提取,并且網絡層數越多,能夠提取到不同水平的特征也越豐富[5]。隨著網絡層數的不斷加深,網絡在訓練過程中會出現梯度消失或者梯度爆炸現象,且退化現象的發(fā)生也會使網絡的準確率出現飽和甚至下降,網絡優(yōu)化也越來越困難。因此,He 等[12]提出了殘差神經網絡(ResNet),使得網絡深度大幅提升的同時可以達到更高的準確率。
ResNet 通過恒等映射結構,采用捷徑連接的方式將多個淺層網絡連接起來,使得不同層的特征可以互相傳遞,實現了特征的復用,緩解了網絡過深伴隨的梯度消失問題。根據網絡層數的不同,設計了兩種不同殘差路徑的“殘差學習模塊”。如圖2 所示:(a)是為淺層網絡設計的殘差模塊,稱之為“構建模塊”,由兩個3×3的卷積層構成;(b)是為深層網絡所設計的殘差模塊,稱之為“瓶頸構建模塊”,由兩個1×1 的卷積層和一個3×3 的卷積層所構成,其中兩個1×1 的卷積層對輸入進行先降維后升維的操作,一定程度上減少特征圖的層數,從而減少了參數量和計算時間。
圖2 殘差學習模塊
SENet[13](Squeeze-and-Excitation Networks)是一個輕量級通道注意力機制模塊,如圖3所示,通過關注不同通道的權重,讓模型學習得到不同特征通道的權重系數,根據特征通道權重系數的大小,對有效特征通道進行增強,對無效特征通道進行抑制。SENet 模塊通過以下三個步驟對特征圖進行操作。
圖3 SENet模塊
第1 步壓縮操作,將輸入的特征圖X使用全局平均池化進行擠壓,得到大小為1× 1×C(C為通道數)的特征圖Zc。計算公式如下:
其中,Zc為輸出的特征圖;Fsq為壓縮操作;uc為輸入的特征圖;H,W為特征圖的高和寬;i,j為特征圖上的位置。
第2步激勵操作,將生成的特征圖Zc經過兩個全連接層,第一個全連接層將特征圖的通道數調整為C/16,接著使用ReLU 函數進行激活。隨后第二個全連接層將特征圖的通道數還原為C,經過Sigmod 激活函數,得到各通道的權重參數。計算公式如下:
其中,S為通道間調整權重的參數;Fex為激勵操作;σ為ReLU激活函數;δ為Sigmod激活函數。
第3步特征重標定操作,將激勵操作輸出的通道權重參數與原始輸入特征圖的對應通道相乘,得到權值更新后輸出的特征圖。計算公式如下:
本文將殘差學習模塊(b)與注意力機制SENet模塊相結合,將SENet 模塊嵌入到殘差學習模塊(b)的第3 個卷積層之后,得到圖4 中所示的SE-ResNet結構。
圖4 SE-ResNet的結構
批歸一化層的主要目的是通過標準化方法使得神經網絡各層每一個神經元的輸入值分布服從均值為0、方差為1的標準正態(tài)分布。批歸一化操作可以加快網絡的收斂速度,提高模型的泛化能力。對于輸入的B={x1,x2,…,xn},計算均值μB和方差。
本文所設計的模型SRCNN 由卷積層、批歸一化層、激活層、最大池化層、2 個SE-ResNet 組合而成的雙重殘差模塊、全局平均池化層和Softmax 層構成,其結構如圖5所示。
圖5 SRCNN模型結構圖
首先,2 個卷積層用來提取輸入圖像的淺層特征信息。其次,3 個雙重殘差模塊用于加深網絡的結構同時提高模型收集圖像中目標局部特征的能力,從而提高模型的識別準確率。最后,全局平均池化層和Softmax 層用于輸出病害分類的結果。模型的相關參數如表2所示。
表2 SRCNN模型的相關參數
本文使用的實驗平臺配置如下:Ubuntu 20.04 LTS 64 位操作系統,配備Intel(R) Xeon(R) Platinum 8255C(2.5GHz)處理器,運行內存為45G,顯卡為NVIDIA GeForce RTX 2080Ti,11G 顯存。編程語言是Python 3.8,深度學習框架是Pytorch 1.8.1 和Cuda 11.1。
本文模型的訓練參數設置如下:批次大?。╞atch size)設置為32,訓練迭代次數(epoch)設置為30,使用的損失函數為交叉熵損失函數,使用Adam 優(yōu)化器來提高模型的訓練速度,學習率(learning rate)設置為0.0001。
本研究選取準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1 得分(F1-score)和單張圖片識別耗時(TA),作為模型性能的評價指標。計算公式如下:
式⑹~式⑽中,TP為預測為正例的正樣本的數量,TN 為預測為負例的負樣本的數量,FN 為預測為正例的負樣本的數量,FP為預測為負例的正樣本的數量,T為驗證集的總識別耗時;N為驗證集圖片的總數。
表3 列出了不同模型對玉米病害的識別準確率,可以看出,本文提出的SRCNN 模型的識別準確率最高,達到了99.08%。與AlexNet、VGG-16、GoogleNet、ResNet-34 和MobileNet 模型相比,識別準確率分別高出1.43%、1.22%、1.24%、1.04%和3.54%,優(yōu)于5 種主流CNN網絡。同時,各模型的識別準確率變化曲線如圖6 所示,從圖6 可以看出,SRCNN 模型在15 輪后開始收斂,收斂速度是所有模型中最快的。此外,本文SRCNN 模型的單張圖片識別耗時也是最短的,僅為48.80ms,比排名第二的AlexNet 模型減少了1.04ms,滿足了玉米病害實時診斷的需求。綜合以上分析,本文所提出的SRCNN 模型在識別準確率和收斂速度方面都達到了最佳性能。
表3 不同模型的識別準確率
圖6 不同模型識別準確率變化曲線圖
表4列出了玉米病害分類的結果,可以看出,該模型對玉米銹病、灰斑病、健康、大斑病的分類準確率分別為100%、98.01%、100%、98.25%,其中玉米灰斑病和玉米大斑病由于病害特征相似度較高,容易誤分類。16張玉米灰斑病圖像被識別為玉米大斑病,而14張玉米大斑病圖像被識別為玉米灰斑病,這也解釋了玉米灰斑病和玉米大斑病分類準確率較低的原因。
表4 玉米病害分類結果
本文提出了一種基于注意力機制與殘差網絡的玉米病害識別模型,通過在模型的卷積層后使用批歸一化層,大大減少了訓練時間,提高了模型泛化能力。同時,將捷徑連接應用于二個SE-ResNet 組合而成的結構上,提高了模型對特征的復用能力和提取能力,進而提高模型的識別準確率。實驗結果表明,所設計的SRCNN 模型在識別準確率、收斂速度和單張識別耗時上均優(yōu)于其他模型,可以為玉米病害的識別提供一種新的診斷方法??紤]到自然環(huán)境中進行病害識別背景往往較為復雜,因此,如何在自然復雜背景下保證模型較高的識別準確率和較低的識別耗時是后續(xù)研究的方向。