劉 陽,高國琴
(1. 江蘇大學(xué)電氣信息工程學(xué)院,鎮(zhèn)江 212013;2. 南通職業(yè)大學(xué)電子信息學(xué)院,南通 226007)
準(zhǔn)確識(shí)別作物病害類別是作物病害防治的前提,而作物葉片病斑及其相關(guān)特征是判斷作物病害種類及其病害程度的重要依據(jù)[1-2]。傳統(tǒng)作物病害檢測(cè)主要依靠人工現(xiàn)場(chǎng)觀察判斷,存在主觀性強(qiáng)、工作強(qiáng)度大等不足,難以滿足大范圍作物病害實(shí)時(shí)監(jiān)測(cè)系統(tǒng)的需求[3]。
利用現(xiàn)代信息技術(shù)對(duì)作物病害種類進(jìn)行診斷和識(shí)別是一種先進(jìn)有效的手段。在作物病害識(shí)別研究方面,國內(nèi)外已有諸多報(bào)道,較多涉及馬鈴薯[4]、黃瓜[5-7]、西紅柿[8]、茄子[9]等單一作物的病害識(shí)別。這些傳統(tǒng)機(jī)器學(xué)習(xí)方法一般包含了圖像分割,特征提取和模式識(shí)別三個(gè)環(huán)節(jié),但其性能的優(yōu)劣非常依賴于對(duì)病斑特征的提取。如果不能準(zhǔn)確地提取病斑底層特征并選擇對(duì)分類貢獻(xiàn)率較高的特征來進(jìn)行分類,則分類性能會(huì)明顯下降。傳統(tǒng)機(jī)器學(xué)習(xí)方法的另一個(gè)缺點(diǎn)是針對(duì)某種具體作物病害識(shí)別任務(wù)生成的特征不僅費(fèi)時(shí)費(fèi)力,而且泛化性能較差。與之相比法,深度學(xué)習(xí)是一種端到端的方法,它以原始數(shù)據(jù)為輸入,以最終的任務(wù)為輸出,經(jīng)過層層抽取將原始數(shù)據(jù)逐層抽象為任務(wù)自身所需要的特征,避免了人為特征選取對(duì)分類性能的影響,也同時(shí)大幅增強(qiáng)了系統(tǒng)的魯棒性。
近年來隨著深度學(xué)習(xí)技術(shù)的興起,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)在作物葉片病害識(shí)別相關(guān)領(lǐng)域已獲得廣泛應(yīng)用。黃建平等[10]以PlantVillage公開數(shù)據(jù)集為試驗(yàn)數(shù)據(jù),設(shè)計(jì)了一種新穎的基于神經(jīng)結(jié)構(gòu)自動(dòng)學(xué)習(xí)并搜索的葉片病害識(shí)別方法;任守綱等[11]研究了一種基于反卷積引導(dǎo)的VGG網(wǎng)絡(luò)模型,能夠同時(shí)實(shí)現(xiàn)植物葉部病害種類識(shí)別與病斑分割;鮑文霞等[12]先利用深度語義分割網(wǎng)絡(luò)分割出麥穗圖像,然后設(shè)計(jì)多路卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行小麥赤霉病的識(shí)別;趙立新等[13]以棉花葉部病蟲害為研究對(duì)象,利用PlantVillage大數(shù)據(jù)集對(duì)改進(jìn)的AlexNet模型進(jìn)行預(yù)訓(xùn)練,然后使用自建棉花數(shù)據(jù)集微調(diào)并識(shí)別;姚青等[14]提出以RetinaNet為目標(biāo)檢測(cè)框架的水稻冠層2種害蟲為害檢測(cè)模型,包括采用基于ResNeXt101的特征提取網(wǎng)絡(luò)、組歸一化及改進(jìn)特征金字塔網(wǎng)絡(luò)等措施;余小東等[15]以AI challenger 2018公開數(shù)據(jù)集為研究對(duì)象,提出一種基于殘差網(wǎng)絡(luò)的農(nóng)作物病蟲害的檢測(cè)模型并進(jìn)行基于Android的APP設(shè)計(jì)與測(cè)試;楊森等[16]提出一種基于卷積神經(jīng)網(wǎng)絡(luò)與綜合特征詞袋模型相結(jié)合的馬鈴薯病害葉片識(shí)別方法;Nazki等[17]將生成對(duì)抗網(wǎng)絡(luò)GAN應(yīng)用于番茄的病害識(shí)別研究中。上述研究采用各自模型在取得較好研究效果的同時(shí)也存在網(wǎng)絡(luò)模型結(jié)構(gòu)復(fù)雜、參數(shù)龐大、運(yùn)算量要求高等不足,因此目前的研究也有趨向于模型結(jié)構(gòu)小型化、實(shí)用化。其中,孫俊等[18]通過使用批歸一化、空洞卷積與全局池化等措施,提出多種改進(jìn)的AlexNet模型,減少了模型所需參數(shù),提升了識(shí)別準(zhǔn)確率;郭小清等[19]基于AlexNet提出一種適用于移動(dòng)平臺(tái)的多感受野識(shí)別模型,針對(duì)AlexNet模型第一層設(shè)置不同尺寸的卷積核,綜合提取多種特征來表征病害的動(dòng)態(tài)變化;劉洋等[20]基于MobileNet與Incption V3提出2種輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)的作物病害分類模型,綜合考慮識(shí)別精度、運(yùn)算速度和模型尺寸等指標(biāo)進(jìn)行擇優(yōu)選擇,并實(shí)現(xiàn)手機(jī)端的葉片檢測(cè)。在前人研究基礎(chǔ)上,為進(jìn)一步探索病害葉片識(shí)別應(yīng)用中卷積網(wǎng)絡(luò)模型的輕量化研究,本文基于PlantVillage工程開源數(shù)據(jù)庫,對(duì)輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)SqueezeNet[21]架構(gòu)進(jìn)行分析,結(jié)合多種改進(jìn)步驟先后獲取5種病害葉片檢測(cè)模型,并運(yùn)用遷移學(xué)習(xí)和隨機(jī)梯度下降算法進(jìn)行訓(xùn)練,力圖在保持較高的識(shí)別性能的同時(shí)進(jìn)一步減少識(shí)別系統(tǒng)模型參數(shù)及其運(yùn)算量,以便應(yīng)用于資源受限的嵌入式實(shí)時(shí)系統(tǒng)。
本文以 PlantVillage工程開源數(shù)據(jù)庫(www. plantvillage.org)所收集的54306張葉片圖像作為試驗(yàn)數(shù)據(jù),其中包含14種植物共38類葉片(包含26類病害葉片和12類健康葉片),各類葉片數(shù)目從275到5357張不等,直接采用這樣的數(shù)據(jù)會(huì)產(chǎn)生嚴(yán)重的樣本分類不均衡問題,對(duì)模型訓(xùn)練過程造成困擾。由于學(xué)習(xí)算法設(shè)計(jì)的背后隱含的優(yōu)化目標(biāo)是數(shù)據(jù)集上的分類準(zhǔn)確度,因此樣本量大的類別因其累積訓(xùn)練誤差較大往往會(huì)主導(dǎo)訓(xùn)練過程,這將導(dǎo)致學(xué)習(xí)算法在不平衡數(shù)據(jù)上偏向于更多樣本的類別[22]。
抽樣是解決樣本分布不均衡的常用方法,包括過抽樣和欠抽樣兩種。過抽樣也稱為上采樣,它通過增加分類中少數(shù)類樣本的數(shù)量來實(shí)現(xiàn)樣本均衡。最直接的上采樣方法是簡(jiǎn)單復(fù)制少數(shù)類樣本形成多條記錄,其缺點(diǎn)是一旦樣本特征少則可能導(dǎo)致過擬合問題。為此,可以用數(shù)據(jù)增強(qiáng)的方法在少數(shù)類中加入隨機(jī)噪聲、干擾數(shù)據(jù)或通過一定規(guī)則產(chǎn)生新的合成樣本。欠抽樣也稱為下采樣,通過減少分類中多數(shù)類樣本的數(shù)量來實(shí)現(xiàn)樣本均衡。最直接的方法是隨機(jī)去掉一些多數(shù)類樣本來減小多數(shù)類的規(guī)模,其缺點(diǎn)是會(huì)丟失多數(shù)類樣本中的一些重要信息??傮w上,過抽樣方法應(yīng)用更加廣泛。
本文采用開源的Python庫imgaug(https://github.com/ aleju/imgaug)對(duì)樣本量較少的類別進(jìn)行數(shù)據(jù)增強(qiáng)。增強(qiáng)的方法包括水平鏡像翻轉(zhuǎn)、垂直鏡像翻轉(zhuǎn)、隨機(jī)截取、加噪聲、改變亮度和對(duì)比度等,并將尺寸歸一化至224×224像素。文中原始PlantVillage工程樣本在經(jīng)過欠采樣和數(shù)據(jù)增強(qiáng)后,各類葉片的樣本總數(shù)增加到73327張,本文隨機(jī)選取其中的80%作為訓(xùn)練集,剩下的20%作為測(cè)試集,其中38個(gè)類別分別標(biāo)注為C1~C38。部分增強(qiáng)后的樣本示例如圖1所示。
近年來卷積神經(jīng)網(wǎng)絡(luò)的層數(shù)不斷增加,從7層的AlexNet[23]到 16 層的 VGGNet[24],再到 22 層的GoogleNet[25]、152層的ResNet[26],更有上千層的復(fù)雜網(wǎng)絡(luò),雖然網(wǎng)絡(luò)性能得到了提高,但隨之而來的就是效率問題。效率問題主要是指模型存儲(chǔ)及模型預(yù)測(cè)計(jì)算量問題,只有解決效率問題,才能讓CNN走出實(shí)驗(yàn)室,更廣泛地應(yīng)用于日常生活當(dāng)中。對(duì)此,通常的方法是在已經(jīng)訓(xùn)練好的模型上進(jìn)行壓縮,使網(wǎng)絡(luò)攜帶更少的參數(shù),從而解決內(nèi)存及速度問題。相比之下,輕量化模型設(shè)計(jì)則是另辟蹊徑,其主要思想在于設(shè)計(jì)更高效的“網(wǎng)絡(luò)計(jì)算方式”從而使網(wǎng)絡(luò)參數(shù)減少的同時(shí)不過多損失網(wǎng)絡(luò)性能。本文主要研究了輕量級(jí)卷積網(wǎng)絡(luò)SqueezeNet[21],并在其基礎(chǔ)上提出了多種改進(jìn)模型以滿足葉片病害識(shí)別的任務(wù)需求。經(jīng)典SqueezeNet內(nèi)部參數(shù)如表1所示,圖2為其直觀的結(jié)構(gòu)圖,方便與后續(xù)改進(jìn)結(jié)構(gòu)的對(duì)照。
表1 SqueezeNet的內(nèi)部參數(shù) Table 1 Internal parameters of SqueezeNet
如圖2所示,該架構(gòu)中共有3個(gè)最大池化層分別標(biāo)識(shí)為池化層A、B和C。每通過一個(gè)池化層,圖像的大小就變?yōu)樵瓉淼囊话胍詼p少計(jì)算量。卷積層10采用1×1的卷積核,輸入通道為512,輸出通道為1000,輸出圖像大小為14×14像素。卷積層10的輸出經(jīng)過全局平均池化,并通過softmax計(jì)算得到1000種分類的概率,其中全局平均池化是指將每個(gè)輸出通道特征圖求取平均值,使得該層輸出特征維數(shù)等于該層的輸出通道數(shù)。
如圖3所示,SqueezeNet的核心在于fire模塊,它由兩部分構(gòu)成,分別是squeeze層和expand層。通常定義一個(gè)fire模塊為fire(M,N,E1,E2),其中M、N分別代表squeeze層的輸入、輸出通道數(shù),E1、E2分別代表expand層中1×1、3×3卷積核的輸出通道數(shù)目。
圖3中,squeeze層是一個(gè)卷積核為1×1的卷積層,它把輸入通道從M變到N,通常N小于M,squeeze層主要用來對(duì)輸入通道進(jìn)行壓縮,以減少網(wǎng)絡(luò)的計(jì)算量;expand層是包含1×1和3×3兩種卷積核的卷積層,1×1卷積核、3×3卷積核分別將輸入通道從N擴(kuò)張成E1與E2,最后把1×1和3×3得到的特征圖進(jìn)行拼接,得到輸出通道為(E1+E2)的特征圖。
為引入非線性并使深度學(xué)習(xí)模型產(chǎn)生強(qiáng)大的表示能力,模型中在每個(gè)卷積層后都添加了激活函數(shù)ReLU[27]。為了避免網(wǎng)絡(luò)過擬合的發(fā)生,對(duì)全連接層引入了隨機(jī)失活(dropout)[28]。隨機(jī)失活就是對(duì)某層的每個(gè)神經(jīng)元,在訓(xùn)練階段均以概率p隨機(jī)將該神經(jīng)元的權(quán)重置為0。在測(cè)試階段所有神經(jīng)元均為激活態(tài),但其權(quán)重須乘上系數(shù)(1-p)以保證訓(xùn)練和測(cè)試階段各自權(quán)重?fù)碛邢嗤钠谕怠?/p>
改造上述網(wǎng)絡(luò),并利用其對(duì)PlantVillage開源葉片數(shù)據(jù)進(jìn)行分類。由于只需要識(shí)別26類病害及12類健康葉片,兩者合計(jì)38類,因此將圖2中卷積層10的輸出通道數(shù)從1000修改為38,將此僅修改卷積層10參數(shù)的模型標(biāo)識(shí)為改進(jìn)模型0,并將其作為后續(xù)改進(jìn)的基礎(chǔ)模型。
改進(jìn)模型0的參數(shù)可以用經(jīng)典的SqueezeNet的網(wǎng)絡(luò)參數(shù)進(jìn)行初始化。這里采用遷移學(xué)習(xí)方法,遷移學(xué)習(xí)就是將一個(gè)龐大而復(fù)雜的模型所學(xué)習(xí)到的知識(shí),通過一定的技術(shù)手段遷移到另一模型上??紤]到大部分?jǐn)?shù)據(jù)或任務(wù)是存在相關(guān)性的,所以通過遷移學(xué)習(xí)可以將已經(jīng)學(xué)到的模型參數(shù)通過某種方式來分享給新模型從而加快并優(yōu)化模型的學(xué)習(xí),而不需要從零開始。
注意到經(jīng)典SqueezeNet模型是對(duì)ImageNet數(shù)據(jù)庫進(jìn)行分類的,該數(shù)據(jù)庫包含了1000類物體。而本文只需要對(duì)38類葉片進(jìn)行分類,對(duì)于相對(duì)簡(jiǎn)單些的任務(wù)并不需要很深的網(wǎng)絡(luò)結(jié)構(gòu)。為了最大限度減少模型參數(shù)并保持網(wǎng)絡(luò)在PlantVillage數(shù)據(jù)庫上的性能,對(duì)改進(jìn)模型0做修改:移除fire模塊6、7和8,并把fire模塊5的參數(shù)修改為fire(256,32,256,256),即把該模塊中squeeze層的輸出通道由48減少為32,同時(shí)把expand層的輸出通道由192增加為256,修改后的網(wǎng)絡(luò)結(jié)構(gòu)如圖4a所示,文中將其標(biāo)識(shí)為改進(jìn)模型1。
注意到3×3的卷積核共有9個(gè)參數(shù),進(jìn)行一次卷積需要進(jìn)行9次浮點(diǎn)乘法和1次浮點(diǎn)加法運(yùn)算。而1×1的卷積核只有1個(gè)參數(shù),進(jìn)行一次卷積運(yùn)算只需要進(jìn)行1次浮點(diǎn)乘法運(yùn)算,所以1×1的卷積運(yùn)算量和參數(shù)量都約是3×3卷積的1/9[20]。
基于此原理,考慮把部分3×3的卷積核用1×1的卷積核來代替,這樣既可以減少參數(shù)數(shù)量,同時(shí)又可以大幅減少計(jì)算量。改進(jìn)模型2就是把改進(jìn)模型1中所有fire模塊expand層中1×1和3×3的卷積核數(shù)目比例按3∶1的重新分配,圖4b顯示了改進(jìn)模型2的架構(gòu)。
下面以經(jīng)典SqueezeNet結(jié)構(gòu)中的fire模塊1為例進(jìn)行expand層中2種卷積核數(shù)目重新分配及其計(jì)算量減少的說明。
圖5a顯示的是原始的fire模塊1。其Expend層分為左邊的卷積核為1×1的分支和右邊的卷積核為3×3的分支,每個(gè)分支都各有64個(gè)輸出通道。Fire模塊1的輸出為這兩個(gè)分支的拼接,總通道數(shù)為128。圖5b顯示的是改進(jìn)后的fire模塊1。主要的改進(jìn)在于把右分支中卷積核為3×3的輸出通道由64減少為原來的一半(32個(gè)輸出通道)。為了保證總的輸出通道數(shù)不變,把這減少的32個(gè)輸出通道移到左邊的卷積核為1×1的分支上。經(jīng)過改進(jìn)后fire模塊1的輸入與輸出通道數(shù)保持不變,expend層的參數(shù)由原來的10240個(gè)減少到了6144個(gè),大幅減少了40%;expend層的運(yùn)算量也由原來的 32.1 MFLOPs(Million Floating-point Operations,MFLOPs,百萬次浮點(diǎn)運(yùn)算)減少到了19.2 MFLOPs。
注意到改進(jìn)模型2中共有5個(gè)fire模塊(最大池化層A、B中間與最大池化層B、C中間各有2個(gè),最后1個(gè)位于最大池化層C和卷積層10之間)。原始圖片大小為224×224像素,通過第1個(gè)卷積層后,特征圖大小變?yōu)?12×112像素;通過最大池化層A后,特征圖大小變?yōu)?6×56像素;通過最大池化層B后,特征圖大小變?yōu)?8×28像素;通過最大池化層C后,特征圖大小變?yōu)?4×14像素。很顯然,特征圖的大小與深度學(xué)習(xí)架構(gòu)的運(yùn)算量有著緊密的關(guān)系。對(duì)fire模塊2即fire(128,16,96,32),如將它從最大池化層A、B之間移動(dòng)到最大池化層B、C之間,此時(shí)特征圖大小變?yōu)橐苿?dòng)前的1/4,因此相應(yīng)計(jì)算量也會(huì)減少至移動(dòng)前的1/4?;诖怂枷耄诟倪M(jìn)模型2的基礎(chǔ)上,把fire模塊2從最大池化層A、B之間移動(dòng)到最大池化層B、C之間,提出改進(jìn)模型3;在改進(jìn)模型3的基礎(chǔ)上,再把fire模塊3、4從最大池化層B、C之間移動(dòng)到最大池化層C之后,提出改進(jìn)模型4。2種改進(jìn)模型如圖6所示。
試驗(yàn)軟件環(huán)境為Ubuntu 16.04 LTS 64位系統(tǒng),采用目前流行的PyTorch(https://pytorch.org/)深度學(xué)習(xí)開源框架。PyTorch是一個(gè)基于Torch的Python開源機(jī)器學(xué)習(xí)庫,它主要由Facebook的人工智能小組開發(fā),不僅能夠?qū)崿F(xiàn)強(qiáng)大的GPU加速,同時(shí)還支持動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)。計(jì)算機(jī)內(nèi)存為16GB,搭載Intel Core i5-8300 CPU,GPU采用英偉達(dá)的GTX1050Ti對(duì)深度學(xué)習(xí)模型進(jìn)行加速。
試驗(yàn)中訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)的批次大小都設(shè)置為32,遍歷一次訓(xùn)練集中的所有圖片稱作一次迭代(epoch)。由于采用了遷移學(xué)習(xí)技術(shù),模型收斂速度很快,因而每個(gè)模型都只迭代了30次。訓(xùn)練模型時(shí)采用了隨機(jī)梯度下降優(yōu)化算法(Stochastic Gradient Descent,SGD)。為防止過擬合,采用了隨機(jī)失活(dropout)技術(shù),其參數(shù)p設(shè)置為0.5,初始學(xué)習(xí)率設(shè)置為0.01,每7次迭代(epoch)學(xué)習(xí)率減小為原來的10%。
本文訓(xùn)練具體采用anaconda環(huán)境,框架是pytorch10,訓(xùn)練30個(gè)epoch,每個(gè)epoch有3666次迭代,訓(xùn)練過程與結(jié)果分別如圖7、圖8所示。
混淆矩陣定義中的變量定義如下:
TP,真實(shí)值為正且預(yù)測(cè)也為正的數(shù)量;TN,真實(shí)值為負(fù)且預(yù)測(cè)也為負(fù)的數(shù)量;FP,真實(shí)值為負(fù)但預(yù)測(cè)為正的數(shù)量;FN,真實(shí)值為正但預(yù)測(cè)為負(fù)的數(shù)量。
查準(zhǔn)率(Precision)定義如下
查準(zhǔn)率是分類器預(yù)測(cè)的正樣本中預(yù)測(cè)正確的比例,取值范圍為[0,1],取值越大表示模型預(yù)測(cè)能力越好。
查全率(recall)定義如下;
查全率又稱召回率,是分類器預(yù)測(cè)正確的正樣本占所有正樣本的比例,取值范圍為[0,1],取值越大模型預(yù)測(cè)能力越好。
準(zhǔn)確率(accuracy,ACC)定義如下
在正、負(fù)樣本不平衡的情況下,準(zhǔn)確率這個(gè)評(píng)價(jià)指標(biāo)有較大缺陷,因此需要綜合運(yùn)用這3個(gè)指標(biāo)對(duì)算法模型進(jìn)行科學(xué)和全面的評(píng)價(jià)[22]。
利用ImageNet數(shù)據(jù)集對(duì)5種改進(jìn)模型進(jìn)行預(yù)訓(xùn)練,之后在PlantVillage訓(xùn)練數(shù)據(jù)集上進(jìn)行遷移學(xué)習(xí),測(cè)試集上的試驗(yàn)結(jié)果如表2所示。
由表2可知,改進(jìn)模型0與經(jīng)典SqueezeNet非常類似,擁有2個(gè)卷積層(卷積層1和卷積層10)和8個(gè)fire模塊,因此改進(jìn)后的5種模型中模型0的準(zhǔn)確率、查全率和查準(zhǔn)率都是最高的,但是其參數(shù)內(nèi)存需求及模型運(yùn)算量在所有模型里最多,分別達(dá)到了2.91 MB和272 MFLOPs。
表2 改進(jìn)模型的參數(shù)及性能 Table 2 Modified model parameters and performance
模型1在模型0的基礎(chǔ)上刪除了最后3個(gè)fire模塊,減少了網(wǎng)絡(luò)的深度,其內(nèi)存需求大幅減小到0.908 MB,運(yùn)算量也大幅減少到185 MFLOPs,準(zhǔn)確率為98.76%。這說明僅簡(jiǎn)單應(yīng)用遷移學(xué)習(xí)獲取的模型0結(jié)構(gòu)上存在一定程度的冗余,有著明顯的改進(jìn)空間。模型2是在模型1的基礎(chǔ)上用1×1的卷積核代替部分3×3的卷積核,其內(nèi)存需求進(jìn)一步減少到了620 kB,運(yùn)算量減少到131 MFLOPs,準(zhǔn)確率為98.46%。這說明按3∶1的關(guān)系重新調(diào)整expand層的1×1和3×3的卷積核數(shù)量后,網(wǎng)絡(luò)的性能僅有輕微的下降,但在節(jié)省參數(shù)內(nèi)存及模型運(yùn)算量上的收益卻相當(dāng)巨大。模型3、4在模型2的基礎(chǔ)上僅調(diào)整了fire模塊相對(duì)于池化層的位置。模型3的計(jì)算量減少到111 MFLOPs,準(zhǔn)確率為98.13%;模型4的計(jì)算量進(jìn)一步減少到76 MFLOPs,準(zhǔn)確率為96.25%,下降略顯明顯。這說明特征圖的大小對(duì)深度學(xué)習(xí)模型的性能有一定影響,在相對(duì)較大特征圖上進(jìn)行的特征抽取能在一定程度上改善網(wǎng)絡(luò)的性能。
總體上各改進(jìn)模型均表現(xiàn)較為優(yōu)異,雖然在性能指標(biāo)上依次呈現(xiàn)小幅下滑,但其參數(shù)內(nèi)存需求及模型運(yùn)算量卻依次呈現(xiàn)出明顯的逐級(jí)改善。綜合來看,模型3具有更高的性價(jià)比,因此將其作為本文最終的改進(jìn)結(jié)果。
表3顯示了采用改進(jìn)模型3在測(cè)試集38類測(cè)試圖片上的分類準(zhǔn)確率。
表3 Plant village測(cè)試集的分類準(zhǔn)確率 Table 3 Classification accuracy of Plant village test set
由表3可以看出錯(cuò)較高的類別主要為玉米灰斑病、玉米北方葉枯病、番茄早疫病和番茄晚疫病,其圖片如圖9所示,可以看出這2組葉片的相似度較高,一定程度上造成誤判。
由于文獻(xiàn)[18-20]采用了相同的PlantVillage工程開源數(shù)據(jù)進(jìn)行類似的模型輕量化研究,因此與本文方法具有一定的可比性,其中的方法均選自各自文獻(xiàn)中PC端的最優(yōu)或優(yōu)化后的模型進(jìn)行比較,其結(jié)果如表4所示。
表4 不同分類方法的主要性能比較 Table 4 Main performance comparisons of different classification methods
文獻(xiàn)[18]基于改進(jìn)的AlexNet結(jié)構(gòu),運(yùn)用多種技術(shù)手段獲取最優(yōu)模型4的技術(shù)指標(biāo)為:模型參數(shù)需求2.60 MB及平均識(shí)別準(zhǔn)確率、查全率和查準(zhǔn)率分別99.56%、99.41%、99.42%,四項(xiàng)性能指標(biāo)均接近并略好于本文基礎(chǔ)模型(模型0)的2.91 MB、99.29%、98.73%、98.78%。但本文最優(yōu)模型3是在基礎(chǔ)模型0上的改進(jìn),以較小幅度的性能犧牲進(jìn)一步換取較大幅度的模型參數(shù)(0.62 MB)及計(jì)算量的減少,而且本文模型設(shè)計(jì)過程更為簡(jiǎn)明方便。文獻(xiàn)[19]提出改進(jìn)的多尺度感受野AlexNet模型,采用部分PlantVillage工程開源數(shù)據(jù)結(jié)合自建圖像樣本進(jìn)行8種番茄葉片(7種病害加健康葉片)的識(shí)別研究并開發(fā)基于Android平臺(tái)的識(shí)別系統(tǒng)。其模型參數(shù)需求達(dá)29.9 MB,均遠(yuǎn)高于本文的5種改進(jìn)模型;其平均識(shí)別準(zhǔn)確率(該準(zhǔn)確率定義實(shí)際為召回率)為92.7%,均低于本文表2中的5種改進(jìn)模型,這或許與該研究樣本數(shù)量(8349張)明顯偏少及自建樣本質(zhì)量下降存在一定關(guān)系。文獻(xiàn)[20]在PC端采用MobileNet和Inception V32種輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)借助ImageNet數(shù)據(jù)集進(jìn)行遷移學(xué)習(xí),在PlantVillage數(shù)據(jù)集上取得95.02%和95.62%的平均識(shí)別率(該識(shí)別率定義實(shí)際也為召回率);在模型參數(shù)需求方面分別為17.1 MB與87.5 MB。這兩項(xiàng)主要指標(biāo)也均低于表2、表4中本文的5種改進(jìn)模型。上述結(jié)果表明,與已有相關(guān)研究相比,本文在輕量級(jí)網(wǎng)絡(luò)的基礎(chǔ)上進(jìn)一步提出的精簡(jiǎn)改進(jìn)模型具有更好的性價(jià)比與競(jìng)爭(zhēng)優(yōu)勢(shì),更加適合嘗試部署在嵌入式資源受限設(shè)備上。
圖10a給出了5種改進(jìn)模型的測(cè)試準(zhǔn)確率與迭代次數(shù)關(guān)系曲線,由于采用了遷移學(xué)習(xí),所有模型收斂迅速,其中模型0收斂最快,在第一次迭代后的準(zhǔn)確率就達(dá)到了93.7%。其他改進(jìn)模型在三次迭代后準(zhǔn)確率都達(dá)到了93%以上;圖10b給出了5種改進(jìn)模型的預(yù)測(cè)誤差與迭代次數(shù)的關(guān)系曲線,模型0、1、2和3在第七次迭代后的模型損失都一直穩(wěn)定保持在0.1以下水平。
圖11以蘋果為例,給出4種不同蘋果葉片的分類混淆矩陣??梢钥闯?,378張果瘡痂病葉片中有370張被正確識(shí)別,召回率為97.88%;373張黑腐病葉片中有371張被正確識(shí)別,召回率為99.46%;385張銹病葉片中有381張被正確識(shí)別,召回率為98.96%;329張健康葉片圖片中有327張被準(zhǔn)確識(shí)別,召回率為99.39%。這表明本文提出的模型具有較好的識(shí)別性能和魯棒性。
本文基于深度學(xué)習(xí)技術(shù),提出將輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于14類不同作物的38種不同病害葉片識(shí)別。在已有經(jīng)典輕量級(jí)SqueezeNet模型的基礎(chǔ)上,為進(jìn)一步適應(yīng)網(wǎng)絡(luò)規(guī)模小型化和計(jì)算過程快速化的需求進(jìn)行了改進(jìn),改進(jìn)后的模型在識(shí)別性能基本保持不變的情況下,在參數(shù)內(nèi)存需求和運(yùn)算量上體現(xiàn)出明顯的優(yōu)越性,其中最優(yōu)模型的參數(shù)內(nèi)存需求從經(jīng)典SqueezeNet的4.85 MB大幅減少到0.62 MB,模型計(jì)算量也從經(jīng)典SqueezeNet的360 MFLOPs大幅減少到111 MFLOPs,平均準(zhǔn)確率達(dá)到98.13%,平均查全率達(dá)到98.09%,平均查準(zhǔn)率達(dá)到97.62%,與已有相關(guān)研究相比,具有一定的比較優(yōu)勢(shì)。
本文提出的模型較好的平衡了參數(shù)內(nèi)存需求、網(wǎng)絡(luò)運(yùn)算量和網(wǎng)絡(luò)性能這3個(gè)指標(biāo),在大幅減少模型參數(shù)內(nèi)存要求和模型計(jì)算量的同時(shí)使模型的性能保持在了一個(gè)較高的水平,這有利于將卷積神經(jīng)網(wǎng)絡(luò)模型部署在移動(dòng)終端等嵌入式資源受限設(shè)備上,有助于實(shí)現(xiàn)對(duì)作物病害的實(shí)時(shí)準(zhǔn)確識(shí)別。下一步將在融入自然環(huán)境圖像數(shù)據(jù)的基礎(chǔ)上,嘗試將本文模型移植到手機(jī)平臺(tái),以測(cè)試本文模型對(duì)于作物病害的實(shí)時(shí)識(shí)別效果。