文懷興 王俊杰 韓 昉
(陜西科技大學機電工程學院,陜西 陜西 710021)
紅棗是中國極具特色的干果,維生素含量高,被譽為“天然維生素丸”。大部分紅棗經干制后流入市場,部分紅棗還需進行去核、切片、干燥等深加工處理,紅棗若不進行初步的品質分級,缺陷棗流入市場,將影響干制紅棗的附加值。
由于人工檢測分級效率較低,為順應農產品精深加工自動化、智能化的要求,基于機器視覺的紅棗自動分級檢測成為研究熱點。早期缺陷棗分類檢測方法主要為:人工對紅棗圖像進行預處理得到紅棗缺陷特征值向量,然后采用監督學習算法支持向量機為分類器進行統計分類,每張紅棗圖像分類時均需經過大量人工設計步驟且存在一定的人為主觀判斷性,對多種缺陷特征分類準確率存在較大差異,算法的時間復雜度和空間復雜度較高,因而還需進行主成分分析(PCA)進行降維處理,使得整體分類準確率提高不顯著。蔣偉[1]提出了基于灰度共生矩陣通過圖像灰度的空間位置描述紅棗紋理的檢測方法;海潮等[2]提出了基于Blob的紅棗表面缺陷檢測方法,識別準確率均為90%以上;蘇軍等[3]提出了基于GA優化SVM的紅棗識別方法,3種方法均只對紅棗紋理、破損等特征進行分類,存在對霉變棗分類效果不明顯的問題。Lecun等[4]提出的7層結構的LeNet-5卷積神經網絡模型在手寫數字識別方面取得重大突破,用于銀行的手寫支票識別。而神經網絡在學習深度加深時會出現梯度彌散現象,只能局部收斂,所以早期分類識別主要使用SVM分類方法。
2012年,Krizhevsky提出的AlexNet模型在斯坦福ImageNet圖像識別大賽上以絕對優勢擊敗SVM分類器后,卷積神經網絡進入大范圍應用且成為經典分類網絡模型,通過權值共享使得網絡權值數量減少,復雜度降低,而且采用卷積操作提取的特征具有一定的平移、縮放和扭曲不變性等特點[5],特別適合果蔬表面紋理等特征的提取,因而基于卷積神經網絡模型的果蔬識別技術的研究得到迅速發展[6-8]。隨后Krizhevsky等[9]提出用Relu激活函數代替Sigmoid激活函數和在全連接層后引入Dropout層改善傳統卷積神經網絡,不僅提高了訓練速度,而且有效抑制了梯度彌散現象,而采用Dropout層則有效防止了網絡的過擬合[10]。但該模型使用了如11×11,5×5等尺寸非常大的卷積核,導致計算量大且不利于模型深度提升。Simonyan等[11]提出VGGNet模型,采用多個連續的3×3卷積核替換AlexNet模型中的大尺寸卷積核,提高了網絡非線性變換的能力和學習深度。然而簡單地堆疊卷積模塊加深學習深度的方法導致網絡退化,但淺層網絡又無法提升識別準確率[12],因而何凱明等[13]提出了ResNet殘差網絡模型,通過殘差模塊來抑制網絡退化,具有較好的識別效果。Klambauer等[14]提出了縮放指數型線性單元(SELU)作為激活函數,使卷積產生的輸出可進行自歸一化,并驗證了SELU函數的網絡訓練收斂速度以及分類準確率優于采用Relu激活函數的CNN網絡。
試驗擬采用計算機視覺技術融合深度殘差網絡模型的優點,對紅棗圖像分類模型的網絡進行改進,從而提升識別準確率,旨在實現對紅棗多種缺陷進行檢測。主要改進方面為:用SELU激活函數替換Relu激活函數得到新的殘差學習模塊;采用學習率隨迭代次數增多而減小的方式優化學習;通過將最能體現紅棗缺陷特征的彩色圖像通道分離來降低深度學習的學習維數;針對softmax分類產生類間距較大的現象,提出采用中心損失函數center loss代替softmax loss。
新疆若羌灰棗:依據表面是否有破損、霉變和褶皺對紅棗進行篩選,對于缺陷棗數量不足的問題采用人為的方法來獲得,得到正常棗和缺陷棗各490個。
主要包括硬件平臺和軟件平臺,以及圖像采集裝置及軟件開發環境。硬件平臺如圖1所示,計算機3為配置CPU Intel CORE i5 8G的處理器、GPUGTX1060 4G處理器、Windows10 x64系統的檢測用計算機,圖像采集裝置6為大恒MER-500-14U3C-L型CCD工業相機。軟件開發平臺為基于OpenCV且配置深度學習架構TensorFlow的Spyder集成開發環境,TensorFlow是一個谷歌開源的深度學習架構,編程語言為Python3,在Spyder軟件的編譯環境下采用CPU+GPU并行計算的方式訓練深度學習模型。紅棗5通過上料斗1上料,在輥輪4的輸送過程中,通過毛刷2實現紅棗的有序排列,然后圖像采集裝置6將采集到的圖像傳輸到計算機3,在計算機的Spyder軟件中對紅棗缺陷進行檢測和分類。

1. 紅棗上料斗 2. 毛刷 3. 計算機 4. 輸送輥輪 5. 紅棗 6. 圖像采集裝置
為了防止因訓練樣本不足導致卷積神經網絡對紅棗圖片分類模型的欠擬合,增強模型的魯棒性,將紅棗進行翻轉拍攝多個表面以保證訓練樣本數量,共采集1 960張彩色圖片。
(1) 將紅棗圖像尺寸調整為512×512,然后將彩色圖像通道進行分離,選取最佳通道作為神經網絡輸入層。為了降低網絡訓練維度,同時獲取最佳訓練效果,對紅棗彩色圖片進行R、G、B顏色通道分離處理,缺陷棗圖像RGB3通道分離后如圖2所示。由圖2可知,缺陷棗的G分量圖在紅棗正常部位和缺陷部位的反差色較大,并且褶皺處紋理細節特征更加明顯,而破皮棗和霉爛棗在缺陷部位具有相似的灰度值特征,故采用G分量來描述紅棗缺陷特征,并作為卷積神經網絡的輸入層。
(2) 將G分量圖的灰度值進行按位取反操作,得到正常棗和缺陷棗的影像圖(圖3)。將得到的紅棗影像特征作為殘差經網絡輸入,將彩色圖像需要訓練的三維度降到了一維度,既保留了紅棗的缺陷和紋理等有用信息,又大大減少了彩色圖像作為輸入時的神經網絡運算量。

圖2 缺陷棗RGB顏色通道分量圖Figure 2 Bad jujube RGB color channel component diagram

圖3 正常棗和缺陷棗影像圖Figure 3 Image of good jujube and bad jujube
試驗采用ResNet34即34層殘差網絡結構模型進行紅棗分類訓練,模型結構如圖4所示,在全連接層后用Dropout層輸出,最后用損失函數softmax和center loss分別計算每種紅棗的歸類概率并輸出分類標簽。
卷積層Conv1采用3×3大小的24個卷積核,卷積方式為valid對紅棗表面紋理、破皮以及霉變等缺陷進行特征提取;Conv2~Conv33每層均采用3×3大小的24個卷積核,卷積方式為same對特征進行無監督下的學習,學習方式為對每層輸入與輸出間的殘差信息進行學習。卷積操作后的激活函數均采用SELU,用于將學習得到的紅棗缺陷特征進行非線性映射。

圖4 試驗算法的殘差網絡結構圖Figure 4 Structure of jujube deep residual network
傳統卷積神經網絡學習深度過深時,梯度在反向傳播的過程中,靠近輸出層的參數收斂較快,靠近輸入層的參數收斂速度較慢。為避免網絡陷入梯度爆炸降低分類準確率,將殘差單元引入卷積網絡,殘差單元如圖5所示。傳統的卷積層或全連接層進行網絡信息傳遞時,存在梯度信息丟失現象,在卷積層之間加入shortcut結構,目的是用目標函數變為輸出減去輸入后的殘差,保護信息的完整性,即學習網絡的輸入信息得出輸出與輸入的差別部分,其中:
h(x)=f(x)+x,
(1)
式中:
f(x)、h(x)——輸入函數和目標函數。
該結構未引入新參數,不會增大額外計算量,有效解決了網絡誤差反向傳播過程中的梯度彌散現象。

圖5 殘差單元Figure 5 Residual element
卷積神經網絡中常用的激活函數為Relu,其梯度值大,在反向傳播階段,能防止梯度傳播到前幾層網絡時出現彌散消失現象,性能優于傳統的激活函數Sigmoid[12],其形式為:

(2)
最新研究[12]表明,使用SELU激活函數后的網絡收斂速度大于使用Relu激活函數的,采用SELU激活函數后可使樣本分布自動歸一化到0均值和單位方差,其中SELU函數為:
(3)
其中,λ、α均為經證明出來的常數,λ≈1.057 00,α≈1.673 26。
為抑制訓練過程中的梯度爆炸或消失,激活函數在負半軸坡度平緩,可減小激活操作后過大的方差,防止梯度爆炸。由式(2)、(3)可得,Relu激活函數在正半軸斜率為1,SELU激活函數在正半軸部分斜率>1,故在訓練過程中可增大過小的方差,避免提前收斂,同時防止梯度消失。因此,激活函數有一個不動點,網絡加深后每一層的輸出都是均值為0,方差為1。故采用SELU作為激活函數優化網絡訓練。經過全連接層輸出可將學習得到的正常棗、霉變棗和破皮棗3個分類標簽訓練得到一個3分類的殘差網絡模型。
為驗證試驗提出的算法在紅棗分類上的有效性,首先將試驗提出的算法和相同網絡層數但不使用殘差單元的傳統卷積網絡進行對比,然后將分別使用Relu和SELU作為激活函數的深度殘差網絡進行對比,最后將損失函數分別采用softmax loss和center loss的SELU作為激活函數的深度殘差網絡進行對比。采用Kappa系數、總體分類精度以及各類紅棗分類精度作為算法的精度評價準則。Kappa系數是一種用來衡量分類精度的指標,其值越接近1表明模型分類精度越高。假設p0為總體分類精度,即正確分類的樣本數量yi之和除以總樣本數n。每類紅棗實際數量分別為x0,x1,…,xn,正確預測得到的數量為y0,y1,…,yn,則Kappa系數為:
(4)
試驗將980個紅棗進行翻轉拍攝不同表面共得到1 960張紅棗圖片,然后將圖片批量進行旋轉一定角度以擴充試驗數據集得到3 920張圖片。如表1所示,在Spyder軟件中用TensorFlow搭建殘差網絡框架,將訓練集中80%紅棗隨機劃分為訓練集部分,剩余20%紅棗劃分為測試集部分,其余紅棗作為驗證集樣本測試網絡模型的泛化能力。試驗通過控制單一變量,在同一臺計算機上分別運行不同改進算法的殘差網絡模型,然后進行整合分析,為防止網絡過擬合或欠擬合產生的模型泛化能力較差,因而引入新的驗證集進行不同模型識別準確的檢驗,同時采用Kappa系數作為分類精度的準則來檢驗4種模型的泛化能力和分類精度。

表1 試驗數據集Table 1 Experimental dataset
為驗證殘差結構對紅棗分類識別精度的影響,將SELU替換Relu作為激活函數,且采用損失函數center loss代替softmax loss,同時使用Adam優化器采用學習率逐步降低的方法對卷積神經網絡進行訓練,隨著迭代次數增加,學習率由大逐步減小,不僅避免了因學習步長過大從而越過最優過早網絡退化的現象,而且避免了學習步長過小導致網絡收斂速度慢的問題。將網絡的權重用均值為0且方差為1的截斷正態分布賦值,初始化偏置值為0.1,Dropout值設置為0.2(即隨機隱藏20%的神經元進行訓練),學習率初始值賦值為0.001,網絡迭代次數設置為2 000。圖6、7分別為3種改進ResNet34殘差網絡和卷積神經網絡的損失率曲線與分類準確率曲線。
由圖6、7可知,僅通過優化激活函數,在使用SELU激活函數下,網絡的收斂速度和識別準確率高于使用Relu激活函數的網絡,且在網絡訓練層數加深多次迭代下,殘差網絡模型未出現明顯的網絡退化現象,而CNN的識別準確率產生明顯下降。

圖6 損失函數曲線Figure 6 Lossfunction curve

圖7 識別率曲線Figure 7 Accuracy curve
由表2可知,驗證集的Kappa系數也反映出不使用殘差學習的CNN網絡識別準確率提高不明顯,是因為網絡傳播中節點間信息流動出現學習特征丟失。將分別使用softmax loss和center loss損失函數的模型進行比較,可看出使用center loss損失函數,模型識別缺陷準確率略高,主要是因為center loss有效解決了softmax分類在類內間距上較大的缺點,使網絡學習得到的特征不僅能有效分類,而且盡量滿足了同類特征相互間間距較小的要求。采用激活函數SELU和損失函數center loss的模型對三類棗的分類準確率高于其余分類模型,說明該模型在多分類問題上具有更好的泛化能力。

表2 優化殘差網絡與其余網絡比較Table 2 Comparison between optimized residual network and other networks
試驗提出了對殘差網絡采取替換激活函數與損失函數的方法,相比傳統的CNN網絡,識別準確率提高了4.54%,表明引入殘差學習方式且優化激活函數和損失函數后的網絡分類性能更佳,采用殘差網絡對紅棗表面缺陷檢測的多分類效果較好,對其他水果的表面缺陷檢測具有一定的應用價值。后續可采用softmax結合center loss的方法,或者使用交叉熵損失函數分類的方法對模型進行改進。試驗中的誤差來源除模型本身誤差外,還有紅棗照片采集時留下的高光等噪聲對網絡學習的干擾,后續可以考慮紅色等有色光源的使用是否能減小紅棗圖像采集的噪聲,以提供更好的分類圖片。