徐一丁,杜慧敏,毛智禮,張麗果,顧文寧
(西安郵電大學(xué) 電子工程學(xué)院,西安 710121)
隨著我國工業(yè)生產(chǎn)自動(dòng)化與智能化的重要性不斷提升,現(xiàn)代化工廠對(duì)工業(yè)機(jī)器人的要求也越來越高[1-2]。工件的識(shí)別和定位作為工業(yè)機(jī)器人的核心模塊,對(duì)推進(jìn)生產(chǎn)自動(dòng)化有著重要的意義[3]。傳統(tǒng)的工件識(shí)別算法有基于圖像分割、形狀匹配、特征分析、決策分類、多傳感器信息融合、雙目立體視覺等方法[4-6]。其中基于特征提取的工件識(shí)別一般是通過分析待識(shí)別工件的灰度圖像進(jìn)行識(shí)別[7-8],通過提取工件的邊緣、輪廓、尺度不變特征(Scale-invariant feature transform, SIFT)等特征提取識(shí)別算法[9-11]。近些年在基于特征提取的識(shí)別算法方面,提出了許多融合方法的識(shí)別算法,如基于局部二值模式(local binary pattern, LBP)與支持向量機(jī)(support vector machine, SVM)相結(jié)合的識(shí)別算法[12],基于LBP與方向梯度直方圖(Histogram of oriented gradient, HOG)特征融合的識(shí)別算法[13],基于主成分分析(Principal Component Analysis, PCA)與SIFT特征相結(jié)合的識(shí)別算法[14],基于SVM和組合矩的識(shí)別算法[15],還有基于角點(diǎn)檢測(cè)和霍夫變換的識(shí)別算法[16]。這些基于特征的工件識(shí)別算法與工件本身的特點(diǎn)相關(guān)性較強(qiáng),對(duì)于不同的工件需要重新設(shè)計(jì)算法,通用性差。而且由于工件表面顏色相近,形狀變化平緩,很難提取出魯棒性較強(qiáng)的特征,因此誤識(shí)別率很高,受光源、噪聲等環(huán)境因素的影響較大。
本文采用機(jī)器視覺技術(shù)與機(jī)器學(xué)習(xí)相結(jié)合的方法對(duì)工件進(jìn)行識(shí)別和定位。通過構(gòu)建一個(gè)4層卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)工件的識(shí)別,網(wǎng)絡(luò)包括2層卷積層和2層全連接層。本文制作了一個(gè)小規(guī)模的數(shù)據(jù)集對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練并根據(jù)數(shù)據(jù)集的特點(diǎn)設(shè)計(jì)訓(xùn)練網(wǎng)絡(luò)的策略。為了能夠用小規(guī)模的數(shù)據(jù)集實(shí)現(xiàn)更好的訓(xùn)練效果,本文在卷積層中加入了批歸一化層,在全連接層使用隨機(jī)失活的方法增加網(wǎng)絡(luò)的泛化能力。然后結(jié)合圖像處理技術(shù)對(duì)圖像進(jìn)行預(yù)處理以進(jìn)一步增強(qiáng)算法的識(shí)別效果。根據(jù)對(duì)工件識(shí)別這一問題的研究,在保證識(shí)別效果的前提下將卷積神經(jīng)網(wǎng)絡(luò)的層數(shù)改小,減少參數(shù)以降低對(duì)運(yùn)行平臺(tái)的需求,使其能夠在不使用GPU等加速設(shè)備的情況下仍然能夠進(jìn)行實(shí)時(shí)識(shí)別。如果需要改變應(yīng)用場(chǎng)景,識(shí)別其他種類的工件,無需修改程序,只需載入重新訓(xùn)練的網(wǎng)絡(luò)模型。
本文任意選取了10種工件進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)表明基于卷積神經(jīng)網(wǎng)絡(luò)的工件識(shí)別能夠有效的解決傳統(tǒng)工件識(shí)別方法通用性差、特征提取困難、工件的平移、旋轉(zhuǎn)和光照變化對(duì)識(shí)別效果影響較大等問題。
圖像預(yù)處理的主要目的是降低背景變化、光源變化、工件平移和攝像頭高度變化等環(huán)境因素對(duì)識(shí)別的影響,改善圖像質(zhì)量并提升卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效率和準(zhǔn)確率,使卷積神經(jīng)網(wǎng)絡(luò)能夠在層數(shù)較少的情況下仍然能夠準(zhǔn)確識(shí)別。
本文使用的攝像頭采集640×480大小的圖像。首先將采集到的原始圖像轉(zhuǎn)為灰度圖像并進(jìn)行高斯濾波,濾除原始圖像中的噪聲。
對(duì)處理后的灰度圖像進(jìn)行閾值分割,這里使用的閾值分割算法是最大類間方差法(OTSU)。OTSU算法是一種自適應(yīng)閾值確定的算法,它根據(jù)圖像的灰度特性,將圖像分為前景和背景兩個(gè)部分,是一種基于全局的二值化算法[17]。當(dāng)取得最佳閾值時(shí),前景和背景之間的差別應(yīng)該是最大的,OTSU算法衡量差別的標(biāo)準(zhǔn)就是類間方差[18],如式(1)所示。
(1)
圖1 工件區(qū)域與中心位置
圖像截取是為了提高輸入圖像的信息量并且消除工件平移對(duì)識(shí)別造成的影響,達(dá)到提升訓(xùn)練效率和識(shí)別準(zhǔn)確率的目的。
圖像截取的方法是通過繪制工件的最小矩形,然后根據(jù)最小矩形x軸與y軸的最大和最小坐標(biāo)來確定工件區(qū)域,同時(shí)可以根據(jù)最小矩形四個(gè)頂點(diǎn)的坐標(biāo)計(jì)算出工件的中心位置,和識(shí)別結(jié)果一起傳輸給機(jī)械手作為抓取所需的位置信息,效果如圖1所示。
最后將工件區(qū)域平移至圖像的中心,截取圖像中心256×256像素大小的圖像。目的是為了保留工件的尺度信息,以區(qū)別形狀相同,大小不一樣的工件。
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)是一種專門用來處理具有類似網(wǎng)格結(jié)構(gòu)的數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)[19]。卷積神經(jīng)網(wǎng)絡(luò)在諸多應(yīng)用領(lǐng)域都有優(yōu)異的表現(xiàn),如手寫字符識(shí)別、行人檢測(cè)、人臉識(shí)別、人眼檢測(cè)等[20-23]。卷積神經(jīng)網(wǎng)絡(luò)主要由四種類型層構(gòu)成:卷積層、激活層、池化層和全連接層。
(1)卷積層通過對(duì)輸入圖像進(jìn)行卷積運(yùn)算提取特征[24-25],較低的卷積層捕獲低級(jí)圖像特征,較高的卷積層捕獲復(fù)雜的細(xì)節(jié)[26]。
(2)激活層的作用是通過激活函數(shù)為網(wǎng)絡(luò)模型加入非線性因素,使神經(jīng)網(wǎng)絡(luò)能夠?qū)W習(xí)到平滑的曲線,而不是用復(fù)雜的線性組合去逼近一條曲線[27]。
(3)池化層的作用是逐漸降低數(shù)據(jù)的尺寸,減少網(wǎng)絡(luò)參數(shù)的數(shù)量,進(jìn)而有效的控制過擬合[27]。
(4)神經(jīng)網(wǎng)絡(luò)的分類是通過全連接層完成的。全連接層還起到將提取到的分布式特征映射到樣本標(biāo)記空間的作用[28]。
圖2 網(wǎng)絡(luò)模型
根據(jù)工件識(shí)別的特點(diǎn),需要多層卷積層提取工件的特征。由于全連接層參數(shù)的數(shù)量占整個(gè)網(wǎng)絡(luò)參數(shù)數(shù)量的比重較大,因此在能夠保證圖像質(zhì)量和特征提取的前提下減少全連接層的層數(shù),能夠大幅減少運(yùn)算量。本文設(shè)計(jì)的網(wǎng)絡(luò)模型如圖2所示。
卷積層:使用3×3大小的卷積核,其中第一層卷積層有32個(gè)卷積核,第二層卷積層有64個(gè)卷積核。
激活層:使用指數(shù)線性單元(Exponential Linear Units, ELUs)作為激活函數(shù)。ELU函數(shù)表達(dá)式如式(2)所示。
(2)
ELU函數(shù)圖像如圖3所示。
圖3 ELU函數(shù)圖像
ELU與修正線性單元(Rectified linear units, ReLU)相比解決了輸入為負(fù)時(shí)發(fā)生梯度消失的問題和由于不良的初始化或過高的學(xué)習(xí)率而導(dǎo)致神經(jīng)元不再被激活的問題[29]。
池化層:使用空間大小為2×2,步長為1的最大值池化操作。
批歸一化層:在網(wǎng)絡(luò)中加入批歸一化層的目的是對(duì)輸入數(shù)據(jù)做一個(gè)歸一化處理。因?yàn)榫W(wǎng)絡(luò)在進(jìn)行訓(xùn)練時(shí),網(wǎng)絡(luò)中的參數(shù)不斷的發(fā)生更新,前面層訓(xùn)練參數(shù)的更新會(huì)導(dǎo)致后面層輸入數(shù)據(jù)的分布發(fā)生變化,這種數(shù)據(jù)分布的改變稱為內(nèi)協(xié)移[30]。網(wǎng)絡(luò)前面層的微小變化都會(huì)累積放大到后面層,如果每一批訓(xùn)練數(shù)據(jù)的分布都不相同,那么網(wǎng)絡(luò)在訓(xùn)練時(shí)的每次迭代都需要適應(yīng)不同的分布,這不僅會(huì)導(dǎo)致訓(xùn)練效率的下降,還會(huì)因?yàn)轵?yàn)證數(shù)據(jù)的分布與網(wǎng)絡(luò)學(xué)習(xí)到的數(shù)據(jù)分布不同而導(dǎo)致網(wǎng)絡(luò)泛化能力的降低。
批歸一化操作通過每個(gè)數(shù)據(jù)減去這一批數(shù)據(jù)的均值并除以這一批數(shù)據(jù)的標(biāo)準(zhǔn)差,使數(shù)據(jù)的均值和方差歸一化為0和1,如式(3)所示。
(3)
(4)
全連接層:最后的全連接層由含有100個(gè)神經(jīng)元的隱藏層和10個(gè)神經(jīng)元的輸出層構(gòu)成。
在對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練之前,需要做的是要確定優(yōu)化函數(shù)和損失函數(shù),制作訓(xùn)練集和驗(yàn)證集,參數(shù)的初始化。在訓(xùn)練時(shí)對(duì)全連接層使用隨機(jī)失活[31](Dropout)的方法防止過擬合優(yōu)化函數(shù):本文使用自適應(yīng)矩估計(jì)(Adaptive Moment Estimation, Adam)函數(shù)作為優(yōu)化函數(shù)。Adam函數(shù)利用梯度的一階矩估計(jì)和二階矩估計(jì)動(dòng)態(tài)的調(diào)整學(xué)習(xí)率,使每次迭代的學(xué)習(xí)率在一定的范圍內(nèi)[32],公式如式(5)到式(9)所示。
mt=μ×mt-1+(1-μ)×gt
(5)
(6)
(7)
(8)
(9)
損失函數(shù):使用交叉熵代價(jià)函數(shù)作為損失函數(shù)。交叉熵代價(jià)函數(shù)與方差代價(jià)函數(shù)相比解決了權(quán)重更新過慢的問題[33],表達(dá)式如式(10)所示。
(10)
a=σ(∑ωj×xj+b)
(11)
其中,a為神經(jīng)元的實(shí)際輸出,y為期望輸出,ωj和b為神經(jīng)元的參數(shù),xj為神經(jīng)元的輸入。函數(shù)圖像如圖4所示。
訓(xùn)練集與驗(yàn)證集:使用預(yù)處理后的工件圖像制作訓(xùn)練集,選取總數(shù)據(jù)集的10%作為驗(yàn)證集驗(yàn)證網(wǎng)絡(luò)的訓(xùn)練效果。
圖4 交叉熵?fù)p失函數(shù)圖像
參數(shù)的初始化:用小隨機(jī)數(shù)初始化參數(shù)。網(wǎng)絡(luò)中所有卷積核和神經(jīng)元的權(quán)重以方差為0.1的正態(tài)分布的隨機(jī)數(shù)作為初始值,偏重以常數(shù)0.1為初始值。
隨機(jī)失活:Dropout是指在網(wǎng)絡(luò)訓(xùn)練時(shí)以一定概率使網(wǎng)絡(luò)中的神經(jīng)元暫時(shí)失活。因?yàn)槭请S機(jī)失活,所以每次迭代訓(xùn)練的網(wǎng)絡(luò)都有所不同。Dropout能夠有效的防止過擬合,本文訓(xùn)練時(shí)使全連接層中隱藏層的神經(jīng)元以50%的概率失活,既每次迭代隱藏層均有一半的神經(jīng)元失效。
圖5 算法執(zhí)行流程圖
在算法執(zhí)行時(shí),只需載入訓(xùn)練好的網(wǎng)絡(luò)模型。具體執(zhí)行流程圖如圖5所示。
工件中心坐標(biāo)、工件區(qū)域的四點(diǎn)坐標(biāo)、識(shí)別結(jié)果和對(duì)應(yīng)概率作為算法的結(jié)果傳輸?shù)较到y(tǒng)的下一級(jí)。
本文算法采用python語言編寫,實(shí)驗(yàn)在Intel Corei5-3210M CPU,主頻為2.50GHz,內(nèi)存配置為6GB的電腦上進(jìn)行。實(shí)驗(yàn)中視頻采集與圖像預(yù)處理算法均采用基于OpenCV3.2的python語言實(shí)現(xiàn)。使用TensorFlow深度學(xué)習(xí)框架實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)。實(shí)驗(yàn)任意選取10種工件進(jìn)行訓(xùn)練和識(shí)別,10種工件如圖6所示。
圖6 實(shí)驗(yàn)選取工件
圖中10種工件下對(duì)應(yīng)的數(shù)字為工件的類別。對(duì)采集到的圖像進(jìn)行預(yù)處理,預(yù)處理的效果如圖7所示。
圖7 預(yù)處理效果圖
在光源穩(wěn)定的室內(nèi)環(huán)境下對(duì)工件識(shí)別進(jìn)行測(cè)試,識(shí)別效果如圖8所示。圖中顯示的數(shù)字,上方表示識(shí)別的類別,下方表示對(duì)應(yīng)的概率。
圖8 識(shí)別效果圖
圖9 損失下降曲線圖
實(shí)驗(yàn)采集這10種工件共1萬張圖像,從中抽取1000張圖像作為驗(yàn)證集,剩余9000張圖像作為訓(xùn)練集。訓(xùn)練時(shí)每批訓(xùn)練圖像為25張,學(xué)習(xí)率為0.001,總迭代次數(shù)為10萬次。損失下降曲線如圖9所示。
圖10 驗(yàn)證集識(shí)別正確率圖
損失函數(shù)的值隨著訓(xùn)練次數(shù)的增加不斷下降,網(wǎng)絡(luò)不斷的收斂。用驗(yàn)證集的圖片測(cè)試網(wǎng)絡(luò)識(shí)別的正確率,如圖10所示。
根據(jù)圖9和圖10可知,當(dāng)?shù)螖?shù)到達(dá)1萬次時(shí),損失值的下降速度明顯變緩,驗(yàn)證集正確率的提升速度也同時(shí)降低。當(dāng)?shù)螖?shù)達(dá)到10萬次時(shí),損失值趨近于0,正確率趨近于1.0,基本得到理想的訓(xùn)練效果。
在光照穩(wěn)定的室內(nèi)環(huán)境下對(duì)工件識(shí)別進(jìn)行測(cè)試,測(cè)試結(jié)果如表1所示。對(duì)每一類工件進(jìn)行300次實(shí)驗(yàn),所有工件均任意擺放。
根據(jù)表1可知,算法從采集圖像到顯示結(jié)果平均所需時(shí)間為0.169s,平均識(shí)別準(zhǔn)確率為98.3%。文獻(xiàn)[34]基于特征和模板匹配的工件識(shí)別準(zhǔn)確率為97.05%。說明基于卷積神經(jīng)網(wǎng)絡(luò)的工件識(shí)別的準(zhǔn)確率高于傳統(tǒng)基于特征提取和模板匹配的工件識(shí)別。
表1 工件識(shí)別測(cè)試結(jié)果
本文針對(duì)于工業(yè)機(jī)器人的關(guān)鍵模塊工件識(shí)別應(yīng)用,通過結(jié)合卷積神經(jīng)網(wǎng)絡(luò)和圖像處理的方法實(shí)現(xiàn)工件識(shí)別。與傳統(tǒng)工件識(shí)別方法相比,通用性更強(qiáng),識(shí)別準(zhǔn)確率更高。通過實(shí)驗(yàn)證明,基于卷積神經(jīng)網(wǎng)絡(luò)的工件識(shí)別算法準(zhǔn)確率統(tǒng)基于特征提取和模板匹配的工件識(shí)別。
[參考文獻(xiàn)]
[1] 王喜文. 工業(yè)4.0:智能工業(yè)[J]. 物聯(lián)網(wǎng)技術(shù), 2013(12):3-4.
[2] 張曙. 工業(yè)4.0和智能制造[J]. 機(jī)械設(shè)計(jì)與制造工程, 2014(8):1-5.
[3] Aldrich C, Marais C, Shean B J, et al. Online monitoring and control of froth flotation systems with machine vision: A review[J]. International Journal of Mineral Processing, 2010, 96(1-4):1-13.
[4] 王耀南, 陳鐵健, 賀振東,等. 智能制造裝備視覺檢測(cè)控制方法綜述[J]. 控制理論與應(yīng)用, 2015, 32(3):273-286.
[5] 車錄鋒, 周曉軍. 多傳感器信息融合機(jī)器人工件識(shí)別[J]. 中國機(jī)械工程, 2000, 11(11):1266-1268.
[6] 李勝利. 基于雙目立體視覺的工件識(shí)別與定位技術(shù)研究[D]. 哈爾濱:哈爾濱工業(yè)大學(xué), 2016.
[7] Papari G, Petkov N. Edge and line oriented contour detection: State of the art[J]. Image & Vision Computing, 2011, 29(2-3):79-103.
[8] 郝麟, 馮少彤, 聶守平. 利用深度和灰度圖像實(shí)現(xiàn)三維目標(biāo)的識(shí)別與分類[J]. 光電子·激光, 2010,21(2):312-317.
[9] Lourenco M, Barreto J P, Vasconcelos F. sRD-SIFT: Keypoint Detection and Matching in Images With Radial Distortion[J]. IEEE Transactions on Robotics, 2012, 28(3):752-760.
[10] 熊曉松, 周凱. 基于機(jī)器視覺的工件識(shí)別系統(tǒng)[J]. 機(jī)床與液壓, 2016, 44(4):106-108.
[11] 吳益紅, 許鋼, 江娟娟,等. 基于LBP和SVM的工件圖像特征識(shí)別研究[J]. 重慶理工大學(xué)學(xué)報(bào)自然科學(xué)版, 2016, 30(1):77-84.
[12] 吳益紅, 許鋼, 江娟娟,等. 一種用于工件識(shí)別的LBP-HOG特征融合方法[J]. 南陽師范學(xué)院學(xué)報(bào), 2016, 15(9):33-38.
[13] 符宇, 任獲榮. PCA-SIFT的工件圖像識(shí)別算法[C]. 數(shù)控機(jī)床與自動(dòng)化技術(shù)專家論壇, 2014.
[14] 周偉峰, 江娟娟, 林園勝,等. SVM與組合矩在工件識(shí)別中的應(yīng)用研究[J]. 重慶工商大學(xué)學(xué)報(bào)(自然科學(xué)版), 2015, 32(4):78-84.
[15] 黃山. 基于機(jī)器視覺的機(jī)械臂分揀系統(tǒng)的研究[D]. 鎮(zhèn)江:江蘇科技大學(xué), 2016.
[16] Otsu N. A threshold selection method from gray-level histograms[J]. Automatica, 1975, 11(285-296): 23-27.
[17] Gonzalez R C, Wintz P. Digital image processing[M]. 北京:電子工業(yè)出版社, 2007.
[18] Schmidhuber J. Deep Learning in neural networks: An overview.[J]. Neural Netw, 2015, 61:85-117.
[19] Haykin S, Kosko B. GradientBased Learning Applied to Document Recognition[D]. Wiley-IEEE Press, 2009.
[20] Szarvas M, Yoshizawa A, Yamamoto M, et al. Pedestrian detection with convolutional neural networks[C]// Intelligent Vehicles Symposium, 2005. Proceedings,IEEE, 2005:224-229.
[21] Chen Y D, Wang L M, Physics S O, et al. Convolutional neural network for face recognition[J]. Journal of Northeast Normal University, 2016.
[22] Tivive F H C, Bouzerdown A. An eye feature detector based on convolutional neural network[C]// Eighth International Symposium on Signal Processing and ITS Applications. IEEE, 2005:90-93.
[23] Kavukcuoglu K, Sermanet P, Boureau Y L, et al. Learning Convolutional Feature Hierarchies for Visual Recognition.[J]. Advances in Neural Information Processing Systems, 2010:1090-1098.
[24] Jaderberg M, Simonyan K, Vedaldi A, et al. Reading Text in the Wild with Convolutional Neural Networks[J]. International Journal of Computer Vision, 2016, 116(1):1-20.
[25] Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2012:1097-1105.
[26] Cybenko G. Approximation by superpositions of a sigmoidal function[J]. Mathematics of Control, Signals, and Systems, 1989, 2(4):303-314.
[27] Scherer D, Ller A, Behnke S. Evaluation of pooling operations in convolutional architectures for object recognition[C]// International Conference on Artificial Neural Networks. Springer-Verlag, 2010:92-101.
[28] Lin M, Chen Q, Yan S. Network In Network[J]. Computer Science, 2014.
[29] Clevert, Djork-Arné, Unterthiner T, Hochreiter S. Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs)[J]. Computer Science, 2015.
[30] Ioffe S, Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift[J]. Computer Science, 2015.
[31] Srivastava N, Hinton G, Krizhevsky A, et al. Dropout: a simple way to prevent neural networks from overfitting[J]. Journal of Machine Learning Research, 2014, 15(1):1929-1958.
[32] Kingma D P, Ba J. Adam: A Method for Stochastic Optimization[J]. Computer Science, 2014.
[33] Boer P T D, Kroese D P, Mannor S, et al. A Tutorial on the Cross-Entropy Method[J]. Annals of Operations Research, 2005, 134(1):19-67.
[34] 尤衛(wèi)衛(wèi). 機(jī)器人分揀作業(yè)中工件識(shí)別實(shí)用技術(shù)的研究與實(shí)現(xiàn)[D]. 南京:東南大學(xué), 2016.
組合機(jī)床與自動(dòng)化加工技術(shù)2018年4期