任維鑫,曹新亮,白宗文
(延安大學(xué) 物理與電子信息學(xué)院,陜西 延安 716000)
農(nóng)作物發(fā)生病害會(huì)嚴(yán)重破壞其正常生理機(jī)能,極大減少產(chǎn)量,因此,農(nóng)作物病害的識(shí)別、檢測(cè)和預(yù)警是保證農(nóng)作物產(chǎn)量穩(wěn)定、保障農(nóng)民收益的重要手段。傳統(tǒng)的農(nóng)作物病害識(shí)別主要依靠農(nóng)業(yè)專家實(shí)地考察,隨著人工智能尤其是深度學(xué)習(xí)的快速發(fā)展,農(nóng)作物病蟲(chóng)害識(shí)別的相關(guān)研究也逐步進(jìn)入新階段。目前,已經(jīng)有許多研究成功地將深度卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用到農(nóng)作物病蟲(chóng)害識(shí)別領(lǐng)域[1-6],并在其數(shù)據(jù)集上取得了相對(duì)理想的準(zhǔn)確率。雖然已經(jīng)有許多研究者著手構(gòu)建農(nóng)作物病害數(shù)據(jù)集,但是現(xiàn)有數(shù)據(jù)集依然很難滿足基于傳統(tǒng)深度學(xué)習(xí)的病害識(shí)別方法對(duì)數(shù)據(jù)量的需求,無(wú)法保證模型的通用性和泛化性。究其原因,一方面農(nóng)作物病害數(shù)據(jù)集與自然場(chǎng)景數(shù)據(jù)集不同,自然場(chǎng)景下的通用數(shù)據(jù)集可以借助網(wǎng)絡(luò)等設(shè)備快速地收集與標(biāo)注,但是農(nóng)作物病害數(shù)據(jù)集由于其標(biāo)注時(shí)需要許多專業(yè)知識(shí),往往需要農(nóng)業(yè)專家才能完成標(biāo)注,這無(wú)疑會(huì)導(dǎo)致較高的人力物力成本;另一方面,農(nóng)作物病害呈現(xiàn)種類多、單類樣本偶發(fā),甚至有些病害發(fā)病與地域呈現(xiàn)強(qiáng)關(guān)聯(lián)性的特點(diǎn),這導(dǎo)致構(gòu)建一個(gè)巨大的、具有百億規(guī)模的、種類豐富完備的農(nóng)作物病害數(shù)據(jù)集是十分困難的。因此,從小樣本檢測(cè)的視角出發(fā)研究解決農(nóng)作物病害識(shí)別問(wèn)題的方法具有非常重要的實(shí)際應(yīng)用意義。雖然已經(jīng)有研究者在這方面取得了一些進(jìn)展[7],但主要是基于微調(diào)的方法,這種方法在極少樣本的情況下性能有所下降,且推理時(shí)需要通過(guò)微調(diào)更新模型參數(shù)。本文主要針對(duì)這一問(wèn)題,開(kāi)發(fā)了一種基于孿生網(wǎng)絡(luò)的度量學(xué)習(xí)方法,以解決單樣本農(nóng)作物病害識(shí)別問(wèn)題,該方法具有推理時(shí)需要特定病害樣本量小、不用更新模型參數(shù)的優(yōu)點(diǎn)。
人類可以從很少的樣本中學(xué)習(xí),但機(jī)器從少樣本中學(xué)習(xí)的能力與人的差距依然非常大,深度學(xué)習(xí)框架對(duì)于數(shù)據(jù)與算力有著海量的需求,在少樣本任務(wù)上,最先進(jìn)的深度學(xué)習(xí)方法甚至不如簡(jiǎn)單的機(jī)器學(xué)習(xí)模型。研究著重關(guān)注少樣本學(xué)習(xí)中的少樣本分類問(wèn)題,對(duì)于少樣本分類,有以VBF[8]為代表的基于生成模型的方法,尋求借助中間變量z對(duì)后驗(yàn)概率p(x|y)進(jìn)行建模;有基于判別的方法,直接為少樣本分類任務(wù)T建模后驗(yàn)概率p(x|y);最直接的方法就是使用任務(wù)T的數(shù)據(jù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型。但是由于T的數(shù)據(jù)太少,這種方法一般容易陷入過(guò)擬合。第2種是基于度量學(xué)習(xí)[9],通過(guò)在輔助數(shù)據(jù)集DA上學(xué)習(xí)一個(gè)相似性度量S(·,·),從而遷移到任務(wù)T上。第3種是基于元學(xué)習(xí)的方法[10-11],它利用DA構(gòu)造許多類似于任務(wù)T的任務(wù),并采用跨任務(wù)訓(xùn)練策略提取一些可轉(zhuǎn)移的模型、算法或參數(shù)。其中,Snell等[10]的方法可以看做是度量學(xué)習(xí)與元學(xué)習(xí)的結(jié)合,同時(shí)它也可以被理解為對(duì)比學(xué)習(xí),其核心思想就是吸引正的樣本對(duì),排斥負(fù)的樣本對(duì),該方法是采樣同類樣本作為正樣本對(duì),不同類的作為負(fù)樣本對(duì)。而另一種是基于自監(jiān)督的對(duì)比學(xué)習(xí)方法[12-15],這種方法通過(guò)將每幅圖像看作不同的類別,一副圖像的多張數(shù)據(jù)增強(qiáng)圖像為同一類,與其他圖像以及其他圖像的數(shù)據(jù)增強(qiáng)圖像為不同類,從而構(gòu)造類別標(biāo)簽以監(jiān)督模型訓(xùn)練。Tian 等[16]揭示了在少樣本學(xué)習(xí)任務(wù)中一個(gè)好的嵌入是非常重要的,并基于此構(gòu)建了不基于元學(xué)習(xí)框架且不用微調(diào)的少樣本分類基線。 Chowdhury等[17]使用一組預(yù)訓(xùn)練的嵌入模型作為特征提取器庫(kù),使用微調(diào)的方法達(dá)到了很好的跨域遷移少樣本分類效果。Wang等[18]發(fā)現(xiàn)了使用交叉熵?fù)p失的監(jiān)督學(xué)習(xí)模型,其遷移性能不如自監(jiān)督學(xué)習(xí)模型的原因是交叉熵?fù)p失監(jiān)督的模型在特征提取之后沒(méi)有使用MLP進(jìn)行特征映射,基于此觀察,構(gòu)建了遷移性能更好的監(jiān)督學(xué)習(xí)模型,并在少樣本分類任務(wù)上進(jìn)行驗(yàn)證。
2.2.1 模型與損失函數(shù)
本文所提出的框架結(jié)構(gòu)如圖1所示。將來(lái)自圖像x的2個(gè)隨機(jī)數(shù)據(jù)增強(qiáng)的視圖xa,和xb作為孿生網(wǎng)絡(luò)的輸入。這2個(gè)視圖由主干網(wǎng)絡(luò)(使用卷積神經(jīng)網(wǎng)絡(luò))和MLP實(shí)現(xiàn)的投影器組成的編碼器網(wǎng)絡(luò)f處理。編碼器f在2個(gè)視圖之間共享參數(shù)。MLP實(shí)現(xiàn)的預(yù)測(cè)器h將一個(gè)視圖的輸出變換到另一個(gè)視圖域。分類頭c作為訓(xùn)練輔助器的角色存在,具體地,在訓(xùn)練過(guò)程中,經(jīng)過(guò)編碼器f處理之后的2個(gè)視圖的特征還會(huì)送入分類頭以獲得類別向量,推理時(shí)分類頭將被舍棄。訓(xùn)練與推理的實(shí)現(xiàn)細(xì)節(jié)將在2.2.2節(jié)予以說(shuō)明。
圖1 模型架構(gòu)Fig.1 Model architecture
對(duì)于相似性匹配,使用余弦相似度作為度量。具體地,將2個(gè)輸入向量表示為p1=h(f(xa))和z2=f(xb),p2,z1同理。使用自監(jiān)督的對(duì)比學(xué)習(xí)和基于構(gòu)造監(jiān)督標(biāo)簽與二值交叉熵的距離損失2部分進(jìn)行優(yōu)化。
在對(duì)比學(xué)習(xí)部分,最小化其負(fù)余弦相似度加常數(shù)項(xiàng):
(1)
式中,‖·‖為l2歸一化,該式值域?yàn)閇0,2]。與BYOL[14]和SimSiam[15]一致,構(gòu)造對(duì)稱損失:
(2)
在batch維度上對(duì)每一對(duì)樣本使用該公式并在batch維度上取平均值作為總損失。
和SimSiam一致,對(duì)比學(xué)習(xí)中對(duì)孿生網(wǎng)絡(luò)的其中一支使用停止梯度操作,則將式(1)修改為:
D(p1,stopgrad(z2)),
(3)
式中,stopgrad()表示停止梯度操作,這意味著z2在這一項(xiàng)中被當(dāng)作常數(shù)。類似地,式(2)被修改為:
(4)
從表達(dá)式看,L1損失只拉近正樣本之間的距離,未能拉遠(yuǎn)正樣本與負(fù)樣本之間的距離,對(duì)比學(xué)習(xí)的經(jīng)典方法MoCo[12]和SimCLR[13]的對(duì)比損失都有拉遠(yuǎn)正樣本與負(fù)樣本之間距離的能力,但MoCo引入了動(dòng)量編碼器組件,SimCLR需要大批量才能正常工作,對(duì)顯存有極高的要求。為了使損失具有拉遠(yuǎn)正負(fù)樣本之間距離的能力且不引入其他限制,本文設(shè)計(jì)了基于構(gòu)造監(jiān)督標(biāo)簽與二值交叉熵的距離損失。
為了與對(duì)比學(xué)習(xí)損失更好地兼容,基于構(gòu)造監(jiān)督標(biāo)簽與二值交叉熵的距離損失依然沿用余弦相似度作為距離度量,考慮映射函數(shù)σ,使得σ(D(·,·))的值域空間落入[0,1],簡(jiǎn)便起見(jiàn),取σ為常系數(shù)0.5。
此外,設(shè)計(jì)出shuffle和equal兩個(gè)組件,具體為:
z3,z4,y′=shuffle(z1,z2,y)。
(5)
(6)
綜上,基于構(gòu)造監(jiān)督標(biāo)簽與二值交叉熵的距離損失被表示為:
a=σ(D(p1,stopgrad(z4))),
(7)
(8)
b=σ(D(p2,stopgrad(z3))),
(9)
(10)
(11)
Tian 等[16]證明了使用交叉熵?fù)p失對(duì)模型進(jìn)行監(jiān)督學(xué)習(xí)可以學(xué)到不錯(cuò)的特征提取能力,因此本文設(shè)計(jì)了分類頭c(圖1中的虛線部分)進(jìn)行輔助學(xué)習(xí),對(duì)于分類頭的設(shè)計(jì),遵循Wang等[18]的設(shè)置,使用2層MLP做特征映射,使用一層MLP做輸出,這區(qū)別于He等[19]傳統(tǒng)卷積模型在卷積之后只使用一層MLP作為輸出層的設(shè)置。其分類損失函數(shù)表達(dá)式為:
(12)
式中,CrossEntropy( )表示交叉熵?fù)p失。訓(xùn)練模型時(shí)使用的損失函數(shù)表示為:
L=λ1L1+λ2L2+λ3L3,
(13)
式中,λi為損失加權(quán)系數(shù)。
2.2.2 訓(xùn)練與推理方法:
訓(xùn)練過(guò)程遵循常規(guī)的有監(jiān)督深度學(xué)習(xí)模型訓(xùn)練范式:每個(gè)epoch以批量的形式(默認(rèn)批量大小為512)從DA中不放回地采樣數(shù)據(jù),經(jīng)過(guò)數(shù)據(jù)增強(qiáng)后送入圖1所示的模型,以式(13)作為損失函數(shù),使用動(dòng)量隨機(jī)梯度下降法(Stochastic Grdient Descent with Momentum,SGDM)優(yōu)化模型參數(shù),迭代多個(gè)epoch(默認(rèn)為100)。使用的數(shù)據(jù)增強(qiáng)方式包括:隨機(jī)裁剪;隨機(jī)改變圖像亮度、對(duì)比度、飽和度、色調(diào);隨機(jī)高斯濾波;隨機(jī)水平反轉(zhuǎn);隨機(jī)轉(zhuǎn)為灰度圖。本文默認(rèn)使用ResNet18[19]作為主干網(wǎng)絡(luò)(Backbone)。訓(xùn)練完成之后保存模型結(jié)構(gòu)和參數(shù),作為預(yù)訓(xùn)練模型。
推理流程為:加載預(yù)訓(xùn)練模型,刪掉分類頭,剩余部分作為相似性度量器S(·,·), 此時(shí),該孿生網(wǎng)絡(luò)的輸入為一對(duì)圖像,輸出為這一對(duì)圖像之間的余弦相似度,范圍為[-1,1],相似度越接近1,表明2個(gè)圖像之間越相似。將Dtrn作為支持圖像集Su,將Dtst中的圖像作為查詢圖像q,于是,任意Dtst中的圖像的類別為:
(14)
即:將支持圖像集中與查詢圖像q相似度最高的圖像s對(duì)應(yīng)的類別分配給q。
本文使用AI Challenger 2018病蟲(chóng)害分類數(shù)據(jù)集[20]作為DA,它是由上海新客科技為競(jìng)賽提供的農(nóng)作物葉子圖像數(shù)據(jù)集:標(biāo)注圖片5萬(wàn)張,包含10種植物(蘋(píng)果、櫻桃、葡萄、柑桔、桃、草莓、番茄、辣椒、玉米和馬鈴薯)的27種病害,合計(jì)61個(gè)分類(按“物種-病害-程度”分)。其中與蘋(píng)果有關(guān)的類別有:蘋(píng)果健康、蘋(píng)果黑星病一般、蘋(píng)果黑星病嚴(yán)重、蘋(píng)果灰斑病、蘋(píng)果雪松銹病一般以及蘋(píng)果雪松銹病嚴(yán)重。
本文從周敏敏[21]創(chuàng)建的蘋(píng)果葉片數(shù)據(jù)集中采樣DT。該蘋(píng)果葉片病理數(shù)據(jù)集數(shù)據(jù)集由西北農(nóng)林科技大學(xué)制作,分別在西北農(nóng)林科技大學(xué)白水蘋(píng)果試驗(yàn)站、洛川蘋(píng)果試驗(yàn)站和慶城蘋(píng)果試驗(yàn)站進(jìn)行采集。數(shù)據(jù)集主要在晴天光線良好的條件下獲取,部分圖像在陰雨天進(jìn)行采集,不同的采集條件進(jìn)一步增強(qiáng)了數(shù)據(jù)集的多樣性。數(shù)據(jù)集包括斑點(diǎn)落葉病、褐斑病、花葉病、灰斑病以及銹病等5種常見(jiàn)的蘋(píng)果葉面病理圖像數(shù)據(jù),數(shù)量分別為:斑點(diǎn)落葉病5 343張,褐斑病5 655 張, 灰斑病 4 810 張,花葉病 4 875 張, 銹病 5 694 張。采樣方法為:每類隨機(jī)采樣1張作為Dtrn,剩余圖像中選取與Dtrn的拍攝場(chǎng)景一致的11 727張圖像作為Dtst,共同構(gòu)成DT。其樣例如圖2所示。
圖2 蘋(píng)果病害樣例Fig.2 Sample images of apple diseases
本文使用模型在下游特定任務(wù)T的測(cè)試集Dtst上的準(zhǔn)確率作為衡量方法性能的指標(biāo)。
構(gòu)建比較基線:在DA上使用交叉熵?fù)p失監(jiān)督與本方法相同的主干網(wǎng)絡(luò)進(jìn)行訓(xùn)練獲得預(yù)訓(xùn)練模型。
不微調(diào)的基線(基線1):加載預(yù)訓(xùn)練模型后刪掉分類頭,將其作為圖像到向量的編碼器,得到編碼向量后,使用歐幾里得距離作為距離度量,其分類方式為:
(15)
式中,‖·,·‖表示2個(gè)向量之間的歐幾里得距離,值域?yàn)閇0,+∞],越接近0表示2個(gè)向量越相似。
微調(diào)的基線(基線2):加載預(yù)訓(xùn)練模型后修改分類頭使之適應(yīng)任務(wù)T,在Dtrn上使用微調(diào)的方法更新7個(gè)批次,批量大小為5,將此分類模型作為微調(diào)法[7]的比較基線。
與之類似,本文算法在Dtrn上使用微調(diào)的方法更新7個(gè)批次(批量大小為5)之后再執(zhí)行推理,作為本文算法使用微調(diào)法獲得的結(jié)果。
本文所提算法的結(jié)果及消融試驗(yàn)如表1所示。
表1 算法結(jié)果及消融試驗(yàn)Tab.1 Algorithm results and ablation test 單位:%
在以上試驗(yàn)中,對(duì)于式(7)中的加權(quán)系數(shù),均使用1。
本文提出了一種基于孿生網(wǎng)絡(luò)的度量模型,并使用對(duì)比學(xué)習(xí)損失,基于構(gòu)造監(jiān)督標(biāo)簽與二值交叉熵的距離損失,交叉熵?fù)p失聯(lián)合訓(xùn)練,經(jīng)過(guò)測(cè)試檢驗(yàn),在單樣本農(nóng)作物病害識(shí)別任務(wù)上取得了很好的性能,具有對(duì)特定任務(wù)的數(shù)據(jù)需求量少、不用在特定任務(wù)上重新訓(xùn)練的優(yōu)點(diǎn),具有實(shí)際應(yīng)用的潛力。但本文方法依然無(wú)法識(shí)別出與任務(wù)T相關(guān)但未在Dtrn中出現(xiàn)的類別,下一步將致力于研究開(kāi)放世界的少樣本農(nóng)作物病害識(shí)別問(wèn)題。