郭標(biāo)琦, 王聯(lián)國
(甘肅農(nóng)業(yè)大學(xué)信息科學(xué)技術(shù)學(xué)院,甘肅 蘭州 730000)
自古以來,當(dāng)歸就有藥王的美譽,“十藥九歸”更是說明了當(dāng)歸在中醫(yī)藥中的重要性。當(dāng)歸在補血活血、免疫調(diào)節(jié)、抗抑郁、保護肝臟、抗腫瘤、抗衰老、美白和治療黃褐斑等方面都有顯著作用[1-4]。隨著經(jīng)濟的發(fā)展,人們對當(dāng)歸的需求也在急速增加,當(dāng)歸種植規(guī)模也在不斷擴大,然而褐斑病、灰霉病、病毒花葉病、白斑蟲害等常見病蟲害問題愈發(fā)嚴(yán)重,使得當(dāng)歸產(chǎn)量和質(zhì)量下降,嚴(yán)重制約了當(dāng)歸產(chǎn)業(yè)的發(fā)展[5]。因此,尋找一種能夠快速準(zhǔn)確地識別當(dāng)歸病蟲害的方法,及時發(fā)現(xiàn)并治療病蟲害對當(dāng)歸產(chǎn)業(yè)發(fā)展具有重大意義。
自卷積神經(jīng)網(wǎng)絡(luò)(CNN)提出以來,人工神經(jīng)網(wǎng)絡(luò)進入了快速發(fā)展期,涌現(xiàn)出各種優(yōu)秀模型[6-7],其在圖像識別領(lǐng)域表現(xiàn)出的速度和準(zhǔn)確率遠遠超過傳統(tǒng)機器學(xué)習(xí),近年來在農(nóng)作物的病害識別領(lǐng)域也取得了優(yōu)異的成績。Ni等[8]基于ResNet[9]提出了多層特征聯(lián)合ResNet(MLFU-ResNet)用于農(nóng)作物病害的識別分類,并對損失函數(shù)進行修正,結(jié)果顯示,MLFU-ResNet的分類精度比ResNet提高了0.8%。Qiu等[10]為了解決傳統(tǒng)模型識別速度慢、容易過擬合,以及對數(shù)據(jù)集的要求較高的問題,使用遷移學(xué)習(xí)的方法,將VGG16[11]模型學(xué)習(xí)到的知識遷移到水稻病害識別中,利用線性判別分析對網(wǎng)絡(luò)參數(shù)進行微調(diào),從而實現(xiàn)了水稻病害的快速、準(zhǔn)確識別。趙兵等[12]通過將傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的全連接層替換為卷積層提取特征,并通過特征上采樣還原圖像,通過特征整合對葡萄病害葉進行精細分割。馬俊紅等[13]通過將三維注意力加權(quán)模型與InceptionNetV3[14]網(wǎng)絡(luò)融合,對煙草病蟲害識別的平均準(zhǔn)確率達到85.56%。樊湘鵬等[15]通過對Faster R-CNN網(wǎng)絡(luò)進行適應(yīng)性改進,對玉米葉片病害進行識別。雖然目前單一神經(jīng)網(wǎng)絡(luò)模型在各個方面已經(jīng)取得了很好的成績,但是準(zhǔn)確度、泛化能力還有待提高,同時在小樣本情況下的表現(xiàn)不盡如人意。目前針對當(dāng)歸病蟲害識別的研究少之又少,無論是基于傳統(tǒng)機器學(xué)習(xí)方法還是應(yīng)用更優(yōu)秀的人工神經(jīng)網(wǎng)絡(luò),普通當(dāng)歸種植戶對病蟲害種類及相應(yīng)癥狀的了解很不全面。隨著種植規(guī)模的擴大,種植戶依靠傳統(tǒng)手段已經(jīng)不能及時發(fā)現(xiàn)、處理病蟲害。由此可見,目前病蟲害問題嚴(yán)重阻礙了當(dāng)歸產(chǎn)業(yè)的發(fā)展。
為了提升分類模型的分類效果,充分利用卷積神經(jīng)網(wǎng)絡(luò)提取的高級語義特征,本研究提出了一種多卷積神經(jīng)網(wǎng)絡(luò)模型融合的方法。使用遷移學(xué)習(xí)思想,在當(dāng)歸病蟲害數(shù)據(jù)集上訓(xùn)練多個單模型,并挑選在數(shù)據(jù)集上表現(xiàn)性能最好的4個模型作為本研究的基學(xué)習(xí)器,使用集成學(xué)習(xí)中的Stacking思想,使多種不同神經(jīng)網(wǎng)絡(luò)模型與XGBoost算法融合。使用XGBoost作為整體模型的次級分類器,其基于梯度提升決策樹在代價函數(shù)中加入正則項,使學(xué)習(xí)出來的模型更加簡單。本研究旨在解決樣本量較小時,卷積神經(jīng)網(wǎng)絡(luò)對當(dāng)歸病蟲害分類準(zhǔn)確率較低的問題,從而為當(dāng)歸種植業(yè)提供一種快速準(zhǔn)確的病蟲害識別方法。
卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的代表算法之一,由于其具有端到端的輸入輸出,位移、縮放、扭曲不變性及隱形的特征提取過程等特點,自1998年第1個典型架構(gòu)LeNet-5[16]出現(xiàn)以來,得到了快速發(fā)展。卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)結(jié)構(gòu)包括輸入層、卷積層(卷積層和激活函數(shù)層)、池化層、全連接層、輸出層,詳見圖1。
圖1 卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)結(jié)構(gòu)
隨著卷積深度的增加,網(wǎng)絡(luò)能提取的圖片特征越來越高級。但是,當(dāng)網(wǎng)絡(luò)深度增加到一定程度后,隨著深度的增加,梯度消失、過擬合等問題出現(xiàn),使得深層網(wǎng)絡(luò)難以訓(xùn)練。Szegedy等[17]提出的Inception結(jié)構(gòu)減少了網(wǎng)絡(luò)的計算量,提高了網(wǎng)絡(luò)性能,并且有效解決了過擬合問題。Simonyan等[11]提出的VGG網(wǎng)絡(luò),在具有相同感受野的情況下提升了網(wǎng)絡(luò)的深度,能有效解決過擬合問題,并減少了網(wǎng)絡(luò)計算量,提高了網(wǎng)絡(luò)性能。He等[18]提出了ResNet網(wǎng)絡(luò)結(jié)構(gòu),使得網(wǎng)絡(luò)的深度即使上升一個量級也不會出現(xiàn)深度網(wǎng)絡(luò)的退化問題。DensNet網(wǎng)絡(luò)在減少參數(shù)量的同時,實現(xiàn)了更優(yōu)的性能[19]。
遷移學(xué)習(xí)是一種學(xué)習(xí)策略[20],由于直接對目標(biāo)域進行學(xué)習(xí)成本太高或者無法學(xué)習(xí)出有效模型,轉(zhuǎn)而使用在其他域?qū)W習(xí)出來的知識,盡快、更準(zhǔn)確地學(xué)習(xí)新知識[21-23]。遷移學(xué)習(xí)通常采用固定特征提取層參數(shù)、微調(diào)分類層參數(shù)(圖2),把學(xué)習(xí)到的知識遷移到目標(biāo)樣本域,解決小樣本背景下模型不能有效學(xué)習(xí)樣本知識的問題。同時使模型能夠更快收斂,取得更好效果。
圖2 卷積神經(jīng)網(wǎng)絡(luò)的遷移學(xué)習(xí)
單個網(wǎng)絡(luò)模型很難實現(xiàn)高精度的分類任務(wù),并且在小樣本的情況下容易出現(xiàn)過擬合現(xiàn)象。集成學(xué)習(xí)通過構(gòu)建并結(jié)合多個學(xué)習(xí)器來完成學(xué)習(xí)任務(wù),可以獲得比單一模型更高的精度和更好的泛化性能[24-26]。主要的集成學(xué)習(xí)策略包括Bagging、Bosting、Stacking[27]。其中,Stacking中基學(xué)習(xí)器利用整個訓(xùn)練集進行訓(xùn)練,元學(xué)習(xí)器將從基學(xué)習(xí)器學(xué)習(xí)到的特征或預(yù)測結(jié)果作為特征進行訓(xùn)練,能夠提升整體模型的預(yù)測效果,同時具有更優(yōu)的泛化性能。因此本研究選擇Stacking[28]作為集成學(xué)習(xí)方法,算法如下:
輸入:訓(xùn)練集D={(x1,y1),(x2,y2),…,(xm,ym)};
基學(xué)習(xí)器算法:H1,H2,…,HT;
元學(xué)習(xí)器算法:L.
過程:
1:fort=1,2,…,Tdo
2:ht=Ht(D);
3:end for
4:D′=?;
5:fori=1,2,…,mdo
6:fort=1,2,…,Tdo
7:Zit=ht(xi);
8:end for
9:D′=D′∪[(zi1,zi2,…,ziT),yi];
10:end for
11:h′=L(D′);
輸出:P(x)=h′[h1(x),h2(x),…,hT(x)]
極度梯度提升[29](eXtreme gradient boosting, XGBoost)通過將形式為特征樹的各個弱分類器的結(jié)果進行累加作為預(yù)測值,用下一個弱分類器去擬合預(yù)測值和真實值之間的誤差。該算法的核心思想是在迭代過程中,不斷進行特征分裂,生成特征樹,通過枚舉法搜索最優(yōu)的弱分類器(分類樹);使特征樹群的預(yù)測值盡量接近真實值,以此來最小化損失函數(shù)。特征樹群的集成模型如公式(1)所示:
(1)
模型的預(yù)測精度由模型的偏差和方差共同決定,由預(yù)測值和真實值之間誤差決定的損失函數(shù)代表模型偏差,在目標(biāo)函數(shù)中添加正則項可減小模型方差,防止過擬合。XGBoost算法的目標(biāo)函數(shù)定義如公式(2)所示:
(2)
(3)
式中:γ為葉片結(jié)點參數(shù),用來控制葉片結(jié)點數(shù)量;T為模型所有決策樹中葉片結(jié)點總數(shù)量;結(jié)點λ用來控制葉片結(jié)點得分,使葉片結(jié)點不能獲得較高權(quán)重;w為所有葉片結(jié)點權(quán)重向量。
在模型迭代過程中,目標(biāo)函數(shù)的更新見公式(4):
(4)
(5)
(6)
(7)
(8)
如圖3所示,本研究提出的基于XGBoost的多卷積神經(jīng)網(wǎng)絡(luò)模型主要包括數(shù)據(jù)預(yù)處理、基分類器訓(xùn)練、集成學(xué)習(xí)3個模塊。在數(shù)據(jù)預(yù)處理階段,對采集的當(dāng)歸病蟲害數(shù)據(jù)集進行清洗和挑選,按照3∶1∶1的數(shù)據(jù)分布,分成訓(xùn)練集、驗證集和測試集。由于數(shù)據(jù)集樣例較少,采用隨機對比度調(diào)整、隨機翻轉(zhuǎn)、隨機旋轉(zhuǎn)方法對訓(xùn)練集進行數(shù)據(jù)增強。基分類器訓(xùn)練時運用遷移學(xué)習(xí)的思想,使用每個模型的特征提取部分在ImageNet上訓(xùn)練的權(quán)重。采用5-折交叉驗證的方法對每個模型分類部分進行訓(xùn)練,減小過擬合的風(fēng)險。使用驗證集挑選在當(dāng)歸病蟲害樣本數(shù)據(jù)集上性能最好的4個模型,作為基分類器。集成學(xué)習(xí)模塊采用Stacking結(jié)合策略,元分類器采用XGBoost算法,將前一部分訓(xùn)練的輸出結(jié)果進行融合,作為元分類器的輸入進行訓(xùn)練,輸出最終分類結(jié)果。
為評估本研究提出的基于多卷積神經(jīng)網(wǎng)絡(luò)融合的方法對當(dāng)歸病蟲害識別的性能,用本研究提出的方法與單個CNN模型進行對比,并與傳統(tǒng)融合算法進行對比以證明本研究提出的基于XGBoost的多模型融合算法的有效性。
岷縣作為中國當(dāng)歸的主產(chǎn)地,2020年當(dāng)歸種植面積達2×104hm2,外銷出口量達到全國外銷出口總量的70%。因此選擇岷縣當(dāng)歸作為本研究中數(shù)據(jù)集的來源。
通過對當(dāng)歸不同生長時期的數(shù)據(jù)進行3次采集,發(fā)現(xiàn)常見病蟲害包括灰霉病、褐斑病、病毒花葉病、白斑蟲害。采集包括健康葉在內(nèi)的5種葉片,每種葉片各采集500張,共采集2 500張。使用雙線性插值法將圖片調(diào)整為符合網(wǎng)絡(luò)輸入的大小,Xception、InceptionNetV3和InceptionResNetV2的輸入圖像尺寸為299×299,VGG19的輸入圖像尺寸為224×224。數(shù)據(jù)集部分示例見圖4。
采用構(gòu)建的當(dāng)歸病蟲害數(shù)據(jù)集進行模型的訓(xùn)練與評估。將數(shù)據(jù)集按照3∶1∶1的比例劃分為訓(xùn)練集、驗證集和測試集。數(shù)據(jù)預(yù)處理包括數(shù)據(jù)增強和數(shù)據(jù)歸一化,數(shù)據(jù)增強主要是為了解決小樣本下模型無法訓(xùn)練或者訓(xùn)練過擬合的問題。模型在訓(xùn)練時,數(shù)據(jù)增強采用隨機調(diào)整對比度(0.3),有30%的概率對輸入圖片進行隨機對比度調(diào)整;對圖像進行水平方向上的隨機翻轉(zhuǎn);隨機旋轉(zhuǎn)(0.2),即圖片在(-0.2×360,0.2×3 600)角度范圍內(nèi)隨機旋轉(zhuǎn)。對訓(xùn)練數(shù)據(jù)集進行3倍擴充,不對測試數(shù)據(jù)集進行增強處理。數(shù)據(jù)增強后,在訓(xùn)練集中,每種病蟲害的圖像有1 500張,在測試集中,每種病蟲害的圖像有100張。數(shù)據(jù)預(yù)處理時采用逐樣本均值消減(Per-example mean subtraction)法,即在每個樣本上用三通道像素值減去圖像三通道像素的均值。這種歸一化方法可以移除圖像的平均亮度值,使模型更加關(guān)注圖像的內(nèi)容。使用在ImageNet上訓(xùn)練的參數(shù)作為模型的初始權(quán)重參數(shù),用來訓(xùn)練當(dāng)歸病蟲害識別的CNN模型。
圖3 基于XGBoost的多卷積神經(jīng)網(wǎng)絡(luò)分類模型
圖4 數(shù)據(jù)集示例
卷積神經(jīng)網(wǎng)絡(luò)模型的優(yōu)化器選擇Adam優(yōu)化器,學(xué)習(xí)率設(shè)置為0.001,損失函數(shù)的計算采用交叉熵損失函數(shù)(Categorical_Crossentropy)。XGBoost模型的max_depth(最大樹深)設(shè)置為15,學(xué)習(xí)率設(shè)置為0.01,最大迭代次數(shù)為2 000次。
評價指標(biāo)選擇準(zhǔn)確率(ACC)和基于宏查準(zhǔn)率(macro-P)、宏查全率(macro-R)綜合評價模型的宏F1(macro-F1)值。
(9)
式中,f0為模型正確預(yù)測的樣本數(shù),f為總樣本數(shù)。
(10)
首先進行基模型的評估與篩選,本研究通過試驗對比了InceptionNetV3、InceptionResNetV2、Xception、VGG19、ResNet50、DenseNet201和EfficientNetB4在當(dāng)歸病蟲害數(shù)據(jù)集上的表現(xiàn)。從表1可以看出,InceptionResNetV2具有最低的準(zhǔn)確率和F1值,ResNet50具有最高的準(zhǔn)確率和F1值。ResNet50、DenseNet201、InceptionNetV3、VGG19的性能表現(xiàn)整體優(yōu)于其他網(wǎng)絡(luò),因此在進行模型融合時選用上述4個性能較優(yōu)的網(wǎng)絡(luò)作為基學(xué)習(xí)器進行集成,其中ResNet50具有最高的識別準(zhǔn)確率,因此進行模型融合時優(yōu)先選用ResNet50模型。
表1 不同模型在當(dāng)歸病蟲害數(shù)據(jù)集上的識別結(jié)果
用上述試驗數(shù)據(jù)對基學(xué)習(xí)器進行篩選,進行后續(xù)模型融合試驗,InceptionNetV3標(biāo)記為M1、VGG19標(biāo)記為M2、ResNet50標(biāo)記為M3、DenseNet201標(biāo)記為M4。試驗對不同融合模型進行比較,同時對本研究所提出的模型融合方法與邏輯回歸、決策樹、隨機森林、支持向量機等進行比較,結(jié)果如圖5所示。
M1:InceptionV3;M2:VGG19;M3:ResNet50;M4:DenseNet201。LR:邏輯回歸;DT:決策樹;RF:隨機森林;SVM:支持向量機;XGBoost:極致梯度提升。
圖5a使用XGBoost作為融合方法(本研究融合方法),分別對2個模型、3個模型和4個模型進行融合,驗證模型融合的有效性。模型融合時優(yōu)先采用在當(dāng)歸病蟲害數(shù)據(jù)集上表現(xiàn)性能最佳的模型。M3+M4為雙模型融合,M1+M3+M4為三模型融合,M1+M2+M3+M4為四模型融合。由圖5a可知,隨著模型融合數(shù)量的提高,模型的準(zhǔn)確率有所提升,四模型融合時的準(zhǔn)確率較三模型融合時的準(zhǔn)確率有較大提升。圖5b對四模型(M1+M2+M3+M4)采用邏輯回歸(Logistic regression)、決策樹(Decision tree)、隨機森林(Random forest)、支持向量機(Support vector machine)、極致梯度提升(XGBoost)方法進行融合。由圖5可知,本研究提出的基于XGBoost的融合方法融合的多卷積神經(jīng)網(wǎng)絡(luò)模型在當(dāng)歸病蟲害識別任務(wù)中的準(zhǔn)確率高于單卷積神經(jīng)網(wǎng)絡(luò)模型,同時優(yōu)于其他融合方法融合的模型,驗證了本研究方法的有效性。
不同融合方法融合的模型在當(dāng)歸病蟲害數(shù)據(jù)集上的識別結(jié)果見表2??梢钥闯?基于XGBoost方法融合的模型的查準(zhǔn)率、查全率和F1值均優(yōu)于其他融合方法融合的模型。
表2 不同融合方法融合的模型在當(dāng)歸病蟲害數(shù)據(jù)集上的識別效果
由圖6可以看出,對于種類0(白斑蟲害),使用隨機森林、本研究融合方法融合的模型取得的最高識別精度達到99%。對于種類1(褐斑病),本研究融合方法融合的模型識別精度達到了96%,遠遠高于其他融合方法融合的模型,其他融合模型的最高識別精度僅為91%,并且種類1(褐斑病)易被誤識別為種類2(灰霉病)或種類3(健康葉)。本研究提出的融合方法融合的模型在種類2(灰霉病)的識別上效果最好,達到97%,略高于其他融合方法融合模型的96%,同時種類2(灰霉病)易被誤識別為種類1(褐斑病)或種類3(健康葉)。對于種類3(健康葉),本研究提出的融合方法融合的模型分類準(zhǔn)確率達到100%,同時其他融合方法融合的模型分類準(zhǔn)確率也較高,即健康葉特征較為明顯,比較好分類。本研究提出的融合方法融合的模型對種類4(病毒病)的分類與隨機森林和決策樹融合方法融合的模型的準(zhǔn)確率一致,達到95%,同時種類4(病毒病)的誤分類主要是誤分為種類3(健康葉)。根據(jù)混淆矩陣,本研究融合方法融合的模型在當(dāng)歸病蟲害識別的任務(wù)中對于每個種類的分類較為穩(wěn)定,同時準(zhǔn)確率較高,均高于或等于其他融合方法融合的模型。
圖中數(shù)據(jù)為識別精度。白斑蟲害標(biāo)記為種類0,褐斑病標(biāo)記為種類1,灰霉病標(biāo)記為種類2,健康葉標(biāo)記為種類3,病毒病標(biāo)記為種類4。
本研究針對目前在當(dāng)歸病蟲害識別方面沒有有效的分類及鑒別方法的問題,采集并構(gòu)建了當(dāng)歸病蟲害數(shù)據(jù)集,建立了1種基于XGBoost的多卷積神經(jīng)網(wǎng)絡(luò)模型,實現(xiàn)了對當(dāng)歸病蟲害的識別和分類,取得了較高的識別率。本研究得出的主要結(jié)論如下:(1)通過遷移學(xué)習(xí)和5-折交叉驗證的方法,在當(dāng)歸病蟲害數(shù)據(jù)集上訓(xùn)練了ResNet50、DenseNet201、InceptionNetV3、VGG19、Xception、InceptionResNetV2和EfficientNetB4等卷積神經(jīng)網(wǎng)絡(luò)模型,其在數(shù)據(jù)集上的識別準(zhǔn)確率為別為96.05%、94.47%、92.89%、92.63%、91.32%、86.58%、92.37%。對比不同模型,挑選表現(xiàn)性能較好的ResNet50、DenseNet201、VGG19和InceptionNetV3 4個模型作為模型融合的基學(xué)習(xí)器。(2)提出了基于XGBoost的多卷積神經(jīng)網(wǎng)絡(luò)模型融合方法融合模型對當(dāng)歸病蟲害進行分類,該融合方法融合的模型在當(dāng)歸病蟲害數(shù)據(jù)集上的查準(zhǔn)率達到98.33%,高于單個模型的查準(zhǔn)率,同時高于其他融合方法融合模型的查準(zhǔn)率。相對于單模型,本研究提出的融合方法融合的模型提高了當(dāng)歸病蟲害識別準(zhǔn)確率,提供了一種快速準(zhǔn)確識別當(dāng)歸病蟲害的方法,有助于當(dāng)歸產(chǎn)業(yè)的發(fā)展。
同時本研究也有不足之處,多個卷積神經(jīng)網(wǎng)絡(luò)增加了計算量,數(shù)據(jù)量較少。擴充數(shù)據(jù)集并且納入更多種類的當(dāng)歸病蟲害、開發(fā)基于移動設(shè)備的應(yīng)用程序是下一步研究的重點。