白雪松,吳建平,2,3,景文超,崔亞楠,康小霖
(1.云南大學(xué) 信息學(xué)院,云南 昆明 650504;2.云南省電子計(jì)算中心,云南 昆明 650223;3.云南省高校數(shù)字媒體技術(shù)重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650223)
農(nóng)作物病蟲(chóng)害嚴(yán)重威脅著國(guó)家糧食安全和環(huán)境,是制約農(nóng)業(yè)生產(chǎn)的重要因素之一[1]。據(jù)國(guó)家農(nóng)業(yè)技術(shù)中心預(yù)測(cè),2022年小麥、水稻、玉米等重大病蟲(chóng)害的復(fù)發(fā)頻率增加,影響全國(guó)70%的糧食主產(chǎn)區(qū),覆蓋面積達(dá)20.26億畝[2]。
農(nóng)作物病蟲(chóng)害檢測(cè)是實(shí)現(xiàn)糧食安全的重要途徑之一。及時(shí)準(zhǔn)確地識(shí)別病蟲(chóng)害有助于采取適當(dāng)?shù)念A(yù)防和保護(hù)措施,從而提高農(nóng)產(chǎn)品的產(chǎn)量和質(zhì)量[3]。傳統(tǒng)的檢測(cè)方法是由經(jīng)過(guò)培訓(xùn)或有經(jīng)驗(yàn)的人員進(jìn)行現(xiàn)場(chǎng)檢查。然而,傳統(tǒng)方法對(duì)檢測(cè)人員的專業(yè)素質(zhì)要求較高,并且浪費(fèi)大量的時(shí)間和資源。此外,由于檢測(cè)人員的主觀因素,極有可能造成誤檢。隨著人工智能技術(shù)的迅速發(fā)展,深度學(xué)習(xí)技術(shù)已應(yīng)用到各個(gè)領(lǐng)域[4]。近年來(lái),國(guó)內(nèi)外研究人員利用深度學(xué)習(xí)技術(shù)在農(nóng)作物病蟲(chóng)害檢測(cè)領(lǐng)域取得了一系列重要成果。Chen等[5]提出了一種基于AlexNet模型的LeafNet模型來(lái)檢測(cè)茶葉病害,獲得了比多層感知機(jī)(Multi-layer Perceptron,MLP)和支持向量機(jī)(Support Vector Machine,SVM)更好的表現(xiàn)。Barbedo[6]利用圖像分割技術(shù)提取病蟲(chóng)害的主要特征,并通過(guò)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,提高了識(shí)別準(zhǔn)確率。王佳[7]通過(guò)提取香芋葉片的顏色和紋理特征建立數(shù)據(jù)庫(kù),并使用SVM方法進(jìn)行分類,準(zhǔn)確率達(dá)到93.00%。項(xiàng)小東等[8]在Xception模型中結(jié)合CEM模塊,提出了一種通道擴(kuò)張方法(擴(kuò)張-保持-再擴(kuò)張-壓縮),在實(shí)驗(yàn)中獲得了91.90%的準(zhǔn)確率。Hassan等[9]提出一種基于Inception架構(gòu)和跳躍連接的新型網(wǎng)絡(luò)模型,且將標(biāo)準(zhǔn)卷積換成深度可分離卷積來(lái)實(shí)現(xiàn)更高的精度。
上述研究均取得了較好的實(shí)驗(yàn)結(jié)果,但缺乏細(xì)粒度層次的特征感知能力。由于受到農(nóng)作物品種、發(fā)病時(shí)期、環(huán)境等因素的影響,導(dǎo)致病蟲(chóng)害出現(xiàn)類間差異小和類內(nèi)差異大的情況,增加了細(xì)粒度級(jí)別的分類難度。現(xiàn)有的解決方案,一方面通過(guò)采集更多樣本來(lái)改善數(shù)據(jù)源,但難以獲取和標(biāo)注圖像;另一方面,采用多模型融合或增加網(wǎng)絡(luò)層數(shù)來(lái)提高特征提取能力,但模型參數(shù)和復(fù)雜度也會(huì)顯著增加。
針對(duì)病蟲(chóng)害葉片特征的識(shí)別問(wèn)題,該文提出了一種基于改進(jìn)的Res2NeXt50模型的農(nóng)作物病蟲(chóng)害檢測(cè)算法。首先,在殘差網(wǎng)絡(luò)(Residual Network,ResNet)的基礎(chǔ)上改進(jìn)得到Res2NeXt50模型,增加網(wǎng)絡(luò)每一層的感受野,可以在細(xì)粒度的層次上學(xué)習(xí)圖像的特征信息。隨后,通過(guò)分解大卷積、改進(jìn)下采樣、替換激活函數(shù)、減少網(wǎng)絡(luò)層數(shù)等方法進(jìn)一步優(yōu)化模型,減少模型參數(shù)和復(fù)雜度。此外,采用標(biāo)簽平滑和EMA方法訓(xùn)練模型以提高泛化能力。
盡管ResNet在圖像識(shí)別領(lǐng)域表現(xiàn)不錯(cuò)[10],但僅通過(guò)3×3卷積很難有效地提取病變特征。因此,該文采用了一種新的多尺度骨干架構(gòu)(A New Multi-scale Backbone Architecture,Res2Net)[11],在細(xì)粒度級(jí)別增加特征感受野,以挖掘病變特征之間的微小差異。
參考ResNeXt50模型[12]中的分組設(shè)計(jì),該文構(gòu)建了Res2NeXt50模型。模型通過(guò)分組學(xué)習(xí)得到的特征耦合度低,且涉及的主要特征不同,因此可以得到互補(bǔ)的信息來(lái)更全面地學(xué)習(xí)圖像。Res2NeXt50殘差塊結(jié)構(gòu)如圖1所示。
圖1 殘差塊結(jié)構(gòu)
在圖1中,輸入特征經(jīng)過(guò)1×1卷積后按通道分成4組子特征,記為Xi。特征Xi不經(jīng)過(guò)卷積得到輸出Y1=X1,特征X2經(jīng)過(guò)8組3×3卷積得到輸出Y2=K2(X2),特征X3與Y2作殘差連接后經(jīng)過(guò)8組3×3卷積得到輸出Y3=K3(X3+Y2),特征X4與Y3作殘差連接后經(jīng)過(guò)8組3×3卷積得到輸出Y4=K4(X4+Y3)。依次類推,輸出特征Yi的計(jì)算方法如式(1):
(1)
在農(nóng)作物病蟲(chóng)害診斷時(shí),通常根據(jù)病斑顏色變化、受損部位大小等癥狀進(jìn)行鑒別。Res2NeXt50模型使用7×7卷積來(lái)提取圖像的初級(jí)特征,但卷積核較大,導(dǎo)致局部特征丟失。如圖2所示,為了解決病蟲(chóng)害特征的提取問(wèn)題,該文提出混合卷積代替7×7卷積來(lái)獲取局部和全局特征,從而得到更豐富的圖像語(yǔ)義信息。
在圖2中,改進(jìn)模型使用7×7、3×3和5×5卷積來(lái)提取圖像的初級(jí)特征,并加入P-ReLU函數(shù)和BN層以增強(qiáng)特征的表述能力。然后,通過(guò)拼接(Concat)進(jìn)行特征融合。
圖2 混合卷積
ReLU函數(shù)能有效抑制梯度消失和爆炸,而被廣泛使用。Res2NeXt50模型經(jīng)過(guò)分組卷積后,結(jié)構(gòu)更加復(fù)雜,更容易過(guò)擬合。因此,該文選擇具有正則化效果的GELU函數(shù)來(lái)代替原始?xì)埐顗K中的ReLU函數(shù),以提高魯棒性。GELU函數(shù)的定義如下。
(2)
在式2中,x作為輸入值,Φ(x)是高斯分布的累積分布函數(shù)。當(dāng)x減小時(shí),Φ(x)也減小,激活函數(shù)輸出為0的概率更高,則神經(jīng)元被丟棄。反之,當(dāng)x增大時(shí),Φ(x)也增大,激活函數(shù)輸出為1的概率更高,則保留神經(jīng)元。
在Res2NeXt50殘差塊中,主通道使用兩個(gè)1×1卷積和一個(gè)3×3卷積來(lái)改變特征圖的大小和數(shù)量,并在捷徑連接(Shortcut)中使用一個(gè)Stride為2的1×1卷積進(jìn)行下采樣以匹配輸出。因?yàn)?×1卷積下采樣時(shí)丟失大量特征信息,會(huì)對(duì)主通道的信息流通產(chǎn)生負(fù)面影響,所以,該文選擇平均池化(Average Pooling,AvgPool)代替1×1卷積完成下采樣,以保留更多的信息。下采樣改進(jìn)方法如圖3所示。
圖3 改進(jìn)下采樣
在圖3中,主通道保持不變,而Shortcut使用Stride為2的AvgPool完成下采樣,并加入1×1卷積和BN層,以增加特征的非線性能力。
最初的Res2NeXt50模型殘差塊仍沿用標(biāo)準(zhǔn)的(3,4,6,3)架構(gòu),而該文將layer1到layer4的block數(shù)調(diào)整為(2,4,6,2),從48層變?yōu)楝F(xiàn)有的42層。與原來(lái)相比,通過(guò)減少網(wǎng)絡(luò)層數(shù),降低了過(guò)擬合風(fēng)險(xiǎn),同時(shí)充分利用Res2Net架構(gòu)的特征挖掘能力。
改進(jìn)模型共有44層,由Conv1卷積層、Res2NeXt殘差塊、池化層和全連接層組成。如表1所示,Conv1卷積層使用混合卷積提取圖像的初級(jí)特征;Res2NeXt殘差塊由1×1卷積、3×3卷積和1×1卷積組成,并行拓?fù)鋽?shù)為8;layer1模塊保留原有的下采樣方式,其他模塊使用改進(jìn)后的下采樣方式;自適應(yīng)平均池化用于實(shí)現(xiàn)全局特征降維。最后,將全連接層的輸出維度設(shè)置為實(shí)驗(yàn)所需的類數(shù)。
表1 網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)
AI Challenger 2018農(nóng)作物病蟲(chóng)害數(shù)據(jù)集包括訓(xùn)練集31 718張圖像,驗(yàn)證集4 540張圖像,測(cè)試集9 027張無(wú)標(biāo)簽圖像。數(shù)據(jù)集包含:10種農(nóng)作物(蘋(píng)果、辣椒、馬鈴薯、桃子、草莓、櫻桃、玉米、葡萄、柑桔和番茄)、27種病害(24種分為輕度和重度)和10種健康類別。實(shí)驗(yàn)的主要目的是準(zhǔn)確識(shí)別各種病蟲(chóng)害,因此對(duì)原始數(shù)據(jù)集做了一些調(diào)整。首先,對(duì)數(shù)據(jù)集進(jìn)行清理,刪除訓(xùn)練和驗(yàn)證集中的238張重復(fù)圖像;然后,將同一病害的輕度和重度樣本混合,剔除樣本數(shù)量極不均勻的類別,比如僅有3張圖像的番茄瘡痂病;最后,將訓(xùn)練集和驗(yàn)證集的同類樣本混合打亂,總共得到36 020張圖像。調(diào)整后的數(shù)據(jù)集按照“物種-狀態(tài)”分為36類,即26種病害和10種健康類別。
Plantvillage數(shù)據(jù)集共有54 305張圖像,分為38類。數(shù)據(jù)集包含:14種農(nóng)作物(蘋(píng)果、藍(lán)莓、櫻桃、玉米、葡萄、柑橘、桃子、辣椒、馬鈴薯、樹(shù)莓、大豆、草莓、南瓜和番茄),26種病害和12種健康類別。
Plant_leaves數(shù)據(jù)集共有4 502張圖像,分為22類。數(shù)據(jù)集包含:12種農(nóng)作物(芒果、欖仁、番石榴、薩塔帕尼、鷹榅桲、蒲桃、麻風(fēng)樹(shù)、番紅花、羅勒、粉紅石榴、檸檬和梧桐),11種病害和11種健康類別。
上述數(shù)據(jù)集以4∶1的比例分成訓(xùn)練集和測(cè)試集,使用相同的數(shù)據(jù)增強(qiáng)技術(shù)和評(píng)價(jià)指標(biāo)。
數(shù)據(jù)增強(qiáng)不僅可以增加樣本數(shù)量,還可以豐富樣本的多樣性,避免過(guò)擬合?,F(xiàn)有的數(shù)據(jù)增強(qiáng)技術(shù)分為兩類,一是離線增強(qiáng),二是在線增強(qiáng)??紤]到實(shí)驗(yàn)數(shù)據(jù)的規(guī)模和數(shù)量,采用在線增強(qiáng)技術(shù)。在訓(xùn)練集中,先將圖像縮放到256 px×256 px,隨后進(jìn)行圖4所示處理。
在測(cè)試集,先將圖像縮放到256 px×256 px,然后中心裁剪至224 px×224 px、像素歸一化和標(biāo)準(zhǔn)化。
圖4 數(shù)據(jù)增強(qiáng)處理
考慮到收斂效果和速度,實(shí)驗(yàn)最終選擇AdamW優(yōu)化器。初始學(xué)習(xí)率和weight-decay分別設(shè)置為0.001和0.05,Batchsize設(shè)置為32。此外,使用周期余弦退火策略(Cyclic Cosine Annealing Learning Rate Schedule)調(diào)整學(xué)習(xí)率,每20個(gè)epoch進(jìn)行一次熱重啟,以獲得更好的收斂結(jié)果。
在訓(xùn)練中,使用標(biāo)簽平滑和EMA方法來(lái)提高模型的訓(xùn)練效果。當(dāng)標(biāo)簽平滑系數(shù)和EMA系數(shù)分別為0.1和0.999時(shí),實(shí)驗(yàn)效果最佳。
代碼基于PyTorch1.71,Python 3.6版本。電腦配置:Windows10 OS,32 GB內(nèi)存,AMD Ryzen7 5800X處理器和NVIDIA 3070顯卡。
在實(shí)驗(yàn)中,選擇準(zhǔn)確率(Accuracy,Acc)、參數(shù)量和FLOPs作為評(píng)價(jià)指標(biāo)。Acc的定義如下:
(3)
式中,TP(True Positive)為真陽(yáng);TN(True Negative)為真陰,all為樣本總數(shù)。
參數(shù)量即網(wǎng)絡(luò)參數(shù)和,單位M。FLOPs即浮點(diǎn)運(yùn)算次數(shù),用來(lái)衡量模型的復(fù)雜度,單位G。
為了驗(yàn)證改進(jìn)模型的性能,在AI Challenger 2018農(nóng)作物病蟲(chóng)害數(shù)據(jù)集上與另外8種模型進(jìn)行實(shí)驗(yàn)對(duì)比。所有模型均在相同的實(shí)驗(yàn)條件下進(jìn)行,并使用開(kāi)源代碼和默認(rèn)參數(shù)復(fù)現(xiàn)。每個(gè)模型訓(xùn)練100輪,根據(jù)其在數(shù)據(jù)集上的表現(xiàn)選擇最佳模型。對(duì)比結(jié)果如表2所示。
表2 不同模型實(shí)驗(yàn)對(duì)比
由表2可見(jiàn),不同模型的識(shí)別準(zhǔn)確率均在97%以上,說(shuō)明CNN可以有效識(shí)別農(nóng)作物病蟲(chóng)害。Res2NeXt50模型結(jié)合了Res2Net50和ResNeXt50模型的結(jié)構(gòu)優(yōu)勢(shì),其識(shí)別率高于以上7種模型,達(dá)到了98.25%。改進(jìn)模型在Res2NeXt50模型的基礎(chǔ)上優(yōu)化了網(wǎng)絡(luò)結(jié)構(gòu)和信息流通,不僅減少了模型參數(shù)和復(fù)雜度,還進(jìn)一步提高了模型性能。同時(shí),該文利用標(biāo)簽平滑對(duì)樣本的真實(shí)標(biāo)簽進(jìn)行處理,以更好地訓(xùn)練網(wǎng)絡(luò),提高模型的泛化能力。與VGG16、Inception-v4、DenseNet169、ResNet50、ResNet101、ResNeXt50和Res2Net50模型相比,改進(jìn)模型的準(zhǔn)確率分別提高了0.78百分點(diǎn)、1.53百分點(diǎn)、0.87百分點(diǎn)、0.83百分點(diǎn)、0.77百分點(diǎn)、0.73百分點(diǎn)和0.64百分點(diǎn)。相較于Res2NeXt50模型,改進(jìn)模型減少了4.5 M參數(shù)和0.48 G FLOPs,但準(zhǔn)確率提高了0.54百分點(diǎn)。
另外,該文使用改進(jìn)模型對(duì)測(cè)試集中的26種病害圖像進(jìn)行測(cè)試,實(shí)驗(yàn)結(jié)果如表3所示。
表3 26種病害的測(cè)試準(zhǔn)確率
為了分析改進(jìn)方法的效果,在相同的實(shí)驗(yàn)條件下進(jìn)行消融實(shí)驗(yàn)。每個(gè)模型訓(xùn)練100輪,實(shí)驗(yàn)對(duì)比結(jié)果如表4~表8所示。
表4 分解大卷積
在表4中設(shè)置了兩組對(duì)照實(shí)驗(yàn),分別采用傳統(tǒng)的3組3×3卷積和該文提到的混合卷積代替7×7卷積。通過(guò)對(duì)比實(shí)驗(yàn)結(jié)果,模型使用混合卷積時(shí),準(zhǔn)確率高達(dá)98.42%,比原來(lái)提高了0.17百分點(diǎn)。
表5 更換激活函數(shù)
在表5中,對(duì)照模型使用GELU函數(shù)代替原殘差塊中的ReLU函數(shù),準(zhǔn)確率提高了0.1百分點(diǎn)。
表6 改進(jìn)下采樣
在表6中,對(duì)照模型使用Stride為2的AvgPool進(jìn)行下采樣。與原來(lái)相比,模型的準(zhǔn)確率提高了0.15百分點(diǎn),而且參數(shù)量和FLOPs保持不變。
表7 調(diào)整網(wǎng)絡(luò)層數(shù)
在表7中,對(duì)照模型將layer1到layer4的block數(shù)調(diào)整為(2,4,6,2)。與Res2NeXt50模型相比,改進(jìn)模型的準(zhǔn)確率提高了0.12百分點(diǎn),而且參數(shù)量和FLOPs分別減少了4.50M、0.45G。
表8 訓(xùn)練方法對(duì)比
在表8中,通過(guò)不同的訓(xùn)練方法,模型的準(zhǔn)確率均有不同程度的提高。當(dāng)同時(shí)使用EMA和標(biāo)簽平滑方法時(shí),模型準(zhǔn)確率達(dá)到了98.52%,比原來(lái)提高了0.27百分點(diǎn)。
該文采用類激活映射(Class Activation Mapping, CAM)方法[13],以熱力圖的形式顯示圖像響應(yīng)的強(qiáng)弱特征。為了展示改進(jìn)模型的檢測(cè)效果,將部分病蟲(chóng)害可視化輸出,如圖5所示。
圖5 部分病蟲(chóng)害可視化
為了比較不同網(wǎng)絡(luò)模型的特征提取能力,將ResNeXt50、Res2Net50和改進(jìn)模型生成的熱力圖進(jìn)行可視化,如圖6所示。
在圖6中,高亮區(qū)域代表圖像中的關(guān)鍵部分。通過(guò)對(duì)比分析,改進(jìn)后的模型高亮響應(yīng)區(qū)域更多更細(xì)膩,能學(xué)習(xí)到更多的圖像語(yǔ)義信息。
此外,為了更好地分析改進(jìn)模型提取圖像特征的過(guò)程,將部分卷積層的特征圖可視化輸出,如圖7所示。
圖6 特征圖可視化
圖7 卷積核可視化
在圖7中,隨著網(wǎng)絡(luò)層次不斷加深,卷積核提取的圖像特征越來(lái)越抽象,其紋理也被更高層次的語(yǔ)義信息所取代。
為了全面客觀地評(píng)價(jià)文中模型的泛化能力,分別在Plantvillage和Plant_leaves數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),并和近幾年的研究方法對(duì)比。實(shí)驗(yàn)對(duì)比結(jié)果如表9和表10所示。
表9 Plantvillage數(shù)據(jù)集實(shí)驗(yàn)對(duì)比
由表9可見(jiàn),文獻(xiàn)[14]使用Inception-v3模型加載預(yù)訓(xùn)練權(quán)重,并部署到手機(jī)端進(jìn)行病蟲(chóng)害識(shí)別,準(zhǔn)確率為95.62%。文獻(xiàn)[15]建立了VGG16和VGG19的融合模型,并采用粒子群優(yōu)化算法進(jìn)行參數(shù)尋優(yōu),準(zhǔn)確率達(dá)到98.20%。文獻(xiàn)[16]使用神經(jīng)結(jié)構(gòu)搜索策略尋找最佳網(wǎng)絡(luò)結(jié)構(gòu),且對(duì)數(shù)據(jù)集進(jìn)行過(guò)采樣和欠采樣,得到了99.01%的準(zhǔn)確率。文獻(xiàn)[17]采用多尺度卷積和SE模塊等方法改進(jìn)ResNet101模型,達(dá)到了99.40%的準(zhǔn)確率。文獻(xiàn)[18]對(duì)EfficientNet-B3模型進(jìn)行微調(diào),并用雙穩(wěn)態(tài)邏輯損失函數(shù)訓(xùn)練,達(dá)到了98.32%的準(zhǔn)確率。在文獻(xiàn)[19]中,結(jié)合輕量級(jí)模塊Ghost對(duì)VGG16進(jìn)行改進(jìn),同時(shí)減少卷積核數(shù)量,取得了99.37%的準(zhǔn)確率。與上述文獻(xiàn)相比,該文提出的模型準(zhǔn)確率達(dá)到99.89%,高于上述研究方法,具有更強(qiáng)的泛化能力。
表10 Plant_leaves數(shù)據(jù)集實(shí)驗(yàn)對(duì)比
由表10可見(jiàn),文獻(xiàn)[20]用改進(jìn)的ResNet模型來(lái)識(shí)別葉片病害,在實(shí)驗(yàn)中獲得了91.95%的準(zhǔn)確率。文獻(xiàn)[21]用方向梯度直方圖(Histogram of Oriented Gradient,HOG)來(lái)描繪圖像特征,并結(jié)合SVM進(jìn)行分類,準(zhǔn)確率達(dá)到99.18%。與上述研究方法相比,文中模型獲得了99.23%的準(zhǔn)確率,分別比文獻(xiàn)[20]和文獻(xiàn)[21]高7.28百分點(diǎn)和0.05百分點(diǎn)。由于文獻(xiàn)[21]中使用的HOG方法屬于傳統(tǒng)的模式識(shí)別,描述子生成慢,而該文采用的深度學(xué)習(xí)方法檢測(cè)速度快,適用性更強(qiáng)。
該文提出了一種基于改進(jìn)的Res2NeXt50模型的農(nóng)作物病蟲(chóng)害檢測(cè)算法,用于識(shí)別具有不同癥狀的農(nóng)作物葉片圖像。改進(jìn)后的模型結(jié)合了Res2Net50模型和ResNeXt50模型的結(jié)構(gòu)優(yōu)勢(shì),不僅減少了模型參數(shù)和復(fù)雜度,而且泛化能力更強(qiáng)。與現(xiàn)有的研究方法相比,提出的改進(jìn)模型可以在細(xì)粒度水平上學(xué)習(xí)圖像特征,從而準(zhǔn)確識(shí)別各種農(nóng)作物疾病。
未來(lái)將進(jìn)一步對(duì)模型進(jìn)行剪枝,部署到手機(jī)端,建立實(shí)時(shí)的病蟲(chóng)害檢測(cè)系統(tǒng)平臺(tái)。