肖偉,馮全,張建華,楊森,陳佰鴻
(1.甘肅農(nóng)業(yè)大學機電工程學院,蘭州市,730070;2.中國農(nóng)業(yè)科學院農(nóng)業(yè)信息研究所,北京市,100081;3.甘肅農(nóng)業(yè)大學園藝學院,蘭州市,730070)
在農(nóng)業(yè)種植中,病害是影響農(nóng)作物的產(chǎn)量和質量的關鍵因素之一。當病害發(fā)生時,若能快速準確的識別病害類型并做出相應的處理,可以為農(nóng)作物的保產(chǎn)、增產(chǎn)提供有力的支持。傳統(tǒng)對植物病害識別經(jīng)常依靠經(jīng)驗豐富的專家用眼睛進行識別,但依靠人眼識別植物病害會出現(xiàn)速度慢、效率低、準確性低等問題。
近年來,以深度學習為代表的人工智能領域發(fā)展非常迅速,已經(jīng)滲透到農(nóng)業(yè)病害識別領域,其中使用最為廣泛的深度學習方法是深度卷積神經(jīng)網(wǎng)絡[1-3],Mohanty等[4]在PlantVillage數(shù)據(jù)集上利用54 306張植物病害葉片圖像訓練和測試,采用AlexNet和GoogLeNe兩個模型,得到最高準確率為99.35%。Amara等[5]使用3 700張香蕉病害葉片圖像作為訓練和測試,采用LeNet模型,準確率達到99.72%。Brahimi等[6]利用14 828張西紅柿病害葉片圖像作為訓練和測試,采用AlexNet和GoogLeNet模型,準確率分別達到98.66%和99.18%。Liu等[7]利用13 689張?zhí)O果病害圖像作為訓練和測試,采用AlexNet模型,準確率達到97.62%。Dyrmann等[8]用22種雜草和農(nóng)作物品種共10 413張圖像的數(shù)據(jù)集訓練測試建立模型,平均分類準確率為86.2%。張建華等[9]在原有VGG-16模型基礎上不斷改進,提出了一種新的VGG棉花病害模型,準確率達到89.51%。鄭一力等[10]利用大量的植物葉片圖像作為訓練和測試,采用AlexNet和InceptionV3模型,準確率分別達到95.31%和95.40%。
以上采用深度卷積網(wǎng)絡作為識別器的方法需要大量的數(shù)據(jù)樣本才能取得好的識別效果。但是在實踐中,一些病害樣本的采集成本較高,特別是不常見的病害,往往收集到幾張或者幾十張病害圖像,達不到深度網(wǎng)絡訓練所需要的樣本數(shù)量,導致網(wǎng)絡不能充分訓練,泛化效果不好,病害識別效果下降。雖然通過遷移學習可以在某種程度上減少訓練的樣本數(shù)量,但是無法解決少量樣本訓練導致模型容易過擬合的問題。
為了解決深度網(wǎng)絡數(shù)據(jù)依賴問題,在人類的快速學習能力啟發(fā)下,研究者提出了小樣本學習(few-shot learning)的概念,希望深度網(wǎng)絡能像人類一樣擁有從少量數(shù)據(jù)樣本中學習的能力。Vinyals等[11]提出匹配網(wǎng)絡(MatchingNet),使用長短期記憶網(wǎng)絡(long short-term memory,LSTM)模型和注意力機制,在miniImageNet數(shù)據(jù)集上識別準確率為46.60%。Sung等[12]提出關系網(wǎng)絡(RelationNet)模型,在miniImageNet數(shù)據(jù)集上識別準確率為50.44%。近年來小樣本學習在農(nóng)業(yè)病害識別方面已經(jīng)開始得到應用[13]。
本文為研究有效的少樣本植物病害識別方法,選取匹配網(wǎng)絡、原型網(wǎng)絡和關系網(wǎng)絡3種典型算法作為小樣本學習框架,這3種網(wǎng)絡屬于元學習中基于距離度量的方法,具有識別準確性較高的特點。在這些框架下,特征提取網(wǎng)絡分別采用Conv4、Conv6、ResNet10、ResNet18和ResNet34 5種淺層網(wǎng)絡,在PlantVillage數(shù)據(jù)集上分別采用5-way、1-shot和5-way、5-shot方式進行訓練、測試。通過試驗分析了小樣本學習框架與不同特征提取網(wǎng)絡的配合特點,比較了學習框架與特征網(wǎng)絡不同組合方式對于植物病害葉片圖像識別準確率的影響。
PlantVillage是一個開放的植物病害圖像數(shù)據(jù)集,其中包含14種植物,共54 306張植物病害圖像,最多的類有5 507張樣本圖像,最少類的有152張。PlantVillage數(shù)據(jù)集的詳細信息見表1。由于本文采用的是小樣本學習方法,故采用了模擬小樣本的策略,即隨機從38個類別中的植物葉片圖像分別抽取20張,組成38×20的樣本集合模擬小樣本數(shù)據(jù)集。把該數(shù)據(jù)集劃分為訓練集、驗證集和測試集。
表1 PlantVillage數(shù)據(jù)集圖像信息Tab.1 Image information of PlantVillage data set
為了方便起見,將PlantVillage數(shù)據(jù)集的病害按英文字母排序,將位置處于1、3、5、…、37共19類病害作為訓練集,包括了蘋果瘡痂病、蘋果銹病、藍莓健康葉、櫻桃白粉病、玉米銹病、玉米枯葉病、葡萄黑痘病、葡萄枯葉病、桃子細菌性斑點病、辣椒細菌性斑點病、土豆早疫病、土豆晚疫病、黃豆健康葉、草莓健康葉、番茄細菌性斑點病、番茄健康葉、番茄葉霉病、番茄二斑葉螨病、番茄花葉病。將字母排序位置處于2、6、10、…、38共10類病害作為驗證集,包括了蘋果黑腐病、櫻桃健康葉、玉米健康葉、葡萄健康葉、桃子健康葉、土豆健康葉、南瓜白粉病、番茄早疫病、番茄斑枯病、番茄黃曲葉病。測試集則由剩下位置的病害組成,包括蘋果健康葉、玉米灰斑病、葡萄黑腐病、橘子黃龍病、辣椒健康葉、樹莓健康葉、草莓葉焦病、番茄晚疫病、番茄輪斑病9種類型。
1.2.1 匹配網(wǎng)絡(MatchingNet)
(1)
(2)
f,g——嵌入函數(shù),一般有f=g。
1.2.2 原型網(wǎng)絡(ProtoNet)
在原型網(wǎng)絡方法中,使用卷積神經(jīng)網(wǎng)絡將數(shù)據(jù)樣本投影到一個特征空間。在這個特征空間中,將每個類別的數(shù)據(jù)樣本嵌入向量的均值作為原型,用新測試樣本與原型作比較,距離較近的為同類樣本,距離較遠的為異類樣本。原型網(wǎng)絡與匹配網(wǎng)絡有諸多相同之處,都是采用計算距離的方式來判斷圖像是否為同類。原型網(wǎng)絡創(chuàng)新之處使用k最近鄰(k-means)的思想對注意力機制進行替換,使用歐氏距離代替了余弦距離。原型網(wǎng)絡首先使用嵌入函數(shù)f將數(shù)據(jù)映射到特征空間中,然后為支持集中的每個類別計算原型
(3)
式中:Ck——類別k的原型;
fφ(xi)——樣本xi經(jīng)特征提取網(wǎng)絡得到的特征;
Sk——支持集S中類別為k的數(shù)據(jù)樣本集合。
(4)
1.2.3 關系網(wǎng)絡(RelationNet)
關系網(wǎng)絡有兩個模塊構成,一個是特征嵌入模塊fφ(Embedding module),另一個是關系模塊gφ(Relation module)。特征嵌入模塊由4個卷積層和2個最大池化層構成,每個卷積層包含卷積核尺寸為3×3,其作用是將圖像特征生成樣本的特征向量。關系模塊含有2個卷積層和2個全連接層,該模塊負責計算查詢樣本和支持集樣本的相似度。如圖1為關系網(wǎng)絡結構示意圖。
圖1 關系網(wǎng)絡結構圖Fig.1 RelationNet structure
本文采用的特征提取網(wǎng)絡包括Conv4、Conv6[14]和ResNet網(wǎng)絡[15]。這些網(wǎng)絡在上述小樣本框架下,實現(xiàn)對病害識別特征的提取。Conv4網(wǎng)絡由4個卷積模塊組成,其中每個卷積模塊由卷積層、批歸一化層(Batch Normalization Layer)、LeaklyReLU層和最大池化層(Max Pooling layer)構成。而Conv6網(wǎng)絡比Conv4網(wǎng)絡多了兩個額外卷積模塊,但這兩個卷積模塊并不含有池化層,其余組成都是一致的。ResNet是一種常用的高效卷積網(wǎng)絡,通過給非線性的卷積層增加直連邊的方式來提高信息的傳播效率。
小樣本學習分為元訓練階段和元測試階段。在元訓練階段,會在訓練集中隨機抽取C個類別,每個類別抽取k張樣本,C×k張樣本作為訓練階段模型的支持集(support set)輸入;再從這C個類別剩余的數(shù)據(jù)中抽取一批樣本作為模型的預測對象查詢集(query set)。通過訓練讓模型從C×k張樣本中學會如何區(qū)分這C個類別,一個支持集和一個查詢集組成一個任務,這樣的任務被稱為C-way、k-shot問題。在元測試階段,按照同樣的方法,在測試集上抽取支持集和查詢集用于二次訓練。本文的試驗方法采用了小樣本學習中最常采用的5-way、1-shot和5-way、5-shot的方式。
在元訓練階段,每次訓練都會在一般的病害訓練集中采樣得到一系列不同任務,采樣得到的每一個任務都是不同類別的組合,去學習一般病害類別變化的情況下模型的泛化能力。這種機制使得模型學會不同任務中的共性部分,比如如何提取重要特征及比較樣本相似等,忘掉任務中非共性部分。通過這種學習機制學到的模型,模型的泛化能力比較強。在測試階段,測試集與訓練集完全不同,但上個階段的訓練使得模型已經(jīng)學習到了識別一般病害的知識,用該模型對要在測試集進行病害分類的模型進行初始化,在測試集上按照與元訓練階段相同的抽樣方法,從測試集和驗證集上抽取多組任務,完成二次訓練和測試??梢钥闯鰞蓚€階段的訓練使得模型完成了從一般病害到特定病害識別的進化。
圖2展示了5-way、1-shot學習任務的具體例子??梢杂^察到在訓練階段構建了一系列任務來讓模型學習如何根據(jù)支持集來預測查詢集中的樣本標簽。測試階段輸入數(shù)據(jù)形式與訓練階段一致,但會在全新的類別上構建支持集和查詢集。圖中第一行是隨機抽取的一個任務,將蘋果瘡痂病葉片、蘋果銹病葉片、櫻桃白粉病葉片、玉米銹病葉片、玉米枯葉病葉片5類病害葉片圖像作為訓練的支持集,蘋果銹病葉片作為查詢集。通過學習支持集中的5張病害葉片圖像來對查詢集中新的病害葉片圖像進行預測然后分類。圖中第三行則是在測試階段抽取的一個任務,該任務將玉米灰斑病葉片、葡萄黑腐病葉片、橘子黃龍病葉片、草莓葉焦病葉片、番茄晚疫病葉片5類病害葉片圖像作為訓練的支持集,番茄晚疫病葉片作為查詢集。與訓練階段采用一致的學習方法來對查詢集中新的病害葉片圖像進行預測然后分類。
圖2 5-way、1-shot學習任務分類Fig.2 Classification of 5-way、1-shot learning tasks
試驗操作系統(tǒng)為Ubuntu16.04 LTS 64位系統(tǒng),采用Pytorch深度學習開源框架,選用Python作為編程語言。硬件環(huán)境:計算機RAM為8 GB,搭載Intel(R)Core(TM)i7-8750H CPU@2.20 GHz處理器,GPU是NVIDIA GeForce GTX 1050 Ti。軟件環(huán)境:CUDA9.0,CUDNN7.0,Python3.5,Pytorch0.4.0。在元訓練階段的訓練集和元測試階段的測試集對任務的采樣次數(shù)均為600次。
5-way、1-shot和5-way、5-shot條件下,在PlantVillage數(shù)據(jù)集上的病害識別試驗結果準確率如表2。
表2 5-way、1-shot和5-way、5-shot試驗結果Tab.2 5-way、1-shot and 5-way、5-shot test results
2.3.1 5-way、1-shot試驗結果分析
根據(jù)表2,匹配網(wǎng)絡、原型網(wǎng)絡框架和5種特征提取網(wǎng)絡組合,對病害葉片識別平均準確率分別為72.29%和72.43%,均達到72.00%以上,表明用一個數(shù)據(jù)樣本訓練也能對病害識別取得較好的效果。關系網(wǎng)絡框架下和5種特征提取網(wǎng)絡組合,對病害葉片識別平均準確率為69.45%,低于前兩種網(wǎng)絡。穩(wěn)定性角度看,匹配網(wǎng)絡與5種特征提取網(wǎng)絡組合,其識別精度在71.00%~74.00%之間,方差為0.42;原型網(wǎng)絡識別精度在67.00%~78.00%之間,方差為11.08;關系網(wǎng)絡識別精度在65.00%~74.00%之間,方差為6.85。相較于原型網(wǎng)絡和關系網(wǎng)絡,匹配網(wǎng)絡與各種特征提取網(wǎng)絡組合表現(xiàn)較穩(wěn)定。
通常情況下,深度卷積網(wǎng)絡隨著層數(shù)增加,其識別精度會隨之提高。但從表2中試驗結果可看出,在3種小樣本學習框架下,特征提取網(wǎng)絡層數(shù)增加與識別精度似乎沒有關系。相反,隨特征提取網(wǎng)絡層數(shù)增加,試驗結果的準確率可能增加也可能減少。在匹配網(wǎng)絡和關系網(wǎng)絡框架下,當特征提取網(wǎng)絡從Conv4變到Conv6時,其識別精度分別從73.13%下降到71.26%,73.01%下降到71.35%;在匹配網(wǎng)絡和原型網(wǎng)絡框架下,當特征提取網(wǎng)絡從ResNet10變到ResNet18時,其識別精度分別從72.81%下降到72.11%,70.22%下降到67.88%。
表2試驗結果表明,匹配網(wǎng)絡作為小樣本學習框架時,匹配網(wǎng)絡+Conv4是表現(xiàn)最好的組合,病害識別準確率為73.13%;原型網(wǎng)絡作為小樣本學習框架時,原型網(wǎng)絡+ResNet34是表現(xiàn)最好的組合,病害識別準確率為77.60%;關系網(wǎng)絡作為小樣本學習框架時,關系網(wǎng)絡+Conv4是表現(xiàn)最好的組合,病害識別準確率為73.01%,這表明不同的小樣本學習框架和不同的特征提取網(wǎng)絡合理組合能獲得較好病害識別效果。
2.3.2 5-way、5-shot試驗結果分析
表2試驗結果可以看出,相較于1-shot,訓練樣本增加到5時,3種小樣本學習框架和5種特征提取網(wǎng)絡的組合對病害葉片識別都有不同程度的上升。匹配網(wǎng)絡框架下Conv4、Conv6、ResNet10、ResNet18和ResNet34模型分別提升了15.78%、13.30%、14.63%、15.98%、14.40%;原型網(wǎng)絡框架下Conv4、Conv6、ResNet10、ResNet18和ResNet34模型分別提升了16.05%、10.75%、14.75%、21.74%、12.06%;關系網(wǎng)絡框架下Conv4、Conv6、ResNet10、ResNet18和ResNet34模型分別提升了12.81%、11.41%、17.83%、13.26%、12.07%。說明增加訓練的樣本數(shù),對網(wǎng)絡提升病害葉片識別的準確率有一定的幫助。在穩(wěn)定性方面,匹配網(wǎng)絡、原型網(wǎng)絡和關系網(wǎng)絡框架下與5種特征提取網(wǎng)絡的組合,方差分別為2.23、4.56和2.75,相較于1-shot,5-shot條件下各種組合的方差維持在較小的范圍內,具有較好的穩(wěn)定性。
表2中可以看出,植物病害葉片識別準確率并不是隨特征提取網(wǎng)絡層數(shù)增加效果越佳,與1-shot表現(xiàn)一致。在匹配網(wǎng)絡、原型網(wǎng)絡和關系網(wǎng)絡框架下,當特征提取網(wǎng)絡從Conv4變到Conv6時,其識別精度分別從88.91%下降到84.56%,88.30%下降到84.93%,85.82%下降到82.76%。在匹配網(wǎng)絡和關系網(wǎng)絡框架下,當特征提取網(wǎng)絡從ResNet18變到ResNet34時,其識別精度分別從88.09%下降到86.55%,82.12%下降到80.77%。
表2試驗結果表明,匹配網(wǎng)絡作為小樣本學習框架時,匹配網(wǎng)絡+Conv4是表現(xiàn)最好的組合,病害識別準確率為88.91%;關系網(wǎng)絡作為小樣本學習框架時,關系網(wǎng)絡+Conv4是表現(xiàn)最好的組合,病害識別準確率為85.82%;原型網(wǎng)絡作為小樣本學習框架時,原型網(wǎng)絡+ResNet34是表現(xiàn)最好的組合,病害識別準確率為89.66%,該組合也是所有組合中的最優(yōu)組合。
試驗數(shù)據(jù)表明,1-shot和5-shot條件下,匹配網(wǎng)絡+conv6始終都是對病害識別準確率最差的組合。原型網(wǎng)絡+ResNet34始終都是對病害識別準確率最佳的組合。試驗結果表明小樣本學習框架和特征網(wǎng)絡組合有較強的穩(wěn)定性,最優(yōu)的組合暗示著模型有較強的學習特征能力。得出最優(yōu)的組合方式也為以后試驗研究特定的植物病害提供了一種思路。
為驗證小樣本學習方法對植物病害識別的有效性,本文采用了匹配網(wǎng)絡、原型網(wǎng)絡和關系網(wǎng)絡3種小樣本學習框架,選擇了Conv4、Conv6、ResNet10、ResNet18和ResNet34特征提取網(wǎng)絡進行了組合植物病害識別試驗。
1)3種小樣本學習方法對病害識別是有效的,1-shot條件下,匹配網(wǎng)絡、原型網(wǎng)絡和關系網(wǎng)絡對植物葉片病害識別的平均準確率分別為72.29%、72.43%、69.45%;在5-shot條件下,3種網(wǎng)絡識別的平均準確率分別達到了87.11%、87.50%和82.92%。
2)5-shot比1-shot識別率分別提高了14.82%、15.07%和13.47%,說明訓練樣本數(shù)量對識別率影響較大,應盡量采用更多樣本進行訓練。
3)各種組合中,原型網(wǎng)絡+ResNet34是表現(xiàn)最佳的組合方式,識別率達到89.66%。小樣本病害識別研究對于農(nóng)業(yè)生產(chǎn)具有重要價值,隨著越來越多更好的學習方法被提出,我們相信只需少量樣本訓練出的模型識別性能是能夠逼近大樣本訓練的深度模型的,這將大大降低學習成本,降低模型從樣本采集到訓練和部署的時間。