宋 鑫 曹旭陽 郭萬達 于效民
大連理工大學(xué) 大連 116000
現(xiàn)在主流的計算機視覺識別算法包含傳統(tǒng)計算機算法和神經(jīng)網(wǎng)絡(luò)算法兩種類型,傳統(tǒng)的計算機算法已經(jīng)逐步由深度神經(jīng)網(wǎng)絡(luò)算法取代[1]。在工業(yè)領(lǐng)域,圖像識別問題受到了廣泛關(guān)注,智能車間裝卸設(shè)備可以代替人工,對庫存的物料進行視覺識別,通過圖像處理獲取物料的物理信息,并對信息進行傳遞輸出。人工神經(jīng)網(wǎng)絡(luò)識別算法被廣泛應(yīng)用于圖像識別過程中,隨著信息技術(shù)的進步,圖像識別的精度和效率得到不斷提升。
傳統(tǒng)的機器學(xué)習(xí)領(lǐng)域非常依賴人工方法來提取圖像的特征,如尺度不變、特征變換,方向梯度直方圖[2],通過傳統(tǒng)神經(jīng)網(wǎng)絡(luò)來完成識別目的。這些方法比較難以處理較深層次的內(nèi)容豐富的圖像信息,識別準確率普遍比較低[3]。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional neural network)具備深層次的網(wǎng)絡(luò)結(jié)構(gòu),跟傳統(tǒng)的機器學(xué)習(xí)相比,具有特征信息的表達更豐富的特點,且不需要人工提取特征的信息,通過前向傳播和反向傳播可以自動從樣本圖像中學(xué)習(xí)圖像特征,通過深層次的網(wǎng)絡(luò)結(jié)構(gòu)能獲得更準確、更高維,更抽象的特征[4],從而達到良好的識別效果。在訓(xùn)練過程中,卷積神經(jīng)網(wǎng)絡(luò)主要包括學(xué)習(xí)卷積層的卷積核參數(shù)和神經(jīng)網(wǎng)絡(luò)層間的連接權(quán)重等參數(shù),根據(jù)輸入圖像的特征和網(wǎng)絡(luò)參數(shù)的計算做出對過程的預(yù)測。
卷積神經(jīng)網(wǎng)絡(luò)廣泛應(yīng)用在圖像的分類、物體的檢測及自然語言處理等領(lǐng)域。隨著計算機視覺技術(shù)的快速發(fā)展,涌現(xiàn)出一大批優(yōu)秀的卷積神經(jīng)網(wǎng)絡(luò),例如AlexNet、ResNet、GoogLeNet等,推動了圖像識別領(lǐng)域的高速發(fā)展,識別效果十分顯著,訓(xùn)練模型輕易在各種智能設(shè)備上實現(xiàn)端到端的識別。卷積神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)大量的關(guān)于輸入和輸出間的映射關(guān)系[5],而不需要兩者之間的精確數(shù)學(xué)表達式,用卷積網(wǎng)絡(luò)訓(xùn)練已知的模式,則網(wǎng)絡(luò)就具備輸入和輸出間的映射能力。
本文研究對象是車間工件,選擇了車間2種不同的工件作為研究對象。基于目標檢測網(wǎng)絡(luò)Yolov3的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),對獲得的數(shù)據(jù)集進行圖像增強,從而實現(xiàn)了較小的數(shù)據(jù)集也能取得較好的車間工件的識別效果。圖像增強是采用一定方法對原圖像添加一些信息或更換數(shù)據(jù),增強圖像某些感興趣的特征或抑制圖像一些不太需要的特征,從而使得圖像的信息與視覺的響應(yīng)特性相匹配。圖像增強廣泛應(yīng)用在工業(yè)的自動化產(chǎn)品設(shè)計和產(chǎn)品質(zhì)量檢驗的領(lǐng)域,本文在圖像增強后識別的準確率和損失值都有了明顯的改善,取得了較為理想的識別效果。
本文構(gòu)建了一個含有多種車間工件的數(shù)據(jù)集。為保證工件種類正確,選擇實驗室環(huán)境下作為研究對象。為保證數(shù)據(jù)多樣性,采取以下措施:1)使用不同品牌手機,包括市面上多數(shù)品牌;2)選擇不同場景拍攝,實驗背景有很強的對比性;3)不同的拍攝角度和距離,使得照片具備廣泛性。這樣的拍攝方式更加符合現(xiàn)實情況,并有利于訓(xùn)練出適應(yīng)性更強的模型。
圖1所示為車間工件的部分數(shù)據(jù)集圖片,其中包括齒輪1 150件、軸承300件,雖然種類不同,但形狀和顏色等方面具有相似性。

圖1 車間工件的部分數(shù)據(jù)集圖片
數(shù)據(jù)增強是卷積神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練時的常用方法,目的是提升網(wǎng)絡(luò)訓(xùn)練的穩(wěn)定性和模型的泛化能力以及防止過擬合。本文將會使用Imgaug工具包,進行圖片增強[6]。采用的圖像增強方法包括圖像旋轉(zhuǎn)、圖像h和圖像w隨機偏移、水平翻轉(zhuǎn)及改變圖片亮度等方法擴充數(shù)據(jù)集[7]。
完成圖像采集后,先將圖像尺寸裁剪成416×416像素,然后進行數(shù)據(jù)增強操作。
圖像旋轉(zhuǎn)是指采集的圖像照片以某一點作為中心旋轉(zhuǎn)一定的角度,形成新的圖像的過程[8]。這個點通常稱為圖像的中心。按照中心旋轉(zhuǎn)具備旋轉(zhuǎn)前和旋轉(zhuǎn)后的點與中心的距離不變的屬性。根據(jù)這個屬性可以得到旋轉(zhuǎn)后的點的坐標與原坐標的對應(yīng)關(guān)系。
圖像做旋轉(zhuǎn)操作時,假設(shè)圖像長、寬分別為W和H,需先將坐標原點從左上角移動到圖像中心位置[9]。原圖上任意一點(X0,Y0)旋轉(zhuǎn)后的坐標為

式中:A為移位矩陣,B為旋轉(zhuǎn)角度α定義的旋轉(zhuǎn)矩陣,C為將原點從圖像中心復(fù)位到圖像左上角的復(fù)位矩陣。
圖像旋轉(zhuǎn)的結(jié)果如圖2所示。

圖2 圖像旋轉(zhuǎn)示意圖
圖像偏移是指將圖像的所有像素坐標進行水平或垂直方向移動,也就是圖像的所有像素按照給定的偏移量在水平方向上沿著X軸或垂直方向沿著Y軸移動。
偏移圖像時,需建立變換矩陣D。若原圖上任意一點設(shè)為(X0,Y0),偏移后的坐標為(X1,Y1),則有

式中:tx是寬偏移系數(shù),ty是高偏移系數(shù)。圖像隨機偏移的結(jié)果如圖3所示。

圖3 圖像偏移示意圖
在OpenCV中,圖像的翻轉(zhuǎn)采用函數(shù)cv2. flip()來實現(xiàn),該函數(shù)可以實現(xiàn)圖像在水平、垂直方向的翻轉(zhuǎn)、以及水平和垂直2個方向的同時翻轉(zhuǎn)。
圖像的寬度為W,進行水平翻轉(zhuǎn)時,若圖像上任意一點設(shè)為(X0,Y0),偏移后的坐標為(X1,Y1),則

式中:E為建立的變換矩陣。圖像進行水平翻轉(zhuǎn)后的結(jié)果如圖4所示。

圖4 圖像水平翻轉(zhuǎn)示意圖
當(dāng)對訓(xùn)練集的部分圖像進行旋轉(zhuǎn)、偏移和水平翻轉(zhuǎn)操作隨機訓(xùn)練模型時,訓(xùn)練集的圖像數(shù)量不增加,但可提升網(wǎng)絡(luò)訓(xùn)練的穩(wěn)定性和模型的泛化能力以及防止過擬合[10]。
本文識別車間工件采用的是卷積神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional neural network)是一類需要進行卷積計算并且具有深層神經(jīng)元結(jié)構(gòu)的網(wǎng)絡(luò)結(jié)構(gòu),是在目前圖像識別和檢測過程中一種主流的深度學(xué)習(xí)算法[11]。CNN算法的主要特點是采用局部鏈接并進行權(quán)值共享,而不是采用全鏈接的方式。該算法采用局部鏈接的原因是圖像中的任意像素都與其周圍的像素彼此關(guān)聯(lián),而不是關(guān)聯(lián)著圖像整體的所有像素點,采用局部鏈接對圖像信息的特征提取具有良好的效果。采用權(quán)值共享方法的優(yōu)點是對圖像卷積操作時,不用對所有的卷積核都建立新參數(shù),卷積核參數(shù)在滑動過程中都是可以共享的,與DNN算法相比,CNN算法能極大地減小圖像識別過程中的計算量[12]。
卷積神經(jīng)網(wǎng)絡(luò)主要包括輸入層、卷積層、池化層以及全連接層等結(jié)構(gòu)。其中輸入層的作用是輸入圖片的特征;卷積層的作用是負責(zé)提取卷積核的特征;池化層的作用是降低模型的參數(shù)量;全連接層作用是進行全鏈接處理。
本文采用的網(wǎng)絡(luò)架構(gòu)基于目標檢測網(wǎng)絡(luò)Yolov3,其基礎(chǔ)特征提取網(wǎng)絡(luò)的主干網(wǎng)絡(luò)是DarkNet-53[13]。該網(wǎng)絡(luò)的作用是提取圖像的特征,網(wǎng)絡(luò)架構(gòu)如圖5所示。DarkNet-53網(wǎng)絡(luò)架構(gòu)共有53層卷積,除去最后一個FC(全連接層,實際上是通過1×1卷積實現(xiàn)的)共有52個卷積用作主體網(wǎng)絡(luò)。該網(wǎng)絡(luò)模型結(jié)合了深度殘差單元和Yolov2的基礎(chǔ)特征提取網(wǎng)絡(luò)DarkNet-19。輸入416×416的圖片后,進入到Darknet53網(wǎng)絡(luò)架構(gòu)中[14]。首先是1個32個過濾器的卷積核,然后是5組重復(fù)的殘差單元。在每個重復(fù)執(zhí)行的卷積層中,先執(zhí)行1×1的卷積操作,再執(zhí)行3×3的卷積操作,過濾器數(shù)量減半再恢復(fù),共有52層。

圖5 DarkNet-53 網(wǎng)絡(luò)架構(gòu)
本文訓(xùn)練和驗證過程所使用的硬件平臺配置為Intel(R) Xeon(R) CPU E5-2630 v4@ 2.20 GHz,操作系統(tǒng)為Windows 7(64 bit),編程語言為Python。本實驗選取tensor flow為實驗框架。
訓(xùn)練模型是采用Adam優(yōu)化器,訓(xùn)練次數(shù)為100個epoch,訓(xùn)練批次為4,學(xué)習(xí)率初始值為0.001。本文對拍攝的圖像增強操作后,實驗準確率和損失值都比未增強的圖像有所提高。圖像增強前的識別準確率和損失值如圖6和圖8所示,圖像增強后的識別準確率和損失值如圖7和圖9所示。

圖7 圖像增強后的識別準確率

圖8 圖像增強前的損失誤差

圖9 圖像增強后的損失誤差
圖像增強后齒輪和軸承識別效果如圖10所示,圖像增強前后的識別準確率和損失誤差對比如表1所示。

表1 圖像增強前后的參數(shù)對比
通過表1中圖像增強前后準確率和損失值的數(shù)值對比可知,圖像增強后的識別準確率明顯高于圖像增強前的準確率;圖像增強后損失值都明顯低于圖像增強前的損失值。由此可知,采取圖像增強對于提升較小數(shù)據(jù)集的識別效果是比較明顯的。

圖10 軸承和齒輪識別效果
本文建立了齒輪和軸承2種車間工件的數(shù)據(jù)集,在目標檢測網(wǎng)絡(luò)Yolov3的基礎(chǔ)上,采用了圖像增強的方法,增強了該模型在常規(guī)計算平臺的實用性,實現(xiàn)了較小的數(shù)據(jù)集也能取得較好的車間工件的識別效果。通過實驗驗證,表明圖像增強后識別的準確率和損失值都有了明顯的改善,取得了較理想的識別效果。