甘 露,韓衛(wèi)光
(1.中國科學(xué)院 沈陽計(jì)算技術(shù)研究所, 沈陽 110168; 2.中國科學(xué)院大學(xué), 北京 100049)
工件識(shí)別是工業(yè)生產(chǎn)過程中不可缺少的步驟[1]。主要是利用機(jī)器視覺技術(shù),模仿人類的視覺系統(tǒng),從而建立智能的機(jī)器識(shí)別系統(tǒng)[2]。傳統(tǒng)的基于機(jī)器視覺的智能識(shí)別系統(tǒng)主要是基于特征提取和模板匹配[3-5]的方法進(jìn)行工件識(shí)別。該類方法通過提取工件的輪廓、邊緣、特征點(diǎn)等工件特征,與原始工件的模板進(jìn)行匹配識(shí)別[6-8]。另外,近年來還有T Ojala等提出了基于圖像局部紋理的局部二值模式(Local Binary Pattern,LBP)方法[9];由Dalal等提出的基于方向梯度直方圖(Histogram of Oriented Gradient,HOG)方法[10];以及基于主成分分析(PCA)和SIFT特征相結(jié)合等方法[11]。這些基于特征提取的方法,與工件的類型有著很強(qiáng)的關(guān)聯(lián)性,對(duì)于不同類型的工件,其魯棒性較差,很難具有通用性。并且該類方法的識(shí)別準(zhǔn)確率易受工件的平移旋轉(zhuǎn)、光照、噪聲等因素的影響。
研究表明,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)的多層卷積層能夠自動(dòng)提取圖像的特征,并逐步將提取的底層特征融合形成高級(jí)特征,實(shí)現(xiàn)從局部信息逐漸抽象到高層語義信息的過程。整個(gè)處理流程不需要人工干預(yù),并且通過全連接層將特征提取和圖像分類串聯(lián)起來,從而完成端到端的圖像識(shí)別。本文結(jié)合卷積神經(jīng)網(wǎng)絡(luò)技術(shù)和機(jī)器視覺技術(shù),構(gòu)建了一個(gè)6層的端到端的卷積神經(jīng)網(wǎng)絡(luò)模型來實(shí)現(xiàn)對(duì)工件的識(shí)別。該網(wǎng)絡(luò)模型包含4個(gè)卷積層和2個(gè)全連接層,并在網(wǎng)絡(luò)模型的訓(xùn)練過程中加入了激活層、最大值池化層和局部響應(yīng)歸一化層。激活層提高了對(duì)網(wǎng)絡(luò)模型中的非線性特征的提??;最大值池化層降低了網(wǎng)絡(luò)模型中數(shù)據(jù)維度,減少網(wǎng)絡(luò)模型中的參數(shù)數(shù)量;局部響應(yīng)歸一化層抑制反饋較小的神經(jīng)元,提高了網(wǎng)絡(luò)模型的泛化能力。在進(jìn)行網(wǎng)絡(luò)訓(xùn)練之前,加入了圖像預(yù)處理,降低了因噪聲干擾、光照變化等不利因素對(duì)網(wǎng)絡(luò)模型識(shí)別結(jié)果的影響。實(shí)驗(yàn)結(jié)果表明,卷積神經(jīng)網(wǎng)絡(luò)模型有效的解決了工件識(shí)別領(lǐng)域中的特征提取困難、魯棒性差、通用性差等問題。
圖片預(yù)處理過程中能有效的降低光照變化、噪聲的干擾等不利因素;在改善圖像質(zhì)量的同時(shí),能很好的提高卷積神經(jīng)網(wǎng)絡(luò)模型的準(zhǔn)確率。
攝像機(jī)采集的圖像大多是彩色的,但是彩色的圖像不僅計(jì)算量大,而且對(duì)于工業(yè)生產(chǎn)環(huán)境中彩色圖像的工件識(shí)別沒有很好的效果,因此,我們需要將彩色圖像進(jìn)行灰度化處理,轉(zhuǎn)換成相應(yīng)的灰度圖。一般的,當(dāng)R=G=B時(shí),彩色圖像就可以轉(zhuǎn)換成一幅灰度圖,而R=G=B的值就稱為灰度值,灰度值的范圍為0~255。目前進(jìn)行灰度化的方法主要有平均值法、最大值法以及加權(quán)平均法。平均值法就是取RGB中的均值做為灰度值;最大值法則是取取RGB中的最大值做為灰度值;加權(quán)平均法則是根據(jù)RGB所占的比例,按一定的權(quán)值加權(quán)平均取得的灰度值。
圖像在采集過程中,必然會(huì)受到各種因素的影響,比如信號(hào)干擾、光照不均等,都會(huì)在圖像中引入噪聲[12]。為了提高工件識(shí)別的準(zhǔn)確率,因此在圖像預(yù)處理階段必須對(duì)圖像進(jìn)行去噪。均值濾波[13-15]是一種線性領(lǐng)域?yàn)V波算法,能對(duì)圖像中濾波進(jìn)行很好的濾除。均值濾波是通過對(duì)目標(biāo)像素領(lǐng)域內(nèi)的像素點(diǎn)的灰度值求取平均值,然后再用平均值取代像素點(diǎn)的方法。該方法是一種領(lǐng)域平均法。其求取公式如式(1)所示:
(1)
其中,(x,y)是目標(biāo)像素點(diǎn)的位置,f(x,y)是像素點(diǎn)的灰度值,m是領(lǐng)域像素點(diǎn)的個(gè)數(shù)。
卷積神經(jīng)網(wǎng)絡(luò)是一種多層感知機(jī)(Multilayer Perceptron, MLP)的變種模型,剛開始被用來模擬大腦皮層的視覺行為,后來被應(yīng)用在計(jì)算機(jī)視覺的物體識(shí)別任務(wù)中,并且表現(xiàn)出色。卷積神經(jīng)網(wǎng)絡(luò)一般由輸入層、卷積層、池化層、激活層、全連接層、以及最后的輸出層組成[16-19],如圖1所示。從輸入層到輸出層,每個(gè)層之間通過各個(gè)神經(jīng)節(jié)點(diǎn)建立聯(lián)系,逐層傳遞信息。連續(xù)的卷積池化操作能夠?qū)υ紨?shù)據(jù)的特征信號(hào)進(jìn)行解碼、演繹、匯聚,映射到相應(yīng)的特征空間,再通過全連接層進(jìn)行分類輸出。
圖1 典型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
卷積層是通過不同大小的卷積核經(jīng)過卷積運(yùn)算,將每一塊區(qū)域的特征信息進(jìn)行匯聚、融合,形成一個(gè)局部區(qū)域的刻畫;卷積層采用類似滑動(dòng)窗口模式遍歷整個(gè)特征圖。
激活層主要是通過激活函數(shù),對(duì)輸入數(shù)據(jù)進(jìn)行映射變換,提供網(wǎng)絡(luò)的非線性建模能力。
池化層通過計(jì)算特征圖的局部塊的值,降低了數(shù)據(jù)的維度,具有平移不變性,并且極大的減少了網(wǎng)絡(luò)的計(jì)算量和參數(shù)數(shù)量。
全連接層是一種傳統(tǒng)的多層感知機(jī)模型,通過與前一層的每一個(gè)神經(jīng)元全連接,輸出圖像的高維特征,最后通過softmax回歸分類模型[20-21]輸出每個(gè)類別的概率。
基于卷積神經(jīng)網(wǎng)絡(luò)的工件識(shí)別分類模型如圖2所示,包含卷積層、激活層、池化層、局部響應(yīng)歸一化層(LRN層)、全連接層。
圖2 工件識(shí)別分類模型圖
該模型中使用3×3的卷積核進(jìn)行圖像的特征提取,第一層32個(gè)卷積核,第二層64個(gè)卷積核,第三層和第四層128個(gè)卷積核。激活層使用PReLU(Parametric Rectified Linear Unit)函數(shù)[22],該函數(shù)加入了可學(xué)習(xí)率ai,使得PReLU函數(shù)的輸出總是更趨近于零均值,從而可以使梯度下降算法優(yōu)化的結(jié)果更接近于自然梯度。該函數(shù)表達(dá)式如式(2)所示:
(2)
PReLU函數(shù)的圖像如圖3所示。
圖3 PReLU函數(shù)圖像
池化層使用大小為2×2,步長(zhǎng)為1的最大值池化。
局部響應(yīng)歸一化層(LRN層)是借助生物學(xué)的側(cè)抑制的概念,通過局部抑制,使得區(qū)域中響應(yīng)大的值變得相對(duì)較大,并抑制其他反饋較小的神經(jīng)元,增強(qiáng)了模型的泛化能力。其中LRN層的公式如式(3)所示:
(3)
全連接層是各個(gè)神經(jīng)節(jié)點(diǎn)之間做內(nèi)積運(yùn)算,主要是前向計(jì)算和后向計(jì)算。后向計(jì)算的公式見式(4):
y=WTx+b
(4)
(5)
其中,y∈Rm×1代表神經(jīng)元的輸出,x∈Rn×1代表神經(jīng)元的輸入,W∈Rn×m代表神經(jīng)元的權(quán)值,b為偏置項(xiàng),ι為神經(jīng)元。
xι=f(uι)
(6)
(7)
反向傳播階段是使用鏈?zhǔn)椒▌t,逐層對(duì)每個(gè)神經(jīng)節(jié)點(diǎn)迭代進(jìn)行梯度計(jì)算,用以更新權(quán)值,從而使得結(jié)果接近代價(jià)函數(shù)或者最小化損失函數(shù)(Cost Function)。其中,損失函數(shù)如式(8):
(8)
實(shí)驗(yàn)需計(jì)算機(jī)一臺(tái),測(cè)試環(huán)境是ubuntu16.04-64位操作系統(tǒng),開發(fā)平臺(tái)有tensorflow、opencv-3.4.1。利用opencv對(duì)圖像進(jìn)行預(yù)處理,再通過tensorflow深度學(xué)習(xí)平臺(tái)進(jìn)行網(wǎng)絡(luò)訓(xùn)練和學(xué)習(xí)。通過在tensorflow平臺(tái)上搭建卷積神經(jīng)網(wǎng)絡(luò)模型實(shí)現(xiàn)對(duì)工件的識(shí)別。
圖4是實(shí)驗(yàn)室中任選的6種工件原圖。
圖4 實(shí)驗(yàn)工件圖
圖5是通過預(yù)處理后的工件圖片。
圖5 預(yù)處理圖
圖6是測(cè)試環(huán)境下對(duì)工件識(shí)別的測(cè)試效果圖,圖中顯示了識(shí)別的概率和對(duì)應(yīng)的類別。
圖6 測(cè)試效果圖
通過對(duì)這6種工件進(jìn)行任意擺放,且對(duì)每類工件進(jìn)行分別進(jìn)行200次實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表1所示。根據(jù)表1可知算法的平均識(shí)別時(shí)間是0.173s,平均識(shí)別準(zhǔn)確率是98.7,優(yōu)于文獻(xiàn)[8]基于SVM的工件識(shí)別的平均準(zhǔn)確率93.2%。
表1 實(shí)驗(yàn)數(shù)據(jù)表
本文針對(duì)機(jī)器人應(yīng)用中工件識(shí)別問題,通過圖像預(yù)處理,再經(jīng)過本文構(gòu)建的卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行預(yù)測(cè),實(shí)現(xiàn)了目標(biāo)工件的識(shí)別,并且有效的解決了傳統(tǒng)工件識(shí)別方法中的工件的平移、旋轉(zhuǎn)、光照、噪聲等問題。經(jīng)實(shí)驗(yàn)證明,本文構(gòu)建的卷積神經(jīng)網(wǎng)絡(luò)模型在工件識(shí)別中有良好的效果和更好的魯棒性,其平均識(shí)別準(zhǔn)確率優(yōu)于傳統(tǒng)基于特征提取和模板匹配的方法。