于微波,周旺,楊宏韜,李昱
(長春工業大學電氣與電子工程學院,長春 130012)
隨著汽車市場對汽車零部件的需求越來越大,在大量生產汽車零件的過程中,會出現零件尺寸不合格的情況,為了保證零件的質量,需要對生產的汽車零件進行尺寸測量。主軸承蓋作為汽車發動機的重要組成零部件,保證其加工精度是提高主軸承蓋核心競爭力的關鍵。目前,發動機主軸承蓋在加工打磨后,通常是利用人工對其進行抽檢,這種方法不僅檢測時間較長,而且人工費較高,檢測的精度會隨著檢測人員疲勞程度的上升而下降,無法持續保持高精度的測量。隨著數字圖像處理技術的飛速發展,由于機器視覺檢測技術具有無接觸、測試時間短等優勢,因此被廣泛應用于汽車工件尺寸測量中。由于發動機主軸承蓋結構的特殊性,軸承蓋的4個面都需要進行尺寸測量。所以需要先對發動機主軸承蓋進行姿態識別。
傳統的圖像識別主要依賴于大量的圖像預處理算法,例如圖像去噪、圖像增強、邊緣提取等,以剔除圖像中的冗余信息,保留并增強識別目標的主要信息,然后針對識別目標的特征人為設計特征提取器進行特征提取,并運用主成分分析(principal component analysis,PCA)、支持向量機(support vector machines,SVM)等機器學習算法對特征進行分類[1]。石志良等[2]提出了一種基于尺度不變特征變換(scale-invariant feature transform,SIFT)-SVM的主軸承蓋分類識別算法,該算法的識別準確率高,識別時間短,但是該算法容易受到光照因素的影響,導致SIFT關鍵點發生改變,造成識別錯誤。江波等[3]采用輪廓Hu不變矩的方法進行工件圖像的匹配與識別,與歸一化匹配法相比,提高了識別的準確率,但是過多的預處理操作使得該算法操作變得復雜。劉振宇等[4]提出了一種基于像素灰度并結合紋理信息的多模板旋轉匹配的工件識別方法,該方法的優點是既能有效識別非遮擋狀態下的工件,也能識別遮擋狀態的工件,缺點是沒有考慮工件實時性檢測的問題。陳憲帥等[5]提出了一種多特征融合的零件分類與姿態識別方法,該方法不僅識別準確率高,而且可以計算旋轉角度和抓取點坐標,由于融合了零件的多種特征,并對零件進行了兩級分類,導致該方法變得十分復雜,且旋轉角度和抓取點坐標誤差較大。Lee等[6]提出了一種基于PCA并結合Harris角點特征和最小均方誤差進行零件與數據庫匹配的電子零件識別方法,而且利用提取的4個角點結合Hough變換中的直線對識別出的零件進行精確的位姿估計,但是該方法要構建匹配數據庫,非常耗費時間和精力。Sasikala等[7]提出了一種多目標多模板匹配的自適應方法對列車轉向架零件進行識別,該方法識別列車轉向架零件是否存在缺陷,從而防止列車轉向架零件出現缺陷引起列車事故,但是該方法仍然存在15%的誤差率。
使用上述傳統識別方法進行目標檢測,需要對采集的圖像進行復雜的預處理操作,且與識別物體的特點相關性強,通用性很差,對于不同的物體需要設計不同的算法,特別容易受到環境因素影響,比如當光照改變時,識別準確率會下降。而發動機主軸承蓋每個面顏色很相近,非常容易受到光源影響,誤識別率高,所以傳統的方法不適合對其進行姿態識別。近年來,基于深度學習的目標檢測算法發展比較快[8],出現了非常多識別效果比較好的算法。目前來看,識別效果比較好的算法有LeNet(le network)[9]、AlexNet(alex network)[10]、VGGNet(visual geometry group network)[11]、ReDet(a rotation equivariant detector for aerial object detection)[12]、Sparse R-CNN(sparse regions with convolutional neural network features)[13]、NAS-FPN(neural architecture search-feature pyramid network)[14]、FSCE(few-shot object detectionviacontrastive proposal encoding)[15]、EfficientDet(scalable and efficient object detection)[16]、改進的YOLOv4(you only look once v4)[17]等。相比于傳統算法,基于深度學習的目標檢測算法,不用對圖像進行預處理,且受光照因素的干擾較小,檢測精度更高,實時性更好。
由于發動機主軸承蓋結構簡單,4個面特征差異大,如果直接使用基于深度學習的目標檢測算法,對發動機主軸承蓋進行姿態識別,需要更高的軟硬件條件支持,資源消耗巨大。而且基于深度學習的目標檢測算法不僅網絡結構復雜、訓練難度大、梯度下降慢,還可能會過度學習發動機主軸承蓋的特征,導致卷積神經網絡出現過擬合,進而影響識別效果。所以設計一個結構簡單、資源消耗小且訓練容易的網絡模型,對發動機主軸承蓋進行姿態識別。在不影響識別效果的情況下,盡可能降低網絡層數和參數量,進一步提升算法的實時性。
算法設計思路如圖1所示,利用相機拍攝發動機主軸承蓋原始圖像,構建姿態識別數據集。網絡搭建好以后,輸入訓練集和驗證集數據訓練網絡,當網絡損失函數值下降到一定范圍內,停止網絡訓練,用訓練好的網絡模型對測試集中的圖片進行姿態識別,進而將發動機主軸承蓋的4個面區分開。

圖1 算法過程示意圖
所搭建的網絡模型如圖2所示,先將圖像送入搭建好的網絡模型中,卷積層搭配ELU(exponential linear unit)激活層和BN層獲取圖像的特征數據,利用最大池化層對特征圖像的數據進行精簡,精簡后的特征數據轉化為一維數據送入全連接層,為了防止模型出現過度學習,Dropout的加入,使得全連接層中的一部分神經元“罷工”,“罷工”的神經元不進行權重更新和特征數據的傳送,未“罷工”的神經元將學習到的特征數據送入輸出層,通過softmax函數計算出輸出圖像所屬類別和概率。

Conv為卷積層;BN為批量歸一化層;ELU為激活函數;Maxpooling為最大池化層;Dense為全連接層;Dropout為隨機失活層;Softmax為分類概率函數
(1)卷積層。搭建5層卷積層對發動機主軸承蓋進行特征提取,由于較低的卷積層對細節信息比較敏感,較高的卷積層對輪廓特征比較敏感,所以將特征提取的重點放在底層和高層。底層設置兩個卷積層,卷積核有32個,高層設置兩個卷積層,卷積核有128個,中間層設置為一層,卷積核有64個,卷積核大小都是3×3,步長是1且不需要填充。
(2)激活層:ELU[18]函數是在Relu[19]函數的基礎上進行了優化,計算公式如式(1)所示,ELU函數不僅具有Relu所有優點,而且在其基礎上,將負值輸入的零輸出改成了非零輸出,增加負值的訓練數據,這樣負值輸入的數據也可以參與網絡訓練和權值更新,提高學習率的同時網絡的訓練效果也會變好。
(1)
式(1)中:f為ELU激活函數;α為調節系數;x為ELU激活函數的自變量。
(3)批歸一化層。在模型中加入批量歸一化層(batch normalization,BN)[20]。批量歸一化BN是將每個數據減去這一批數據的均值,再除以這一數據的標準差,使數據的均值和方差歸一化為0和1,計算過程如下。
設輸入數據為
x={x1,x2,…,xm}
(2)
式(2)中:xm為m個數據的最后一個數據。

(3)
式(3)中:m為數據的總數。
(4)
則歸一化的數據為
(5)
引入兩個可學習參數γ和β,則輸出數據可表示為
(6)
式(6)中:yi為批量歸一化后的輸出數據。
如果同時出現式(7)和式(8)的情況,BN會喪失對數據進行歸一化的能力。
(7)
β=E(x)
(8)
因此,可以通過可學習參數γ和β使搭建的網絡模型進行特征分布的學習,提高訓練效率。
(4)池化層。使用池化參數設置為2×2大小的采樣核,步長為1,無填充。
(5)隨機失活層。在模型中加入兩層隨機失活層Dropout[21]增加網絡的適應能力。第一層隨機失活比例設置為0.6,第二層隨機失活比例設置為0.4。
(6)全連接層。經過卷積、池化等操作后的矩陣數據會被送入全連接層,全連接層將矩陣數據轉化為一維數據,并標記不同類別的一維數據進行區分,達到分類的目的。其中,256個神經元分布在第1層,30個神經元分布在第2層,4個神經元分布在第3層,第3層作為輸出層,采用Softmax函數進行識別分類。
(7)Softmax層。Softmax函數是基于邏輯回歸的線性分類器,作用是將全連接層學習到的不同類別的特征數據的輸出數值轉化為相對應的概率值,然后對不同類別的樣本數據進行分類,計算公式為
(9)
式(9)中:xi為第i個輸入;yi為與之對應的預測類別;φl(xi)為輸入xi后第l個類的輸出,l=1,2,…,k;P(yi=l|xi,φ)為輸入xi預測為類別l的概率;hφ為類別概率。
發動機主軸承蓋需要識別的面有4個,即正面、底面、2個側面,如圖3所示,為了區分2個側面,將其中的一個側面重新改名為寬面。利用相機拍攝發動機主軸承蓋原始圖片,其中正面、底面、側面、寬面圖片各500張,總共2 000張。

圖3 發動機主軸承蓋4個面圖像
訓練好一個網絡需要大量的數據,但是在面對實際問題時,需要人工來獲取訓練數據和制作訓練數據的標簽,時間成本非常高。數據增強方法的優點是可以利用原圖數據增加虛擬數據,生成大量新的“原圖”,可以解決原始圖片數量不夠的問題,節約制作數據集的時間,并降低模型過度學習的能力。利用數據增強方法對原始圖片進行處理,生成大量新的“原圖”,處理后的圖片總數量從2 000張增加到12 000張,每個面有3 000張。原始圖片及數據增強圖片如圖4所示。第一列為原始圖片,其余列為數據增強圖片。使用Labeling軟件對所有圖片進行標注,每一張圖片標注為所屬類別名,將標注好的圖片放入數據集中。
在網絡模型訓練之前,要選取一個合適的損失函數。模型的好壞可以由損失函數來判定,如果搭建的模型效果好,那么標準輸出值與訓練輸出值非常接近,即損失函數值很小,損失函數值越小說明模型和參數越符合訓練樣本,模型的識別能力會越強。采用交叉熵代價函數監督網絡的訓練效果,表達式分別為。
(10)
(11)

在模型中加入Adamax[22]算法對網絡進行優化,找到梯度下降的最快路線,降低期望輸出與實際輸出之間的差距,使網絡能更好更快地收斂,計算公式分別為
mt=β1mt-1+(1-β1)gt
(12)
ut=max(β2ut-1,|gt|)
(13)
(14)

(15)

數據增強圖片將數據集中的數據按0.8∶0.2的比例劃分為訓練集和驗證集,其中訓練集圖片9 600張,驗證集圖片2 400張。Adamax算法的初始學習率α設置為0.02,Batch設置為32,Epochs設置為100,在卷積層和全連接層中,加入初始化器Truncate Normal生成隨機張量,其中均值為0,方差為0.01。
搭建好的網絡模型導入訓練數據集之前,再次利用數據增強方法,增加訓練數據。圖5、圖6記錄了網絡的訓練過程。從圖5中可以看出,訓練集損失在下降,慢慢無限趨近于0,驗證集損失雖然在10輪左右有所波動,但是隨著訓練輪次的增加,損失值也慢慢無限趨近于0。從圖6中可以看出,訓練集準確率上升很快,隨著訓練輪次的增加,準確率已經慢慢無限趨近于1,驗證集準確率雖然在10輪左右有所波動,準確率下降,但是隨著輪次的增加,準確率也慢慢無限趨近于1。

圖5 訓練損失圖像

圖6 訓練準確率圖像
利用驗證集驗證網絡的訓練效果,使用6個評價指標識別精度(precision)、召回率(recall)、綜合評價指標(Fl-score)、宏平均(macro avg)、加權平均(weight avg)、準確率(accuracy)來驗證網絡模型優劣。驗證結果如圖7所示,每個評價指標的計算值都為1,說明所搭建的網絡模型已經訓練的很好。

圖7 驗證結果
利用相機拍攝發動機主軸承蓋每個面的測試圖片各50張,放入測試集中。將測試集圖片送入訓練好的網絡進行測試,每個面的測試效果如圖8所示,可以看出,所搭建的網絡模型不僅可以將每個面識別出來,而且每個面的識別精度很高。

圖8 識別結果圖
對測試集中所有圖片進行測試。測試結果如表1所示。可以看出,正面、側面、底面、寬面全部識別正確,沒有出現錯誤識別的情況。每一張圖片的平均識別時間為3.80 s,平均識別準確率為100%,超過了工業要求的95.000 0%。

表1 實驗結果統計
本文模型是參考AlexNet和VGG16網絡搭建的,為了更好地體現本文算法的優勢,采用AlexNet網絡、VGG16網絡對發動機主軸承蓋進行姿態識別。如表2所示,VGG16算法的平均識別準確率達到100%,訓練時長為138 338.75 s,每張圖片的平均識別時間為8.54 s。AlexNet算法的平均識別準確率為99.975 0%,訓練時長為95 381.67 s,每張圖片的平均識別時間為4.57 s。本文算法的平均識別準確率為100%,訓練時長為23 404.87 s,每張圖片的平均識別時間為3.80 s。和VGG16算法相比,本文算法所需要的訓練時長更短,每張圖片所用的識別時間更少。和AlexNet算法相比,本文算法不僅訓練時間和識別時間更短,而且平均識別準確率更高。

表2 3種算法識別效果對比
本文算法雖然與AlexNet算法具有相同的卷積層數,但是選用的卷積核大小和數量不同。AlexNet算法使用了較大、數量較多的卷積核,較大的卷積核容易忽略一些細節特征,特征提取能力會下降,而且訓練數據變多,特征學習的速度變慢,不僅會增加訓練時間,而且降低了識別效率。本文算法選用3×3的小卷積核,可以提取更多的細節信息,加強全局特征的提取能力。而且使用的卷積核數量更少,降低參數量和計算量的同時縮小了訓練時間和訓練時間。VGG16算法的網絡層數深、卷積核數量多,雖然可以保證網絡的識別精度,但是參數量和計算量巨大,網絡訓練和識別所需的時間更長。本文算法在保證識別精度的同時,簡化了網絡結構,降低了網絡復雜度,減小了計算量和參數量,增加了識別效率。
采用傳統的基于HOG-SVM結合的算法對軸承蓋進行姿態識別,識別準確率為83.50%,與本文算法相比,準確率下降了16.50%。可以看出,本文算法識別準確率要高于傳統的基于HOG-SVM結合方法的識別準確率,且避免了對圖像進行復雜的預處理操作。
所提出的基于卷積神經網絡的發動機主軸承蓋姿態識別算法,有效區分了發動機主軸承蓋的四個面,而且識別準確率達到100%。與VGG16、AlexNet算法相比,本文算法的訓練時長和識別時間更短,資源消耗更少。與傳統識別算法HOG-SVM相比,本文算法摒棄了圖像的預處理步驟,而且識別準確率更高,不會受到光照環境的改變而降低識別準確率,魯棒性更好,為小樣本識別提供了一種新的思路。