鄭 鋮, 董 偉, 高海濤*
(1.安徽科技學(xué)院 電氣與電子工程學(xué)院,安徽 蚌埠 233030;2.安徽省農(nóng)業(yè)科學(xué)院,安徽 合肥 230001)
玉米是一種高產(chǎn)量糧食作物,是食品、醫(yī)療衛(wèi)生、化工業(yè)等重要領(lǐng)域必不可少的原料之一[1]。玉米病害可以直接導(dǎo)致其產(chǎn)量急劇減少,常見的病害有大斑病、小斑病、銹病等。傳統(tǒng)的農(nóng)作物病害診斷通常依賴專家判斷為主[2],其檢測方法效率低、主觀性強、耗時耗力,不適合大區(qū)域場景。因此,研究一種識別準(zhǔn)確率高,并且適用于大區(qū)域場景的玉米病害識別方法就顯得尤為重要[3-5]。
近年來,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)被廣泛應(yīng)用于各種領(lǐng)域,在農(nóng)業(yè)病害識別領(lǐng)域也成效顯著[6-9]。許景輝等[10]對田間復(fù)雜的玉米病害圖像進行識別,提出了一種基于遷移學(xué)習(xí)的VGG16網(wǎng)絡(luò)模型,設(shè)計了全新的全連接模塊,其準(zhǔn)確率達到95.33%。趙玉霞等[11]分別利用粗糙集理論、遺傳算法、局部判別映射和局部線性嵌入算法對提取的病害特征進行識別,準(zhǔn)確率依次為83.00%、90.00%、94.40%和99.50%。Qiu等[12]基于遷移學(xué)習(xí)的VGG16網(wǎng)絡(luò)模型對水稻的10種病害進行識別,對VGG16網(wǎng)絡(luò)模型進行了參數(shù)微調(diào)和線性判別,準(zhǔn)確率達到了97.08%。徐巖等[13]針對馬鈴薯葉片病害,提出一種基于注意力和殘差思想的ResNet模型,并對其進行訓(xùn)練研究,平均識別準(zhǔn)確率為93.86%。楊晉丹等[14]以草莓葉部白粉病為研究對象,設(shè)計了3種網(wǎng)絡(luò)深度和3種卷積核交叉組合的CNN模型,識別準(zhǔn)確率達到98.61%。孫俊等[15]結(jié)合注意力機制對MobileNet-V2模型進行了改進與優(yōu)化,對多種植物葉片病害進行識別,改進后的模型識別準(zhǔn)確率為92.20%。Too等[16]選擇Plant Village作為數(shù)據(jù)集,對VGG16、DenseNet、ResNet50等經(jīng)典網(wǎng)絡(luò)模型做分析比較,識別準(zhǔn)確率最高的是DenseNet模型。這些成果為玉米病害的高效識別提供了新的方向。
為優(yōu)化模型性能,進一步提高識別準(zhǔn)確率,本研究設(shè)計一種Corn_Modle模型,引入Focal Loss函數(shù)作為評估函數(shù),解決小樣本分布不均勻所產(chǎn)生的誤差,對玉米銹病、小斑病、彎孢霉葉斑病、紋枯病、大斑病、褐斑病等6種病害進行智能識別,為驗證該模型的正確性和綜合識別性能,將識別結(jié)果與經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)模型進行比較。
本研究的數(shù)據(jù)集來源于安徽省農(nóng)業(yè)科學(xué)院,為田間人工拍攝數(shù)據(jù)庫,該庫共有6種玉米病害類型,共計2 725張,其中玉米銹病470張,玉米小斑病645張,玉米彎孢霉葉斑病546張,玉米紋枯病356張,玉米大斑病260張,玉米褐斑病448張。病害樣本如圖1所示。
圖1 玉米病害圖片種類Fig.1 Picture types of corn diseases
在數(shù)據(jù)集圖片采集過程中,作物拍攝背景復(fù)雜多變,圖片質(zhì)量受背景、光線影響較大,在復(fù)雜的背景條件下病害識別效果不佳,并且原始的數(shù)據(jù)集圖片尺寸大小不一致,數(shù)量有限。為增加數(shù)據(jù)集數(shù)量和提高數(shù)據(jù)集質(zhì)量,訓(xùn)練出更優(yōu)秀的模型,本研究對原始數(shù)據(jù)集進行數(shù)據(jù)增強處理,主要方法如下:對原始數(shù)據(jù)集圖片進行隨機旋轉(zhuǎn)40%、隨機裁剪、隨機縮放、水平和垂直方向隨機平移20%等操作,如圖2所示。將增強后的數(shù)據(jù)集圖片尺寸統(tǒng)一設(shè)置為256×256像素,圖片存儲為jpg格式,標(biāo)簽數(shù)組采用2D的one-hot編碼標(biāo)簽。為提高模型訓(xùn)練精度,增加網(wǎng)絡(luò)的泛化能力,減少計算量,控制梯度消失等,對每個像素通道進行批量歸一化(Batch normalization,BN)處理[17]。
圖2 玉米病害圖片數(shù)據(jù)增強 Fig.2 Image data enhancement of corn diseases
經(jīng)過一系列數(shù)據(jù)增強,原始玉米病害數(shù)據(jù)集數(shù)量被擴充到11 445張,且沒有重復(fù)的圖片,最后將數(shù)據(jù)集按照8∶2的比例劃分為訓(xùn)練集和測試集,即80%的數(shù)據(jù)用于訓(xùn)練模型,20%的數(shù)據(jù)用于測試獲取的試驗結(jié)果。玉米病害數(shù)據(jù)集圖片處理前后的數(shù)量變化如表1所示。
表1 玉米病害數(shù)據(jù)集處理前后圖片量Table 1 Number of images before and after processing of corn diseases data set
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種帶有卷積計算的多層監(jiān)督學(xué)習(xí)的深度神經(jīng)網(wǎng)絡(luò),是深度學(xué)習(xí)的經(jīng)典算法之一,CNN主要由輸入層(Input Layer)、卷積層(Conv Layer)、激活函數(shù)、池化層(Pooling Layer)、全連接層(FC Layer)和輸出層(Output Layer)等組成[18]。其中卷積層和池化層在整個網(wǎng)絡(luò)中起主導(dǎo)作用,對輸入的圖片數(shù)據(jù)進行特征提取[19]。
根據(jù)數(shù)據(jù)集大小以及玉米病害的特點,基于卷積神經(jīng)網(wǎng)絡(luò)基本結(jié)構(gòu),本研究設(shè)計一種新的玉米病害識別模型Corn_Modle,其網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 Corn_Modle玉米病害識別模型結(jié)構(gòu)Fig.3 Structure of corn diseases identification model
一般情況下,神經(jīng)網(wǎng)絡(luò)的層數(shù)越多,對輸入圖片的特征提取就越強,對其理解的準(zhǔn)確度也就越深,但不是絕對的。為平衡網(wǎng)絡(luò)復(fù)雜度和識別精度,本研究采用折中的5層網(wǎng)絡(luò)模型結(jié)構(gòu)(只計算卷積層)。Corn_Modle玉米病害識別模型由5個卷積層(分別對應(yīng)Conv1到Conv5),5個最大池化層和4個全連接層組成。目前,卷積核個數(shù)具體數(shù)量的選取尚無理論支撐,本研究通過設(shè)置幾組候選值,通過調(diào)參、實驗、對比的方式選取性能最佳組。5個卷積層Conv1~Conv5包含的卷積核個數(shù)依次選取為16、32、64、128、256,卷積核尺寸大小均為3×3,卷積層采用的填充方式(padding)為same方式,即卷積層輸出的特征圖和輸入時的圖片保持相同的shape[20-21]。網(wǎng)絡(luò)結(jié)構(gòu)具體描述如下:
卷積層Conv1:輸入1張256×256×3的玉米病害圖片,用16個尺寸為3×3的卷積核對輸入圖片進行卷積,提取特征,得到256×256×16的特征矩陣。
卷積層主要是對圖片進行特征提取,是整個卷積神經(jīng)網(wǎng)絡(luò)中最重要的核心層。通過卷積運算可以獲得病害圖片的特征圖,卷積層的運算如式(1)所示:
(1)
為增加網(wǎng)絡(luò)的非線性表達能力,防止輸出層都是輸入層的線性組合,在卷積層后添加激活函數(shù),因為上層輸出的特征圖相當(dāng)于矩陣相乘,激活函數(shù)可應(yīng)用到非線性模型中。常見的激活函數(shù)有Sigmoid、Tanh、ReLU、ELU等,本研究采用ReLU激活函數(shù),其表達式如式(2):
(2)
為壓縮數(shù)據(jù)和降低模型的計算復(fù)雜度,減少過擬合現(xiàn)象,用2×2的卷積核對該卷積層進行最大池化操作,得到128×128×16特征圖。該池化層主要是對特征圖進行壓縮下采樣,特征降維(類似PCA),減少計算量,大幅降低圖片的維度和分辨率,有平均池化和最大池化等2種選擇,本研究采用最大池化方法,如式(3)所示:
(3)
其中,down(·)表示池化函數(shù)。
卷積層Conv2:用32個3×3的卷積核對上層進行卷積操作,得到128×128×32的卷積層,然后用2×2的卷積核對該卷積層進行最大池化操作,得到64×64×32的特征圖。卷積層Conv3:用64個3×3的卷積核對上層進行卷積操作,得到64×64×64的卷積層,然后用2×2的卷積核對該卷積層進行最大池化操作,得到32×32×64的特征圖。卷積層Conv4:用128個3×3的卷積核對上層進行卷積操作,得到32×32×128的卷積層,然后用2×2的卷積核對該卷積層進行最大池化操作,得到16×16×128的特征圖。卷積層Conv5:用256個3×3的卷積核對上層進行卷積操作,得到16×16×256的卷積層,然后用2×2的卷積核對該卷積層進行最大池化操作,得到8×8×256的輸出層。把這些輸出的特征用Flatten層進行展開平鋪,轉(zhuǎn)化為一維向量作為全連接層和輸出層的輸出。
全連接層將前面所有提取的特征信息進行整合處理,目的是將輸入的二維特征提取向量降維到一維特征向量,最后實現(xiàn)圖像分類,在整個網(wǎng)絡(luò)模型中起到類似“分類器”的作用,如式(4)所示:
(4)
其中,b為偏置值,w為權(quán)重參數(shù)。
全連接層F1:使用了512個神經(jīng)元;全連接層F2:使用了128個神經(jīng)元;全連接層F3:使用64個神經(jīng)元;輸出層:采用式(5)所示的Softmax函數(shù),輸出類別為本研究的6 種病害。
(5)
(6)
對于圖像分類等問題,通常采用交叉熵作為損失函數(shù),但是在實際訓(xùn)練的過程中,為防止過擬合現(xiàn)象的發(fā)生,通常采用L2正則化,所以最終模型的損失函數(shù)為式(7)所示:
(7)
為進一步改善流經(jīng)網(wǎng)絡(luò)的梯度,大幅度提高訓(xùn)練的速度,在該識別模型的每個卷積層后面,添加1個批歸一化(BN)層,提升該模型的準(zhǔn)確率。為進一步防止過擬合,讓整個網(wǎng)絡(luò)模型中間輸出值更加穩(wěn)定,在Corn_Modle模型的第4、5個池化層后面,以及前3個全連接層后面,添加1個Dropout層。
使用神經(jīng)網(wǎng)絡(luò)可視化工具Netron可以清晰地看到網(wǎng)絡(luò)結(jié)構(gòu)每一層的輸入輸出,本研究設(shè)計的Corn_Modle模型的Netron可視化結(jié)構(gòu)如圖4所示。Input為輸入病害圖片,大小尺寸為256×256×3,InputLayer為輸入層,Rescaling是對圖片進行預(yù)處理,Conv2D是卷積層,kernel是經(jīng)過處理后的圖片尺寸,bias是偏置值,ReLU是激活函數(shù),MaxPooling2D是池化層,BatchNormalization是批歸一化層,最后的Softmax函數(shù)對輸出特征進行分類。
將增強后的玉米病害數(shù)據(jù)集中的訓(xùn)練集用于該模型的輸入數(shù)據(jù),對模型參數(shù)進行訓(xùn)練,然后用測試集測試該模型的性能,獲得最終的準(zhǔn)確率。訓(xùn)練過程中,設(shè)置訓(xùn)練輪數(shù)(epoch)為30,批量大小(batch size)為32,即每一批次訓(xùn)練的玉米病害圖片為32張。固定學(xué)習(xí)率為0.001,動量參數(shù)設(shè)為0.9。Dropout層的作用是模型在訓(xùn)練過程中隨機地丟掉一些輸出神經(jīng)元,為進一步減緩過擬合現(xiàn)象,將Dropout層概率設(shè)置為0.4,隨機丟掉40%節(jié)點。整個模型訓(xùn)練過程如圖5所示,在劃分好的訓(xùn)練集中隨機選取一些玉米病害圖片作為自建神經(jīng)網(wǎng)絡(luò)的輸入,提取分類特征,把輸出的預(yù)測病害類型和實際輸入的病害類型進行交叉熵的運算,通過反向傳播調(diào)整網(wǎng)絡(luò)參數(shù),然后與學(xué)習(xí)率相乘對每層輸出的權(quán)重參數(shù)進行更新。最后將更新過的權(quán)重參數(shù)保存為.h5文件后,構(gòu)建玉米病害識別系統(tǒng),進行模型應(yīng)用,高效準(zhǔn)確識別玉米病害[22]。
2.1 試驗環(huán)境本研究的試驗環(huán)境為操作系統(tǒng)為Windows10(64位),計算機顯卡為NVIDIA GeForce GTX 1650,處理器(CPU)為 Intel(R)Core(TM)i5-10400F CPU@ 2.90 GHz,編程語言為Python 3.7,編程軟件為PyCharm 2021.2.3,深度學(xué)習(xí)框架為Tensorflow 2.3。
為評價該模型性能的優(yōu)劣,采用精準(zhǔn)度、召回率、準(zhǔn)確率作為模型的評價指標(biāo)對Corn_Modle模型性能進行評價[23]。
為全面分析玉米病害識別模型的性能,將Corn_Modle模型與AlexNet、LeNet-5、ResNet50、MobileNet等4種經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)模型進行對比,得到的試驗結(jié)果如表2和圖6所示。從表2和圖6可以看出,在各個模型訓(xùn)練的過程中,訓(xùn)練輪數(shù)達到20時,各模型均逐漸趨于收斂,均有較高的準(zhǔn)確率和較低的損失率。除ResNet50模型外,其他各模型均有較高的訓(xùn)練準(zhǔn)確率,均在90%以上,AlexNet的訓(xùn)練準(zhǔn)確率最高(99.10%),其次為Corn_Modle模型(98.09%)。隨著訓(xùn)練輪數(shù)的增加,各模型損失值均在不斷下降,Corn_Modle模型的最終訓(xùn)練損失率為0.073 0。5種模型的最終損失值達到穩(wěn)定狀態(tài),其中Corn_Modle、AlexNet、MoblieNet等3種的模型測試準(zhǔn)確率穩(wěn)定在較高的數(shù)值。
表2 不同網(wǎng)絡(luò)模型的試驗結(jié)果
圖6 5種模型的曲線圖Fig.6 Graph of five models
將訓(xùn)練好的各模型預(yù)測測試集,得出結(jié)果曲線圖(圖6c、d),可以看出,Corn_Modle模型測試準(zhǔn)確率為(96.85%),高于LeNet-5(77.06%)、AlexNet(93.98%)、MobileNet(87.25%)和ResNet50(63.44%)等4種經(jīng)典網(wǎng)絡(luò)模型準(zhǔn)確率。同時Corn_Modle模型測試損失率為(0.092 6),低于LeNet-5(0.980 8)、AlexNet(0.224 0)、MobileNet(0.381 7)和ResNet50(1.042 0)等4種經(jīng)典網(wǎng)絡(luò)測試損失率。
Corn_Modle模型和其他4種經(jīng)典網(wǎng)絡(luò)模型對6種玉米病害識別的準(zhǔn)確率、精準(zhǔn)度、召回率評價指標(biāo)如表3所示。Corn_Modle模型的準(zhǔn)確率、精準(zhǔn)度、召回率指標(biāo)高于其他4種經(jīng)典網(wǎng)絡(luò)模型評價指標(biāo),表現(xiàn)出較強的魯棒性和泛化能力,為精準(zhǔn)識別玉米病害類別提供保障。
表3 不同網(wǎng)絡(luò)模型的評價指標(biāo)Table 3 Evaluation indexes of different network models
針對現(xiàn)有的玉米病害識別存在精確度不高、耗時耗力等問題,基于傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò),綜合運用Dropout、批歸一化、添加BN層等技術(shù),搭建一種全新的玉米病害識別模型。在相同訓(xùn)練參數(shù)下,Corn_Modle模型測試準(zhǔn)確率為96.85%,較AlexNet、MobileNet、LeNet-5和ResNet50等模型測試準(zhǔn)確率提高了2.87%~33.41%,并且測試損失率最低,為0.092 6。本試驗結(jié)果表明,在相同的訓(xùn)練條件下,Corn_Modle模型在準(zhǔn)確率、精準(zhǔn)度、召回率和魯棒性等方面,性能優(yōu)于其他4種經(jīng)典網(wǎng)絡(luò)模型,具有更好的識別效果,驗證了該模型的有效性,可以用作玉米病害識別。