于帥卿,郭小燕
(甘肅農(nóng)業(yè)大學(xué)信息科學(xué)技術(shù)學(xué)院,甘肅蘭州 730070)
中國(guó)是人口大國(guó),保障糧食儲(chǔ)備是關(guān)系民生的大事。然而,每年由于病蟲害造成的農(nóng)作物損失十分慘重,農(nóng)藥的廣泛使用雖然可以殺滅害蟲,但也造成了嚴(yán)重的環(huán)境污染,且對(duì)人體健康有潛在危害,因此需要對(duì)病蟲害進(jìn)行精準(zhǔn)防治[1-3]。傳統(tǒng)的農(nóng)病蟲害識(shí)別方法效果并不理想,且耗費(fèi)大量人力物力。近年來,農(nóng)作物病蟲害的識(shí)別問題逐漸成為深度學(xué)習(xí)領(lǐng)域的熱門話題,越來越多的學(xué)者采用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)與農(nóng)作物病蟲害數(shù)據(jù)相結(jié)合的方式解決病蟲害防治人工成本高、空間受限、時(shí)間消耗大的問題,以實(shí)現(xiàn)精準(zhǔn)農(nóng)業(yè)以及優(yōu)化農(nóng)業(yè)資源的目的[4-6]。
近年來,將CNN 變得輕量化,以增加其可植入性[7-9],以便部署在移動(dòng)端與嵌入式設(shè)備中成為學(xué)者們的研究方向。例如,劉洋等[10]對(duì)MobileNet 和Inception V3 2 種輕量級(jí)CNN 進(jìn)行遷移學(xué)習(xí),實(shí)現(xiàn)了手機(jī)端的病害葉片檢測(cè)。兩者在PlantVillage 數(shù)據(jù)集(26 種病害)上的平均識(shí)別率分為95.02%和95.62%,在自建葡萄病害葉片圖像集中的平均識(shí)別率分為87.50%和88.06%;賈鶴鳴等[11]針對(duì)植物病害識(shí)別精度較低、實(shí)時(shí)性較差的問題,提出一種基于輕量級(jí)CNN 的植物葉片病害識(shí)別方法,在PlantVillage 數(shù)據(jù)集上的識(shí)別精度高達(dá)99.427%,內(nèi)存空間占用僅為6.47MB;袁建野等[12]提出使用最大平均組合池化(Max-AVE Pooling)代替ResNet-50 網(wǎng)絡(luò)模型中Bottleneck 結(jié)構(gòu)的最大池化(Max Pooling)與平均池化(AVE Pooling),使用深度可分離卷積代替標(biāo)準(zhǔn)卷積,與經(jīng)典分類網(wǎng)絡(luò)相比能使參數(shù)量減少10倍,計(jì)算量減少14 倍;蔡漢明等[13]提出一種以深度可分離卷積為主的農(nóng)作物病害識(shí)別神經(jīng)網(wǎng)絡(luò)模型,利用深度可分離卷積和卷積相結(jié)合的方法取代標(biāo)準(zhǔn)卷積,計(jì)算量可降低至標(biāo)準(zhǔn)卷積的12%左右,識(shí)別準(zhǔn)確率可達(dá)98.26%,且參數(shù)量?jī)H為904 K;王春山等[14]針對(duì)病害識(shí)別模型存在的參數(shù)量巨大、訓(xùn)練時(shí)間長(zhǎng)、存儲(chǔ)成本與計(jì)算成本過高等問題,提出改進(jìn)型多尺度殘差(Multi-scale ResNet)的輕量級(jí)病害識(shí)別模型,通過增加多尺度特征提取模塊、改變殘差層連接方式分解大卷積核,進(jìn)行群卷積操作,減少了模型參數(shù)量,降低了存儲(chǔ)空間和運(yùn)算開銷。該模型在PlantVillage 數(shù)據(jù)集中取得了95.95%的識(shí)別準(zhǔn)確率,在自采集的病害圖像數(shù)據(jù)集中取得了93.05% 的識(shí)別準(zhǔn)確率,準(zhǔn)確率較ResNet18 下降約3.72%,但模型訓(xùn)練參數(shù)減少93%,模型總體尺寸縮減約35%。
以上網(wǎng)絡(luò)模型均基于圖像的2 維平面特征進(jìn)行提取優(yōu)化,忽略了圖像的通道特征提取,因此對(duì)于檢測(cè)目標(biāo)的識(shí)別精度有所限制。為此,本文向CNN 模型中引入通道注意力機(jī)制(Squeeze-and-Excitation,SE)[15]和改進(jìn)激活函數(shù),以提升識(shí)別精度;同時(shí)加入深度可分離卷積,以降低模型參數(shù)量。
采用IP102 農(nóng)作物蟲害識(shí)別圖像庫作為實(shí)驗(yàn)數(shù)據(jù)來源,選取苜蓿常見蟲害,分別為苜蓿象甲成蟲、葉蟬、蠐螬、螻蛄、叩甲、蚜蟲成蟲、白星花金龜、苜蓿芫菁、東方菜粉蝶、金針蟲、苜蓿盲蝽成蟲、蚜蟲若蟲,見圖1。經(jīng)過數(shù)據(jù)篩選和分布均衡調(diào)整后共得到5 784 張圖片,共計(jì)12 種類別,具體信息見表1。通過隨機(jī)抽取的方式將80%的圖片作為訓(xùn)練集,10%作為測(cè)試集,10%作為驗(yàn)證集。
Table 1 Test data set表1 實(shí)驗(yàn)數(shù)據(jù)集
Fig.1 Display of common alfalfa pests圖1 苜蓿常見蟲害示例
傳統(tǒng)CNN 通常由6 個(gè)部分組成,分別為模型輸入、卷積層、激活函數(shù)層、池化層、全連接層和模型輸出,結(jié)構(gòu)如圖2(彩圖掃OSID 碼可見,下同)所示,其中黃色塊為特征圖,棕色塊為卷積核。卷積過程可以看作是對(duì)特征圖的局部感知。卷積核為特征圖的局部特征提取器,大小一般為1×1、3×3、5×5的奇數(shù)尺寸。
Fig.2 Basic structure of CNN圖2 CNN基本結(jié)構(gòu)
圖3 為卷積的具體過程,綠色塊為卷積過程中的滑動(dòng)窗口,隨著卷積核窗口不斷在特征圖上進(jìn)行滑動(dòng),可以計(jì)算出一個(gè)新的特征圖,下一層特征圖再進(jìn)行同樣的卷積過程。由圖2 可以看出,在前兩個(gè)卷積層中還有一層池化層[16],通過上一層卷積核操作后,原始圖像被變換為一個(gè)新的特征圖。池化層的主要目的為通過降采樣的方式,在不影響圖像質(zhì)量的情況下壓縮圖片,減少參數(shù)產(chǎn)生。池化的方式通常有最大池化(Max Pooling)和平均池化(Average Pooling)兩種,其中Max Pooling 取滑動(dòng)窗口內(nèi)的最大值,Average Pooling 取滑動(dòng)窗口內(nèi)的平均值,池化過程如圖4 所示。圖2 中的紅色塊為激活函數(shù)層[17],其作用為在神經(jīng)網(wǎng)絡(luò)中加入一些非線性因素,使其可以解決非線性復(fù)雜問題,常見激活函數(shù)為Sigmoid、ReLU、tanh。
Fig.3 Convolution process圖3 卷積過程
Fig.4 Pooling process圖4 池化過程
PP-LCNet[18]是一種基于MKL-DNN(Math Kernel Library for Deep Neural Networks)加速的輕量級(jí)CPU CNN,結(jié)構(gòu)如圖5 所示。其在多個(gè)任務(wù)上改善了輕量級(jí)模型的性能,提升了檢測(cè)精度,同時(shí)延續(xù)了MobileNet 網(wǎng)絡(luò)速度快的特點(diǎn),更適合部署在移動(dòng)端。PP-LCNet 網(wǎng)絡(luò)基礎(chǔ)模塊使用了MobileNet 的深度可分離卷積塊(DepthSepConv),該模塊分為兩個(gè)卷積過程,輸入圖像首先經(jīng)過逐通道卷積(Depthwise Convolution,DW),圖像為三通道的彩色圖片,DW 的卷積核個(gè)數(shù)與輸入圖片的通道數(shù)一致,每個(gè)卷積過程均在平面內(nèi)完成,生成的特征圖數(shù)量與卷積核一一對(duì)應(yīng)。然而,DW 卷積沒有起到擴(kuò)展特征圖的作用,還需要經(jīng)過逐點(diǎn)卷積(Pointwise Convolution,PW)過程,在特征圖的深度上進(jìn)行擴(kuò)展,將DW 生成的特征圖組合生成新的特征圖。PW 卷積使用1 個(gè)1×1×M(M 為DW 卷積的通道數(shù)),以常規(guī)卷積的方式生成新的特征圖。使用深度可分離卷積后,模型計(jì)算量和參數(shù)量均相較于常規(guī)卷積變得更小,有效縮減了模型體積。
Fig.5 PP-LCNet network structure圖5 PP-LCNet網(wǎng)絡(luò)結(jié)構(gòu)
當(dāng)輸入1 張M×M×N的圖片數(shù)據(jù)時(shí),模型卷積核的尺寸為K×K×P且Stride=1,此時(shí)標(biāo)準(zhǔn)卷積操作參數(shù)量與計(jì)算量分別表示為:
深度可分離卷積的參數(shù)量與計(jì)算量分別表示為:
以上式中,K×K為卷積核的長(zhǎng)寬,P為卷積核通道數(shù),M×M為輸入卷積的特征圖長(zhǎng)寬,N為特征圖通道數(shù),Wsc為標(biāo)準(zhǔn)卷積產(chǎn)生的參數(shù)量,Osc為標(biāo)準(zhǔn)卷積產(chǎn)生的計(jì)算量,WDsc為深度可分離卷積產(chǎn)生的參數(shù)量,ODsc為深度可分離卷積產(chǎn)生的計(jì)算量。
深度可分離卷積與標(biāo)準(zhǔn)卷積的參數(shù)量與計(jì)算量比值分別表示為:
式中,RW和RO分別為深度可分離卷積與標(biāo)準(zhǔn)卷積產(chǎn)生的參數(shù)量和計(jì)算量比值,為深度卷積與標(biāo)準(zhǔn)卷積的參數(shù)量比值為逐點(diǎn)卷積與標(biāo)準(zhǔn)卷積的參數(shù)量比值。深度可分離卷積由深度卷積與逐點(diǎn)卷積兩部分組成,因此最終結(jié)果要將兩部分卷積相加,即為
本文模型選擇hard-swish 激活函數(shù)[19]。與普通線性擬合不同,hard-swish 是結(jié)合PP-LCNet 網(wǎng)絡(luò)自身特點(diǎn)設(shè)計(jì)的一種區(qū)分界限更加明顯、擬合更加迅速的激活函數(shù),可使模型訓(xùn)練效果進(jìn)一步提升。一般的網(wǎng)絡(luò)特征提取都是建立在平面感受野上,忽略了通道上的特征提取。為能更好地將空間信息與特征維度信息聚合起來,PP-LCNet 模型在網(wǎng)絡(luò)尾部加入SE 機(jī)制,以提取輸入圖像的通道特征,并通過學(xué)習(xí)自動(dòng)獲取通道權(quán)重。PP-LCNet 中的SE 結(jié)構(gòu)分為4個(gè)部分,分別為:
(1)標(biāo)準(zhǔn)卷積。上層輸出的特征圖X經(jīng)過標(biāo)準(zhǔn)卷積得到U,表示為:
式中,W、'H、'C'分別為輸入特征圖的寬、高、通道數(shù),W、H、C分別為卷積后圖像的寬、高、通道數(shù)。卷積具體操作表示為:
式中,vc表示第c 個(gè)卷積核,xs為具有s 個(gè)通道的一個(gè)2維圖像。
(2)Squeeze 操作。Squeeze 為全局平均池化(Global Average Pooling,GAP)操作。維度為W*H*C 的張量經(jīng)過GAP 轉(zhuǎn)變?yōu)榫S度為1*1*C 的張量Zc,Zc是對(duì)于特征通道上全局分布的響應(yīng),表示為:
(3)Excitation 操作。Excitation 操作可提取通道中的特征信息,表示為:
式中,S為一個(gè)1*1*C 的張量,表示每個(gè)通道的權(quán)重;W1z表示實(shí)現(xiàn)全連接操作和降維功能(減少計(jì)算參數(shù)),其中W1為降維系數(shù);δ表示ReLU激活函數(shù),經(jīng)過δ的張量再通過全連接實(shí)現(xiàn)升維功能,將張量恢復(fù)到原張量大小,其中W2為升維參數(shù);σ表示Sigmoid 函數(shù)。
(4)通道權(quán)值映射。為將通道權(quán)重映射到原始圖像上,采用Fscale 操作將通道權(quán)重與原始圖像進(jìn)行點(diǎn)乘,以實(shí)現(xiàn)通道重要性在原始特征圖通道上的重標(biāo)定功能,表示為:
操作系統(tǒng)為Ubuntu18.0.4,PyTorch 深度學(xué)習(xí)框架以及Python3.7 版本;硬件環(huán)境為配置NVIDIA Tesla V100 顯卡的GPU 圖像工作站。模型訓(xùn)練使用隨機(jī)梯度下降方法,運(yùn)行100個(gè)Epoch,Batch_size 為256,動(dòng)量因子設(shè)為0.90,權(quán)重衰減設(shè)為0.000 1,學(xué)習(xí)率設(shè)為0.01。
在訓(xùn)練前,采用動(dòng)態(tài)隨機(jī)的方式對(duì)數(shù)據(jù)集進(jìn)行增強(qiáng)操作,以提升網(wǎng)絡(luò)模型的魯棒性和泛化性。采用以下幾種數(shù)據(jù)增強(qiáng)方式:①幾何類。隨機(jī)翻轉(zhuǎn)(30°~180°)、隨機(jī)縮放(90%,80%);②顏色變換類。高斯噪聲、圖像顏色變換(對(duì)比度50%、明暗度50%、飽和度50%)[20]。數(shù)據(jù)增強(qiáng)后的圖像示例如圖6所示。
Fig.6 Image display after data enhancement圖6 數(shù)據(jù)增強(qiáng)后的圖像示例
圖7 為PP-LCNet 模型的訓(xùn)練Loss 與準(zhǔn)確率曲線,左側(cè)縱坐標(biāo)為TOP1 指標(biāo),含義為本實(shí)驗(yàn)共有12 個(gè)類別,在訓(xùn)練過程中輸入一張圖片后得到12 個(gè)類別每一個(gè)類別的概率,取輸出層12 個(gè)類別概率中最大的一個(gè)作為結(jié)果,TOP1指標(biāo)概率接近或等于1 為最優(yōu)值。右側(cè)縱坐標(biāo)為模型訓(xùn)練過程中產(chǎn)生的Loss,為目標(biāo)值與預(yù)測(cè)值之間的損失,當(dāng)預(yù)測(cè)值接近目標(biāo)值時(shí),Loss 趨近于0,為最優(yōu)結(jié)果。橫坐標(biāo)每個(gè)Step 表示更新一次權(quán)重參數(shù),向模型輸入Batch_size為256 張的圖片,根據(jù)運(yùn)行結(jié)果,參數(shù)更新一次。由圖7 可以看出,PP-LCNet 模型在訓(xùn)練過程中準(zhǔn)確率總體呈不斷上升趨勢(shì),雖然在部分階段有小幅度回落,但隨著訓(xùn)練Step 的增加,該模型最終克服了局部?jī)?yōu)化陷阱,準(zhǔn)確率進(jìn)一步提升,Loss 呈現(xiàn)下降趨勢(shì),模型逐漸擬合。從第1 200個(gè)Step 開始,Loss 與TOP1 兩指數(shù)開始趨于穩(wěn)定,最終Loss接近于0,TOP1指數(shù)接近于1。
Fig.7 PP-LCNet model training loss and accuracy curve圖7 PP-LCNet模型訓(xùn)練Loss與準(zhǔn)確率曲線
隨機(jī)均量抽取數(shù)據(jù)集總量的10%,共572 張圖片作為測(cè)試集導(dǎo)入訓(xùn)練好的模型中進(jìn)行評(píng)價(jià),混淆矩陣結(jié)果如圖8 所示?;煜仃囈卜Q為誤差矩陣,是評(píng)價(jià)精度的一種標(biāo)準(zhǔn)格式。圖中橫坐標(biāo)為每類害蟲的預(yù)測(cè)分類百分比,縱坐標(biāo)為每類害蟲的真實(shí)分類百分比,橫行百分比表示所有的正確預(yù)測(cè)百分比與錯(cuò)誤百分比相加結(jié)果應(yīng)為1。圖中橫坐標(biāo)預(yù)測(cè)值與縱坐標(biāo)真實(shí)值重合時(shí)的對(duì)角線為分類正確的結(jié)果,例如蚜蟲成蟲(Adult Aphid)與蚜蟲若蟲(Aphid Nymph)兩種害蟲特征較為接近,分類正確率分別為0.65和0.87,將蚜蟲成蟲識(shí)別為蚜蟲若蟲的比例為0.3。圖中的對(duì)角線漸變條從0~1的范圍代表0%~100%的概率值,正確分類百分比越大,顏色就越深。
Fig.8 Confusion matrix圖8 混淆矩陣
為驗(yàn)證模型訓(xùn)練的有效性,除混淆矩陣外又引入了精度(Precision)、召回率(Recall)、平衡F 分?jǐn)?shù)(F1-score)3 個(gè)評(píng)價(jià)指標(biāo)。
Precision 為模型精確性的度量,表示為:
式中,TP為True positives,F(xiàn)P為False positives。
Recall為模型檢測(cè)出樣本覆蓋面的度量,表示為:
式中,F(xiàn)N為False negatives。
當(dāng)發(fā)生需要檢測(cè)多個(gè)目標(biāo)時(shí)只檢測(cè)出一個(gè)目標(biāo),同時(shí)檢測(cè)出的一個(gè)目標(biāo)卻為實(shí)際值的情況時(shí),會(huì)出現(xiàn)召回率很低但精確率很高的極端情況。因此需要采用F1-score 指標(biāo),其為調(diào)和精確率與召回率之間關(guān)系的指數(shù),表示為:
表2 為模型對(duì)12 類蟲害的識(shí)別Precision、Recall、F1-score 比較??梢钥闯?,數(shù)值波動(dòng)較大的兩類害蟲為蚜蟲成蟲和叩甲。其中,蚜蟲成蟲的Recall 值較低,Precision 值接近12 類蟲害平均得分;叩甲的Precision 值較低,Recall 值較高。12 類害蟲中,苜蓿芫菁、蠐螬、葉蟬、苜蓿盲蝽成蟲、螻蛄、白星花金龜?shù)? 個(gè)評(píng)價(jià)指標(biāo)得分接近100%,蚜蟲若蟲、金針蟲、東方菜粉蝶、苜蓿象甲成蟲的3 個(gè)指標(biāo)得分穩(wěn)定在平均值附近。12 種害蟲的F1-Score 預(yù)測(cè)結(jié)果平均數(shù)為0.907,總體標(biāo)準(zhǔn)偏差波動(dòng)較小,說明模型訓(xùn)練、驗(yàn)證、測(cè)試階段性能表現(xiàn)良好,但在后續(xù)分類任務(wù)中應(yīng)對(duì)蚜蟲和叩甲的識(shí)別進(jìn)行重點(diǎn)研究,尤其是關(guān)注聚集密度大的害蟲特征提取。
Table 2 Evaluation of identification effect of model on 12 kinds of pests表2 模型對(duì)12類害蟲的識(shí)別效果評(píng)價(jià)
為驗(yàn)證PP-LCNet 模型對(duì)于苜蓿蟲害識(shí)別的有效性以及相較于其他識(shí)別模型的優(yōu)越性,選取EfficientNet_B0[21]和MobileNetV2模型進(jìn)行性能比較。
圖9、圖10 分別為MobileNetV2、EfficientNet_B0 模型訓(xùn)練時(shí)的Loss 與準(zhǔn)確率曲線。通過與圖7 進(jìn)行比較可以發(fā)現(xiàn),PP-LCNet模型在Step為1 426時(shí)準(zhǔn)確率最高,為0.980 4,高于MobileNetV2模型的最高準(zhǔn)確率0.976 5(Step為1 730)和EfficientNetB0模型的最高準(zhǔn)確率0.953 1(Step為1 730)。通過比較3 個(gè)模型的Loss 曲線可以看出,PP-LCNet 模型的Loss 震蕩更為穩(wěn)定,收斂更早,對(duì)蟲害數(shù)據(jù)集的擬合度也更高。
Fig.9 MobileNetV2 model training loss and accuracy curve圖9 MobileNetV2模型訓(xùn)練Loss與準(zhǔn)確率曲線
Fig.10 EfficientNetB0 model training loss and accuracy curve圖10 EfficientNetB0模型訓(xùn)練Loss與準(zhǔn)確率曲線
采取交叉驗(yàn)證的方式,共設(shè)置100 個(gè)Epoch,每5 個(gè)Epoch 開啟1 次驗(yàn)證。由圖11 可以看出,PP-LCNet 模型在驗(yàn)證集上進(jìn)行第12 輪交叉驗(yàn)證時(shí)的準(zhǔn)確率達(dá)到0.956 2,高于EfficientNetB0 模型第17 輪交叉驗(yàn)證得出的0.938 8 和MobileNetV2 模型第19 輪交叉驗(yàn)證得出的0.926 5。第1 輪交叉驗(yàn)證中,PP-LCNet 模型準(zhǔn)確率達(dá)到0.912 5,高于EfficientNetB0 的0.101 3 和MobileNetV2 的0.776 2。采用總數(shù)據(jù)集的10%驗(yàn)證模型性能,結(jié)果如表3 所示??梢钥闯觯琍P-LCNet 模型對(duì)每類害蟲的平均準(zhǔn)確率、平均召回率、平均F1-score 分別高出EfficientNetB0 模型0.027%、0.018%、0.020%,高出MobileNetV2模型0.031%、0.026%、0.031%。
Fig.11 Verification accuracy comparison of each model圖11 各模型驗(yàn)證準(zhǔn)確率比較
Table 3 Verification accuracy,recall rate,F(xiàn)1-score comparison of each model表3 各模型驗(yàn)證準(zhǔn)確率、召回率、F1-score比較
由表4 可以看出,PP-LCNet 模型在網(wǎng)絡(luò)參數(shù)量生成(Params)、每秒運(yùn)算峰值速度(FLOPS)、網(wǎng)絡(luò)延時(shí)(Latency)方面均優(yōu)于MobileNetV2 和EfficientNetB0 模型。這是由于PP-LCNet 模型更加小巧,檢測(cè)速度快且精確,更適宜于部署在移動(dòng)端和應(yīng)用到嵌入式系統(tǒng)中,適用于多種環(huán)境下苜蓿蟲害的檢測(cè)分類任務(wù)。
Table 4 Detection speed comparison of each model表4 各模型檢測(cè)速度比較
本文以MobileNetV1 網(wǎng)絡(luò)作為基礎(chǔ)建立PP-LCNet 模型,對(duì)12 類苜蓿蟲害識(shí)別分類問題進(jìn)行了研究,采用區(qū)分界線能力更強(qiáng)的hard-swish 激活函數(shù)解決蟲害特征圖相似度較高、分類不精確的問題??紤]到昆蟲體積較小,且其數(shù)據(jù)集采集往往在自然條件下進(jìn)行,因此噪聲干擾較多,提取特征量有限[22],需要加強(qiáng)網(wǎng)絡(luò)提取特征的能力,故加入通道注意力機(jī)制,將通常被忽略的空間層面特征提取出來,以增強(qiáng)特征之間的聯(lián)系,使蟲害識(shí)別準(zhǔn)確率進(jìn)一步提升。在模型輕量化方面,本文加入深度可分離卷積,有效減少了參數(shù)量,相較于MobileNetV2 和EfficientNetB0 模型參數(shù)量分別下降了0.16%和0.43%。
在自然環(huán)境中,蟲害大多以群落、多目標(biāo)的方式出現(xiàn),未來可加入多目標(biāo)的蟲害數(shù)據(jù)進(jìn)行檢測(cè)識(shí)別,進(jìn)一步提升模型的魯棒性。目前研究仍處于模型優(yōu)化層面,未來將嘗試將其部署在移動(dòng)端或嵌入式設(shè)備中,進(jìn)入工程應(yīng)用階段。