何 前, 郭峰林, 王哲豪, 李雅琴
(武漢輕工大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院, 武漢 430048)
近年來,隨著葡萄種植規(guī)模的不斷擴(kuò)大,各類葡萄病害也嚴(yán)重影響著其質(zhì)量和產(chǎn)量.傳統(tǒng)的病害分類主要依靠種植者經(jīng)驗(yàn)或人工查閱圖譜等手段, 效率和準(zhǔn)確性低下, 故深度學(xué)習(xí)和圖像處理等計(jì)算機(jī)技術(shù)用于農(nóng)業(yè)生產(chǎn)中的病害分類識(shí)別已成為研究熱點(diǎn)[1-3].Rashid等[4]利用YOLOv5圖像分割技術(shù)對(duì)馬鈴薯植物早枯萎病和晚疫病圖像進(jìn)行識(shí)別, 準(zhǔn)確率高達(dá)99.75%; Zhu等[5]利用小波變換對(duì)病害圖像進(jìn)行降噪處理, 然后采用最大類間方差法對(duì)病害區(qū)域進(jìn)行分割, 提取病害周長(zhǎng)和面積等特征, 進(jìn)而通過圖像分析和反向傳播神經(jīng)網(wǎng)絡(luò)進(jìn)行葡萄葉部病害識(shí)別, 并建立了檢測(cè)系統(tǒng); Liu等[6]利用數(shù)據(jù)增強(qiáng)技術(shù)擴(kuò)充數(shù)據(jù)集, 通過多維特征提取和引入密集連接策略等方法建立一個(gè)新的卷積神經(jīng)網(wǎng)絡(luò)模型識(shí)別葡萄葉部病蟲害, 最終準(zhǔn)確率達(dá)97.22%; 何欣等[7]等提出了一種基于多尺度殘差神經(jīng)網(wǎng)絡(luò)的葡萄葉片識(shí)別方法, 利用Mask R-CNN提取葡萄葉片圖像病害特征, 引入多尺度卷積改變ResNet底層對(duì)不同尺度特征的響應(yīng), 提高了識(shí)別準(zhǔn)確率; Mohammadpoor等[8]首先對(duì)病害區(qū)域做標(biāo)記, 然后利用模糊均值聚類算法對(duì)每片葉片病害區(qū)域進(jìn)行高亮顯示,并通過支持向量機(jī)區(qū)分感染葉片和健康葉片, 最后利用K折交叉驗(yàn)證(K-fold)方法進(jìn)行驗(yàn)證, 準(zhǔn)確率達(dá)98.6%; Adeel等[9]構(gòu)建了一個(gè)葡萄葉片疾病自動(dòng)分割和識(shí)別系統(tǒng), 首先增強(qiáng)病害葉片的局部對(duì)比度, 通過LAB顏色變換選出像素信息的最佳通道并設(shè)為閾值函數(shù), 然后采用典型相關(guān)分析方法提取病害特征, 準(zhǔn)確率達(dá)92.0 %; Kolhalkar等[10]提出基于直方圖分析的機(jī)電一體化系統(tǒng)檢測(cè)葡萄葉片的健康狀況, 及時(shí)提醒果農(nóng)葡萄主要病害的發(fā)生, 實(shí)現(xiàn)了農(nóng)藥的經(jīng)濟(jì)利用; Kaur等[11]通過遷移學(xué)習(xí)重新訓(xùn)練EfficientNet B7深度框架, 利用邏輯回歸技術(shù)對(duì)遷移學(xué)習(xí)后所收集的特征進(jìn)行下采樣, 再使用分類器對(duì)病害進(jìn)行分類, 分類準(zhǔn)確率達(dá)98.7%; 蘇婷婷等[12]運(yùn)用深度遷移學(xué)方法識(shí)別花生葉部病害, 識(shí)別準(zhǔn)確率達(dá)95.3%.上述方法雖然在一定程度上提高了農(nóng)作物病害分類的準(zhǔn)確率, 但是利用圖像處理技術(shù)進(jìn)行病蟲害分類時(shí)須提取農(nóng)作物的病害特征信息, 故分類準(zhǔn)確率會(huì)受到病害圖像的復(fù)雜背景和病害區(qū)域大小等多種因素的影響; 而基于卷積神經(jīng)網(wǎng)絡(luò)的農(nóng)作物病害分類算法中大多選擇較成熟的分類算法或融合其他算法, 增加了卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)量和計(jì)算量, 導(dǎo)致計(jì)算時(shí)間長(zhǎng)、迭代次數(shù)多及分類效率低等問題, 同時(shí)在分類小樣本圖像時(shí)易出現(xiàn)難收斂和過擬合現(xiàn)象.AlexNet算法[13]結(jié)構(gòu)簡(jiǎn)單, 算法易于實(shí)現(xiàn),且參數(shù)少和計(jì)算量低, 但在處理高像素的彩色圖像時(shí)易出現(xiàn)過擬合、分類準(zhǔn)確率低以及泛化能力差等問題.本文擬基于改進(jìn)的AlexNet算法對(duì)葡萄病害進(jìn)行分類,首先利用圖像預(yù)處理技術(shù)消除數(shù)據(jù)集的復(fù)雜背景,在傳統(tǒng)AlexNet算法的第三個(gè)卷積層和第四個(gè)卷積層后分別添加池化層以降低參數(shù)量,同時(shí)在全連接層后添加隨機(jī)失活層并優(yōu)化選擇最佳丟棄概率,以期提高算法的分類準(zhǔn)確率和泛化能力.
AlexNet算法的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.AlexNet算法由5個(gè)卷積層、3個(gè)池化層和3個(gè)全連接層構(gòu)成, 結(jié)構(gòu)簡(jiǎn)單且能快速提取病害圖像的特征信息.傳統(tǒng)的AlexNet算法[13]在訓(xùn)練過程中將網(wǎng)絡(luò)置于2個(gè)GPU上同時(shí)運(yùn)行, 利用GPU的并行計(jì)算加速網(wǎng)絡(luò)的訓(xùn)練和提高準(zhǔn)確率.由于GPU計(jì)算速度較快,所以輸入數(shù)據(jù)可使用更高像素的彩色圖像,便于病害特征信息的提?。欢?彩色圖像比單通道灰度圖像更復(fù)雜,還會(huì)受復(fù)雜背景等因素的影響,故須進(jìn)一步對(duì)算法網(wǎng)絡(luò)進(jìn)行改進(jìn),提高算法的泛化能力.
1) 預(yù)處理圖像.圖像預(yù)處理的主要目的是消除圖像中的無關(guān)信息, 恢復(fù)有用的信息,增強(qiáng)有關(guān)信息的可檢測(cè)性和最大限度地簡(jiǎn)化數(shù)據(jù), 從而增強(qiáng)病害特征提取、匹配和識(shí)別的可靠性.將收集到的葡萄葉部圖像大小統(tǒng)一縮小為256×256像素, 去除圖像的復(fù)雜背景, 以便在實(shí)驗(yàn)中更好地提取病害特征信息,經(jīng)過處理后的4種葡萄葉部圖像如圖2所示.
圖2 預(yù)處理后的4種葡萄葉部圖像Fig.2 Pretreatment of four grape leaf images
2) 增加池化層.AlexNet算法中有3個(gè)池化層,分別位于第一個(gè)卷積層、第二個(gè)卷積層和第五個(gè)卷積層的后面.池化層即子采樣層, 其主要目的是縮小參數(shù)矩陣的尺寸,從而減少網(wǎng)絡(luò)參數(shù)的數(shù)量.池化方式主要有最大池化和平均池化, 前者選取圖像區(qū)域的最大值作為該區(qū)域池化后的值, 后者則計(jì)算圖像區(qū)域的均值作為該區(qū)域池化后的值.由于最大池化可以減少冗余信息,提升訓(xùn)練速度,所以本文選擇最大池化方式,在第三個(gè)卷積層和第四個(gè)卷積層后都增設(shè)池化層, 并通過實(shí)驗(yàn)驗(yàn)證其可行性,以有效提高算法的魯棒性.
3) 修改激活函數(shù).AlexNet算法中一般使用ReLU激活函數(shù)
f(x)=max{0,x}
(1)
解決梯度消失的問題, 從而加快收斂速度.然而,訓(xùn)練時(shí)卻容易出現(xiàn)神經(jīng)元“死亡現(xiàn)象”, 導(dǎo)致神經(jīng)元或許不再會(huì)被任何數(shù)據(jù)激活, 同時(shí)網(wǎng)絡(luò)將無法執(zhí)行反向傳播和學(xué)習(xí), 且ReLU函數(shù)不會(huì)對(duì)數(shù)據(jù)做幅度壓縮, 所以數(shù)據(jù)的幅度會(huì)隨算法層數(shù)的增加而不斷擴(kuò)張.為了解決上述問題, 本文選用Leaky ReLU函數(shù)
f(x)=max{ax,x}
(2)
替換ReLU函數(shù),其中a為固定斜率. 當(dāng)x≤0時(shí), Leaky ReLU函數(shù)可以進(jìn)行反向傳播, 從而解決ReLU函數(shù)出現(xiàn)的神經(jīng)元“死亡現(xiàn)象”, 并且能夠解決梯度消失的問題.
4) 增設(shè)隨機(jī)失活層.為了避免AlexNet算法出現(xiàn)過擬合現(xiàn)象, 在全連接層添加隨機(jī)失活層.通常設(shè)置神經(jīng)元的隨機(jī)丟棄概率為[0.1,0.5], 隨機(jī)減少的無關(guān)特征數(shù)據(jù)亦因丟棄概率不同而改變.本文通過實(shí)驗(yàn)優(yōu)化選擇該算法隨機(jī)丟棄的最佳參數(shù)值, 使得AlexNet算法具有更好的泛化性能.隨機(jī)失活層的工作原理如圖3所示, 其中空心圓表示神經(jīng)元, 實(shí)心圓表示已隨機(jī)丟棄的神經(jīng)元.
圖3 隨機(jī)失活層的工作原理示意圖Fig.3 Working principle of dropout layer
5) 局部響應(yīng)歸一化.由于Leaky ReLU激活函數(shù)的值域無固定區(qū)間, 故對(duì)Leaky ReLU所得結(jié)果進(jìn)行歸一化處理:
(3)
6) 損失函數(shù).本文實(shí)驗(yàn)為一個(gè)四分類問題, 故選擇的損失函數(shù)為分類交叉熵函數(shù)
(4)
其中s為樣本數(shù),m為分類數(shù).分類交叉熵函數(shù)結(jié)合輸出層的激活函數(shù)可加快深度學(xué)習(xí)的訓(xùn)練速度, 并且能使得到的結(jié)果更簡(jiǎn)潔.
7) 優(yōu)化算法.選擇RMSprop優(yōu)化算法, 采用指數(shù)加權(quán)平均保證各維度導(dǎo)數(shù)都在同一個(gè)數(shù)量級(jí), 有效避免學(xué)習(xí)率越來越低的問題, 從而能夠自適應(yīng)地調(diào)節(jié)學(xué)習(xí)率.
本文算法訓(xùn)練和測(cè)試實(shí)驗(yàn)環(huán)境均在Windows10操作系統(tǒng)下, 搭載Intel(R)Core(TM)i5-5200U CPU@2.20 GHz 4核處理器, 內(nèi)存為12 GB.采用Python3.7和TensorFlow框架進(jìn)行訓(xùn)練.
葡萄葉部病害圖像數(shù)據(jù)集來源于Plant Village公開數(shù)據(jù)集[14].葡萄葉片實(shí)驗(yàn)樣本主要有4類常見的圖像, 共4 063幅, 其中黑腐病1 180幅,埃斯卡病1 384幅,褐斑病1 076幅,健康423幅.實(shí)驗(yàn)中統(tǒng)一采用“*.jpg”格式,大小一致縮小為256×256像素, 再將數(shù)據(jù)集按4∶1劃分為訓(xùn)練集和測(cè)試集.
現(xiàn)以葡萄葉部黑腐病圖像為正類, 埃斯卡病、褐斑病和健康圖像為負(fù)類進(jìn)行評(píng)價(jià).若實(shí)際為黑腐病的圖像被正確判定為黑腐病的總數(shù)量為NTP, 實(shí)際為黑腐病的圖像被錯(cuò)誤判定為其他3種類別的總數(shù)量為NFN, 實(shí)際為其他3種類別的圖像被錯(cuò)誤判定為黑腐病的總數(shù)量為NFP, 實(shí)際為其他3種類別的圖像被正確判定為其類別的總數(shù)量為NTN, 則分類準(zhǔn)確率
(5)
然而, 在實(shí)驗(yàn)樣本不均衡的情況下, 僅使用分類準(zhǔn)確率還不足以判斷算法的性能, 故計(jì)算精確率
(6)
以表示對(duì)正類樣本結(jié)果的預(yù)測(cè)準(zhǔn)確程度.對(duì)于原樣本, 實(shí)際為正類樣本且被準(zhǔn)確預(yù)測(cè)為正類樣本的情況可用召回率R表示,
(7)
本文結(jié)合精確率和召回率, 利用F1分?jǐn)?shù)值
(8)
進(jìn)行評(píng)價(jià).精確率、召回率和F1值越高, 算法的分類準(zhǔn)確率越高且算法性能越好.
此外, 利用混淆矩陣評(píng)估算法的優(yōu)劣, 以便更直觀地顯示每一類圖像被正確或錯(cuò)誤分類的數(shù)量.
實(shí)驗(yàn)中輸入數(shù)據(jù)均為256×256像素的彩色圖像, 迭代6次, 每輪訓(xùn)練的樣本數(shù)為33個(gè), 優(yōu)化算法為RMSprop, 學(xué)習(xí)率為0.000 1.
將4類葡萄葉部圖像置于AlexNet網(wǎng)絡(luò)進(jìn)行訓(xùn)練和測(cè)試, 每一次迭代的損失值和準(zhǔn)確率如圖4所示.由圖4可見: AlexNet算法在測(cè)試集上對(duì)葡萄病害分類的準(zhǔn)確率為81.1%, 損失值為39.3%, 且網(wǎng)絡(luò)擬合效果不佳, 其主要原因是輸入數(shù)據(jù)為彩色圖像, RGB三通道提取病害特征的難度高于灰度圖像單通道.故須在訓(xùn)練集上進(jìn)行算法改進(jìn), 再利用測(cè)試集驗(yàn)證改進(jìn)后算法的性能.
圖4 AlexNet算法在訓(xùn)練集和測(cè)試集的損失值(a)和準(zhǔn)確率(b)Fig.4 Loss (a) and accuracy (b) of AlexNet algorithm in training set and test set
表1 池化層層數(shù)對(duì)算法性能的影響
其他參數(shù)設(shè)置不變的情況下, 僅增加池化層的層數(shù),測(cè)試結(jié)果如表1所示.由表1可見: 當(dāng)池化層數(shù)為5層時(shí), 算法對(duì)葡萄葉部病害分類準(zhǔn)確率最高, 損失值最低.故本文優(yōu)化選擇池化層數(shù)為5層.
其他參數(shù)設(shè)置保持不變,設(shè)置池化層數(shù)為5層, 僅改變?nèi)B接層層數(shù), 測(cè)試結(jié)果如表2所示.由表2可見:當(dāng)全連接層的層數(shù)為2層時(shí), 算法的分類準(zhǔn)確率最高, 損失值最低.故本文優(yōu)化選擇全連接層為2層.
表2 全連接層層數(shù)對(duì)算法性能的影響
表3 全連接層上不同丟棄概率對(duì)算法性能的影響
表4 不同激活函數(shù)對(duì)算法性能的影響
表5 改進(jìn)前后AlexNet算法的分類性能對(duì)比
保持其他參數(shù)不變, 不同丟棄概率下的測(cè)試結(jié)果如表3所示.由表3可見: 丟棄概率設(shè)置為0.1時(shí), 算法的分類準(zhǔn)確率最高, 而損失值并非最低, 這是因ReLU激活函數(shù)存在的神經(jīng)元“死亡現(xiàn)象”所致.故在第一個(gè)全連接層處添加隨機(jī)失活層, 丟棄概率設(shè)為0.1, 進(jìn)一步探究不同激活函數(shù)對(duì)算法性能的影響, 結(jié)果如表4所示.
由表4可見: 選擇Leaky ReLU激活函數(shù)時(shí)算法的分類準(zhǔn)確率最高, 損失值最低.故本文優(yōu)化選擇激活函數(shù)為L(zhǎng)eaky ReLU函數(shù).
通過增加池化層層數(shù)、改變?nèi)B接層層數(shù)、設(shè)置丟棄概率以及修改激活函數(shù)等操作所得本文算法與傳統(tǒng)AlexNet算法在測(cè)試集上的分類結(jié)果如表5所示.由表5可見: 改進(jìn)后AlexNet算法對(duì)葡萄葉部圖像的分類準(zhǔn)確率達(dá)99.1%, 較傳統(tǒng)AlexNet算法高18.0%,損失值低32.7%, 算法的分類性能大幅提升.
利用混淆矩陣對(duì)測(cè)試集中813幅4類葡萄葉部圖像進(jìn)行分類, 結(jié)果如圖5所示.由圖5可見: 由于實(shí)驗(yàn)所用的葡萄葉片圖像已經(jīng)處理去除了背景干擾, 埃斯卡病與另外兩種病害特征區(qū)別較大, 所以埃斯卡病和健康葡萄葉片圖像的分類準(zhǔn)確率都高達(dá)100%; 而黑腐病和褐斑病病斑特征的形狀類似, 所以出現(xiàn)3幅黑腐病圖像被誤分類為褐斑病, 4幅褐斑病圖像被誤分類為黑腐?。?/p>
改進(jìn)前后AlexNet算法在測(cè)試集上的精確率、召回率及F1值如表6所示.由表6可見: 改進(jìn)后AlexNet算法的各項(xiàng)指標(biāo)均高于傳統(tǒng)AlexNet算法, 算法泛化能力更優(yōu), 能夠更好地提取病害特征, 可對(duì)不同類型的葡萄葉片圖像進(jìn)行準(zhǔn)確分類.
表6 改進(jìn)前后AlexNet算法在測(cè)試集上的各項(xiàng)評(píng)價(jià)結(jié)果
圖5 混淆矩陣下4類葡萄葉片圖像的分類結(jié)果Fig.5 Image classification results of 4 grape leaves under confusion matrix
本文根據(jù)葡萄葉部病害圖像分類的需求建立了葡萄葉片圖像數(shù)據(jù)集,包括黑腐病、埃斯卡病和褐斑病3種葡萄葉部病害以及健康葡萄葉片圖像, 并基于AlexNet算法進(jìn)行改進(jìn)建模,最終分類準(zhǔn)確率達(dá)99.1%.然而,葡萄病害種類繁多,下一步將收集更多種類的葡萄病害數(shù)據(jù),構(gòu)建出更完美的模型完善算法用于分類更多的病害,同時(shí)嘗試將算法推廣到其他農(nóng)作物的病害分類,為種植者提供一定的技術(shù)支持.