陳繼清,韋德鵬,龍騰,羅天,王樺彬
(廣西大學機械工程學院,南寧市,530007)
農(nóng)作物病蟲害是一種嚴重的自然災害,具有種類多、影響大以及時常暴發(fā)成災的特點[1]。病蟲害在全球范圍內(nèi)造成了巨大的經(jīng)濟損失,據(jù)研究表明,世界各國有接近一半的農(nóng)作物產(chǎn)量是由于病蟲害而損失掉的[2]。為了降低病蟲害造成的損失,Bernardo[3]在1993年提出了有害生物綜合治理(IPM)方法,該方法要求對農(nóng)作物中的害蟲種類進行識別和分類,以便農(nóng)業(yè)工作者能夠選擇準確的農(nóng)藥類別和有效的防治方法來阻止病蟲害的發(fā)生。傳統(tǒng)的害蟲種類識別和分類方法主要是由昆蟲學家或農(nóng)業(yè)工作者周期性的進入農(nóng)田,對農(nóng)作物中的昆蟲類別進行調(diào)查,以尋找病蟲害發(fā)生的跡象。然而,Chapman等在2009年的研究表明,地球上的昆蟲類別超過500萬種。傳統(tǒng)的方法要求每個農(nóng)業(yè)工作者對每一種昆蟲都能夠進行精準識別以及分類是不現(xiàn)實的,而且存在工作量大、消耗時間長、識別準確度低的問題[4]。
隨著卷積神經(jīng)網(wǎng)絡(CNN)技術(shù)的發(fā)展,越來越多基于卷積神經(jīng)網(wǎng)絡(CNN)的病蟲害識別方法被提出,王丹丹等[5]采用卷積神經(jīng)網(wǎng)絡識別了多特征分量的蘋果目標;陸雅諾等[6]提出了一種基于注意力機制的啤酒花病蟲害識別方法,試驗表明該方法的準確率達到93.11%;蒲秀夫等[7]提出了使用二值化卷積神經(jīng)網(wǎng)絡模型對植物病蟲害進行識別的方法,該方法以VGG16模型作為基準,采用深度網(wǎng)絡模型對植物病蟲害進行分類,平均識別準確率達到96.8%;閆建偉等[8]通過神經(jīng)網(wǎng)絡對深層次的果實特征進行提取,將提取到的特征與低層次特征進行多次融合,有效提升了識別精度;項小東等[9]提出了一種基于改進的Xception模型的植物病蟲害識別方法,試驗表明該方法的識別準確率達到了91.9%,精確率達到了88.7%;Zhang等[10]通過對GoogLeNet增加Droupout層、ReLU函數(shù)和減少分類器的數(shù)量進行優(yōu)化。改進后的模型在玉米的9種病害中達到了98.9%的識別精度;Mique等[11]利用基于CNN的模型,對采集到的圖像與現(xiàn)有的水稻病蟲害圖像進行了檢索和比較,該模型能夠達到90.9%的最終訓練精度;曹樂平等[12]提出了BP神經(jīng)網(wǎng)絡模型用于柑橘病蟲害的識別,平均準確率達到92.67%;Khan等[13]實現(xiàn)了深度預訓練模型用于提取深度特征,對6種蘋果和香蕉水果病害進行分類,提高了分類的精度和準確性;Liu等[14]提出了一種用于解決害蟲目標自動識別和定位問題的害蟲檢測網(wǎng)絡,可檢測16類農(nóng)業(yè)害蟲;Lu等[15]提出了基于深度卷積神經(jīng)網(wǎng)絡(DCNN)技術(shù)的水稻病害識別方法,對10種常見水稻病害進行了識別,提高了收斂速度和識別精度,并引入遷移學習對預訓練的深度網(wǎng)絡進行微調(diào),以提高學習效率。
綜上所述,早期提出的方法依然存在識別精確度低、網(wǎng)絡結(jié)構(gòu)復雜和沒有充分利用圖像的多尺度特征信息等問題。為了解決這些問題,本文提出了一種基于多尺度特征融合(MFF)的網(wǎng)絡模型對作物害蟲進行精準識別與分類。該模型采用空洞卷積[16]設計了多尺度特征提取模塊(MFEM),以獲取到害蟲圖像的多尺度特征圖;同時,使用深層特征提取模塊(DFEM)提取圖像的深層特征信息;最后,將分別由多尺度特征提取模塊(MFEM)和深層特征提取模塊(DFEM)提取到的特征圖進行融合,以充分利用害蟲圖像的多尺度特征信息,從而實現(xiàn)以端到端的方式對作物害蟲進行精準分類與識別。
本文試驗所用的害蟲數(shù)據(jù)集一方面通過網(wǎng)絡爬蟲[17]技術(shù)從百度、谷歌和Yahoo這3個主流搜索引擎下載獲取,另一方面通過使用小米8 SE手機在廣西大學農(nóng)學院試驗田進行現(xiàn)場拍攝獲取,通過圖像裁剪技術(shù)將每張圖像的大小統(tǒng)一裁剪為512×512。該數(shù)據(jù)集總共有4 200張圖像,包含12種常見農(nóng)作物害蟲成蟲和幼蟲階段的RGB圖片,分別是蚜蟲、粘蟲、甲蟲、棉鈴蟲、蚱蜢、螨蟲、蚊子、鋸蠅、螟蟲、穿孔蛾、癭蠅和蝗蟲,其形態(tài)特征如圖1所示。
(a) 蚜蟲 (b) 粘蟲 (c) 甲蟲
為了提升網(wǎng)絡的魯棒性和泛化能力,同時,使其具有更高的識別分類性能,防止出現(xiàn)過擬合的問題,本文采用數(shù)據(jù)增強技術(shù)[18]對收集的數(shù)據(jù)集進行擴充。具體來說就是,使用旋轉(zhuǎn)、平移、翻轉(zhuǎn)和添加噪聲這4種數(shù)據(jù)增強算法對原始圖像進行處理。其中,旋轉(zhuǎn)的范圍在[10°, -10°]之間,步長為1°;添加的噪聲系數(shù)范圍在[0, 1.5]之間,處理結(jié)果如圖2所示,從而使得害蟲數(shù)據(jù)集的圖片量從4 200張增加到67 200張。將增強后的數(shù)據(jù)集劃分成訓練集和測試集,其中,訓練集包含57 600張圖片,測試集包含9 600張圖片。各類害蟲的圖片數(shù)量如表1所示。
(a) 原圖 (b) 旋轉(zhuǎn) (c) 平移
表1 各類害蟲圖片數(shù)量分布Tab. 1 Number distribution of pictures of various pests
深層特征提取模塊(DFEM)采用編碼器-解碼器[19]結(jié)構(gòu),如圖3所示。編碼網(wǎng)絡由1個輸入層、7個3×3卷積層和3個最大池化層組成,在每一個卷積層后,采用批歸一化[20](BN)層對卷積層的輸出結(jié)果進行歸一化處理,以加快模型的收斂速度,且在一定程度上緩解深層網(wǎng)絡中“梯度彌散”的問題,從而使得訓練本文的網(wǎng)絡模型時更加容易和穩(wěn)定。假設輸入為一個d維向量X=[x(1),x(2),…x(d)],則向量X的第k維經(jīng)過歸一化處理后的結(jié)果如式(1)所示。
圖3 深層特征提取模塊結(jié)構(gòu)圖
(1)
式中:x*(k)——向量X中的第k維歸一化處理后的結(jié)果;
x(k)——向量X中的第k維;
E[x(k)]——第k維的均值;
Var[x(k)]——第k維的方差。
同時,本文在批歸一化(BN)層后面還設置了一個采用線性整流函數(shù)[21](ReLU)作為激活函數(shù)的激活層,以克服網(wǎng)絡模型的梯度消失問題,從而進一步加快訓練速度。線性整流函數(shù)(ReLU)的函數(shù)式如式(2)所示。
f(y)=max(x,wTy+b)
(2)
式中:y——輸入向量;
wT——權(quán)重系數(shù)向量;
b——偏置量。
解碼網(wǎng)絡由6個3×3反卷積層、3個2×2反卷積層和1個輸出層組成,其結(jié)構(gòu)與編碼網(wǎng)絡呈鏡像,本文不僅采用2×2的反卷積層作為上采樣層,還采用3×3反卷積層進行高級特征的提取。同時,在編碼器與解碼器間還采用跳級連接結(jié)構(gòu)將高、低級特征進行融合,從而進一步提高網(wǎng)絡的分類性能。
反卷積[22]是一種將圖像由低分辨率到高分辨率的映射操作,主要用于將特征圖恢復到原始圖像尺寸的大小,以減少特征信息的丟失,其原理如圖4所示。經(jīng)過反卷積操作后輸出圖像的尺寸計算方法如式(3)所示。
Output=S×(W-1)+K-2×P
(3)
式中:W——輸入圖像尺寸;
K——卷積核大??;
S——步長;
P——填充數(shù);
Output——輸出圖像尺寸。
圖4 反卷積原理示意圖
多尺度特征提取模塊(MFEM)的結(jié)構(gòu)如圖5所示,由1個輸入層、4個空洞卷積層、1個1×1卷積層和1個輸出層組成??斩淳矸e的原理如圖6所示,當擴張率為1時,空洞卷積與普通卷積沒有差異,卷積后的感受野均為3×3;當擴張率為2時,空洞卷積的感受野擴大到5×5;當擴張率為3時,空洞卷積的感受野擴大到7×7。采用空洞卷積來設計多尺度特征提取模塊(MFEM),一方面能夠在不增加計算量的前提下,以較大的感受野提取到更豐富的特征信息;另一方面可以將多個不同擴張率的空洞卷積層疊加使用,從而獲取到多個尺度的特征信息。
圖5 多尺度特征提取模塊結(jié)構(gòu)圖
(a) 擴張率為1 (b) 擴張率為2 (c) 擴張率為3
首先,采用4個空洞率分別為6、12、24和36的空洞卷積層分別對輸入圖像進行多尺度特征信息提取,獲得4個包含有不同尺度特征信息的特征圖,然后將提取到的多尺度特征信息進行融合,以減少特征信息的丟失,并使用1×1的卷積層對融合特征圖進行通道數(shù)的調(diào)整,從而實現(xiàn)多尺度特征的提取。同時,為了加快模型的收斂速度和避免梯度消失的情況發(fā)生,本文在每個空洞卷積層和卷積層后面均使用批歸一化(BN)層和ReLU激活層對輸出結(jié)果進行處理。
本文提出的FFNet框架結(jié)構(gòu)如圖7所示,主要由深層特征提取模塊(DFEM)和多尺度特征提取模塊兩個部分組成。將害蟲圖像輸入FFNet模型,一方面通過深層特征提取模塊(DFEM)提取害蟲圖像的高級特征信息,另一方面通過多尺度特征提取模塊(MFEM)提取害蟲圖像多個尺度的特征信息,然后將提取到的害蟲圖像的高級特征信息和多尺度特征信息進行融合,以減少特征信息的丟失,最后將融合的特征信息輸入分類層,從而實現(xiàn)害蟲的識別與分類。
圖7 FFNet結(jié)構(gòu)體系
為了表明本文提出的FFNet的輕量性,將幾個主流的神經(jīng)網(wǎng)絡(CNN)模型的參數(shù)量與內(nèi)存占用量進行了對比,如表2所示??梢钥闯?,F(xiàn)FNet的參數(shù)量和內(nèi)存消耗量分別為9 170 773和34.9 M,比主流的ResNet50和VGG16模型分別降低了85.2%和74.8%,這表明提出的FFNet結(jié)構(gòu)簡便,有效降低了整體參數(shù)量。
表2 主流網(wǎng)絡框架的參數(shù)量及內(nèi)存比較Tab. 2 Parameter quantity and memory comparison of mainstream network frameworks
為了證實FFNet模型對農(nóng)作物害蟲圖像識別與分類擁有良好的分類性能,在PyTorch 1.8.1框架上使用在本文第1節(jié)中提到的數(shù)據(jù)集進行了試驗,試驗平臺的其他軟、硬件信息如表3所示。
表3 試驗環(huán)境詳細信息表Tab. 3 Experimental environment details table
本文所用到的網(wǎng)絡模型的數(shù)據(jù)是在同一試驗條件下測試得出,即均采用隨機梯度下降(SGD)法進行優(yōu)化,學習調(diào)度器設為Poly,動量參數(shù)設為0.9,權(quán)重衰減設為0.000 1,學習率設為0.001,損失函數(shù)設為交叉熵損失函數(shù)[28],迭代次數(shù)設為80 000次,以保證試驗數(shù)據(jù)的可靠性。
同時,本文還引用準確率、精準率、召回率和混淆矩陣[29]四個評價指標對FFNet模型的分類性能進行評估。其中,準確率表示預測結(jié)果中預測正確的次數(shù)占總預測次數(shù)的比例;精準率表示在所有預測結(jié)果中某個類別預測正確的概率;召回率表示在所有真實值中某個類別被預測正確的概率。各指標的計算如式(4)~式(6)所示。
(4)
(5)
(6)
式中:Accuary——準確率;
Precision——精準率;
Recall——召回率;
TP——預測為正例而實際是正例;
FP——模型預測為正例而實際是反例;
FN——模型預測為反例而實際是正例;
TN——模型預測為反例而實際是反例。
本文將ResNet50和VGG16這兩種最先進的網(wǎng)絡模型與提出的FFNet模型在搜集的12種害蟲數(shù)據(jù)集上進行分類性能測試。為了保證數(shù)據(jù)的可靠性,每個網(wǎng)絡訓練時所使用的參數(shù)設置都相同,各個網(wǎng)絡訓練花費的時間和分類的準確率,如表4所示。
表4 各網(wǎng)絡分類性能對比表Tab. 4 Comparison of network classification performance
由表4數(shù)據(jù)可以發(fā)現(xiàn),F(xiàn)FNet在分類準確率指標上達到了98.2%,分別比ResNet50和VGG16模型提高了8.3%和19%;而訓練花費的時間僅使用了197 min,分別比ResNet50和VGG16模型縮短了56.4%和39%。
同時,本文還把ResNet5、VGG16和提出的FFNet訓練過程的損失曲線和精確率曲線進行對比分析,如圖8所示。根據(jù)曲線圖可以看出,VGG16的損失曲線和準確率曲線分別在迭代30 000次和第36個epochs時開始趨于平緩,其準確率為82.5%,損失值為0.213;ResNet50的損失曲線和準確率曲線分別在迭代25 000次和第26個epochs時開始趨于平緩,其準確率為90.7%,損失值為0.114;而FFNet損失曲線和準確率曲線分別在迭代20 000次和第21個epochs時就以開始趨于平緩,其準確率達到了98.2%,損失值僅為0.031。這表明本文提出的FFNet模型不僅收斂的速度快,而且對收集的12類害蟲的分類性能更好。
(a) 各個網(wǎng)絡的損失曲線圖
為了更直觀地表明FFNet的分類性能,采用混淆矩陣對其分類結(jié)果進行可視化分析。混淆矩陣的行代表預測的類別,列代表真實的類別,主對角線的數(shù)值代表分類模型在該類別上的分類精度,如圖9所示。
圖9 FFNet分類結(jié)果混淆矩陣
混淆矩陣主對角線上的數(shù)值均為各行各列的最大值,分別為782、794、789、800、778、781、789、771、783、784、787和793,這表明本文提出的FFNet模型對12類害蟲的識別分類性能良好。與此同時,本文還測試了FFNet模型對數(shù)據(jù)集中每一類害蟲識別分類的精準率和召回率,如表5所示。從表中數(shù)據(jù)可知,提出的FFNet不僅整體分類準確率高,對每一類害蟲的識別分類精準率和召回率也取得了非常好的成績,F(xiàn)FNet模型能夠高效的完成農(nóng)作物病蟲害分類識別工作。
表5 FFNet對各類害蟲分類結(jié)果Tab. 5 Classification results of various pests by FFNet
本文提出了一種基于多尺度特征融合的網(wǎng)絡模型(FFNet),采用多尺度特征提取模塊(MFEM)在不增加模型參數(shù)量的情況下,以較大的感受野獲取到害蟲圖像的多尺度特征信息,然后將獲取到的多尺度特征與深層特征提取模塊(DFEM)提取的特征進行融合,從而實現(xiàn)害蟲類別的識別與分類。為了驗證本文提出的FFNet模型的有效性和魯棒性,將FFNet、ResNet50和VGG16在本文建立的12類害蟲數(shù)據(jù)集上進行試驗,測得FFNet模型的分類準確率達到了98.2%,分別比VGG16和ResNet50提高了19%和8.3%;在訓練時間上,F(xiàn)FNet模型的訓練僅需197 min,其損失函數(shù)Loss為0.031,分別比ResNet50和VGG16模型縮短了56.4%和39%,而且整個網(wǎng)絡僅有34.9 M。本文提出的FFNet模型與主流的模型相比,不僅對自制的12類害蟲數(shù)據(jù)集具有良好的性能,而且在模型的收斂速度和參數(shù)量方面也有很大程度的提高,能夠高效地完成農(nóng)作物病蟲害分類識別工作。