張宇卓 王德成 方憲法 呂程序 董 鑫 李 佳
(1.中國農業大學工學院, 北京 100083;2.中國農業機械化科學研究院集團有限公司土壤植物機器系統技術國家重點實驗室, 北京 100083)
玉米從收獲到銷售各環節,易出現不同程度損傷[1-4],導致玉米種子內部的胚乳側產生裂紋,影響種植品質及效益。開發內部裂紋的自動識別系統,實現玉米種子內部裂紋自動、高效識別,對提高我國玉米種子市場競爭力具有重要作用。
研究人員利用聲學及圖像的方法識別種子內部裂紋,文獻[5-6]發現,由于玉米種子內部細胞空隙阻礙,基于聲學的內部裂紋檢測效果有待進一步提升。文獻[7]對采集的圖像進行灰度、均值處理,獲得了原圖像以及經過平滑拉伸后的差值圖,利用閾值分割實現了對種子內部裂紋識別。文獻[8]提出了基于頻域分析的玉米種子內部裂紋識別方法,對差值圖進行閾值分割和膨脹處理,實現了內部應力裂紋識別。文獻[9]應用霍夫變換對種子裂紋進行邊緣檢測,實現了高準確率檢測,且平均速度為0.012 5粒/s。文獻[10]采用掩膜方法對種子進行區域提取,用Kirsch算子及用矢量化的機器學習完成對玉米種子內部裂紋檢測,準確率在80%以上,處理速度不低于0.5粒/s。文獻[11-12]用機器學習的方式提取玉米種子內部裂紋邊緣特征,檢測種子裂紋。已有研究多基于單粒種子進行識別,實現批量檢測的較少,模型都是基于傳統算法,尚未利用深度學習算法來提高檢測穩定性與效率。
卷積神經網絡(CNN)已在圖像領域廣泛應用,其網絡層次更加深入,對圖像特征提取時,不要求原始圖像具備固定的尺寸,不需要對原始圖像進行剪切壓縮等操作,提取到的特征信息更加完整和精確[13-14]。隨著卷積神經網絡模型的逐步發展[15-19],模型的改進優化也逐步適應各個應用層面。在農業領域,CNN因在圖像檢測的優勢,大量應用于農作物的檢測上[20-23],CNN模型種類較多,需根據具體的檢測任務而對模型進行改進或對模型進行選擇分析。卷積神經網絡模型較傳統算法模型不同,可調性較強,除了改變網絡結構,也可在設置參數上對其進行微調[24-27]。根據目標圖像的像素值以及顏色明暗對比,不同模型的卷積核尺寸數量、池化尺寸以及相應函數優化器都會影響檢測效果,在玉米種子內部裂紋的檢測上,目前的研究尚未探究CNN模型的檢測效果,所以本文對此進行實驗分析,對玉米種子內部裂紋檢測系統加以研究。
如圖1所示,將玉米種子排列于置種板中,玉米種子內部裂紋存在于種子內部不易識別,需借助光源透射,內部裂紋才能顯現。所以實驗在采集圖像時,對放置玉米種子的種板底安裝了光源板,每粒種子對應一個光源,調節光源的明暗度使玉米種子內部裂紋清晰可見。

圖1 玉米種板和光源板Fig.1 Corn seed board and light source
選用CREVIS MV-CS30U型工業數字彩色相機,幀率為30幀/s。為了消除其他光對采集圖像的影響,將采集系統置于密閉空間內,采集如圖2所示的圖像。

圖2 種板采集圖像Fig.2 Collection diagram of seed board
調整光源,使每個種板孔的種子達到最佳的檢測效果,采集多幅圖像進行預處理。采集的圖像尺寸為2 448像素×2 048像素,根據CV庫編寫腳本,批量去除種板外的多余像素。再對種板圖像進行切片,最終切分成100像素×100像素的玉米種子圖像。
將切分好的圖像按照圖3進行分類,兩類數據集分別采集1 000幅圖像,將訓練集和測試集的圖像數量比設為7∶3,保證其訓練驗證效果,經過數據增強,分別對其中的圖像抽樣進行旋轉、添加噪聲、亮度增強等,每個數據集樣本擴增至6 400幅,共計12 800幅。

圖3 數據集制作Fig.3 Dataset production
本文選用深度學習中經典的卷積神經網絡(CNN)模型AlexNet、VGGNet、Inception以及ResNet作對比實驗分析,探究適合在玉米種子內部裂紋檢測中的最優模型。
AlexNet與初代卷積神經網絡LeNet相比在模型層次上進行了加深,在神經網絡深度上進行了加大,并引入ReLU激活函數以及Dropout。AlexNet網絡結構如圖4所示,網絡中存在8個帶權重的層,前5層是卷積層,后3層是全連接層,銜接1 000維Softmax函數作為輸出層,產生1 000類標簽的分布。

圖4 AlexNet網絡結構示意圖Fig.4 Schematic of AlexNet network structure
VGGNet在AlexNet基礎上,卷積核擴展了通道數,池化使得寬高變小,計算量和深度增加,VGGNet的主體網絡都使用了相同尺寸的卷積核(3×3)和最大池化尺寸(2×2)。
Inception系列盡管沒有對網絡深度改進調整,但對網絡結構進行改進,使用1×1、3×3和5×5不同尺寸的卷積,增加了提取特征面積的多樣性和差異性,以此來減小過擬合。
ResNet提出了殘差單元設計。AlexNet、VGGNet網絡直接通過訓練學習出參數函數,單層路徑加載權重學習。如圖5所示,殘差學習致力于使用多個有參網絡層學習輸入、輸出之間的殘差,通過跳層連接,將輸入的x值與輸出單元加在一起通過ReLU激活,收斂更快。

圖5 殘差單元圖Fig.5 Residual cell diagram
4種網絡在卷積層輸出的ReLU激活函數表達式為
f(x)=max(0,x)
(1)
由ReLU激活函數表達式可以看出,ReLU本質上是將函數輸出值取最大值,負值變為0,正值無變化,因此又被稱為單側抑制。由于存在單側抑制,神經網絡中的神經元也具備了潛在的激活性。4種網絡在全連接層都用到的Softmax回歸層的表達式為
(2)
式中aj——第j個節點的輸出值
T——輸出節點的個數
Softmax函數能夠將多分類的結果轉換為范圍在[0,1]、和為1的概率輸出結果。
使用基于Pytorch的深度學習框架,Python 3.7編程語言,在Pycharm搭建4種CNN模型,用Anonconda配置環境添加模型訓練及測試的依賴。Pytorch作為一種可塑性較強的動態API,相較于Tensorflow神經網絡更易擴充展開,在Windows 10操作系統下通過Pycharm運行。
采用4組模型AlexNet、VGG11、InceptionV3、ResNet18,選取沖量為0.9的隨機梯度下降(SGD)為優化算法,學習率設為1×10-5,訓練和驗證的批尺寸為32。訓練的損失通過交叉熵損失函數計算,交叉熵損失函數公式為
L=-[yilgpi+(1-yi)lg(1-pi)]
(3)
式中pi——樣本i預測為正類的概率
yi——符號函數,樣本i為正類取1,反之取0
其訓練損失的梯度也較小,交叉熵損失可以避免這種梯度衰退,配合后續的Softmax函數達到更好的分類效果。訓練隨迭代輪數增加,準確率逐漸收斂于100%,損失值逐漸收斂于0。

圖6 模型訓練曲線Fig.6 Model training curves
模型訓練實驗結果如表1所示,在控制其他條件相同下,取迭代輪數100、200、250進行分析。如圖6所示,VGG11的網絡深度較高,使用參數過多,訓練迭代一輪用時較多,驗證集準確率和訓練集準確率在100輪內存在較大差異,100輪后驗證準確率大幅提升,訓練集損失值和驗證集損失值在100輪以上有時會隨著準確率提升而提升,這就發生了過擬合現象,加載出的權重文件不利于識別。驗證集準確率能更好地反映最后識別準確率,迭代100輪時,AlexNet和ResNet18的驗證集準確率都超過了90%。在200輪后,InceptionV3和AlexNet的驗證集準確率都達到了97%,ResNet18達到了99.62%,綜合圖6的驗證集準確率和訓練集準確率曲線可以看出,InceptionV3的曲線集合誤差較高,變化大,泛化能力差,易發生梯度消失,特殊點的存在導致無法綜合反映其準確效果,同時在迭代一輪的時間上也較長。AlexNet和ResNet18訓練時間短效率高,訓練集準確率和驗證集準確率差異較小,兩者的訓練集、驗證集準確率損失值曲線都隨著迭代輪數穩步變化,泛化能力較好,未發生過擬合。

表1 模型訓練實驗結果Tab.1 Experimental results of model training
從實驗材料中另采集600幅有裂紋的玉米種子圖像和600幅無裂紋的玉米種子圖像作為測試數據。分別加載上述迭代250輪的AlexNet和ResNet18的權重,進行測試,實驗結果如表2所示, AlexNet在單粒種子識別時間上比ResNet18短,但準確率上ResNet18高于AlexNet,對裂紋的識別準確率更高,能達到95.04%,對無裂紋的識別準確率能達到98.06%。為了比較深度學習算法和傳統算法對玉米種子內部裂紋的識別準確率,選取兩種泛化能力較好的傳統算法SVM(支持向量機)和BP(反向傳播)神經網絡,對相同的樣本進行測試,結果如表2所示,在對玉米種子內部裂紋識別準確率上,兩種傳統算法模型均低于卷積神經網絡模型。

表2 傳統模型與CNN模型訓練對比結果Tab.2 Comparison results of traditional model and CNN model training
ResNet網絡雖然比AlexNet和Inception網絡更深,但添加了殘差單元模塊,權重計算上呈跳躍式輸出,結合直接計算分析能有效抑制過度擬合帶來的問題。在ResNet網絡的輸入中,沒有過度追求像素級別的識別,而是注重整體性分辨率,這也是ResNet相較于其他網絡在保證了準確率的同時,訓練速度也較快。綜上所述,玉米種子內部裂紋模型訓練上選擇ResNet18,為了更好地在網絡中選擇合適的參數,同時比較學習率為10-3、10-4、10-5、10-6,批尺寸為16、32、64、128時模型訓練效果,共計12組實驗進行對比分析。訓練發現,學習率控制在10-3和10-4時,選擇較大的批尺寸才能滿足訓練精度,批尺寸16、32、64都無法滿足,而批尺寸128大幅增加訓練時間。學習率設置為10-6時,4組批尺寸都出現了過度擬合問題。綜合比較后,選擇學習率為10-5、批尺寸為32的ResNet18模型,將迭代250輪訓練的權重,引入批量檢測玉米種子內部裂紋的算法中。
玉米種子內部裂紋自動識別裝置樣機如圖7所示,完成機械裝置的搭建以及控制模塊的安裝,利用wxPython庫編寫玉米種子內部裂紋識別軟件控制裝置各個單元,配合識別算法可視化檢測結果,完成整體檢測。種子內部裂紋識別裝置示意圖如圖8所示,整體分別由運輸單元、下采圖單元、上采圖單元、下料單元、機架以及PC操作平臺構成,連接串口通信,通過可視化界面,控制整個裝置的運行。 裝置整體用黑色噴漆覆蓋,利于裝置光源對種子的投射,防止其他光對實驗進行干擾,機架自身符合力學要求,能夠承載電機控制模塊以及各個單元。

圖7 玉米種子內部裂紋自動識別裝置實物圖Fig.7 Physical picture of corn seed internal crack automatic identification device

圖8 種子內部裂紋識別裝置結構示意圖Fig.8 Seed internal crack identification device1.機架 2.下料單元 3.上采圖單元 4.下采圖單元 5.運輸單元
玉米種子內部裂紋檢測裝置總體工作原理:玉米種子進種到種板,每粒種子分別落至種板上的孔,PC操作界面控制絲杠滑臺帶動種板移動,當種板移動至下采圖單元時,控制平臺給出信號使絲杠停止移動,同時,下采圖單元的光源會接收信號打開光源,每一個LED光源都對應一粒種子,種子被光源透射后,內部裂紋顯現,相機接收信號拍攝種板圖,種板位于玻璃板上方,所以相機拍攝的種板圖不受影響。下采圖單元的相機拍攝出的種板圖經過SDK協議傳輸到PC操作平臺的識別算法中進行識別,每粒種子的識別結果都會輸出在可視化界面。由于種子隨機落入種板,種子內部裂紋位于胚乳側,下采圖單元的相機自下向上拍攝種子圖像,能識別出胚乳側在下方的玉米種子內部裂紋,不能識別胚乳側朝上的種子裂紋。為了完全檢測出玉米種子是否存在內部裂紋,需要自上而下拍攝種子圖像。
下采圖單元采圖完成后,PC操作平臺對絲杠滑臺發出信號,滑臺帶動種板進入上采圖單元,與下采圖單元同理,網絡對每粒種子進行識別得出檢測結果,這時胚芽側朝下、胚乳側朝上的玉米種子內部裂紋識別完成。識別算法中引入二次判斷機制:每粒種子在兩次識別過程中,若兩次均為無裂紋,則最終判定為無裂紋,若兩次識別結果有一次是有裂紋,則最終判定為有裂紋,最后平臺完成計算,輸出最終的識別結果,在左上方分布玉米種子對應的位置點,根據顏色不同可判斷對應位置的玉米種子是否為有裂紋,判定完成后結束檢測任務,最終軟件輸出的界面如圖9所示。

圖9 玉米種子內部裂紋識別軟件界面圖Fig.9 Interface diagram of maize seed internal crack identification software
當前批次檢測完成后,PC操作平臺發送給絲杠滑臺信號,將這一批次種子全部排出,滑臺隨即原路返回,準備下一批次的檢測任務。從實驗種子選取400粒,分為10組,每組40粒,檢測結果如表3所示。10組中有裂紋的平均識別準確率為94.25%,無裂紋的平均識別準確率為97.25%,略低于上述的單粒種子識別準確率,分析其原因是種板在進行預處理與切片時,圖像進行統一處理,多余的像素值會影響模型提取特征,增加了處理操作也會讓魯棒性變弱,光源的透射也無法對40粒種子進行統一的效果增強,影響了特征提取過程,多次加載模型權重導致泛化性不足同樣會影響準確率。40粒玉米種子的檢測平均識別時間為13.4 s,滿足工業生產中對種子的篩選效率。

表3 批量檢測玉米種子內部裂紋識別準確率Tab.3 Accuracy rate of batch detection of internal cracks in corn seeds %
(1)制作玉米種子數據集進行訓練,對4種卷積神經網絡實驗分析后,初步選擇AlexNet和ResNet18,進行性能比較,兩者種子內部裂紋識別準確率均大幅優于SVM和BP神經網絡模型,驗證了在種子內部裂紋檢測問題上,深度學習算法模型優于傳統算法模型。雖然ResNet18在平均單粒種子識別時間上高于AlexNet,為4.42 s,但ResNet18的識別準確率更高,有裂紋種子的識別準確率為95.04%,無裂紋種子的識別準確率為98.06%。
(2)實驗比較后認為ResNet18的檢測性能更好,訓練后的權重文件用于后續系統測試。本文設計了一種批量檢測玉米種子內部裂紋的方法,并開發了識別玉米種內部裂紋軟件,通過控制檢測裝置,使光源投射入種板內種子,通過兩次采集種板圖,分別送入設計的識別算法中進行預處理、切片、識別,最后可視化界面中輸出結果。
(3)根據檢測玉米種子內部裂紋的實際情況,搭建檢測機械裝置,安裝電機控制模塊以及編寫可視化界面,利用串口通信進行控制,在識別算法中添加二次判斷機制,提高檢測性能,完成玉米種子內部裂紋圖像檢測系統。
(4)批量檢測玉米種子內部裂紋系統實驗進行10組,有裂紋種子的平均識別準確率為94.25%,無裂紋種子的平均識別準確率為97.25%,略低于上述的單粒種子識別準確率,分析原因是種板在進行預處理和切片時,圖像進行統一處理后,多余像素值會影響模型提取特征,光源的散射無法實現對40粒種子統一地增強效果,再次影響特征提取過程。多次加載模型的權重同樣也會導致網絡對種子檢測的泛化性不足。