文懷興 王俊杰 韓 昉
(陜西科技大學(xué)機電工程學(xué)院,陜西 陜西 710021)
紅棗是中國極具特色的干果,維生素含量高,被譽為“天然維生素丸”。大部分紅棗經(jīng)干制后流入市場,部分紅棗還需進行去核、切片、干燥等深加工處理,紅棗若不進行初步的品質(zhì)分級,缺陷棗流入市場,將影響干制紅棗的附加值。
由于人工檢測分級效率較低,為順應(yīng)農(nóng)產(chǎn)品精深加工自動化、智能化的要求,基于機器視覺的紅棗自動分級檢測成為研究熱點。早期缺陷棗分類檢測方法主要為:人工對紅棗圖像進行預(yù)處理得到紅棗缺陷特征值向量,然后采用監(jiān)督學(xué)習(xí)算法支持向量機為分類器進行統(tǒng)計分類,每張紅棗圖像分類時均需經(jīng)過大量人工設(shè)計步驟且存在一定的人為主觀判斷性,對多種缺陷特征分類準(zhǔn)確率存在較大差異,算法的時間復(fù)雜度和空間復(fù)雜度較高,因而還需進行主成分分析(PCA)進行降維處理,使得整體分類準(zhǔn)確率提高不顯著。蔣偉[1]提出了基于灰度共生矩陣通過圖像灰度的空間位置描述紅棗紋理的檢測方法;海潮等[2]提出了基于Blob的紅棗表面缺陷檢測方法,識別準(zhǔn)確率均為90%以上;蘇軍等[3]提出了基于GA優(yōu)化SVM的紅棗識別方法,3種方法均只對紅棗紋理、破損等特征進行分類,存在對霉變棗分類效果不明顯的問題。Lecun等[4]提出的7層結(jié)構(gòu)的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型在手寫數(shù)字識別方面取得重大突破,用于銀行的手寫支票識別。而神經(jīng)網(wǎng)絡(luò)在學(xué)習(xí)深度加深時會出現(xiàn)梯度彌散現(xiàn)象,只能局部收斂,所以早期分類識別主要使用SVM分類方法。
2012年,Krizhevsky提出的AlexNet模型在斯坦福ImageNet圖像識別大賽上以絕對優(yōu)勢擊敗SVM分類器后,卷積神經(jīng)網(wǎng)絡(luò)進入大范圍應(yīng)用且成為經(jīng)典分類網(wǎng)絡(luò)模型,通過權(quán)值共享使得網(wǎng)絡(luò)權(quán)值數(shù)量減少,復(fù)雜度降低,而且采用卷積操作提取的特征具有一定的平移、縮放和扭曲不變性等特點[5],特別適合果蔬表面紋理等特征的提取,因而基于卷積神經(jīng)網(wǎng)絡(luò)模型的果蔬識別技術(shù)的研究得到迅速發(fā)展[6-8]。隨后Krizhevsky等[9]提出用Relu激活函數(shù)代替Sigmoid激活函數(shù)和在全連接層后引入Dropout層改善傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò),不僅提高了訓(xùn)練速度,而且有效抑制了梯度彌散現(xiàn)象,而采用Dropout層則有效防止了網(wǎng)絡(luò)的過擬合[10]。但該模型使用了如11×11,5×5等尺寸非常大的卷積核,導(dǎo)致計算量大且不利于模型深度提升。Simonyan等[11]提出VGGNet模型,采用多個連續(xù)的3×3卷積核替換AlexNet模型中的大尺寸卷積核,提高了網(wǎng)絡(luò)非線性變換的能力和學(xué)習(xí)深度。然而簡單地堆疊卷積模塊加深學(xué)習(xí)深度的方法導(dǎo)致網(wǎng)絡(luò)退化,但淺層網(wǎng)絡(luò)又無法提升識別準(zhǔn)確率[12],因而何凱明等[13]提出了ResNet殘差網(wǎng)絡(luò)模型,通過殘差模塊來抑制網(wǎng)絡(luò)退化,具有較好的識別效果。Klambauer等[14]提出了縮放指數(shù)型線性單元(SELU)作為激活函數(shù),使卷積產(chǎn)生的輸出可進行自歸一化,并驗證了SELU函數(shù)的網(wǎng)絡(luò)訓(xùn)練收斂速度以及分類準(zhǔn)確率優(yōu)于采用Relu激活函數(shù)的CNN網(wǎng)絡(luò)。
試驗擬采用計算機視覺技術(shù)融合深度殘差網(wǎng)絡(luò)模型的優(yōu)點,對紅棗圖像分類模型的網(wǎng)絡(luò)進行改進,從而提升識別準(zhǔn)確率,旨在實現(xiàn)對紅棗多種缺陷進行檢測。主要改進方面為:用SELU激活函數(shù)替換Relu激活函數(shù)得到新的殘差學(xué)習(xí)模塊;采用學(xué)習(xí)率隨迭代次數(shù)增多而減小的方式優(yōu)化學(xué)習(xí);通過將最能體現(xiàn)紅棗缺陷特征的彩色圖像通道分離來降低深度學(xué)習(xí)的學(xué)習(xí)維數(shù);針對softmax分類產(chǎn)生類間距較大的現(xiàn)象,提出采用中心損失函數(shù)center loss代替softmax loss。
新疆若羌灰棗:依據(jù)表面是否有破損、霉變和褶皺對紅棗進行篩選,對于缺陷棗數(shù)量不足的問題采用人為的方法來獲得,得到正常棗和缺陷棗各490個。
主要包括硬件平臺和軟件平臺,以及圖像采集裝置及軟件開發(fā)環(huán)境。硬件平臺如圖1所示,計算機3為配置CPU Intel CORE i5 8G的處理器、GPUGTX1060 4G處理器、Windows10 x64系統(tǒng)的檢測用計算機,圖像采集裝置6為大恒MER-500-14U3C-L型CCD工業(yè)相機。軟件開發(fā)平臺為基于OpenCV且配置深度學(xué)習(xí)架構(gòu)TensorFlow的Spyder集成開發(fā)環(huán)境,TensorFlow是一個谷歌開源的深度學(xué)習(xí)架構(gòu),編程語言為Python3,在Spyder軟件的編譯環(huán)境下采用CPU+GPU并行計算的方式訓(xùn)練深度學(xué)習(xí)模型。紅棗5通過上料斗1上料,在輥輪4的輸送過程中,通過毛刷2實現(xiàn)紅棗的有序排列,然后圖像采集裝置6將采集到的圖像傳輸?shù)接嬎銠C3,在計算機的Spyder軟件中對紅棗缺陷進行檢測和分類。
1. 紅棗上料斗 2. 毛刷 3. 計算機 4. 輸送輥輪 5. 紅棗 6. 圖像采集裝置
為了防止因訓(xùn)練樣本不足導(dǎo)致卷積神經(jīng)網(wǎng)絡(luò)對紅棗圖片分類模型的欠擬合,增強模型的魯棒性,將紅棗進行翻轉(zhuǎn)拍攝多個表面以保證訓(xùn)練樣本數(shù)量,共采集1 960張彩色圖片。
(1) 將紅棗圖像尺寸調(diào)整為512×512,然后將彩色圖像通道進行分離,選取最佳通道作為神經(jīng)網(wǎng)絡(luò)輸入層。為了降低網(wǎng)絡(luò)訓(xùn)練維度,同時獲取最佳訓(xùn)練效果,對紅棗彩色圖片進行R、G、B顏色通道分離處理,缺陷棗圖像RGB3通道分離后如圖2所示。由圖2可知,缺陷棗的G分量圖在紅棗正常部位和缺陷部位的反差色較大,并且褶皺處紋理細節(jié)特征更加明顯,而破皮棗和霉?fàn)€棗在缺陷部位具有相似的灰度值特征,故采用G分量來描述紅棗缺陷特征,并作為卷積神經(jīng)網(wǎng)絡(luò)的輸入層。
(2) 將G分量圖的灰度值進行按位取反操作,得到正常棗和缺陷棗的影像圖(圖3)。將得到的紅棗影像特征作為殘差經(jīng)網(wǎng)絡(luò)輸入,將彩色圖像需要訓(xùn)練的三維度降到了一維度,既保留了紅棗的缺陷和紋理等有用信息,又大大減少了彩色圖像作為輸入時的神經(jīng)網(wǎng)絡(luò)運算量。
圖2 缺陷棗RGB顏色通道分量圖Figure 2 Bad jujube RGB color channel component diagram
圖3 正常棗和缺陷棗影像圖Figure 3 Image of good jujube and bad jujube
試驗采用ResNet34即34層殘差網(wǎng)絡(luò)結(jié)構(gòu)模型進行紅棗分類訓(xùn)練,模型結(jié)構(gòu)如圖4所示,在全連接層后用Dropout層輸出,最后用損失函數(shù)softmax和center loss分別計算每種紅棗的歸類概率并輸出分類標(biāo)簽。
卷積層Conv1采用3×3大小的24個卷積核,卷積方式為valid對紅棗表面紋理、破皮以及霉變等缺陷進行特征提取;Conv2~Conv33每層均采用3×3大小的24個卷積核,卷積方式為same對特征進行無監(jiān)督下的學(xué)習(xí),學(xué)習(xí)方式為對每層輸入與輸出間的殘差信息進行學(xué)習(xí)。卷積操作后的激活函數(shù)均采用SELU,用于將學(xué)習(xí)得到的紅棗缺陷特征進行非線性映射。
圖4 試驗算法的殘差網(wǎng)絡(luò)結(jié)構(gòu)圖Figure 4 Structure of jujube deep residual network
傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)深度過深時,梯度在反向傳播的過程中,靠近輸出層的參數(shù)收斂較快,靠近輸入層的參數(shù)收斂速度較慢。為避免網(wǎng)絡(luò)陷入梯度爆炸降低分類準(zhǔn)確率,將殘差單元引入卷積網(wǎng)絡(luò),殘差單元如圖5所示。傳統(tǒng)的卷積層或全連接層進行網(wǎng)絡(luò)信息傳遞時,存在梯度信息丟失現(xiàn)象,在卷積層之間加入shortcut結(jié)構(gòu),目的是用目標(biāo)函數(shù)變?yōu)檩敵鰷p去輸入后的殘差,保護信息的完整性,即學(xué)習(xí)網(wǎng)絡(luò)的輸入信息得出輸出與輸入的差別部分,其中:
h(x)=f(x)+x,
(1)
式中:
f(x)、h(x)——輸入函數(shù)和目標(biāo)函數(shù)。
該結(jié)構(gòu)未引入新參數(shù),不會增大額外計算量,有效解決了網(wǎng)絡(luò)誤差反向傳播過程中的梯度彌散現(xiàn)象。
圖5 殘差單元Figure 5 Residual element
卷積神經(jīng)網(wǎng)絡(luò)中常用的激活函數(shù)為Relu,其梯度值大,在反向傳播階段,能防止梯度傳播到前幾層網(wǎng)絡(luò)時出現(xiàn)彌散消失現(xiàn)象,性能優(yōu)于傳統(tǒng)的激活函數(shù)Sigmoid[12],其形式為:
(2)
最新研究[12]表明,使用SELU激活函數(shù)后的網(wǎng)絡(luò)收斂速度大于使用Relu激活函數(shù)的,采用SELU激活函數(shù)后可使樣本分布自動歸一化到0均值和單位方差,其中SELU函數(shù)為:
(3)
其中,λ、α均為經(jīng)證明出來的常數(shù),λ≈1.057 00,α≈1.673 26。
為抑制訓(xùn)練過程中的梯度爆炸或消失,激活函數(shù)在負半軸坡度平緩,可減小激活操作后過大的方差,防止梯度爆炸。由式(2)、(3)可得,Relu激活函數(shù)在正半軸斜率為1,SELU激活函數(shù)在正半軸部分斜率>1,故在訓(xùn)練過程中可增大過小的方差,避免提前收斂,同時防止梯度消失。因此,激活函數(shù)有一個不動點,網(wǎng)絡(luò)加深后每一層的輸出都是均值為0,方差為1。故采用SELU作為激活函數(shù)優(yōu)化網(wǎng)絡(luò)訓(xùn)練。經(jīng)過全連接層輸出可將學(xué)習(xí)得到的正常棗、霉變棗和破皮棗3個分類標(biāo)簽訓(xùn)練得到一個3分類的殘差網(wǎng)絡(luò)模型。
為驗證試驗提出的算法在紅棗分類上的有效性,首先將試驗提出的算法和相同網(wǎng)絡(luò)層數(shù)但不使用殘差單元的傳統(tǒng)卷積網(wǎng)絡(luò)進行對比,然后將分別使用Relu和SELU作為激活函數(shù)的深度殘差網(wǎng)絡(luò)進行對比,最后將損失函數(shù)分別采用softmax loss和center loss的SELU作為激活函數(shù)的深度殘差網(wǎng)絡(luò)進行對比。采用Kappa系數(shù)、總體分類精度以及各類紅棗分類精度作為算法的精度評價準(zhǔn)則。Kappa系數(shù)是一種用來衡量分類精度的指標(biāo),其值越接近1表明模型分類精度越高。假設(shè)p0為總體分類精度,即正確分類的樣本數(shù)量yi之和除以總樣本數(shù)n。每類紅棗實際數(shù)量分別為x0,x1,…,xn,正確預(yù)測得到的數(shù)量為y0,y1,…,yn,則Kappa系數(shù)為:
(4)
試驗將980個紅棗進行翻轉(zhuǎn)拍攝不同表面共得到1 960張紅棗圖片,然后將圖片批量進行旋轉(zhuǎn)一定角度以擴充試驗數(shù)據(jù)集得到3 920張圖片。如表1所示,在Spyder軟件中用TensorFlow搭建殘差網(wǎng)絡(luò)框架,將訓(xùn)練集中80%紅棗隨機劃分為訓(xùn)練集部分,剩余20%紅棗劃分為測試集部分,其余紅棗作為驗證集樣本測試網(wǎng)絡(luò)模型的泛化能力。試驗通過控制單一變量,在同一臺計算機上分別運行不同改進算法的殘差網(wǎng)絡(luò)模型,然后進行整合分析,為防止網(wǎng)絡(luò)過擬合或欠擬合產(chǎn)生的模型泛化能力較差,因而引入新的驗證集進行不同模型識別準(zhǔn)確的檢驗,同時采用Kappa系數(shù)作為分類精度的準(zhǔn)則來檢驗4種模型的泛化能力和分類精度。
表1 試驗數(shù)據(jù)集Table 1 Experimental dataset
為驗證殘差結(jié)構(gòu)對紅棗分類識別精度的影響,將SELU替換Relu作為激活函數(shù),且采用損失函數(shù)center loss代替softmax loss,同時使用Adam優(yōu)化器采用學(xué)習(xí)率逐步降低的方法對卷積神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,隨著迭代次數(shù)增加,學(xué)習(xí)率由大逐步減小,不僅避免了因?qū)W習(xí)步長過大從而越過最優(yōu)過早網(wǎng)絡(luò)退化的現(xiàn)象,而且避免了學(xué)習(xí)步長過小導(dǎo)致網(wǎng)絡(luò)收斂速度慢的問題。將網(wǎng)絡(luò)的權(quán)重用均值為0且方差為1的截斷正態(tài)分布賦值,初始化偏置值為0.1,Dropout值設(shè)置為0.2(即隨機隱藏20%的神經(jīng)元進行訓(xùn)練),學(xué)習(xí)率初始值賦值為0.001,網(wǎng)絡(luò)迭代次數(shù)設(shè)置為2 000。圖6、7分別為3種改進ResNet34殘差網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的損失率曲線與分類準(zhǔn)確率曲線。
由圖6、7可知,僅通過優(yōu)化激活函數(shù),在使用SELU激活函數(shù)下,網(wǎng)絡(luò)的收斂速度和識別準(zhǔn)確率高于使用Relu激活函數(shù)的網(wǎng)絡(luò),且在網(wǎng)絡(luò)訓(xùn)練層數(shù)加深多次迭代下,殘差網(wǎng)絡(luò)模型未出現(xiàn)明顯的網(wǎng)絡(luò)退化現(xiàn)象,而CNN的識別準(zhǔn)確率產(chǎn)生明顯下降。
圖6 損失函數(shù)曲線Figure 6 Lossfunction curve
圖7 識別率曲線Figure 7 Accuracy curve
由表2可知,驗證集的Kappa系數(shù)也反映出不使用殘差學(xué)習(xí)的CNN網(wǎng)絡(luò)識別準(zhǔn)確率提高不明顯,是因為網(wǎng)絡(luò)傳播中節(jié)點間信息流動出現(xiàn)學(xué)習(xí)特征丟失。將分別使用softmax loss和center loss損失函數(shù)的模型進行比較,可看出使用center loss損失函數(shù),模型識別缺陷準(zhǔn)確率略高,主要是因為center loss有效解決了softmax分類在類內(nèi)間距上較大的缺點,使網(wǎng)絡(luò)學(xué)習(xí)得到的特征不僅能有效分類,而且盡量滿足了同類特征相互間間距較小的要求。采用激活函數(shù)SELU和損失函數(shù)center loss的模型對三類棗的分類準(zhǔn)確率高于其余分類模型,說明該模型在多分類問題上具有更好的泛化能力。
表2 優(yōu)化殘差網(wǎng)絡(luò)與其余網(wǎng)絡(luò)比較Table 2 Comparison between optimized residual network and other networks
試驗提出了對殘差網(wǎng)絡(luò)采取替換激活函數(shù)與損失函數(shù)的方法,相比傳統(tǒng)的CNN網(wǎng)絡(luò),識別準(zhǔn)確率提高了4.54%,表明引入殘差學(xué)習(xí)方式且優(yōu)化激活函數(shù)和損失函數(shù)后的網(wǎng)絡(luò)分類性能更佳,采用殘差網(wǎng)絡(luò)對紅棗表面缺陷檢測的多分類效果較好,對其他水果的表面缺陷檢測具有一定的應(yīng)用價值。后續(xù)可采用softmax結(jié)合center loss的方法,或者使用交叉熵損失函數(shù)分類的方法對模型進行改進。試驗中的誤差來源除模型本身誤差外,還有紅棗照片采集時留下的高光等噪聲對網(wǎng)絡(luò)學(xué)習(xí)的干擾,后續(xù)可以考慮紅色等有色光源的使用是否能減小紅棗圖像采集的噪聲,以提供更好的分類圖片。