鄭 光,魏家領,任艷娜,劉合兵,席 磊
(1.河南農業大學信息與管理科學學院,河南鄭州 450002;2.農田監測與控制河南省工程實驗室,河南鄭州 450002)
小麥作為世界第二大糧食作物,其產業的發展關系到國家糧食安全和社會穩定。小麥的生育進程監測是指在小麥生育過程中,對各生長發育時期的形態變化進行記載的過程,反映了小麥的生長狀態信息。小麥生育進程自動化識別[1-2]不僅能夠指導農田管理者科學地栽培作物,還能夠為無人機、自動化農場等作業提供可靠的識別能力[3-4]。因此,針對小麥生育進程設計一個智能化的自動識別方案具有重要意義。
現階段的小麥生育進程信息的獲取方式主要依靠人工觀測,觀測人員根據小麥的現有特征主觀分析出生長發育狀況,不僅效率低而且無法及時地獲取小麥的生長發育狀況。卷積神經網絡是一項依靠高參數量訓練來獲得可以媲美人的識別精度的圖片識別技術,為農作物識別提供了有效的技術手段。近年來,一些學者為解決農業中的現實問題,深入研究過卷積神經網絡技術在農業方面的應用方案[5-7],均取得了不錯的結果。Gupta等將ResNet50預訓練的卷積神經網絡用于雜草和農作物分類識別中,采用ResNet50神經網絡對農作物的分類識別率達到95.23%[8]。和興華等以玉米全生育期冠層圖像為研究對象,結合深度卷積神經網絡提出玉米冠層圖像自動分割和生育期自動鑒定方法,為田間玉米長勢自動監測系統提供了技術支撐[9]。倪建功等基于知識蒸餾對4種不同品質的胡蘿卜進行等級檢測,使得到的模型能夠在保證準確率的情況下減小網絡模型的參數量和模型運行時間消耗,降低了部署模型的成本[10-11]。但是上述研究使用的模型大多數都是基于高數據量、高分類目標被設計出的經典卷積神經網絡模型,而在農業方面往往并沒有這么大的分類目標,使用經典的卷積神經網絡模型作為小麥生育期識別方案時,過多的參數不僅會使得模型容易學習到不必要的特征,還會增加模型部署時的計算量,降低模型識別速度。
為了解決上述問題,本研究從小麥生育期冠層圖像識別的準確率和效率出發,以降低模型復雜度、提升模型運算速度為目標,設計了一種基于深度可分離卷積[12]和空洞卷積[13]的改進卷積神經網絡圖像識別方法。深度可分離卷積采用特征區域與通道分離的方式,有效地減少了訓練模型所需要的時間。而空洞卷積技術擴大了網絡中的感受野,提高了網絡對邊緣的特征學習能力。并在此基礎上使用殘差網絡[14],避免了網絡過深而出現的梯度彌散問題[15],保證了模型能學到更多的特征。此外,基于該監測網絡模型,通過TensorFlow Serving進行模型部署,采用SpringBoot、BootStrap等技術構建小麥生育期智能監測服務系統,以期為小麥生育期自動化觀測提供技術支撐。
為了測試自定義模型的準確率并考慮到實拍圖像的復雜性,本試驗使用在河南省長葛市河南農業大學許昌校區試驗區(113°58′26″E,34°12′06″N)拍攝的小麥5個生育時期的冠層圖像,采集時間為2019年10月至2020年6月。試驗區屬北溫帶大陸性季風氣候區,年均氣溫14.3 ℃,年均降水量711.1 mm,無霜期217 d。采用三腳架固定相機(尼康D3100,傳感器CMOS,最大光圈F/5.6,1 420 萬像素,最高分辨率4 608×3 072)高度為 1 m 進行拍攝,所有圖像都是在自然光照條件下進行采集。
從獲取的圖像數據中分別篩選出小麥的出苗期(出苗期的第1天到分蘗的前1天)、分蘗期(分蘗期的第1天到越冬期的前1天)、越冬期(越冬期的第1天到返青期的前1天)、返青期(返青期的第1天到拔節期的前1天)、拔節期(拔節期的第1天到抽穗期的前1天)等5個階段共12 000張圖像。采集到的部分圖像如圖1所示。
卷積神經網絡原理是利用卷積操作逐層提取圖像的區域特征信息,并不斷加深特征深度和縮小特征范圍以便神經網絡能夠更好地學習到有用的圖像特征。早期的VGG16模型盡管能取得較高的精度,但其簡單的結構使得網絡加深后會出現梯度彌散的現象,模型的識別效果顯著下降[16]。為此,He等利用殘差結構設計出了Resnet模型,該模型在ImagesNet數據集上取得的準確率超過VGG16模型的同時,也使得模型結構能夠加深到100層以上[17]。本試驗使用該技術,在模型的部分層中使用殘差網絡以提升模型準確率和增加深度。
殘差網絡結構因獨特的設計使得模型具有很高的可優化性和性能,被廣泛應用于很多高效的模型中。后來的研究者從核心的卷積計算出發,提出了一些表現很好的卷積計算設計,深度可分離卷積和空洞卷積是其中效果較好的方法。卷積操作在被設計的初期,采用的是一次卷積同時對所有通道進行計算,而深度可分離卷積提供了一種新的思路,該方法對于不同的輸入通道采取不同的卷積核進行卷積,一個卷積核負責一個通道,一個通道只被一個卷積核卷積,相比于常規的卷積操作,其參數量和運行成本被大大降低。
公式(1)為普通卷積和深度可分離卷積可訓練參數數量的對比,參數Dk、M為輸入邊長和通道數,參數N為輸出通道數。根據兩者參數量對比可以看出,輸出的通道數越大,深度可分離卷積相比于普通卷積減少的參數量就越多。
(1)
深度可分離卷積的出現使得模型可以在保持準確率的同時大幅度降低參數量。但卷積神經網絡有時會因感受野面積過小造成訓練時空間層級化信息丟失??斩淳矸e(別稱擴張卷積)的出現使得卷積操作加大了感受野,讓每個卷積輸出都包含較大范圍的信息。本試驗模型中部分卷積層使用空洞卷積核來代替普通卷積核,不僅擴大了卷積核的感受野面積,同時降低了卷積核的計算量。公式(2)為空洞卷積的卷積核參數量,如果原來的卷積核大小為K,那么加入卷積核大小為Kd的空洞卷積參數量P便如公式(2)所示。
P=K+(Kd-1)×(K-1)。
(2)
使用經典的卷積神經網絡模型作為小麥生育期識別方案時,過多的參數不僅會使得模型容易學習到不必要的特征,還會增加使用時的計算量,降低模型的識別速度。為了解決以上問題,本試驗基于深度可分離和空洞卷積技術為小麥生育進程監測設計了一個改進的識別模型,將一個普通卷積和深度可分離卷積組合作為卷積單元(block)組成整個模型,并在個別卷積單元間加入殘差網絡,增加了模型的深度,保證了模型能學到更多的特征,模型基本結構如圖2所示。
圖2為小麥生育進程監測模型的網絡基本結構,其中Conv2D、Conv2D-d和DSConv2D分別代表普通卷積、空洞卷積和深度可分離卷積。在卷積操作后面都進行數據標準化(BN)和激活函數(Relu6)的計算,使得模型更容易學習到圖像的稀疏特征,加快了模型的收斂速度,卷積單元間使用的是線性激活函數(Linear),防止訓練時出現梯度彌散的現象。殘差連接(addition)表示殘差網絡結構使用的單位加操作,該操作會將該卷積單元的原本輸出與輸入相加作為最終的輸出,這樣做的優點在于能夠使模型取得更高的深度,表1為監測模型的網絡詳細參數。
從表1監測模型的網絡結構詳細參數中可以看出,每個卷積單元里均采用了中間寬、兩邊窄的結構,同時多個單元的輸入和輸出保持同等寬度,這樣做能夠在不影響訓練效果前提下有效地提高模型的識別速度。input代表的是當前單元的輸入(上層單元的輸出)。參數e、o分別表示每個單元里普通卷積和深度可分離卷積特征圖寬度;參數S1、S2代表每個單元里普通卷積和深度可分離卷積的步長,步長為2時圖像寬度減少1倍;參數k則表示深度可分離卷積的卷積核大小;參數d為2表示使用空洞卷積代替正常卷積;參數s表示卷積單元間是否使用殘差網絡結構。

表1 小麥生育進程監測模型的網絡詳細參數
該模型疊加了10個基本單元,并使用Softmax作為輸出函數用于輸出小麥生育期識別的種類,為小麥生育期提供了一個準確率高且輕量的模型。
卷積神經網絡在訓練時有時會因過度適配訓練數據,導致模型在訓練集上準確率較高,在測試集上結果很差。為了防止模型過擬合情況發生,往往會在訓練時加入數據增強[18]的方法以擴充圖像數據。數據增強是通過在訓練數據中加入一些不影響圖片質量的改動圖片來增加模型對于圖像內容變化的適應能力,從而使得模型在測試圖像數據上也能取得很好的效果。本試驗使用以下數據增強方法。(1)去中心化:將輸入的每個樣本除以其自身的標準差,從而對每張圖像進行標準化處理,經過該處理后的圖像相比于原來的圖像顏色偏暗。(2)錯切變換:讓所有點的x坐標保持不變,對應的y坐標則按比例發生平移,平移的大小和該點到x軸的垂直距離成正比。(3)圖像縮放:圖像同時在長寬2個方向進行同等程度的放縮操作。(4)隨機翻轉:隨機選取圖像并執行隨機翻轉操作。(5)標準化:在所有其他變換操作之前對圖像的每個像素值均乘上1/255放縮因子,把像素值放縮到0和1之間,有利于模型的收斂。
學習率和優化器指每次迭代訓練時更新模型網絡結構中參數的幅度和方法,合適的學習率和優化器能夠加快模型訓練時收斂速度,更快地得到最優參數,訓練批次是指單次投入模型訓練的圖像數量,一般都為32、64批次。卷積神經網絡模型的訓練須要通過多次迭代訓練才能獲得最優參數,因此學習率、優化器以及訓練批次的選擇對訓練的收斂速度及最終的識別率都有一定的影響[19-20]。
試驗使用拍攝的小麥出苗期、分蘗期、越冬期、返青期、拔節期的冠層圖像作為識別樣本,每個階段共2 400張圖像數據。隨機選取80%的圖像數據作為模型的訓練集,剩余20%作為測試集進行模型的訓練。表2是對3個超參數的識別準確率測試結果,其中識別準確率是測試集5個生育期小麥的平均準確率。

表2 超參數對比
測試試驗選擇的學習率分別為0.005 0、0.001 0、0.000 5、0.000 1,并將Adam、SGD這2種優化算法作為比較,訓練批次分別設置為32和64這2種常用的批次。根據表2可以看出,在學習率為0.001 0并且使用Adam優化器,訓練批次為32時,模型所取得的識別準確率最高。隨著學習率的降低,識別準確率有所下降。訓練批次為32的準確率要高于批次為64的準確率。但基于Adam和SGD這2種方法所訓練的結果并沒有較大的差異,均能達到很好的收斂效果。
本試驗將經典的卷積神經網絡和提出的小麥生育期監測網絡模型(CustomNet)進行對比測試。選取的經典模型有VGG16、Resnet50、InceptionV3、MobileNetV2、DenseNet,這些模型[21]已被眾多研究者證明在各個領域都能取得很好的結果,具有很強的泛化能力。模型訓練均使用Tensorflow框架在本地GTX 1050ti顯卡中進行,試驗訓練100次,均選用0.001 0的學習率,使用 Adam優化器加速模型收斂,并且設置訓練批次為32進行模型的訓練,取其中測試集最優的模型進行保存測試。
模型在訓練時,測試集能反映模型的擬合能力,而訓練集反映的是模型的訓練情況,為了解模型訓練過程中準確率的變化情況,本試驗使用訓練過程中訓練集每個批次(epoch)的準確率作為對照,因為模型在訓練30個epoch時,訓練集就能達到很高的正確率,所以使用訓練集的前30個epoch的正確率作為對照,其結果如下圖所示。
根據圖3可以看出,本試驗構建的小麥生育進程監測模型(CustomNet)和經典模型在訓練的前期均能達到很高的正確率,并且具有和經典模型相同的收斂速度,VGG16模型因為較多的參數導致訓練時收斂速度相比于其他模型稍慢。
為了更詳細地展示模型的擬合能力,試驗使用測試集對小麥5個生育期分別進行準確率測試,并與5個經典的模型進行了對比,結果如表3所示。
由表3可知,本試驗構建的小麥生育進程監測模型(CustomNet)在拔節期、出苗期、分蘗期的識別都能達到很高的正確率,返青期的識別率相比于其他生育期略低,CustomNet模型平均識別準確率為98.6%。DenseNet在所有模型中取得最高的平均準確率,為99.2%。
準確率是衡量一個模型性能的重要指標,其效果和數據集及現實世界的復雜性高度相關,單一以準確率為指標不能準確反映模型的最終性能。因此本試驗增加模型的運算速度這一指標,并與經典模型VGG16、Resnet50、InceptionV3、MobileNetV2、DenseNet做對比測試。本試驗選取100張圖片作為測試數據,將圖片不間斷地傳入模型并進行識別,并記錄完成全部識別的時間作為參考。其識別速度和各個模型的參數量對比如表4所示。

表3 不同模型對小麥各生育期的識別結果

表4 各模型運算速度測試結果
表4中,耗時為模型識別100張圖片的運算時間,參數量反映了模型運算占用內存的大小。通過對比模型運算耗時和模型參數量,可以發現模型的運行速度與參數量之間不是線性關系,模型結構是決定識別速度的重要原因之一。從表4中可以看出,盡管VGG16的參數量比較龐大,但由于其結構只有16層,卷積層計算量較少,參數量多集中為全連接層,因此在測試速度上能取得很好的成績。而DenseNet模型參數量較少,但因其使用了較寬的結構使得每層卷積的特征圖數量大大增加,卷積層數也達到了121層,因此識別的速度較慢。本試驗構建的小麥生育進程監測模型(CustomNet)參數量為1.3 MB,相比于MobileNetV2降低了58%,并且識別速度提高了47%,在大大減少參數量的情況下,保證了識別的速度。
為了打破傳統識別服務中模型預測與發布服務之間無法無縫對接且模型版本迭代困難等諸多弊端,在小麥生育期監測模型的基礎上,使用TensorFlow Serving技術[22-23]對監測模型進行部署,遵循前后端分離,結合SpringBoot和BootStrap框架基于MVC(模型、視圖、控制器)的控制邏輯研發一套松耦合、高靈活性的小麥生育期監測服務系統。
根據監測服務的使用和提供者,將服務系統分為終端和云服務器。終端為服務表示層,可以是web、APP等形式,主要是發送服務請求,并以文字、圖形等形式展現結果。云服務器為服務層,包含3個模塊:小麥生育期圖像訓練模塊、服務數據處理模塊、服務部署模塊,各模塊之間獨立部署,使用數據通訊接口進行模塊間的交互,為農業生產管理者提供高效的小麥生育進程監測服務。小麥生育進程監測服務架構如圖4所示。
各個模塊主要完成以下工作。
(1)數據處理模塊:用于接收終端表示層通過Post請求提交的生育期圖像,將圖像統一處理成224×224×3的大小,然后通過gRPC接口連接到服務部署模塊,傳遞處理后的圖像數據和模型請求名稱。此外,該模塊接收服務部署模塊識別結果,并向終端表示層返回監測識別結果和相應生育期栽培管理措施。
(2)服務部署模塊:服務部署模塊采用TensorFlow Serving進行模型部署,將模型打包成生育期監測服務并部署到Docker容器中,可以方便進行版本迭代,并且支持模型熱更新與自動版本控制。該模塊向數據處理模塊開放gRPC接口,持續監聽識別請求,接收符合要求的圖像數據,觸發生育期監測服務,并向數據處理模塊返回識別結果。
(3)小麥生育期監測模型訓練模塊:該模塊使用TensorFlow框架將新的小麥生育期圖像數據導入改進的識別模型中進行訓練,并把訓練好的h5權重文件轉換成gRPC接口所需要的pb文件,經文件上傳后覆蓋部署到服務部署模塊中的生育期監測服務,保證了模型版本的實時迭代。
圖5是小麥生育期監測服務具體界面。用戶提交的小麥生長圖像文件如圖5-a所示,經數據處理模塊規范化處理后,調用監測模型,返回生育期監測結果和相應的管理措施如圖5-b所示。
本研究設計了一種基于深度可分離卷積和空洞卷積的輕量級卷積神經網絡及服務系統用于小麥生育期監測,結論如下:
(1)以普通卷積和深度可分離卷積為基本單元進行組合,加入空洞卷積技術擴大了網絡中的感受野,并借助殘差網絡的技術逐步加深神經網絡的深度,構建了小麥生育進程監測模型,有效地將模型的參數規模降低到1.3 MB,相比于MobileNetV2模型參數規模降低了58%,同等環境下識別速度提高了47%。
(2)在模型的訓練過程中,使用數據增強的方法擴充數據集,防止了模型訓練時出現過擬合現象。并通過對學習率、優化器、訓練批次3個超參數進行識別率測試,最終選擇0.001 0的學習率、Adam優化器、32批次對改進的識別模型進行訓練,使得小麥生育期識別率達到98.6%。
(3)在模型的部署過程中,從模型的迭代和識別的效率出發,使用TensorFlow Serving技術對監測模型進行部署,遵循前后端分離,采用SpringBoot及BootStrap等技術框架,基于MVC架構開發了小麥生育進程智能監測服務系統。系統具有很好的松耦合性和靈活性,同時也方便投入實際生產中。
本研究基于卷積神經網絡為小麥的生育期識別設計了一個輕量且高效的識別模型,同時從模型部署角度出發,研發了一套松耦合、高靈活性的小麥生育進程監測服務系統。不僅為小麥生育進程智能化識別提供了技術支撐,也為農業生產管理者提供了高效的小麥生育進程監測服務。