王 冠,王建新,孫 鈺
(1. 北京林業(yè)大學(xué) 信息學(xué)院,北京 100083;2. 北京航空航天大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,北京 100191)
植物病害是導(dǎo)致現(xiàn)代農(nóng)林業(yè)減產(chǎn)的主要原因,及時(shí)準(zhǔn)確的植物病害識(shí)別技術(shù)是實(shí)施有效防治的關(guān)鍵。在實(shí)際生產(chǎn)中,植物病害識(shí)別主要依靠人工肉眼觀察及經(jīng)驗(yàn)判斷,需要人們?cè)趯?shí)地進(jìn)行持續(xù)監(jiān)測(cè)[1?2]。這種人工評(píng)估方法耗時(shí)費(fèi)力且具有一定的主觀性,阻礙了現(xiàn)代農(nóng)林業(yè)的快速發(fā)展,因此,快速準(zhǔn)確的植物病害自動(dòng)識(shí)別成為了精準(zhǔn)農(nóng)業(yè)、高通量植物表型和智能溫室等領(lǐng)域的研究熱點(diǎn)[3?4]?;趫D像處理的植物病害識(shí)別方法得到了廣泛的研究和應(yīng)用。早期的識(shí)別過程需要從圖片中分割病斑,人工提取病斑特征,再利用機(jī)器學(xué)習(xí)算法對(duì)特征進(jìn)行分類。HIARY等[5]提取病斑的紋理特征,采用k-means聚類算法和人工神經(jīng)網(wǎng)絡(luò)(artificial neural network,ANN)對(duì)5種植物病害進(jìn)行識(shí)別,準(zhǔn)確率達(dá)94%。TIAN等[6]提出用基于支持向量機(jī)(support vector machine,SVM)的多分類器識(shí)別小麥Triticum aestivum葉部病害。秦豐等[7]對(duì)4種苜蓿Medicago葉部病害進(jìn)行識(shí)別研究,分析比較了多種分割方法、特征選擇和分類方法。雖然以上方法在特定場(chǎng)景取得了較好效果,但仍無法實(shí)現(xiàn)病害的現(xiàn)場(chǎng)實(shí)時(shí)診斷。這些方法極大程度上基于閾值的病斑分割算法,對(duì)亮度、物體形態(tài)和遮擋程度都非常敏感[8?9],都只適合背景單一且對(duì)比度高的掃描式圖像。此外,特征提取和選擇復(fù)雜耗時(shí),僅局限于有限幾種病害,難以處理復(fù)雜背景的大數(shù)據(jù)。近年來,深度學(xué)習(xí)在計(jì)算機(jī)視覺領(lǐng)域取得重大突破。深度卷積網(wǎng)絡(luò)神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)可在大數(shù)據(jù)中自動(dòng)端到端提取特征,避免了人工圖像分割和特征工程[10]。MOHANTY等[11]針對(duì)PlantVillage數(shù)據(jù)集[11]54 306張植物病害圖像,使用AlexNet[12]和GoogLeNet[13]識(shí)別38種植物病害。孫俊等[14]在同樣的數(shù)據(jù)集上,將AlexNet進(jìn)行改進(jìn),提出一種批歸一化與全局池化相結(jié)合的識(shí)別模型。龍滿生等[15]采用參數(shù)精調(diào)的遷移學(xué)習(xí)方式訓(xùn)練AlexNet,用于油茶Camellia oleifera病害圖像識(shí)別。張建華等[16]基于改進(jìn)的VGG16模型,通過遷移學(xué)習(xí)實(shí)現(xiàn)自然條件下棉花Anemone vitifolia病害圖像分類。DECHANT等[17]提出了集成多個(gè)CNN的方法,實(shí)現(xiàn)玉米Zea mays大斑病圖像的高精度識(shí)別。PICON等[18]利用深度殘差網(wǎng)絡(luò)ResNet對(duì)3種早期小麥病害進(jìn)行識(shí)別,改善了復(fù)雜背景下的病害識(shí)別率。通常深度學(xué)習(xí)模型部署在云平臺(tái),需要將拍攝圖像上傳至云平臺(tái)進(jìn)行識(shí)別。但這種方法嚴(yán)重依賴高速的4G/5G無線網(wǎng)絡(luò)和強(qiáng)大的云平臺(tái),不僅無法覆蓋廣大偏遠(yuǎn)農(nóng)田林地,長(zhǎng)時(shí)間大范圍的上傳與識(shí)別還導(dǎo)致能耗、流量及云服務(wù)成本大幅上漲,限制了物聯(lián)網(wǎng)的建設(shè)規(guī)模。然而,目前的監(jiān)控設(shè)備借助低成本低功耗加速芯片,即可支持邊緣計(jì)算,僅在發(fā)現(xiàn)病害時(shí)通過低功耗廣覆蓋的NBIoT網(wǎng)絡(luò)[19]上報(bào),可顯著降低網(wǎng)絡(luò)及云服務(wù)成本,促進(jìn)大規(guī)模的農(nóng)林業(yè)物聯(lián)網(wǎng)普及。但現(xiàn)有的CNN模型計(jì)算量和參數(shù)量過大,不適用于邊緣部署。輕量級(jí)模型MobileNet[20]在速度和精度兩者間達(dá)到了一個(gè)較好的均衡,但其目標(biāo)平臺(tái)是手機(jī)等高端嵌入式平臺(tái),參數(shù)量及運(yùn)算量仍超過PaddlePi等廉價(jià)邊緣設(shè)備的承受能力。近年來,學(xué)術(shù)界也提出了多種模型壓縮方法。模型通道剪枝[21]剪裁掉模型一部分冗余或低權(quán)重的卷積核,減少模型的參數(shù)量。量化[22]將模型由32 bit浮點(diǎn)數(shù)轉(zhuǎn)化為定點(diǎn)整數(shù),減少模型參數(shù)占用的空間。然而上述壓縮方法僅應(yīng)用于ResNet等重量級(jí)模型,尚未對(duì)MobileNet等輕量級(jí)模型壓縮進(jìn)行優(yōu)化,而且這些壓縮方法彼此相互獨(dú)立,未能聯(lián)合使用實(shí)現(xiàn)模型的深度壓縮。為解決上述問題,本研究提出了面向邊緣計(jì)算的植物病害識(shí)別模型構(gòu)建方法,主要貢獻(xiàn)為:①首次針對(duì)輕量級(jí)模型MobileNet實(shí)現(xiàn)深度壓縮。②通過聯(lián)合通道剪枝、量化等多種模型壓縮方法,得到了深度壓縮的輕量級(jí)邊緣端模型,可在廉價(jià)邊緣節(jié)點(diǎn)運(yùn)行。③將模擬學(xué)習(xí)方法[23]與量化相結(jié)合,實(shí)現(xiàn)模型壓縮的同時(shí),提升識(shí)別效果,最后得到的邊緣端模型可達(dá)到與原模型相近的識(shí)別準(zhǔn)確率。
本研究使用PlantVillage植物病害數(shù)據(jù)集。PlantVillage既包含單一背景下的植物葉片掃描式圖像,也收錄自然背景下的植物葉片圖像,包括葉片重疊、陰影和土壤干擾等情形。截至目前已收集了87 280張圖像,包括25種植物和29種病害組成的58類植物-病害組合(圖1)。
數(shù)據(jù)集按圖1所示的編號(hào)將各種葉片歸類并制作標(biāo)簽。隨機(jī)抽取數(shù)據(jù)集中60%圖像作為訓(xùn)練集,剩余的40%作為測(cè)試集。單一背景圖像與自然背景圖像使用相同的分割比例。由于PlantVillage數(shù)據(jù)集包含從不同角度對(duì)同一葉片拍攝的多張圖像,因此相同葉片的圖像僅存在于訓(xùn)練集或測(cè)試集中。
圖 1 PlantVillage 數(shù)據(jù)集植物病害示例圖Figure 1 Example of plant disease images from the PlantVillage dataset
選擇輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)MobileNet[20]作為本研究的基準(zhǔn)模型。MobileNet模型將傳統(tǒng)的卷積分解為一個(gè)深度卷積 (depthwise convolution,DC)和一個(gè)卷積核為 1×1的逐點(diǎn)卷積 (pointwise convolution,PC),計(jì)算速度比傳統(tǒng)卷積快8~9倍,主要面向智能手機(jī)等高端嵌入式系統(tǒng)。為深度壓縮MobileNet,本研究提出了如圖2所示的面向邊緣計(jì)算的植物病害識(shí)別模型二階段構(gòu)建方法。
第1階段使用通道剪枝壓縮遷移學(xué)習(xí)訓(xùn)練的MobileNet模型。與從頭訓(xùn)練方法相比,遷移學(xué)習(xí)可以有效提升模型的識(shí)別準(zhǔn)確率。遷移學(xué)習(xí)是用ImageNet數(shù)據(jù)集上預(yù)訓(xùn)練好的參數(shù)初始化模型,然后在PlantVillage數(shù)據(jù)集上通過標(biāo)準(zhǔn)多分類損失函數(shù)優(yōu)化模型參數(shù)。最后使用基于L1范數(shù)的通道剪枝[21]精簡(jiǎn)低權(quán)值的卷積核,同時(shí)將該卷積核所有的輸入輸出連接從網(wǎng)絡(luò)中刪除,降低了模型計(jì)算量和存儲(chǔ)空間。
圖 2 面向邊緣計(jì)算的植物病害識(shí)別模型構(gòu)建方法:通道剪枝和量化模擬學(xué)習(xí)Figure 2 Plant disease recognition model for edge computing building pipeline: channel pruning and quantized mimic learning
第2階段對(duì)剪枝后的模型通過量化方法進(jìn)一步壓縮,得到輕量級(jí)的邊緣端模型。量化是將模型的權(quán)值和激活值由32 bit降低至8 bit,分為訓(xùn)練時(shí)量化和訓(xùn)練后量化。雖然訓(xùn)練時(shí)量化方法更適用于輕量級(jí)模型,但直接使用該方法壓縮剪枝后的
MobileNet模型仍會(huì)導(dǎo)致識(shí)別精度顯著下降,因此第2階段將模擬學(xué)習(xí)與訓(xùn)練時(shí)量化相結(jié)合,利用遷移學(xué)習(xí)的MobileNet監(jiān)督剪枝后模型的量化訓(xùn)練過程,實(shí)現(xiàn)量化模擬學(xué)習(xí),在模型壓縮的同時(shí)提升識(shí)別準(zhǔn)確率。
1.2.1 通道剪枝 模型通道剪枝采用均勻剪枝方法對(duì)MobileNet模型的分離卷積層進(jìn)行通道剪枝,即每層都減掉同樣比例的卷積核。依據(jù)需要減少模型的浮點(diǎn)運(yùn)算數(shù)量 (floating point operations, FLOPs)來確定每層的剪枝比例。計(jì)算各層中每個(gè)卷積核權(quán)值的絕對(duì)值和(即L1范數(shù)),L1范數(shù)越大,代表該卷積核對(duì)模型的貢獻(xiàn)越大,反之越小。每層按L1范數(shù)由高到低的順序排序卷積核,優(yōu)先剪枝L1范數(shù)低的卷積核。為實(shí)現(xiàn)模型的深度壓縮,需進(jìn)行較高比例的通道剪枝,分別對(duì)模型減掉70%、80%和90%的FLOPs。
1.2.2 量化模擬學(xué)習(xí) 通常訓(xùn)練時(shí),量化的損失函數(shù)是標(biāo)準(zhǔn)的多分類損失函數(shù)。量化模擬學(xué)習(xí)是用模擬學(xué)習(xí)損失函數(shù)作為訓(xùn)練時(shí)量化的損失函數(shù)。模擬學(xué)習(xí)方法使剪枝量化后模型的輸出特征盡量接近遷移學(xué)習(xí)訓(xùn)練的MobileNet輸出特征。利用2個(gè)輸出特征之間的L2范數(shù)作為模擬損失函數(shù),即:
式(1)中:Wt和Ws分別是遷移學(xué)習(xí)訓(xùn)練的MobileNet和剪枝量化后模型的權(quán)值矩陣,F(xiàn)(x;Wt)和F(x;Ws)分別表示這2個(gè)模型的輸出特征值。
剪枝量化后模型的輸出特征再經(jīng)Softmax歸一化得到預(yù)測(cè)類別概率,與分類標(biāo)簽比較后得到交叉熵,作為標(biāo)準(zhǔn)多分類損失函數(shù)Lclass(Ws)。模擬學(xué)習(xí)的完整損失函數(shù)就是分類損失函數(shù)與模擬損失函數(shù)的權(quán)重和:
式(2)中:α為平衡損失權(quán)重的超參數(shù)。相較于普通多分類問題的損失函數(shù),模擬學(xué)習(xí)方法可提供額外的監(jiān)督信息。
將訓(xùn)練時(shí)量化方法與模擬學(xué)習(xí)相結(jié)合,實(shí)現(xiàn)量化模擬學(xué)習(xí)具體的訓(xùn)練步驟為:①在訓(xùn)練的前向傳播中,將模型的權(quán)值wf和激活值af進(jìn)行量化得到定點(diǎn)值wq和aq,對(duì)于浮點(diǎn)數(shù)x具體的量化過程為:
xQ即為得到的量化值。其中:clamp函數(shù)對(duì)于輸入的變量a,b,c輸出為:
也就是將浮點(diǎn)數(shù)除以縮放因子Δ,再最近鄰取整,最后把范圍限制到1個(gè)區(qū)間內(nèi)。N與量化后整數(shù)類型占用的比特?cái)?shù)有關(guān)。本研究采用有符號(hào)8 bit整數(shù)類型,N=256。對(duì)于權(quán)值,每層權(quán)值的最大絕對(duì)值作為縮放因子。對(duì)于激活值,計(jì)算各訓(xùn)練批次激活的最大絕對(duì)值的滑動(dòng)平均值作為縮放因子。②計(jì)算剪枝量化后模型對(duì)遷移學(xué)習(xí)訓(xùn)練的MobileNet進(jìn)行模擬學(xué)習(xí)的損失函數(shù),即計(jì)算公式(2),得到損失值L(wq)。③后向傳播過程,利用步驟②得到的損失函數(shù)值對(duì)量化之后的權(quán)值求梯度,公式為。④用步驟③計(jì)算梯度去更新量化前的浮點(diǎn)值,也就是將模型的權(quán)值反量化回有誤差的浮點(diǎn)類型。公式為,其中:ν為學(xué)習(xí)率。因此,模型的后向傳播過程仍然是浮點(diǎn)數(shù)計(jì)算。⑤重復(fù)步驟①至步驟④,直至完成訓(xùn)練。最后再對(duì)模型按照步驟①量化,得到最終的邊緣端模型。
模型實(shí)現(xiàn)和訓(xùn)練采用的軟件環(huán)境為Ubuntu1 6.04操作系統(tǒng)和PaddlePaddle深度學(xué)習(xí)框架,硬件環(huán)境為 GPU 工作站,使用 NVIDIA Titan X 顯卡 (12 GB 顯存)和 AMD Ryzen 7 1700X 處理器 (32 GB 內(nèi)存)。采用模型的平均識(shí)別準(zhǔn)確率(accuracy)作為衡量模型精度的標(biāo)準(zhǔn)。同時(shí)為了更好地評(píng)價(jià)模型的魯棒性,將每類病害樣本分別進(jìn)行測(cè)試,計(jì)算每個(gè)類別的查準(zhǔn)率(precision)、查全率(recall)以及查全率與查準(zhǔn)率的加權(quán)平均分?jǐn)?shù),并在所有類別上求平均。
訓(xùn)練CNN模型需要對(duì)輸入圖片進(jìn)行預(yù)處理。首先,利用數(shù)據(jù)增廣技術(shù)對(duì)原圖像進(jìn)行變換,將訓(xùn)練圖像變換為256×256大小,然后再隨機(jī)剪枝成224×224,再進(jìn)行隨機(jī)水平翻轉(zhuǎn)和隨機(jī)垂直翻轉(zhuǎn)。該過程極大擴(kuò)充了訓(xùn)練數(shù)據(jù)集的多樣性,可提升CNN模型的準(zhǔn)確率,降低網(wǎng)絡(luò)過擬合的風(fēng)險(xiǎn)。之后,計(jì)算訓(xùn)練集的紅(R)、綠(G)、藍(lán)(B)3個(gè)顏色通道的均值和方差,所有圖像都減去該均值,除以方差,得到歸一化后的數(shù)據(jù)作為CNN的輸入,可加速訓(xùn)練過程收斂。對(duì)于測(cè)試集中的每一張圖片,需要變換至224×224大小,減去訓(xùn)練集各通道均值,除以其方差進(jìn)行歸一化后就可以輸入CNN模型進(jìn)行識(shí)別。
利用遷移學(xué)習(xí)訓(xùn)練MobileNet,使用ImageNet數(shù)據(jù)集預(yù)訓(xùn)練的參數(shù)初始化模型,采用批量訓(xùn)練的方法將訓(xùn)練集分為多個(gè)批次(batch),使用隨機(jī)梯度下降算法來實(shí)現(xiàn)模型優(yōu)化,批次大小為32,遍歷1次訓(xùn)練集中的所有圖片作為1個(gè)周期(epoch),共迭代50個(gè)周期,初始學(xué)習(xí)率為0.005,動(dòng)量值為0.9,之后每迭代20個(gè)周期就將學(xué)習(xí)率減小為原來的0.1倍。訓(xùn)練好的模型參數(shù)量為3.3 M,識(shí)別準(zhǔn)確率為96.23%,查準(zhǔn)率、查全率和加權(quán)平均分?jǐn)?shù)分別為96.62%、95.46%和95.75%。
研究不同壓縮率下本研究方法的有效性,使用不同的剪枝率,分別對(duì)模型減掉不同比例的FLOPs。結(jié)果表明:當(dāng)剪枝率低于60%時(shí),即使使用無模擬訓(xùn)練方法重新訓(xùn)練模型,得到的識(shí)別準(zhǔn)確率與原MobileNet模型差別很小,說明原模型在該數(shù)據(jù)集上具有較高的冗余性,只有當(dāng)剪枝率高于70%時(shí),才能體現(xiàn)不同壓縮方法表現(xiàn)的差距。因此,設(shè)置剪枝率為70%、80%和90%,對(duì)應(yīng)的模型參數(shù)量大小為0.91、0.58和0.23 M,模型的參數(shù)量壓縮了3.6、5.7、14.3倍,量化又將精度由32 bit降低至8 bit,壓縮率為4倍,得到的邊緣端模型的整體壓縮率分別為14.4、22.8和57.2倍。為快速恢復(fù)剪枝后模型精度,首先利用模擬學(xué)習(xí)損失函數(shù)進(jìn)行30個(gè)周期的32 bit浮點(diǎn)模型訓(xùn)練,使用隨機(jī)梯度下降算法優(yōu)化模型,批次大小為32,初始學(xué)習(xí)率為0.005。之后,每迭代15個(gè)周期就將學(xué)習(xí)率減小為原來的0.1倍。公式(2)的α值設(shè)置為1。之后再進(jìn)行20個(gè)周期的量化模擬學(xué)習(xí),學(xué)習(xí)率為0.005,公式(2)的α值為0.1,其余超參數(shù)值不變。訓(xùn)練結(jié)果如表1所示。
表1表明:整體壓縮率分別為14.4、22.8和57.2倍的邊緣端模型,識(shí)別準(zhǔn)確率分別為95.99%、95.55%和94.58%,與遷移學(xué)習(xí)訓(xùn)練的MobileNet模型相比僅下降了0.24%、0.68%和1.65%。同時(shí)查準(zhǔn)率、查全率和加權(quán)平均分?jǐn)?shù)值也表明邊緣端模型具有較高的魯棒性。
表 1 邊緣端模型植物病害識(shí)別結(jié)果Table 1 Plant disease recognition results of models on the edge
不同壓縮率的邊緣端模型在測(cè)試集的混淆矩陣如圖3所示。圖3列出了58個(gè)類中的每類被正確分類的比例(對(duì)角線上的值)和被誤識(shí)別為其他類的比例(非對(duì)角線上的值)。每類的編號(hào)與圖1一致。可以看出:邊緣端模型對(duì)不同植物的不同病害均具有較強(qiáng)的識(shí)別能力,但不同病害識(shí)別結(jié)果之間存在著較大的差異。58類病害中,這3個(gè)邊緣端模型的識(shí)別準(zhǔn)確率均超過90%的有43類,均超過80%的有51類,均超過70%的有55類。其中有11號(hào)哈密瓜健康葉、24號(hào)葫蘆霜霉病、25號(hào)葡萄健康葉、39號(hào)樹莓健康葉、46號(hào)草莓健康葉這5類的識(shí)別準(zhǔn)確率在3個(gè)模型均達(dá)到了100%。識(shí)別效果最差,在3個(gè)模型上識(shí)別準(zhǔn)確率幾乎均低于70%的病害是12號(hào)木薯褐斑病(3個(gè)模型識(shí)別率分別為48.15%、58.33%、48.15%),35號(hào)馬鈴薯健康葉(3個(gè)模型識(shí)別率分別為48.33%、33.33%、48.33%),21號(hào)黃瓜健康葉(3個(gè)模型識(shí)別率分別為67.92%、66.04%、77.36%)。這些病害大多都被誤識(shí)別為外形相似的其他病害,例如12號(hào)木薯褐斑病被誤識(shí)別為13號(hào)木薯綠螨病,35號(hào)馬鈴薯健康葉被誤識(shí)別為病斑較小的36號(hào)馬鈴薯晚疫病,21號(hào)黃瓜健康葉被誤識(shí)別為11號(hào)哈密瓜健康葉。
圖 3 邊緣端模型在測(cè)試集的混淆矩陣Figure 3 Confusion matrix on the test set of models on the edge
為進(jìn)一步測(cè)試邊緣端模型性能,分別在剪枝率70%、80%和90%的條件下,利用無模擬學(xué)習(xí)方法,即標(biāo)準(zhǔn)的多分類損失函數(shù)分別訓(xùn)練通道剪枝后模型和通道剪枝并量化模型,訓(xùn)練的超參數(shù)與本研究的訓(xùn)練超參數(shù)一致,與本研究模型進(jìn)行對(duì)比實(shí)驗(yàn)。從表2可見:在不同的剪枝率的情況下,本研究模型與其他模型壓縮方法相比均具有更高的模型壓縮率和識(shí)別準(zhǔn)確率,而且壓縮率越高,識(shí)別準(zhǔn)確率相比其他方法提升越明顯,能更好識(shí)別植物病害類別并部署于邊緣設(shè)備。
表 2 不同壓縮方法邊緣端模型植物病害識(shí)別結(jié)果Table 2 Plant disease recognition results of models on the edge compressed by different methods
本研究針對(duì)邊緣環(huán)境下計(jì)算資源的限制,在遷移學(xué)習(xí)訓(xùn)練的MobileNet模型基礎(chǔ)上,聯(lián)合使用2種壓縮算法降低模型參數(shù)量和運(yùn)算量,并結(jié)合模擬學(xué)習(xí)恢復(fù)識(shí)別精度,得到深度壓縮的邊緣端模型。在PlantVillage的實(shí)驗(yàn)結(jié)果表明:利用本研究方法對(duì)MobileNet進(jìn)行不同程度的深度壓縮,均能夠大大減少網(wǎng)絡(luò)計(jì)算量并保留原始識(shí)別能力。其中減少70%~90% FLOPs的模型,參數(shù)量壓縮了3.6~14.3倍,再經(jīng)過量化模擬學(xué)習(xí)后整體壓縮率為14.4~57.2倍,準(zhǔn)確率達(dá)到了95.99%~94.58%,較遷移學(xué)習(xí)訓(xùn)練的MobileNet模型僅降低0.24%~1.65%,同時(shí)還具有較高的魯棒性,對(duì)不同植物的不同病害均具有較強(qiáng)的識(shí)別能力。實(shí)驗(yàn)結(jié)果證明了該壓縮方法的可行性和有效性。
隨著PlantVillage數(shù)據(jù)集的不斷擴(kuò)展,深度學(xué)習(xí)模型能更多更準(zhǔn)地識(shí)別植物病害。本研究提出的模型構(gòu)建方法可平衡識(shí)別的速度和精度,滿足植物病害識(shí)別邊緣部署的需求。