錢政, 楊孫哲, 張國卿, 郭紫微, 張林朋, 萬家興, 楊紅云*
(1.江西農業大學軟件學院,南昌 330045; 2.江西師范大學計算機信息工程學院,南昌 330022; 3.北京粉筆天下教育科技有限公司石家莊分公司,石家莊 050051; 4.江西農業大學計算機與信息工程學院,南昌 330045)
氮是水稻生命活動所必需的營養元素,水稻缺氮會導致植株葉片面積減小,植物光合作用和產量降低[1-2],而施用過量的氮會在土壤中殘留從而造成浪費以及破壞環境[3]。在水稻的種植過程中,錯誤地施用氮肥或是經驗不足,均會使水稻缺乏所需的氮元素,從而導致水稻產量和質量的降低[4]。傳統的水稻氮素營養診斷方法,主要以田間采集植株樣品、試驗室化學分析為主。孫棋[5]通過對旋翼無人機獲取的水稻圖像進行色彩分析,表明無人機拍攝冠層圖像的顏色特征參量G值與水稻葉片的SPAD、葉綠素和氮含量均有很好的相關關系;張國圣等[6]利用無人飛行平臺搭載高光譜成像系統獲取水稻冠層高光譜數據,分析了試驗點水稻分蘗期葉片氮素與冠層高光譜信息之間的關系;Huang 等[7]利用衛星遙感估計從不同的農田收集地面真實數據,研究中國東北地區水稻關鍵生長階段氮狀況;郭建華等[8]以手持式主動遙感光譜儀Greenseeker 和葉綠素儀SPAD 對玉米不同氮素水平下各個生育期的NDVI(normalized difference vegetable index)值及葉片SPAD 值進行測試,研究了不同氮素下玉米群體和個體營養狀況的變化。這些方法在樣品的采集、測試及數據處理等方面需要耗費大量的人力、物力和財力,且試驗周期較長、操作不便捷、效率低下[9-10],不利于推廣應用。因此,需要探索高效且低成本的便捷方法進行水稻氮素營養診斷。計算機視覺技術彌補了以上缺點,能夠快速而準確地對水稻營養狀況進行有效觀測,并及時提出建議。
在水稻營養診斷的計算機視覺方法研究中,周瓊等[11]基于BP 神經網絡和概率神經網絡進行水稻氮素營養診斷,在幼穗分化期的水稻葉片中識別準確率達90%;Xu 等[12]采用深度卷積網絡方法,對水稻10 種營養進行識別,測試準確率達97.44%±0.57%;Yuan 等[13]基于可見光圖像處理的水稻氮素營養診斷,研究了數碼相機拍攝的水稻氮素狀態與水稻葉片綠度的關系,結果表明水稻葉片中部比葉尖和葉基更適合水稻氮素營養診斷;Sathyavani 等[14]設計了基于圖像采集的分類模型,該模型使用物聯網(internet of things, IoT)進行數據采集,并使用卷積神經網絡的變體,即DenseNet-BC 進行分類任務,與其他深度學習模型相比,該方法在準確性和F-measure方面均獲得了改善;Wang 等[15]基于卷積神經網絡并結合強化學習,使用1 500張包含缺氮、缺磷、缺鉀的水稻葉片數據集,通過調整模型架構,結果表明DenseNet121的測試準確率達到97%,適用于診斷農作物營養缺乏情況。
SE block 通過訓練網絡中產生的損失函數來學習特征權重[16],增加了有效特征圖的權重,同時減少了無效或效果較小特征圖的權重,從而改善模型的性能,但是,SE block 嵌入會導致額外的參數和計算量的增加,這可能增加模型的復雜性和計算成本。而全局平均池化可以降低特征圖的空間分辨率,減少模型的參數數量和計算量,提高模型的計算效率。此外,它還可以增加模型的魯棒性,減少過擬合的風險,并且可以作為一種簡單的正則化方法,提高模型的泛化能力;遷移學習是將已學習知識應用于新任務的方法,可以利用已有數據和知識,提高模型的泛化能力,避免從零開始訓練新模型所需的大量數據和計算資源[17-18]。
本研究掃描水稻圖像,再進行圖像處理,將卷積神經網絡與SE block 模塊相結合,通過在ResNet34 殘差塊中加入SE block 模塊并基于遷移學習方法,研究了水稻幼穗分化期和齊穗期以及水稻不同施氮水平與模型識別效果的關系,建立水稻氮素營養診斷模型,并在試驗過程中通過微調學習率等參數,訓練網絡得到最佳識別效果模型,實現水稻氮素營養診斷的精確識別,為水稻氮素營養診斷識別研究提供了新的思路與方法。
水稻試驗于2017年在江西省南昌市成新農場進行,土壤基本理化性質為:全氮1.40 g·kg-1、有機質24.4 g·kg-1、有效磷12.70 mg·kg-1、速效鉀(P2O5)123.0 mg·kg-1、pH 5.30。以超級雜交稻‘兩優培九(Liangyoupei 9, LYP 9)’為試驗材料,最佳施氮量為純氮210~300 kg·hm-2[19]。本試驗以高氮,即氮為270 kg·hm-2以上進行栽培管理,并設置0(N1)、210(N2)、300(N3)和390 kg·hm-2(N4)4個施氮水平進行施肥。本試驗采用一般區域試驗設計,設置多個小區進行隨機排列[20],每個小區面積30 m2,小區間用土隔開且用塑料薄膜覆蓋住,單灌單排,重復3次。氮肥按基肥∶分蘗期∶穗肥為4∶2∶4 施用;鉀肥按分蘗期∶穗肥為7∶3 施用;磷肥一次性做基肥施用。各區間磷、鉀肥施用量相等,分別為P2O5225 kg·hm-2、K2O 300 kg·hm-2,移栽前1 d施用基肥,移栽7 d后施用分蘗肥,在葉齡余數1.5 左右時施用穗肥[21]。5 月25 日播種,6 月14 日移栽。人工移栽,栽插規格為13.3 cm×26.6 cm,其他按照常規的高產栽培要求進行。
本研究中所用水稻圖像通過MICROTEK 掃描儀(MRS-9600TFU2L,分辨率600 ppi,上海中晶科技有限公司生產)于水稻幼穗分化期(2017 年7 月24 日)、齊穗期(2017 年8 月23 日)分2 次掃描獲取,每次掃描獲取960 張,共計1 920 張2 515×3 997像素水稻圖像,其中每個時期的不同施氮水平分別有240張。
水稻營養診斷模型的訓練與測試均在Linux Ubuntu 操作系統下完成。試驗使用的電腦硬件配置為:CPU 采用Intel(R) Xeon(R) Gold 6330 CPU@2.00GHz,內存為6×8 GB,GPU 采用NVIDIA GeForce RTX 3090,顯存為24 GB。軟件環境:Cuda 11.3,PyTorch 1.11.0,Python 3.8。
考慮到使試驗所用的GPU 顯存利用率最大化,將Batch_Size 設置為64,迭代次數均設置為150 輪,采用Adam(adaptive moment estimate)優化算法,損失函數選擇交叉熵損失函數,將初始學習率設置為1e-4。
水稻圖像數據經過后期掃描得到,由于部分圖像在掃描過程中出現了葉片對折、卷曲的情況,使得掃描效果不佳且圖像信息有缺失,考慮模型訓練的準確率,將這些數據舍棄,最終試驗數據集中幼穗分化期的有921張,齊穗期的有925張,每個類別的數據量如表1所示。由表1可知,原始圖像數量較少,這會使模型難以了解真實的數據分布,容易出現過擬合現象[22]。所以本研究采用平移、翻轉、旋轉、圖像模糊、增加噪聲以及亮度調亮和調暗6 種增強方式對原始數據集進行擴充[23],把每種圖像數量擴充為原來的9 倍,樣本圖像中幼穗分化期水稻數據由原來的921 張增加到8 289張,齊穗期水稻數據由原來的925 張增加到8 325張。由于水稻圖像分辨率不一致,為了方便訓練,將水稻圖像的分辨率統一調整為512×512,并將80%圖像作為訓練數據集,余下的20%作為測試數據集。
表1 原始數據集數量Table 1 Original rice data number
之后對圖像進行標準化歸一化處理,如果圖像的特征值較大,梯度也會較大,因此為了加速模型訓練的收斂,需要將圖像特征值大小調整到相近的范圍。在對數據集進行標準化歸一化時,遍歷了每張圖片的紅綠藍(RGB)顏色通道,計算出每個通道的均值和方差,采用PyTorch 中torchvision.transforms.Normalize方法,最終將所有數據轉換到標準正態分布的數據集中,其計算公式如下。
式中,output[channel]表示輸出圖像的某個通道;input[channel]表示輸入圖像的某個通道;mean[channel]和std[channel]分別表示該通道的均值和標準差。
卷積神經網絡是一種人工神經網絡,也是首個真正被成功訓練的深層神經網絡[24],在現實生活中應用十分廣泛。由于ResNet34本身具有網絡較深、更容易訓練、計算復雜度低、易于遷移等特點[25],本試驗選用其作為主干網絡模型,再對其進行遷移學習,實現水稻氮素營養狀況的分類任務。
本試驗保留了ResNet34 的主干網絡,在每個殘差塊分支最后引入SE block,其結構如圖1 所示。其中,將平均池化層替換為全局平均池化層,然后通過全局平均池化層和全連接層得到水稻氮素的預測類別,改進后的模型標記為ResNet34_SEt。本試驗采用了自適應梯度優化算法和交叉熵損失函數,在ResNet34_SEt 模型中,首先應用了1 個核大小為7×7、步長為2 的卷積層,用于降低輸入圖像的分辨率。之后經過一系列的卷積層、池化層和殘差塊對輸入進行處理,在這個過程中,圖像的尺寸逐漸縮小,通道數逐漸增加。最后,通過全局平均池化層將圖像特征壓縮成1 個向量,然后將全連接層輸出值設置為4。
圖1 改進的模型網絡構架Fig. 1 Improved model network architecture
試驗主要流程如下。
①構建水稻營養診斷模型。基于ResNet34模型,將模型的平均池化層替換為全局平均池化層,并將此方案記為方案1。
②基于步驟①,在模型每個殘差塊后引入SE block,并將全連接層的分類數替換為自身的分類任務數,再進行訓練及模型微調,訓練出適合水稻營養的模型,記為ResNet34_SE,并將此方案記為方案2。
③基于步驟①,在模型每個殘差塊后引入SE block,進行遷移學習,并將全連接層的分類數替換為自身的分類任務數,再進行訓練及模型微調,訓練出適合水稻營養的模型,訓練得到模型記為ResNet34_SEt,并將此方案記為方案3。
④模型測試。對水稻數據集中20%的測試集數據進行測試,并將ResNet34、ResNet34_SE、ResNet34_SEt的測試結果進行對比。
準確率(Accuracy)表示正確識別的總數占預測總數的比例,召回率(Recall)表示正確預測該類別的數量占所有真實該類別的數量的比例,二者評價指標的計算公式如下。
式中,TP 為真正例,表示樣本實際為正樣本,檢測為正樣本的個數;TN 為正負例,表示樣本實際為正樣本,檢測為負樣本的個數;FP 為假正例,表示樣本實際為負樣本,但檢測為正樣本的個數;FN 為假負例,表示樣本實際為負樣本,檢測為負樣本的個數。
將方案1、方案2、方案3 進行對比,驗證了改進的殘差塊和遷移學習結合的有效性,模型識別準確率提升幅度均在7%以上。所得數據如表2 所示,在模型的最后一層添加全局平均池化層后,模型參與訓練的參數量減少了,模型體積因此也有所減小,由于SE block 內包含2 個卷積層,使得參與訓練的參數有所增多,最終模型總參數量依然小于原始模型總參數量,減少了約1.6%。
表2 不同方案的試驗數據Table 2 Experimental data for different plans
由表2 最終可知,通過遷移學習以及引入SE block,方案3的各項指標優于方案1和方案2。
2.2.1 模型在幼穗分化期的訓練曲線和混淆矩陣 混淆矩陣也稱誤差矩陣,是評判模型結果的指標,屬于模型評估的一部分,用n行n列的矩陣形式來表示,可以用來判斷分類器的優劣,通過混淆矩陣也可以更直觀地看到模型在各個類別上的表現,混淆矩陣橫軸表示預測值,縱軸表示真實值,展示了分類任務中模型識別正確與錯誤情況。對于水稻幼穗分化期,方案1、2、3 的模型訓練曲線圖以及混淆矩陣如圖2所示。
圖2 3個方案在幼穗分化期的訓練曲線和混淆矩陣Fig. 2 Training curves and confusion matrices of three schemes during the spikelet differentiation stage
從圖2C可知,遷移學習能夠加速模型的收斂速度,同時ResNet34 在訓練過程中產生了一定的過擬合現象,替換成全局平均池化層之后在一定程度上避免了過擬合現象的產生,這在圖2B中得到了體現;由圖2C 可以看出,基于遷移學習再引入SE block后,模型的準確率均有一定的提升。
從圖2F所展示的混淆矩陣可知,模型對N3以及N4 處理施氮水平的水稻識別準確率大于N1和N2 處理;對于4 類施氮水平的識別準確率分別為96.53%、98.52%、98.84%、98.71%。因此,從圖2D~F 可以看出,ResNet_SE 的準確率優于ResNet34,ResNet_SEt的準確率優于ResNet_SE。
2.2.2 模型在齊穗期的訓練曲線和混淆矩陣 對于水稻齊穗期,方案1、2、3 的模型訓練曲線以及混淆矩陣如圖3所示。
圖3 3個方案在齊穗期的訓練曲線和混淆矩陣Fig. 3 Training curves and confusion matrices of three schemes during the full heading stage
從圖3A~C 可知,改進后的模型在收斂速度、過擬合現象的處理、模型的準確率均有一定的提升。從圖3F 可知,模型對N2 以及N3 施氮水平的水稻識別準確率稍低于N1的和N4的施氮水平;對于4 類施氮水平的識別準確率分別為99.76%、99.05%、99.05%、100.00%。因此,從圖3D~F 可以看出,ResNet_SE 的準確率優于ResNet34,ResNet34_SEt的準確率優于ResNet_SE。
綜上可知,相比于未改進網絡,基于遷移學習,可以迅速在數據集數量不多的情況下,得到較為理想的識別準確率,且模型收斂速度更快,模型的整體性能也更好;替換為全局平均池化層,可以減少模型總參數量,且在訓練過程中測試集的損失趨勢相對原始模型更加穩定,其次能夠改善模型訓練過程中產生的過擬合現象,但模型的收斂速度有所降低;SE block 的引入可以提高模型的準確率,但SE block 的引入增加了模型的訓練時間,參與訓練的參數也有所增加,經過模型評估,ResNet34_SEt在水稻幼穗分化期和齊穗期分別能達到98.13%和99.46%的準確率;基于遷移學習以及在網絡殘差塊中引入SE block 相比直接進行全新學習識別錯誤的數量大大減小,表明ResNet34_SEt更適用于水稻氮素營養診斷任務。
為了進一步驗證方案3 的有效性,使用本試驗的數據集輸入到AlexNet、VGG11、VGG16 傳統模型進行分類任務,并將模型的性能與方案3 的ResNet34_SEt進行對比,結果如表3 所示。由表3可知,AlexNe模型相較于ResNet34_SEt,二者訓練時間相差不多,但是二者在2 個時期數據集中的表現卻相差較大,且模型總參數量也有近12 倍的差距;對于VGG11 以及VGG16 模型,它們所需的計算量相較于ResNet34_SEt 都十分巨大,VGG16在齊穗期的效果要優于VGG11,但是該效果多體現在相較VGG11 層數更多,模型更深,需要更多的訓練時間,且模型總參數量都較大;對于ResNet34_SEt自身而言,在訓練時間,模型總參數量,測試效果方面綜合來說最優。
表3 不同模型的性能對比Table 3 Performance comparison of different models
本文以‘兩優培九’為研究對象,對2 個時期、4 個施氮水平的水稻進行幼穗分化期的營養診斷,從試驗結果來看,模型能更準確識別水稻幼穗分化期N3 以及N4 施氮水平,從齊穗期的試驗數據來看,模型對N1 以及N4 施氮水平的水稻能更準確地識別。羅建軍等[26]在本試驗數據集上,使用機器學習的方法,通過獲取水稻掃描圖像提取葉片顏色、幾何形態等特征進行水稻氮素營養診斷,與本試驗中幼穗分化期的數據有差異,可能是因為深度學習與基于特征的機器學習對樣本數據集大小要求不一樣所導致的。通過深度學習方法,發現水稻的齊穗期識別準確率稍高于水稻的幼穗分化期,這種差異可能是不同時期的數據集數量以及分布不同所導致的。張林朋等[27]在本試驗數據集上,使用深度學習方法構建了改進的VGG16 和遷移學習相結合的網絡模型對水稻葉片圖像數據進行氮素營養診斷識別,結果表明在水稻幼穗分化期和齊穗期,該模型微調后的識別準確率均能達到95%以上,但是其存在模型體積大、模型參數量多、訓練時間較長等問題。在本試驗中,對出現圖像彎折、卷曲現象的進行了舍棄,但由于對水稻的分割處理粗糙,也可能造成部分水稻的分割處有圖像信息缺失,在后續試驗中,增大樣本數量和對水稻的處理過程更加細致將是重要改進之處,其次應盡量使數據分布均勻,再次提高每一類施氮水平的識別效果。綜上,在高光譜技術、機器學習方法、深度學習方法的對比中,深度學習方法將會是水稻氮素診斷的最優選擇。
在數據集方面,本試驗后期對其進行預處理過程中丟棄了部分圖像信息,使得幼穗分化期的數據分布相較于齊穗期來說更加分布不均勻,每類施氮水平的數據量都有所不同,對最終得到的識別準確率造成了一定的影響。Cap 等[28]提出了一種LeafGAN 方法,通過從健康圖像轉換生成各種各樣的疾病圖像,作為提高植物疾病診斷性能的數據增強工具,對試驗過程中數據集數量過少問題進行了改善,改善了模型的過擬合現象,模型性能也有所提升。在數據集數量上,未來可使用GAN 等方法進行數據擴充,避免數據不足,使模型準確度更高。另外,本試驗使用1 個品種對模型的適用程度方面具有一定的局限性,例如外形特征以及其他品種施氮量的顏色特征等,這些都會影響本模型對數據的識別準確率;采用本試驗使用的ResNet 網絡,需要大量數據以及更長的訓練時間,以保證模型的準確率以及穩定性。未來的研究中,需要增加不同水稻品種、獲取水稻不同生長時期的營養狀況數據,基于本試驗的施氮水平,再細化出更多的施氮水平,會更加有利于模型的通用性、適用性。
本試驗通過使用卷積神經網絡,將網絡結構進行改進,建立水稻氮素營養診斷模型,能夠獲得較高的模型識別準確率,同時該模型能夠抑制模型訓練過程中過擬合現象的產生,數據表明該模型能夠用于水稻氮素營養的分類任務,為利用計算機識別水稻氮素營養的研究方向提供了一種新思路。