丁永軍 張晶晶 李民贊
(1.蘭州城市學院電子與信息工程學院, 蘭州 730070; 2.西北師范大學計算機科學與工程學院, 蘭州 730070;3.中國農業大學現代精細農業系統集成研究教育部重點實驗室, 北京 100083)
近年來,受連作障礙、病害等因素影響,蘭州百合產量和品質明顯下降。百合產量由之前的約2.25×104kg/hm2下降到1.50×104kg/hm2,獨頭率下降30%以上[1]。其中,灰霉病、鱗莖腐爛病是百合生產中的主要病害,發病率高達100%[2]。
隨著深度學習理論的不斷完善,在病蟲害檢測方面也取得了很多成果。主要有基于AlexNet[3]、VGGNet[4]、GoogleNet[5]、ResNet[6]、SqueezeNet[7]、Inception[8]、MobileNets[9]等經典CNN網絡架構的病蟲害識別研究,以及通過引入R-CNN、R-FCN、SSD[10]、參數共享反饋[11]、ShuffleNet Unit[12]、UnitedModel[13]、三通道卷積[14]等模塊,來優化網絡結構、提高病蟲害檢測精度及泛化能力的研究。文獻[15]引入遷移學習,實現了少量樣本條件下的病蟲害識別。文獻[16]對深度模型可視化進行病蟲害檢測機理研究。在實際生產環境中,圖像容易受噪聲、形變等影響,而且百合葉片呈狹長披針形,灰霉病斑容易粘連,堆放貯藏也給鱗莖腐爛病的檢測帶來不利影響。因此,上述研究很難直接應用于百合病害診斷。

圖1 圖像預處理示例Fig.1 Examples of image preprocessing
膠囊網絡于2017年由Geoffrey Hinton提出,出現了動態路由、期望最大化路由、堆疊膠囊自編碼器等一系列理論,在自動駕駛[17]、語義編碼[18]、醫學圖像分析[19]等領域都得到了成功應用。JIMENEZ-SANCHEZ等[20]研究表明,膠囊網絡對于處理樣本不均衡問題效果更優。NGUYEN等[21]研究發現,對VGG-16和膠囊網絡進行整合能有效降低過擬合、提高檢測精度。賈少鵬等[22]選用300幅番茄灰霉病圖像,構建卷積膠囊網絡,并進行病害識別,但并未研究模型抗干擾及膠囊尺寸對模型的影響。膠囊網絡的優勢在于“同變性”,即觀測對象在位置、旋轉、傾斜度、尺寸等方面發生的改變都可以由一組向量進行表達,可以有效抑制圖像噪聲、形變以及檢測物重疊等不利因素的影響。
本文以蘭州百合為研究對象,在VGG-16卷積網絡的基礎上,構建百合灰霉病及鱗莖腐爛病卷積膠囊識別網絡,從抗干擾能力、膠囊尺寸、時間線監控等多方面進行分析。
2018年11月及2019年7月,分別于蘭州七里河區黃峪鄉百合冷藏庫和蘭州榆中縣園子岔鄉,在自然光照條件下采集腐爛磷莖、健康磷莖、灰霉葉片、健康葉片圖像,又通過網絡收集相關圖像用于擴充圖像庫。最終共采集圖像2 427幅,其中腐爛磷莖482幅、健康磷莖685幅、灰霉葉片397幅、健康葉片863幅。
為解決所采集樣本中種類不均衡問題,采用圖像旋轉、水平平移、垂直平移、亮度調整、圖像縮放等數據增強技術進一步擴充圖像集,達到數據均衡、避免過擬合的目的。數據增強的實現借助Keras中的ImageDataGenerator模塊,最終每類圖像均包含2 250幅。圖1為4類圖像預處理示例。
將動態路由膠囊結構嵌入VGG-16深度卷積模型,替代3個全連接層,構造卷積膠囊網絡,用以實現百合病害識別。卷積膠囊網絡結構如圖2所示,整個網絡分為VGG和膠囊兩部分。

圖2 卷積膠囊結構Fig.2 Structure of convolutional capsule network
1.3.1VGG部分
VGG深度卷積模型由牛津大學視覺幾何組提出,具有局部連接、權值共享、參數精簡等特點。整個VGG結構中共使用4個池化窗口尺寸為2×2、滑動步長為2的Max pooling層,將特征圖減小為原尺寸的1/2,同時把13個卷積層分成5個模塊,每個模塊又由連續堆疊的2個或3個卷積層組成,每個卷積層使用3×3 的卷積核,提取多種尺度下的圖像特征。卷積過程中采用same padding模式,反復卷積和池化之后,5個模塊形成的特征圖尺寸分別為224×224×64、112×112×128、56×56×256、28×28×512、14×14×512。另外,對每個卷積層均使用ReLU激勵函數,引入非線性變換,以增強VGG模型的表達能力。
1.3.2膠囊部分
典型的膠囊網絡包含卷積層、主膠囊層和數字膠囊層。主膠囊層通過卷積將特征圖轉換成一組特定長度的向量。本文卷積膠囊網絡采用13層VGG卷積,得到規格為14×14×512的特征圖,在卷積膠囊網絡中使用Reshape層替代主膠囊層,形成12 544個長度為8的向量,通過squash函數對各個向量進行壓縮,生成一組方向不變的單位向量(u1,u2,…,ui)作為Reshape主膠囊層的輸出,即
(1)
Reshape主膠囊層與數字膠囊層間使用全連接方式,數字膠囊層中各向量均由Reshape主膠囊層的輸出向量動態路由得到,動態路由算法原理如圖3所示。

圖3 膠囊間的動態路由 Fig.3 Dynamic routing between capsules
ui對數字膠囊層中輸出膠囊vj的預測膠囊j|i為
j|i=Wijui
(2)
式中ui——Reshape主膠囊層第i個輸出向量
Wij——轉換矩陣
Reshape主膠囊層的匯總向量sj為
(3)
其中
(4)
式中cij——各預測膠囊的權重,其值反映了預測膠囊與輸出膠囊間的相似性
bij——預測膠囊i連接到輸出膠囊j的先驗概率,初始值為0,其值根據路由算法迭代更新,并更新權重cij
再將sj經過squash函數標準化后得到輸出向量vj。更新連接先驗概率bij及權重系數cij。
bij+j|ivj→bij→cij
進行下一輪迭代,計算出更新后的輸出向量vj,3次迭代后最終確定輸出向量,最后根據向量范數計算分類預測的概率。
利用間隔損失函數
Lk=Tkmax(0,m+-‖vk‖)2+
λ(1-Tk)max(0,‖vk‖-m-)2
(5)
式中Tk——分類指示,當k類存在時其值為1,否則為0
m+——懲罰假陽性上界
m-——懲罰假陰性下界
λ——比例系數
更新轉換矩陣Wij及卷積參數。試驗中取m+=0.9,m-=0.1,λ=0.5。
試驗平臺搭載IntelCXeon(R) CPU E5-2697 v3@2.60 GHz處理器,GPU為英偉達GTX 1080 Ti雙卡配置,64 GB系統內存,960 GB SSD固態硬盤。軟件測試環境為Ubuntu 16.04 LTS 64位操作系統,安裝Python 3.6、Tensorflow-GPU 1.8.0、Keras 2.2.4等深度學習框架。
將Geoffrey Hinton提出的膠囊網絡直接應用于百合病害診斷,模型精度為87.04%,原因在于模型僅使用256個9×9卷積核,未能多尺度對病害特征進行有效提取,但使用不同等級的噪聲圖像及模糊圖像進行模型評估時發現檢測精度始終保持在62.72%以上,說明膠囊結構的“同變特性”可以有效抑制圖像噪聲、形變及檢測物重疊等不利因素,用于模型抗噪測試的圖像示例如圖4所示。

圖4 模型抗干擾測試圖像Fig.4 Images for model anti-interference test
使用經典VGG-16模型進行百合病害診斷,模型精度為98.80%,使用不同等級的噪聲圖像進行模型評估時,其精度不斷衰減。
綜合上述兩種模型的優點,對本文提出的卷積膠囊網絡進行訓練和評估。為了加速網絡訓練,卷積膠囊網絡的卷積層參數采用VGG-16預訓練模型參數,即通過微調遷移學習方式僅更新轉換矩陣參數。從9 000幅圖像中隨機選取1 000幅作為測試集,其余部分用于訓練,又將整個訓練集按4∶1的比例隨機分為2部分,其中80%用于模型訓練,20%用于模型驗證,并確保每個訓練輪次中的各訓練批次均為隨機圖像子集。在訓練過程中使用Adam優化器,初始學習率設定為0.005,當連續5個訓練輪次模型性能不能得以提升,則學習率減至原學習率的0.5倍,一階矩指數衰減因子設為0.9,二階矩指數衰減因子設為0.999。同時為了驗證提出模型的有效性,還構建了類VGG-16網絡進行對比,將經典VGG-16的全連接層進行調整,調整后3個全連接層神經元數目分別為64、14、4,并確保2種網絡的訓練參數數目基本相當。模型訓練及評估結果如表1所示,2種網絡評估精度不小于98.8%,卷積膠囊網絡略高出0.4個百分點。收斂迭代次數,卷積膠囊網絡約為VGG-16模型的73.33%,但卷積膠囊網絡訓練時間大約是VGG-16模型的2.76倍。
對1 000幅圖像組成的測試集,利用混淆矩陣和準確率、召回率、F1值等評價指標,進一步驗證卷積膠囊網絡的可靠性。如圖5所示,僅有1%的腐爛磷莖被錯分為健康鱗莖,2%的健康磷莖被錯分為腐爛磷莖,1%的灰霉葉片被錯分為健康葉片,正確識別了全部健康葉片。同時,模型平均精確率、召回率、F1值均達到0.99,說明所構建模型可靠性很高。

表1 訓練及評估結果Tab.1 Results of training and evaluation

圖5 卷積膠囊網絡的混淆矩陣Fig.5 Normalized confusion matrix of convolutional capsule network
為了驗證卷積膠囊網絡的抗干擾能力,分別對測試集添加高斯噪聲、椒鹽噪聲、斑點噪聲和仿射變換,設置干擾等級為0.01~0.20,等級間隔為0.01,各個干擾等級下的模型識別準確率如圖6所示。隨著干擾等級的加大,VGG-16模型及卷積膠囊網絡的識別準確率都呈下降趨勢,噪聲及仿射變換都會增加網絡模型對病斑特征有效提取的難度,從而影響檢測精度。仿射變換等級為0.04~0.08時,VGG-16模型精度略高于卷積膠囊網絡。其他情況下,卷積膠囊網絡的抗干擾能力明顯優于VGG-16模型。當高斯噪聲等級為0.01時,卷積膠囊網絡精度為77.88%, VGG-16模型精度為70.17%;當椒鹽噪聲等級為0.02時,卷積膠囊網絡精度為93.69%, VGG-16模型精度為86.99%;當斑點噪聲等級為0.02時,卷積膠囊網絡精度為89.99%, VGG-16模型精度為81.28%;當仿射變換等級為0.03時,卷積膠囊網絡精度為90.79%, VGG-16模型精度為88.59%。

圖6 模型抗干擾能力Fig.6 Anti-interference ability of models
為了分析膠囊尺寸、動態路由迭代次數對網絡訓練用時的影響,分別構造尺寸為4、8、16、32、64的主膠囊,并將動態路由迭代次數設置為1~25,得到網絡對1批次20幅圖像的訓練時間。由圖7可知,膠囊尺寸越大訓練時間越少。尺寸8時3次迭代時間為519 ms,尺寸32時3次迭代時間為291 ms。路由迭代次數與訓練時間成正比。在共享已訓練VGG模型參數的基礎上,對多種規格的卷積膠囊網絡進行訓練,結果如表2所示,可知膠囊尺寸和路由迭代次數對模型精度不產生顯著影響。

圖7 不同膠囊尺寸及動態路由迭代次數對訓練用時的影響Fig.7 Effects of different capsule sizes and dynamic route iteration times on training time
表3為兩種網絡在訓練中最耗時的4種操作,其中Conv2D為卷積操作,Conv2DBackpropInput為反向傳播過程中使用MatrixMap.transpose進行矩陣變換,Conv2DBackpropFilter為反向傳播過程中使用TensorMap.contract操作進行張量收縮,BatchMatMul為反向傳播過程中主膠囊層進行的矩陣乘法,ReluGrad為反向傳播過程中對ReLU函數的梯度求導。可以看出卷積及卷積層的反向傳播均占用了很大的計算資源,對卷積膠囊網絡兩者占比累積達到96%,VGG-16中占比達78%。同時發現,BatchMatMul耗時約為24.95 ms,且不會隨網絡結構的改變而增加,但占比會隨網絡深度的增大而快速降低,由1個卷積層為基礎構造的卷積膠囊網絡,其BatchMatMul占比約為25%,而13個卷積層時占比降至1%。TODA等[16]研究表明去除經典網絡中75%的參數量,并不影響模型精度,可以嘗試構造去除冗余神經元的卷積膠囊網絡或者進行分布式訓練,從而解決訓練時間較長的瓶頸。

表2 不同膠囊尺寸及動態路由迭代次數對模型精度的影響Tab.2 Effects of different capsule sizes and dynamic route iteration times on accuracy

表3 訓練時間對比Tab.3 Training time comparison
膠囊結構的“同變特性”可以有效抑制圖像噪聲,而VGG-16則可以通過深度特征提取有效提升檢測精度。本文結合膠囊網絡和VGG-16模型的優勢,構建用于百合病害識別的卷積膠囊網絡,其檢測精度達到99.20%。測試表明,卷積膠囊網絡的抗干擾能力明顯優于經典卷積網絡,說明所構建模型具有在實際大田環境中進行病害診斷的潛力。