謝湘慧,謝曉春,?,章倩麗,喻玲娟
(1.贛南師范大學(xué) 物理與電子信息學(xué)院;2.江西理工大學(xué) 信息工程學(xué)院,江西 贛州 341000)
在大部分發(fā)展中國家,農(nóng)作物生產(chǎn)基本上是小農(nóng)生產(chǎn),因?yàn)檗r(nóng)作物病害導(dǎo)致農(nóng)產(chǎn)品質(zhì)量、產(chǎn)量減少50%是非常常見的.為減少病害對(duì)農(nóng)作物的損害,廣大小農(nóng)產(chǎn)品生產(chǎn)者想出各種辦法,例如通過人工觀察和使用強(qiáng)力的化學(xué)農(nóng)藥.然而人工觀察效率低,且有主觀意識(shí)導(dǎo)致判斷失誤,而使用強(qiáng)力的化學(xué)農(nóng)藥則會(huì)導(dǎo)致水土污染嚴(yán)重,農(nóng)產(chǎn)品品質(zhì)下降等諸多問題.近年來,隨著計(jì)算機(jī)視覺和深度學(xué)習(xí)的發(fā)展,現(xiàn)有的神經(jīng)網(wǎng)絡(luò)模型已經(jīng)成功運(yùn)用于農(nóng)業(yè)領(lǐng)域.在農(nóng)業(yè)病害分類上,Yong Wei等人[1]通過建立BP神經(jīng)網(wǎng)絡(luò)模型對(duì)采集到的100多張黃瓜葉片樣本圖像進(jìn)行訓(xùn)練,識(shí)別準(zhǔn)確率可達(dá)到80%.Lei Chen等人[2]構(gòu)建一個(gè)農(nóng)業(yè)病害圖像數(shù)據(jù)集.并通過該數(shù)據(jù)集研究不同類型的遷移學(xué)習(xí)的農(nóng)業(yè)病害識(shí)別方法,該方法與Alexnet和Vgg模型進(jìn)行對(duì)比準(zhǔn)確率提高了1%~9%,總體的準(zhǔn)確率在94%以上.Lu, Y等人[3]提出一種基于深度卷積神經(jīng)網(wǎng)絡(luò)的水稻病害識(shí)別方法,在交叉驗(yàn)證策略下模型的準(zhǔn)確率達(dá)到95.48%.Srdjan, S等人[4]開發(fā)一個(gè)深度學(xué)習(xí)模型將植物病害樹葉與周圍的環(huán)境區(qū)分開來,在開發(fā)的模型上可識(shí)別13種植物病害,結(jié)果顯示平均分類精度達(dá)到了96.3%.李淼、王敬賢等人[5]利用改進(jìn)的AlexNet和VGG模型使用遷移學(xué)習(xí)獲得了較高準(zhǔn)確率.
本文重點(diǎn)研究Squeezenet[6]、Efficientnet-B0[7]2種深度學(xué)習(xí)模型網(wǎng)絡(luò),在植物病害數(shù)據(jù)集上取得了較好的分類結(jié)果,某些病害達(dá)到了100%的準(zhǔn)確率.深度學(xué)習(xí)運(yùn)用到植物病害還面臨了一些挑戰(zhàn),具體表現(xiàn)在以下幾點(diǎn):
為使實(shí)驗(yàn)條件降低和縮短訓(xùn)練時(shí)的收斂時(shí)間,提高識(shí)別精度,本文實(shí)現(xiàn)了一種基于Efficientnet-B0、Sequeenet深度模型的遷移學(xué)習(xí)和模型微調(diào)的學(xué)習(xí)方法,利用Sequeenet模型的網(wǎng)絡(luò)中堆疊的Fire module 的卷積來減少參數(shù)數(shù)量的目的,再利用混合訓(xùn)練[8]的訓(xùn)練方式加快訓(xùn)練提高訓(xùn)練精度.最終得到的模型參數(shù)文件10.1 M,分類精度為96.85%.
國內(nèi)外研究深度學(xué)習(xí)的相關(guān)論文中都曾提出模塊化設(shè)計(jì),比如Alexnet模型[9]中的卷積層與Relu激活函數(shù)和池化層模塊化,Capsule Neural Networks模型[10]中使用的膠囊表征,以及Efficientnet-B0模型都是使用模塊化設(shè)計(jì)的理念來構(gòu)建的模型.其中Squeezenet模型的核心模塊為Fire模塊,如圖1.在fire模塊中,使用Relu函數(shù)連接Squeeze和Expand這兩部分.
圖1 Fire moudle結(jié)構(gòu)圖
Squeezenet模型壓縮運(yùn)用3個(gè)策略:第1,將3*3的卷積替換成1*1的卷積.其中Squeeze部分中使用的是1*1的卷積核用來壓縮通道數(shù)與3*3的卷積對(duì)比減少了9倍的參數(shù)數(shù)量;第2,減少3*3卷積的通道數(shù),即Expand中使用2個(gè)通道分別為1*1與3*3的卷積核,使用Concat層來連接這2個(gè)卷積核合并得到通道數(shù)為(e1+e3),與原有的通道數(shù)相比較減少通道數(shù);第3,將降采樣后置,即將降采樣的往分類層移動(dòng).實(shí)現(xiàn)在不影響模型的性能的情況下,盡量減少參數(shù)的數(shù)量,為模型在邊緣計(jì)算的部署提供了可能.
Squeezenet模型結(jié)構(gòu)如圖2所示,一共包含10層網(wǎng)絡(luò).第1層卷積層,使用一個(gè)7*7的卷積核,縮小輸入圖像,針對(duì)224*224的輸入圖像得到輸出圖像為111*111*96,第2層到第9層為Fire模塊,每經(jīng)過一個(gè)Fire模塊通道數(shù)就會(huì)少量的增加.為了盡可能的減少模型訓(xùn)練時(shí)產(chǎn)生的參數(shù)量,在Conv1、Fire4、Fire8加入Max-pooling,縮小上一層輸出特征的尺寸.且在Fire9模塊后添加了Dropout,減少了中間特征數(shù)量即減少冗余數(shù)據(jù),增加了每層數(shù)據(jù)特征的稀疏性,預(yù)防模型出現(xiàn)過擬合現(xiàn)象.最后一層卷積層,為每一個(gè)像素預(yù)測(cè)分類中38類的得分,最后通過Softmax輸出結(jié)果.
圖2 squeezenet模型結(jié)構(gòu)
與單一放大模型的某種維度系數(shù)從而提高分類精度相比,Efficientnet-B0網(wǎng)絡(luò)利用一種新的縮放方法混合縮放:利用復(fù)合系數(shù)來統(tǒng)一縮放模型的維度復(fù)合系數(shù),包含神經(jīng)網(wǎng)絡(luò)深度、寬度、分辨率等.如resnet50~resnet152是通過加深網(wǎng)絡(luò)的深度來提高分類精度.Efficientnet-B0的網(wǎng)絡(luò)結(jié)構(gòu)如圖3.
圖3 Efficientnet-B0網(wǎng)絡(luò)結(jié)構(gòu)
Efficientnet-B0網(wǎng)絡(luò)結(jié)構(gòu)主要由16個(gè)MBConv模塊、2個(gè)卷積層和全局平均層以及全連接層構(gòu)成.其中MBConv(mobile inverted bottleneck convolution)模塊類似MobileNetV2由深度可分離卷積和注意力模塊構(gòu)成.可分離卷積的操作如下:將每一個(gè)通道先進(jìn)行各自的卷積操作,在得到的新通道后進(jìn)行標(biāo)準(zhǔn)的1*1跨通道卷積操作.假設(shè)輸入的通道數(shù)為3,要求輸出的通道數(shù)為96,有2種做法:其一,直接使用3*3*96的卷積核,參數(shù)量(3*3*3+1)*96=2 688;其二,進(jìn)行可分離卷積操作,分兩步進(jìn)行得到的參數(shù)量為3*3*3*3+3+3*1*1*96+96=468,將參數(shù)量降低了8.5倍且提高了模型的特征的提取質(zhì)量.注意力模塊方法為:將上一層的輸出分為2條路線,第1條路線直接通過,第2條路線利用squeeze的將特征進(jìn)行壓縮,得到特征權(quán)重,并將權(quán)重加權(quán)到第1條路上,給特征的權(quán)重分配.MBConv模塊結(jié)構(gòu)如圖4.
圖4 MBConv結(jié)構(gòu)圖
圖5 遷移學(xué)習(xí)性能對(duì)比
實(shí)驗(yàn)結(jié)果證明,利用輕量級(jí)模型Squeezenet與Efficientnet可以有效的減少訓(xùn)練的參數(shù).其中squeezenet為10.1 M,Efficientnet為32.8 M.
在眾多的遷移學(xué)習(xí)案例中,大都通過使用源域與目標(biāo)域中特征,任務(wù)以及模型的相似性,遷移到對(duì)目標(biāo)域的學(xué)習(xí)上.與傳統(tǒng)的深度學(xué)習(xí)相比,遷移學(xué)習(xí)具備以下優(yōu)點(diǎn):①減少對(duì)低維特征的學(xué)習(xí)時(shí)間;②提高學(xué)習(xí)效率加快收斂速度;③有著更高的準(zhǔn)確率.
深度學(xué)習(xí)模型的遷移學(xué)習(xí)有3種,其中Fine-tune[11]是最簡(jiǎn)單快捷的方法.Fine-tune通過修改預(yù)訓(xùn)練模型結(jié)構(gòu),以及選擇性的載入預(yù)訓(xùn)練模型的權(quán)重來達(dá)到快速訓(xùn)練模型的效果.本文利用公開的大型數(shù)據(jù)集Imagenet訓(xùn)練Squeezenet網(wǎng)絡(luò)得到預(yù)訓(xùn)練模型,再利用Fine-tune的方法對(duì)預(yù)訓(xùn)練模型進(jìn)行修改.源域?yàn)镮magenet目標(biāo)域?yàn)镻lantVillage,針對(duì)源域的一些形狀特征、紋理特征進(jìn)行先驗(yàn)學(xué)習(xí),減少對(duì)目標(biāo)域中對(duì)低維特征的學(xué)習(xí),進(jìn)而加快學(xué)習(xí)速率.
運(yùn)用Fine-tune訓(xùn)練squeezenet1_0模型流程如圖6.數(shù)據(jù)增強(qiáng)包含圖像的裁剪,水平旋轉(zhuǎn)以及垂直旋轉(zhuǎn)等.預(yù)處理是將圖片轉(zhuǎn)換成Tensor格式,為pytorch的數(shù)據(jù)處理做準(zhǔn)備.微調(diào)的過程是將Last-linear進(jìn)行修改,以及加入Global avgpool[12]層.訓(xùn)練的超參數(shù)如表1所示.
圖6 Fine-tune流程圖
表1 遷移學(xué)習(xí)超參數(shù)設(shè)置
同理在對(duì)Efficientnet-B0模型Fine-tune訓(xùn)練中,修改最后一層的參數(shù)以及加入dropout層也取得了較好的結(jié)果.
實(shí)驗(yàn)在ubuntu服務(wù)器上訓(xùn)練,使用GeForce RTX 2080Ti GPU進(jìn)行加速訓(xùn)練.所有的實(shí)驗(yàn)由pytorch框架實(shí)現(xiàn),實(shí)驗(yàn)數(shù)據(jù)利用大型的公開數(shù)據(jù)集Imagenet以及PlantVillage數(shù)據(jù)集.在邊緣計(jì)算器jetson nano上部署模型使用fps、召回率、準(zhǔn)確率以及F1分?jǐn)?shù)來作為模型性能的指標(biāo).本實(shí)驗(yàn)使用不同比例的數(shù)據(jù)驗(yàn)證模型的識(shí)別性能,結(jié)果表明,模型具備一定的可靠性.
PlantVillage數(shù)據(jù)集由14種植物共 54309 張健康和不健康的葉片圖像組成,26種常見植物疾病每個(gè)類別最少的葉片張數(shù)為Potato___healthy只有152張,最多的為Orange___Haunglongbing共5 507張.
圖7是采用遷移學(xué)習(xí)和未采用遷移學(xué)習(xí)進(jìn)行squeezenet1_0模型訓(xùn)練的準(zhǔn)確率及損失對(duì)比曲線,結(jié)果表明在源域與目標(biāo)域中紋理特征有相關(guān)性時(shí),使用遷移學(xué)習(xí)可以獲得更高的開始、更快的收斂速度和更高的準(zhǔn)確率.訓(xùn)練模型趨于收斂,最終準(zhǔn)確率穩(wěn)定在96.85%(即圖中藍(lán)色曲線),取得了較好的分類結(jié)果.準(zhǔn)確性是評(píng)估分類模型的一個(gè)不可靠的性能指標(biāo),因?yàn)楫?dāng)數(shù)據(jù)集中不同類別的樣本數(shù)量分布不均勻時(shí),會(huì)產(chǎn)生誤導(dǎo)性的結(jié)果.即難分類的類別會(huì)被容易分類的類別所改進(jìn).混淆矩陣[13]是分類模型對(duì)每個(gè)分類類別的準(zhǔn)確程度.訓(xùn)練結(jié)果最優(yōu)的混淆矩陣圖如圖8顯示,Raspberry-healthy、Strawberry-leaf-scorch和Cherry-healthy病害識(shí)別的準(zhǔn)確率為100%,在分類上不干擾其他類型的葉部病害.而Apple-cedar-rust、Grape-black-rot和Corn-spotgray-leaf-spot準(zhǔn)確率較低,會(huì)降低分類模型的準(zhǔn)確率.
圖7 準(zhǔn)確率及損失對(duì)比曲線
圖8 混淆矩陣
圖8中,0至37分別為PlantVillage數(shù)據(jù)集中的38種檢測(cè)分類標(biāo)簽,分別對(duì)應(yīng)Corn-northern-leaf-blight、Corn-healthy、Potato-early-blight、Blueberry-healthy、Corn-common-rust、Cherry-powdery-mildew、Grape-black-rot、Tomato-healthy、Squash-powdery-mildew、Potato-healthy、Strawberry-healthy、Grape-esca、Raspberry-healthy、Apple-black-rot、Tomato-target-spot、Apple-healthy、Corn-spotgray-leaf-spot、Orange-huanglongbing、Tomato-early-blight、Soybean-healthy、Grape-healthy、Apple-scad、Grape-leaf-blight、Tomato-late-blight、Tomato-spider-mites、Tomato-bacterial-spot、Apple-cedar-rust、Peach-bacterial-spot、Tomato-yellow-leaf-curl-virus、Tomato-leaf-mold、Pepper-bell-bacterial-spot、Peach-healthy、Strawberry-leaf-scorch、Pepper-bell-healthy、Potato-late-blight、Tomato-septoria-leaf-spot、Tomato-mosaic-virus、Cherry-healthy.
表2顯示如式(1)所示某個(gè)類i的預(yù)測(cè)準(zhǔn)確率:
表2 部分類別的準(zhǔn)確率,召回率,F(xiàn)1分?jǐn)?shù)
表2 各個(gè)CNN模型在jetson nano的Fps比較
(1)
同理某個(gè)類別的召回率如式(2)所示:
(2)
單一類別的F1分?jǐn)?shù)利用上面計(jì)算出的單個(gè)類別準(zhǔn)確率和召回率,見式(3):
(3)
再將各個(gè)類別的和加起來計(jì)算平均準(zhǔn)確率以及平均召回率和F1分?jǐn)?shù).經(jīng)計(jì)算平均分類精度為96.85%,平均召回率為96.73%,平均F1分?jǐn)?shù)為96.79%.
不同模型的模型大小比較以及在jetson nano上Fps的比較見表2.在表格中可以直觀的觀察到,CNN模型越大,CNN擁有的參數(shù)越多.由于VGG16[14]、AlexNet模型使用全連接層作為最后的結(jié)構(gòu)導(dǎo)致訓(xùn)練模型參數(shù)量增多,導(dǎo)致訓(xùn)練模型大小分別為1.1G、489.4M.其中訓(xùn)練出的Vgg16模型由于參數(shù)量過大無法在jetson nano上部署運(yùn)行.相反的,Squeezenet1_0采用模塊化設(shè)計(jì)以及采用了Global avgpool可以使得縮短訓(xùn)練時(shí)間和參數(shù)記憶要求,提高模型的泛化能力.最后訓(xùn)練出的模型的參數(shù)降低到10.1M,為模型部署在移動(dòng)端做好準(zhǔn)備.
本文利用輕量級(jí)模型Squeezenet1_0用于邊緣計(jì)算器jetson nano針對(duì)不同植物葉片病害的識(shí)別和分類.基于Squeezenet1_0的輕量級(jí)模型,利用遷移學(xué)習(xí)的方法來對(duì)植物樹葉病害的識(shí)別和分類,提高模型在植物葉部病害數(shù)據(jù)集上的分類精度.與從頭訓(xùn)練對(duì)比提高了5%的識(shí)別精度.此外,利用混合訓(xùn)練的訓(xùn)練方法增高訓(xùn)練精度.該方法在植物葉部病害測(cè)試集上取得了96.85%的平均分類準(zhǔn)確率.與其他一些CNN方法相比,它在模型大小上有明顯的優(yōu)勢(shì),對(duì)識(shí)別不同植物葉片的不同病害表現(xiàn)出良好的魯棒性.在模型部署到j(luò)etson nano上可以做到存儲(chǔ)空間小,實(shí)時(shí)性好等優(yōu)點(diǎn).在后續(xù)的發(fā)展上加大數(shù)據(jù)集的收集,利用遷移學(xué)習(xí)以及CNN神經(jīng)網(wǎng)絡(luò)開發(fā)一個(gè)基于網(wǎng)頁以及線下APP的病害識(shí)別系統(tǒng),應(yīng)用于實(shí)際的農(nóng)作物生產(chǎn).