何東健 王 鵬 牛 童 毛燕茹 趙艷茹
(1.西北農(nóng)林科技大學(xué)機械與電子工程學(xué)院, 陜西楊凌 712100; 2.農(nóng)業(yè)農(nóng)村部農(nóng)業(yè)物聯(lián)網(wǎng)重點實驗室, 陜西楊凌 712100;3.陜西省農(nóng)業(yè)信息感知與智能服務(wù)重點實驗室, 陜西楊凌 712100)
葡萄產(chǎn)業(yè)是我國重要的果品產(chǎn)業(yè)之一,近年來,受氣候變化等因素影響,葡萄病害頻發(fā)。特別是葡萄霜霉病的發(fā)病率明顯上升,對葡萄產(chǎn)量和品質(zhì)構(gòu)成嚴重威脅,給果農(nóng)造成了巨大經(jīng)濟損失[1]。對葡萄病害嚴重程度進行分級,有利于果農(nóng)精準施藥、提高防治效果,降低病害帶來的經(jīng)濟損失。目前,國內(nèi)規(guī)模化葡萄園需要依靠人工跟蹤果園葡萄霜霉病發(fā)展態(tài)勢,導(dǎo)致果園病害跟蹤管理存在滯后性。因此,實現(xiàn)實時準確的葡萄霜霉病嚴重程度分級,對葡萄病害科學(xué)管理和防治、培育抗病品種等都具有重要意義[2]。
隨著計算機視覺技術(shù)的發(fā)展,機器學(xué)習(xí)[3-5]和深度學(xué)習(xí)[6-9]方法近年來已被廣泛應(yīng)用到遙感圖像識別[10]和農(nóng)業(yè)[11-14]等領(lǐng)域,特別是在作物病害識別方面取得了很好的成果[15-17],為葡萄病害嚴重度等級劃分提供了新的解決方案。為了實現(xiàn)自動識別葡萄葉片病害,朱林等[18]在葡萄葉片病斑區(qū)域提取了基于灰度共生矩陣的4種紋理特征和顏色特征,用人工神經(jīng)網(wǎng)絡(luò)進行分類,結(jié)果表明HS組合特征具有最佳識別效果。ZHU等[19]首先采用小波變換對葡萄葉片圖像去噪,利用形態(tài)學(xué)算法改善病害形狀并利用Prewitt算子提取病變區(qū)域邊緣,提出基于BP神經(jīng)網(wǎng)絡(luò)識別5種葡萄葉片病害。劉洋等[20]在其自建的6種葡萄病害數(shù)據(jù)集上利用移動端設(shè)備部署MobileNet網(wǎng)絡(luò)進行識別,獲得87.5%的平均識別準確率。ADEEL等[21]提出了一個自動分割和識別葡萄葉片病害的系統(tǒng),利用M-class SVM對最終的約簡特征進行分類,該方法平均分割正確率為90%,分類正確率達到92%以上。上述研究在病害識別方面取得了很好的成果,但是由于采用人工提取病害特征,難以高效完成有效特征的提取。
人工提取有效特征效率低下,而卷積神經(jīng)網(wǎng)絡(luò)能夠避免這類復(fù)雜操作[22]。文獻[23-27]在模型的輕量化、特征提取能力的增強、識別準確率的提高等方面都有了很大改善,但是所用數(shù)據(jù)集圖像差異大、有效特征易提取,針對病害表征相似度較高的病斑特征提取能力有限,模型適應(yīng)性不強。
不同程度葡萄霜霉病圖像病斑表征相似度高且背景復(fù)雜不易區(qū)分,為了準確識別發(fā)病程度,提高模型的泛化性能,本文在ResNet-50的基礎(chǔ)上,通過修改殘差塊的主分支和捷徑分支結(jié)構(gòu)以增強網(wǎng)絡(luò)特征提取能力和保留重要信息的維度變化,并在多個不同的增強數(shù)據(jù)集上驗證本文構(gòu)建模型的有效性。
2020年7—10月,于陜西省楊凌區(qū)西北農(nóng)林科技大學(xué)葡萄種植基地,分別采集了霜霉病前期、中期、后期以及健康葉片圖像,圖像采集設(shè)備為小米9手機,分辨率為3 000像素×3 000像素。所采集圖像由葡萄病害專家根據(jù)發(fā)病時間以及葉片病斑面積進行了嚴重度等級劃分,共4 470幅,其中霜霉病前期1 190幅,中期1 090幅,后期1 180幅,健康葉片圖像1 010幅,建立了一個葡萄霜霉病圖像數(shù)據(jù)集。圖1為不同霜霉病發(fā)病程度圖像示例。
在實際應(yīng)用中,葡萄葉片通常生長在復(fù)雜環(huán)境背景中,同時由于存在天氣、獲取圖像時的拍攝角度、設(shè)備噪聲等因素影響,病害的準確分級面臨諸多問題。田間環(huán)境存在背景多變、遮擋、陰影等情況,且獲取圖像易受光照、霧霾等因素干擾,同時葡萄葉片生長位置、葉片形狀也會影響圖像分級效果。如圖1部分示例所示,無論是在幾何特征、輪廓信息等方面均存在較大差異。
為模擬上述影響,使得本文數(shù)據(jù)集盡可能地符合田間復(fù)雜環(huán)境下的應(yīng)用,對原始圖像進行高斯模糊、對比度增強30%/減弱30%、亮度增強20%/減弱20%、銳度增強50%/減弱50%以模擬不同天氣情況(圖2)。分別旋轉(zhuǎn)圖像90°、180°、270°和水平翻轉(zhuǎn)、垂直翻轉(zhuǎn),以模擬拍攝角度變化(圖3)。對原始圖像加入高斯噪聲和椒鹽噪聲,以模擬圖像采集時的設(shè)備噪聲(圖4)。綜合以上3種方法得到增強后的數(shù)據(jù)集數(shù)據(jù)量是原來的14倍。將輸入模型數(shù)據(jù)集的圖像尺寸統(tǒng)一調(diào)整為224像素×224像素,并按照7∶2∶1劃分為訓(xùn)練集、驗證集、測試集。

圖2 模擬不同天氣的數(shù)據(jù)增強效果Fig.2 Data enhancement effects for simulating different weathers

圖3 模擬不同拍攝角度的數(shù)據(jù)增強效果Fig.3 Data enhancement effects for simulating different shooting angles

圖4 模擬設(shè)備噪聲的數(shù)據(jù)增強效果Fig.4 Data enhancement effects of analog equipment noise
本文數(shù)據(jù)集包含3種不同發(fā)病程度的霜霉病以及健康葉片圖像,不同程度的霜霉病病斑的紋理、顏色、圖像中葡萄葉片面積占比等表征信息具有很高的相似性,區(qū)分難度大,會導(dǎo)致模型識別不同程度病害時準確率降低;同時由于不同病害等級葉片背景復(fù)雜無規(guī)律性,也會影響模型的特征提取過程,淺層網(wǎng)絡(luò)的特征提取能力無法滿足病斑特征的提取,模型泛化能力弱。深層卷積神經(jīng)網(wǎng)絡(luò)能夠很好地提取圖像淺層、深層的不同特征信息,復(fù)雜背景下的提取能力有了較大提升。深度卷積神經(jīng)網(wǎng)絡(luò)在特征提取能力上優(yōu)于淺層網(wǎng)絡(luò),但隨著網(wǎng)絡(luò)深度加深,模型會出現(xiàn)梯度消失或梯度爆炸現(xiàn)象,同時易導(dǎo)致模型退化。殘差塊從結(jié)構(gòu)上看主要包括兩部分,即捷徑連接和恒等映射,捷徑分支使得殘差成為可能,保證了網(wǎng)絡(luò)深度增加的同時模型不退化,恒等映射使得網(wǎng)絡(luò)能夠更深,獲得更強的特征提取能力。依靠殘差塊堆疊搭建的深層殘差網(wǎng)絡(luò)在表征相似度高的不同圖像時仍然能達到很好的效果。為了使模型訓(xùn)練過程更快收斂且保證較高的識別準確率,本文在ResNet-50深度殘差網(wǎng)絡(luò)[28]基礎(chǔ)上,修改模型殘差塊主分支結(jié)構(gòu)與捷徑分支結(jié)構(gòu),進一步提高網(wǎng)絡(luò)特征提取能力,提取圖像中的葉片病斑信息,構(gòu)建模型實現(xiàn)葡萄霜霉病的等級劃分。
本文采用的ResNet-50整體結(jié)構(gòu)如圖5所示。首先利用7×7卷積層和3×3最大池化下采樣對輸入圖像進行一次常規(guī)特征提取操作,減小特征尺寸,然后通過Stage2中的Conv2、Conv3、Conv4與Conv5殘差體提取更高層特征信息,最后將提取到的高維特征輸入到Stage3全連接層進行分類輸出。

圖5 模型總體結(jié)構(gòu)圖Fig.5 Overall structure of model
殘差塊有2種結(jié)構(gòu),如圖6所示,其主分支輸出特征矩陣與捷徑分支輸出特征矩陣具有相同形狀,兩者堆疊構(gòu)成了殘差主體。

圖6 不同結(jié)構(gòu)的殘差塊Fig.6 Residual blocks of different structures
在圖6a中,捷徑分支被用于改變特征維度,這一操作起到了避免模型退化的作用,為了保持輸出特征矩陣與主分支輸出一致,采用一個1×1卷積操作,能夠較好地實現(xiàn)跨通道的特征整合,但是直接用步長為2的1×1卷積層將上層特征圖尺寸減半,無重點的特征圖減半操作弱化了圖像紋理、角點等部分重要特征,造成特征圖存在一定程度失真,導(dǎo)致后續(xù)殘差層結(jié)構(gòu)能提取到的有效特征減少。輸入特征在ID Block中殘差塊主分支中流動時,為了減少計算量先采用1×1卷積降維操作后再提取特征,然后將提取到的特征信息升維。如圖6b所示,這種瓶頸結(jié)構(gòu)雖然提高了計算速度,但也在一定程度上限制了主分支的特征提取能力,僅修改主分支和ResNet-50原始模型相比準確率能夠提升3.11個百分點,模型泛化能力更優(yōu),說明單個3×3卷積層的特征提取性能不足。原始模型的全連接層不能直接用于本文數(shù)據(jù)集,需要對其重新設(shè)計。針對以上問題,本文對ResNet-50進行如下改進:
(1)對Conv3、Conv4、Conv5的Base Block捷徑分支進行改進。原始結(jié)構(gòu)如圖7a所示,在原始1×1卷積層前插入3×3最大池化層,步長為2,實現(xiàn)保留重要信息的降維,經(jīng)過1×1卷積層特征整合后通過批歸一化操作(BN)與主分支輸出相加,圖7b為改進后的捷徑分支結(jié)構(gòu)。

圖7 改進前后捷徑分支結(jié)構(gòu)Fig.7 Shortcut branch structure before and after improvement
(2)改進ID Block中殘差塊的主分支結(jié)構(gòu)。ID Block中殘差塊的主分支結(jié)構(gòu)如圖8a所示,在卷積過程中第1層卷積層僅對輸入特征進行降維。為了強化殘差結(jié)構(gòu)主分支性能,使其能夠高效地用于本文數(shù)據(jù)的特征提取,將其中的第1層1×1卷積降維替換為3×3卷積降維且步長為1,卷積核個數(shù)不變,在降維的同時提取大部分重要特征,改進后ID Block中殘差塊主分支結(jié)構(gòu)如圖8b所示。

圖8 改進前后主分支結(jié)構(gòu)Fig.8 Main branch structure before and after improvement
(3)設(shè)計新的全連接層。設(shè)計的新的全連接層如圖9所示,用全局均值池化和3層節(jié)點個數(shù)分別為1 024、512和4的全連接層網(wǎng)絡(luò)代替原模型全連接層結(jié)構(gòu),并加入Dropout層避免模型過擬合,提升模型泛化能力,使其能夠針對本問題達到更好的效果。

圖9 新的全連接層Fig.9 New fully connected layer
試驗平臺為Intel Xeon Gold 5217 CPU,3 GHz處理器,系統(tǒng)內(nèi)存251.4 GB。測試軟件環(huán)境為Ubuntu 18.04.5 LTS,64位操作系統(tǒng)。分類網(wǎng)絡(luò)模型由Python3.7基于TensorFlow2.1深度學(xué)習(xí)框架、GPU (Nvidia TESLA V100) 雙卡模式訓(xùn)練實現(xiàn)。
為了盡可能提升BN的優(yōu)化效果,本試驗將所有模型的輸入批尺寸統(tǒng)一設(shè)置為32,圖像尺寸設(shè)置為224像素×224像素,在保證訓(xùn)練速度的同時也能最大化BN操作的效果。
為了探明動量因子、學(xué)習(xí)率、Dropout比率、數(shù)據(jù)增強方式對改進后模型識別準確率的影響,在原始數(shù)據(jù)集上測試不同模型。試驗設(shè)計如下:
(1)超參數(shù)(動量因子m、學(xué)習(xí)率α)對識別準確率的影響試驗。設(shè)置了0.30、0.60、0.90共3個動量梯度,進行預(yù)試驗,根據(jù)預(yù)試驗的結(jié)果,再進一步改變m,找到適合本文模型的最佳動量因子;在最優(yōu)動量基礎(chǔ)上分別測試學(xué)習(xí)率為0.01、0.001、0.000 1,確定模型最優(yōu)超參數(shù)。
(2)不同模型識別性能對比試驗。首先優(yōu)化AlexNet、GoogLeNet、VGG-16以及ResNet-34、ResNet-101模型的最優(yōu)超參數(shù),自動選擇超參數(shù)算法往往需要更高的計算成本,因此各模型優(yōu)化調(diào)參均采用手動調(diào)整的方式。將優(yōu)化后的上述模型與改進后的模型在原始數(shù)據(jù)集上進行對比,分別測試準確率。
(3)數(shù)據(jù)增強方式對模型識別準確率的影響試驗。在4種不同的增強數(shù)據(jù)集上對改進后模型進行訓(xùn)練和測試,以探明數(shù)據(jù)增強方式對識別準確率的影響;在綜合各種增強數(shù)據(jù)集上將改進后的模型與ResNet-50進行對比,評估改進殘差網(wǎng)絡(luò)模型的性能提升效果。
(4)殘差結(jié)構(gòu)修改方式對模型識別準確率的影響試驗。為評估僅修改殘差塊捷徑分支和僅修改殘差塊主分支對模型識別準確率的影響,分別對兩種修改后的模型進行訓(xùn)練并測試,最后與兩種方法并用的模型進行對比。
3.3.1動量因子對識別準確率的影響
預(yù)試驗結(jié)果顯示,在m=0.60時模型精度最高,根據(jù)這一結(jié)果,設(shè)計了m為0.50、0.55、0.60、0.65、0.70的動量梯度并在原始數(shù)據(jù)集上進行試驗;在動量因子為0.60的基礎(chǔ)上測試了不同學(xué)習(xí)率對模型準確率的影響,根據(jù)收斂速度和準確率優(yōu)選出學(xué)習(xí)率α為0.001的模型,測試結(jié)果如表1所示。

表1 不同動量因子下改進ResNet-50模型的準確率Tab.1 Model accuracy of improved ResNet-50 under different momentum factors %
不同動量因子的模型訓(xùn)練過程如圖10所示。動量因子較小時模型收斂過程較平緩,但收斂速度慢且訓(xùn)練難以得到最優(yōu)值,而過大的動量因子則使得模型訓(xùn)練過程容易出現(xiàn)振蕩,不利于模型精度的提高。在測試集中,m=0.60時模型識別準確率為95.17%,高于其它動量參數(shù)模型。

圖10 不同動量因子下模型性能隨迭代周期的變化曲線Fig.10 Variation of model performance with iteration times under different momentum factors
3.3.2不同模型的識別性能
不同模型在原始數(shù)據(jù)集的訓(xùn)練集、驗證集和測試集上的識別準確率如表2所示。
從表2可以看出,AlexNet網(wǎng)絡(luò)在訓(xùn)練過程中采用分組卷積,其不同特征圖分別計算后融合,導(dǎo)致卷積核只與某部分特征圖進行卷積,模型泛化能力不強;本文數(shù)據(jù)集相似度較高,GoogLeNet網(wǎng)絡(luò)對多尺度特征的適應(yīng)性優(yōu)勢未能充分體現(xiàn),識別準確率不高;VGG-16參數(shù)量大,初始數(shù)據(jù)集不足以訓(xùn)練VGG-16,網(wǎng)絡(luò)難以優(yōu)化;殘差網(wǎng)絡(luò)能很好地解決網(wǎng)絡(luò)深度增加導(dǎo)致的梯度消失和模型退化的問題,ResNet-34以較少的參數(shù)量獲得了較高的準確率,但還存在提升空間;更深層的ResNet-50模型識別效果有了明顯的提升;而ResNet-101網(wǎng)絡(luò)過深,訓(xùn)練時間長,在ResNet-50模型基礎(chǔ)上識別準確率并未有顯著提升,計算成本過高,不利于實際應(yīng)用。殘差網(wǎng)絡(luò)模型能夠較好地適應(yīng)本文數(shù)據(jù)集相似度高的特點,改進后的ResNet-50模型識別準確率為95.17%,高于原始模型。

表2 不同模型識別準確率對比Tab.2 Comparison of recognition accuracy of different models %
3.3.3數(shù)據(jù)增強方式對改進模型識別性能的影響
為提高模型泛化能力,分別用4種不同的數(shù)據(jù)增強方式進行訓(xùn)練并測試,表3中數(shù)據(jù)集A、B、C、D分別為模擬不同天氣、不同拍攝角度、不同設(shè)備以及綜合各種增強方法得到的數(shù)據(jù)集,不同增強方式所生成數(shù)據(jù)集的4個時期數(shù)據(jù)量統(tǒng)計如表3所示。

表3 數(shù)據(jù)增強后樣本量分布Tab.3 Sample number distribution after data enhancement 幅
圖11為改進后殘差網(wǎng)絡(luò)在綜合數(shù)據(jù)集上的訓(xùn)練過程,模型收斂速度快,訓(xùn)練準確率達100%。

圖11 改進模型性能隨迭代周期的變化曲線Fig.11 Performance of improved model varied with number of iterations
改進ResNet-50模型與ResNet-50模型在不同數(shù)據(jù)集上的識別準確率對比如表4所示。可以看出,與ResNet-50相比,改進ResNet-50在數(shù)據(jù)集D上識別準確率最高,測試效果最好。

表4 改進模型與原模型的識別效果對比Tab.4 Recognition effect comparison between improved model and original model %
由表4可知,在原始數(shù)據(jù)集上,改進后模型較原始模型在測試集的識別準確率提升了2.31個百分點;不同數(shù)據(jù)增強方法均能提高模型的泛化性能,使用改進殘差結(jié)構(gòu)的模型識別準確率最高達到了99.92%。由于捷徑分支池化層的加入和主分支的結(jié)構(gòu)調(diào)整,參數(shù)量有一定的增加,模型訓(xùn)練耗時接近原始殘差網(wǎng)絡(luò)模型的1.3倍,但本文方法極大增強了模型特征提取能力和適應(yīng)性,能夠在復(fù)雜背景下準確判別病害等級,具有更高的實用價值。
3.3.4殘差結(jié)構(gòu)修改方式對模型識別準確率的影響
首先維持主分支不變,僅修改殘差結(jié)構(gòu)Conv3、Conv4、Conv5的Base Block捷徑分支;然后維持捷徑分支不變,修改ID Block中殘差塊的主分支結(jié)構(gòu);在數(shù)據(jù)集D上分別訓(xùn)練模型并進行測試,結(jié)果如表5所示。

表5 不同修改方式的殘差結(jié)構(gòu)識別效果Tab.5 Residual structure recognition effect of different modification methods %
與原始模型相比,兩種修改方法在識別準確率上均有一定提升。僅修改捷徑分支時,能夠在實現(xiàn)降低特征維度的同時保留大量上層信息,基于這一上層信息,下層主分支在進行下一輪特征提取時能有更好的表現(xiàn)。僅修改主分支時,模型特征提取的能力得到增強,卷積層的性能得到較大提升。兩分支同時修改后,進一步減少了流動過程中的信息損失,準確率得到進一步提升,殘差結(jié)構(gòu)主分支與捷徑分支相互促進,模型效果達到最優(yōu)。
模型殘差結(jié)構(gòu)改進前后的特征提取過程如圖12所示,圖12a中Block1、Block2、Block3分別為原始網(wǎng)絡(luò)結(jié)構(gòu)中圖像經(jīng)過第1、2、3個殘差體后輸出的特征圖;圖12b中各圖分別為改進后網(wǎng)絡(luò)第1、2、3個殘差體提取到的特征。殘差結(jié)構(gòu)改進前后網(wǎng)絡(luò)在淺層提取到的特征差異不大,但改進后殘差結(jié)構(gòu)提取深層抽象特征的能力比改進前更強。

圖12 改進前后殘差結(jié)構(gòu)特征提取可視化Fig.12 Visualizations of feature extraction of improved residual structure
(1)為了提高自然條件下葡萄霜霉病病害程度分級準確率,從插入池化層、優(yōu)化主分支結(jié)構(gòu)和設(shè)計新的全連接層等方面對殘差網(wǎng)絡(luò)模型ResNet-50進行改進,原始數(shù)據(jù)集測試結(jié)果表明,動量因子m為0.60、學(xué)習(xí)率α為0.001時改進ResNet-50模型具有最好的識別效果。改進后的殘差塊增強了網(wǎng)絡(luò)的特征提取能力,在優(yōu)化超參數(shù)的基礎(chǔ)上,相較于原始模型識別準確率提升了2.31個百分點。
(2)不同數(shù)據(jù)增強方式對提高模型識別準確率均有一定貢獻,且不同的殘差結(jié)構(gòu)改進方式均能提高模型識別準確率。數(shù)據(jù)集D上改進ResNet-50模型的識別準確率高于原始模型4.68個百分點,達到99.92%,表明本文方法可實現(xiàn)復(fù)雜環(huán)境下葡萄霜霉病的自動準確識別。