徐一丁,杜慧敏,毛智禮,張麗果,顧文寧
(西安郵電大學 電子工程學院,西安 710121)
隨著我國工業(yè)生產(chǎn)自動化與智能化的重要性不斷提升,現(xiàn)代化工廠對工業(yè)機器人的要求也越來越高[1-2]。工件的識別和定位作為工業(yè)機器人的核心模塊,對推進生產(chǎn)自動化有著重要的意義[3]。傳統(tǒng)的工件識別算法有基于圖像分割、形狀匹配、特征分析、決策分類、多傳感器信息融合、雙目立體視覺等方法[4-6]。其中基于特征提取的工件識別一般是通過分析待識別工件的灰度圖像進行識別[7-8],通過提取工件的邊緣、輪廓、尺度不變特征(Scale-invariant feature transform, SIFT)等特征提取識別算法[9-11]。近些年在基于特征提取的識別算法方面,提出了許多融合方法的識別算法,如基于局部二值模式(local binary pattern, LBP)與支持向量機(support vector machine, SVM)相結(jié)合的識別算法[12],基于LBP與方向梯度直方圖(Histogram of oriented gradient, HOG)特征融合的識別算法[13],基于主成分分析(Principal Component Analysis, PCA)與SIFT特征相結(jié)合的識別算法[14],基于SVM和組合矩的識別算法[15],還有基于角點檢測和霍夫變換的識別算法[16]。這些基于特征的工件識別算法與工件本身的特點相關(guān)性較強,對于不同的工件需要重新設(shè)計算法,通用性差。而且由于工件表面顏色相近,形狀變化平緩,很難提取出魯棒性較強的特征,因此誤識別率很高,受光源、噪聲等環(huán)境因素的影響較大。
本文采用機器視覺技術(shù)與機器學習相結(jié)合的方法對工件進行識別和定位。通過構(gòu)建一個4層卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)對工件的識別,網(wǎng)絡(luò)包括2層卷積層和2層全連接層。本文制作了一個小規(guī)模的數(shù)據(jù)集對網(wǎng)絡(luò)進行訓練并根據(jù)數(shù)據(jù)集的特點設(shè)計訓練網(wǎng)絡(luò)的策略。為了能夠用小規(guī)模的數(shù)據(jù)集實現(xiàn)更好的訓練效果,本文在卷積層中加入了批歸一化層,在全連接層使用隨機失活的方法增加網(wǎng)絡(luò)的泛化能力。然后結(jié)合圖像處理技術(shù)對圖像進行預處理以進一步增強算法的識別效果。根據(jù)對工件識別這一問題的研究,在保證識別效果的前提下將卷積神經(jīng)網(wǎng)絡(luò)的層數(shù)改小,減少參數(shù)以降低對運行平臺的需求,使其能夠在不使用GPU等加速設(shè)備的情況下仍然能夠進行實時識別。如果需要改變應(yīng)用場景,識別其他種類的工件,無需修改程序,只需載入重新訓練的網(wǎng)絡(luò)模型。
本文任意選取了10種工件進行實驗,實驗表明基于卷積神經(jīng)網(wǎng)絡(luò)的工件識別能夠有效的解決傳統(tǒng)工件識別方法通用性差、特征提取困難、工件的平移、旋轉(zhuǎn)和光照變化對識別效果影響較大等問題。
圖像預處理的主要目的是降低背景變化、光源變化、工件平移和攝像頭高度變化等環(huán)境因素對識別的影響,改善圖像質(zhì)量并提升卷積神經(jīng)網(wǎng)絡(luò)的訓練效率和準確率,使卷積神經(jīng)網(wǎng)絡(luò)能夠在層數(shù)較少的情況下仍然能夠準確識別。
本文使用的攝像頭采集640×480大小的圖像。首先將采集到的原始圖像轉(zhuǎn)為灰度圖像并進行高斯濾波,濾除原始圖像中的噪聲。
對處理后的灰度圖像進行閾值分割,這里使用的閾值分割算法是最大類間方差法(OTSU)。OTSU算法是一種自適應(yīng)閾值確定的算法,它根據(jù)圖像的灰度特性,將圖像分為前景和背景兩個部分,是一種基于全局的二值化算法[17]。當取得最佳閾值時,前景和背景之間的差別應(yīng)該是最大的,OTSU算法衡量差別的標準就是類間方差[18],如式(1)所示。
(1)
圖1 工件區(qū)域與中心位置
圖像截取是為了提高輸入圖像的信息量并且消除工件平移對識別造成的影響,達到提升訓練效率和識別準確率的目的。
圖像截取的方法是通過繪制工件的最小矩形,然后根據(jù)最小矩形x軸與y軸的最大和最小坐標來確定工件區(qū)域,同時可以根據(jù)最小矩形四個頂點的坐標計算出工件的中心位置,和識別結(jié)果一起傳輸給機械手作為抓取所需的位置信息,效果如圖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),如手寫字符識別、行人檢測、人臉識別、人眼檢測等[20-23]。卷積神經(jīng)網(wǎng)絡(luò)主要由四種類型層構(gòu)成:卷積層、激活層、池化層和全連接層。
(1)卷積層通過對輸入圖像進行卷積運算提取特征[24-25],較低的卷積層捕獲低級圖像特征,較高的卷積層捕獲復雜的細節(jié)[26]。
(2)激活層的作用是通過激活函數(shù)為網(wǎng)絡(luò)模型加入非線性因素,使神經(jīng)網(wǎng)絡(luò)能夠?qū)W習到平滑的曲線,而不是用復雜的線性組合去逼近一條曲線[27]。
(3)池化層的作用是逐漸降低數(shù)據(jù)的尺寸,減少網(wǎng)絡(luò)參數(shù)的數(shù)量,進而有效的控制過擬合[27]。
(4)神經(jīng)網(wǎng)絡(luò)的分類是通過全連接層完成的。全連接層還起到將提取到的分布式特征映射到樣本標記空間的作用[28]。
圖2 網(wǎng)絡(luò)模型
根據(jù)工件識別的特點,需要多層卷積層提取工件的特征。由于全連接層參數(shù)的數(shù)量占整個網(wǎng)絡(luò)參數(shù)數(shù)量的比重較大,因此在能夠保證圖像質(zhì)量和特征提取的前提下減少全連接層的層數(shù),能夠大幅減少運算量。本文設(shè)計的網(wǎng)絡(luò)模型如圖2所示。
卷積層:使用3×3大小的卷積核,其中第一層卷積層有32個卷積核,第二層卷積層有64個卷積核。
激活層:使用指數(shù)線性單元(Exponential Linear Units, ELUs)作為激活函數(shù)。ELU函數(shù)表達式如式(2)所示。
(2)
ELU函數(shù)圖像如圖3所示。
圖3 ELU函數(shù)圖像
ELU與修正線性單元(Rectified linear units, ReLU)相比解決了輸入為負時發(fā)生梯度消失的問題和由于不良的初始化或過高的學習率而導致神經(jīng)元不再被激活的問題[29]。
池化層:使用空間大小為2×2,步長為1的最大值池化操作。
批歸一化層:在網(wǎng)絡(luò)中加入批歸一化層的目的是對輸入數(shù)據(jù)做一個歸一化處理。因為網(wǎng)絡(luò)在進行訓練時,網(wǎng)絡(luò)中的參數(shù)不斷的發(fā)生更新,前面層訓練參數(shù)的更新會導致后面層輸入數(shù)據(jù)的分布發(fā)生變化,這種數(shù)據(jù)分布的改變稱為內(nèi)協(xié)移[30]。網(wǎng)絡(luò)前面層的微小變化都會累積放大到后面層,如果每一批訓練數(shù)據(jù)的分布都不相同,那么網(wǎng)絡(luò)在訓練時的每次迭代都需要適應(yīng)不同的分布,這不僅會導致訓練效率的下降,還會因為驗證數(shù)據(jù)的分布與網(wǎng)絡(luò)學習到的數(shù)據(jù)分布不同而導致網(wǎng)絡(luò)泛化能力的降低。
批歸一化操作通過每個數(shù)據(jù)減去這一批數(shù)據(jù)的均值并除以這一批數(shù)據(jù)的標準差,使數(shù)據(jù)的均值和方差歸一化為0和1,如式(3)所示。
(3)
(4)
全連接層:最后的全連接層由含有100個神經(jīng)元的隱藏層和10個神經(jīng)元的輸出層構(gòu)成。
在對網(wǎng)絡(luò)進行訓練之前,需要做的是要確定優(yōu)化函數(shù)和損失函數(shù),制作訓練集和驗證集,參數(shù)的初始化。在訓練時對全連接層使用隨機失活[31](Dropout)的方法防止過擬合優(yōu)化函數(shù):本文使用自適應(yīng)矩估計(Adaptive Moment Estimation, Adam)函數(shù)作為優(yōu)化函數(shù)。Adam函數(shù)利用梯度的一階矩估計和二階矩估計動態(tài)的調(diào)整學習率,使每次迭代的學習率在一定的范圍內(nèi)[32],公式如式(5)到式(9)所示。
mt=μ×mt-1+(1-μ)×gt
(5)
(6)
(7)
(8)
(9)
損失函數(shù):使用交叉熵代價函數(shù)作為損失函數(shù)。交叉熵代價函數(shù)與方差代價函數(shù)相比解決了權(quán)重更新過慢的問題[33],表達式如式(10)所示。
(10)
a=σ(∑ωj×xj+b)
(11)
其中,a為神經(jīng)元的實際輸出,y為期望輸出,ωj和b為神經(jīng)元的參數(shù),xj為神經(jīng)元的輸入。函數(shù)圖像如圖4所示。
訓練集與驗證集:使用預處理后的工件圖像制作訓練集,選取總數(shù)據(jù)集的10%作為驗證集驗證網(wǎng)絡(luò)的訓練效果。
圖4 交叉熵損失函數(shù)圖像
參數(shù)的初始化:用小隨機數(shù)初始化參數(shù)。網(wǎng)絡(luò)中所有卷積核和神經(jīng)元的權(quán)重以方差為0.1的正態(tài)分布的隨機數(shù)作為初始值,偏重以常數(shù)0.1為初始值。
隨機失活:Dropout是指在網(wǎng)絡(luò)訓練時以一定概率使網(wǎng)絡(luò)中的神經(jīng)元暫時失活。因為是隨機失活,所以每次迭代訓練的網(wǎng)絡(luò)都有所不同。Dropout能夠有效的防止過擬合,本文訓練時使全連接層中隱藏層的神經(jīng)元以50%的概率失活,既每次迭代隱藏層均有一半的神經(jīng)元失效。
圖5 算法執(zhí)行流程圖
在算法執(zhí)行時,只需載入訓練好的網(wǎng)絡(luò)模型。具體執(zhí)行流程圖如圖5所示。
工件中心坐標、工件區(qū)域的四點坐標、識別結(jié)果和對應(yīng)概率作為算法的結(jié)果傳輸?shù)较到y(tǒng)的下一級。
本文算法采用python語言編寫,實驗在Intel Corei5-3210M CPU,主頻為2.50GHz,內(nèi)存配置為6GB的電腦上進行。實驗中視頻采集與圖像預處理算法均采用基于OpenCV3.2的python語言實現(xiàn)。使用TensorFlow深度學習框架實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)。實驗任意選取10種工件進行訓練和識別,10種工件如圖6所示。
圖6 實驗選取工件
圖中10種工件下對應(yīng)的數(shù)字為工件的類別。對采集到的圖像進行預處理,預處理的效果如圖7所示。
圖7 預處理效果圖
在光源穩(wěn)定的室內(nèi)環(huán)境下對工件識別進行測試,識別效果如圖8所示。圖中顯示的數(shù)字,上方表示識別的類別,下方表示對應(yīng)的概率。
圖8 識別效果圖
圖9 損失下降曲線圖
實驗采集這10種工件共1萬張圖像,從中抽取1000張圖像作為驗證集,剩余9000張圖像作為訓練集。訓練時每批訓練圖像為25張,學習率為0.001,總迭代次數(shù)為10萬次。損失下降曲線如圖9所示。
圖10 驗證集識別正確率圖
損失函數(shù)的值隨著訓練次數(shù)的增加不斷下降,網(wǎng)絡(luò)不斷的收斂。用驗證集的圖片測試網(wǎng)絡(luò)識別的正確率,如圖10所示。
根據(jù)圖9和圖10可知,當?shù)螖?shù)到達1萬次時,損失值的下降速度明顯變緩,驗證集正確率的提升速度也同時降低。當?shù)螖?shù)達到10萬次時,損失值趨近于0,正確率趨近于1.0,基本得到理想的訓練效果。
在光照穩(wěn)定的室內(nèi)環(huán)境下對工件識別進行測試,測試結(jié)果如表1所示。對每一類工件進行300次實驗,所有工件均任意擺放。
根據(jù)表1可知,算法從采集圖像到顯示結(jié)果平均所需時間為0.169s,平均識別準確率為98.3%。文獻[34]基于特征和模板匹配的工件識別準確率為97.05%。說明基于卷積神經(jīng)網(wǎng)絡(luò)的工件識別的準確率高于傳統(tǒng)基于特征提取和模板匹配的工件識別。
表1 工件識別測試結(jié)果
本文針對于工業(yè)機器人的關(guān)鍵模塊工件識別應(yīng)用,通過結(jié)合卷積神經(jīng)網(wǎng)絡(luò)和圖像處理的方法實現(xiàn)工件識別。與傳統(tǒng)工件識別方法相比,通用性更強,識別準確率更高。通過實驗證明,基于卷積神經(jīng)網(wǎng)絡(luò)的工件識別算法準確率統(tǒng)基于特征提取和模板匹配的工件識別。
[參考文獻]
[1] 王喜文. 工業(yè)4.0:智能工業(yè)[J]. 物聯(lián)網(wǎng)技術(shù), 2013(12):3-4.
[2] 張曙. 工業(yè)4.0和智能制造[J]. 機械設(shè)計與制造工程, 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] 王耀南, 陳鐵健, 賀振東,等. 智能制造裝備視覺檢測控制方法綜述[J]. 控制理論與應(yīng)用, 2015, 32(3):273-286.
[5] 車錄鋒, 周曉軍. 多傳感器信息融合機器人工件識別[J]. 中國機械工程, 2000, 11(11):1266-1268.
[6] 李勝利. 基于雙目立體視覺的工件識別與定位技術(shù)研究[D]. 哈爾濱:哈爾濱工業(yè)大學, 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] 郝麟, 馮少彤, 聶守平. 利用深度和灰度圖像實現(xiàn)三維目標的識別與分類[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] 熊曉松, 周凱. 基于機器視覺的工件識別系統(tǒng)[J]. 機床與液壓, 2016, 44(4):106-108.
[11] 吳益紅, 許鋼, 江娟娟,等. 基于LBP和SVM的工件圖像特征識別研究[J]. 重慶理工大學學報自然科學版, 2016, 30(1):77-84.
[12] 吳益紅, 許鋼, 江娟娟,等. 一種用于工件識別的LBP-HOG特征融合方法[J]. 南陽師范學院學報, 2016, 15(9):33-38.
[13] 符宇, 任獲榮. PCA-SIFT的工件圖像識別算法[C]. 數(shù)控機床與自動化技術(shù)專家論壇, 2014.
[14] 周偉峰, 江娟娟, 林園勝,等. SVM與組合矩在工件識別中的應(yīng)用研究[J]. 重慶工商大學學報(自然科學版), 2015, 32(4):78-84.
[15] 黃山. 基于機器視覺的機械臂分揀系統(tǒng)的研究[D]. 鎮(zhèn)江:江蘇科技大學, 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). 機器人分揀作業(yè)中工件識別實用技術(shù)的研究與實現(xiàn)[D]. 南京:東南大學, 2016.