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