王 楊, 王 杰, 劉劍歌, 方 夏, 李 勇, 楊苗苗
(四川大學機械工程學院,成都 610065)
隨著生活質(zhì)量的提高,人們對電子產(chǎn)品的品質(zhì)控制也提出了更高的要求。電子產(chǎn)品的所有精密零件中,用作機械能和電能轉(zhuǎn)換的核心零件—電樞對用戶體驗有著重要的影響。由于電樞較小,并且工序復雜,因此會產(chǎn)生多種不同程度的缺陷,主要包括纖毛、異物、錫包大、斷線、變阻破損、變阻斷裂、銅線侵蝕、銅線斷、錫珠、油脂堆積。目前,電樞檢測完全依靠人工在顯微鏡下完成,不僅效率低,而且人的判別標準具有一定的主觀性,易造成判別結(jié)果的不穩(wěn)定,一定程度上影響電子產(chǎn)品的裝配質(zhì)量。
隨著工業(yè)技術(shù)的發(fā)展以及電腦性能的不斷提升,機器視覺技術(shù)已經(jīng)成功應用于工業(yè)生產(chǎn)的質(zhì)量檢測,包括汽車緊密零件、銷釘、鋁材、軸承。劉瑞媛等針對汽車精密零件的產(chǎn)品質(zhì)量控制,提出了利用改進大津算法(OTSU)來提取外觀缺陷特征[1]。王凱等針對電力金具上銷釘松動、缺失等常見缺陷,提出了利用RetinaNet神經(jīng)網(wǎng)絡模型來檢測銷釘?shù)亩喾N缺陷[2]。沈曉海等針對鋁材表面缺陷檢測問題,提出了利用深度學習來進行缺陷的多任務檢測[3]。蒙志強等針對軸承故障診斷過程,提出了利用改進的神經(jīng)網(wǎng)絡進行缺陷檢測的方法[4]?;跈C器視覺的缺陷檢測系統(tǒng)已經(jīng)有很多人提出,但是對電樞缺陷檢測的研究卻很少。
近年來,雖然深度卷積神經(jīng)網(wǎng)絡(DCNNs)和傳統(tǒng)機器視覺算法都已經(jīng)被證明是一種十分有效的視覺檢測算法,但是在某些工業(yè)領域中,不管是只使用傳統(tǒng)機器視覺算法還是單獨使用DCNNs都具有很大的局限性,不能直接用于檢測電樞這種缺陷復雜多樣的工件,因此本文設計了一種傳統(tǒng)機器視覺方法和DCNNs相結(jié)合的智能檢測系統(tǒng)用于電樞缺陷檢測。利用傳統(tǒng)機器視覺算法,MobileNet-V3模型以及DenseNet模型檢測電樞的不同區(qū)域區(qū)域,并且三個區(qū)域并行檢測。實驗結(jié)果表明,該系統(tǒng)運行速度快,準確率高,可為工業(yè)應用帶來實際效益。
電樞模型圖以及實物圖如圖1所示,電樞總長度不足10 mm,一些細小缺陷更是不足0.2 mm,并且缺陷類型繁多、人工檢測難度大,因此一個用來專門檢測該工件的智能檢測系統(tǒng)是被迫切需要的。
(a) 模型圖 (b) 實物圖圖1 電樞
開發(fā)出的智能檢測設備實物圖如圖2所示,整體圖標記部分為電樞檢測區(qū)。使用130萬像素的平面陣列相機和0.66景深、110 mm工作距離的遠心鏡頭來拍攝電樞,并設置兩個矩形光源和一個環(huán)形光源提高亮度。通過機械臂吸取電樞軸端,并由光纖傳感器(FU-20)定位,通過交流伺服馬達(MSMF5AZL1U2M)控制機械臂每旋轉(zhuǎn)120°拍攝一次。每個電樞可以得到不同角度的三張圖像,這樣可以全方位地識別電樞缺陷。
軟件系統(tǒng)采用Python語言編寫,傳統(tǒng)機器視覺算法基于OpenCV平臺,深度學習算法基于TensorFlow 和 Keras框架。
(a) 整體圖
(b) 電樞檢測區(qū)正面圖 (c) 電樞檢測區(qū)反面圖圖2 檢測設備
本文采用的傳統(tǒng)機器視覺算法主要包括雙邊濾波,邊緣檢測以及霍夫變換。
(1)雙邊濾波[5]是一種非線性的濾波方法,它通過對周圍像素亮度值的加權(quán)平均來表示像素的強度。雙邊濾波的參數(shù)考慮了范圍內(nèi)像素點的歐氏距離和顏色距離,這樣就保留了邊界,同時降低了噪聲。式(1)給出了雙邊濾波的具體操作:
(1)
式中:I為去噪的圖像,m為圖像中的一個像素,n為相鄰像素且像素值為Vn,m的相鄰范圍為Ω,Kn和Hn分別為空間和灰色加權(quán)系數(shù),α為歸一化系數(shù)。
(2)邊緣檢測[6]的目的是找到圖像亮度變化劇烈的像素點,即灰度強度的不連續(xù)性。邊緣檢測操作大多基于亮度的梯度和方向。圖像g在點(x,y)處的梯度和方向可分別由式(2)和式(3)定義:
(2)
(3)
式中:?g/?x和?g/?y分別是x和y方向上的離散偏導數(shù)。
(3)基于電樞的幾何結(jié)構(gòu),利用霍夫變換[7]檢測到兩條基準線,再根據(jù)電樞的尺寸定位到目標區(qū)域?;舴蛑本€檢測原理是將圖像空間中的直線檢測問題轉(zhuǎn)化為參數(shù)空間中的點檢測問題。如:方程(4)可以代表圖像空間中的一條線, 那么這條直線在參數(shù)空間中表示為點(θ,r)。
r=x*cosθ+y*sinθ
(4)
式中,r表示在圖像空間中點(x,y)和原點的距離,θ表示圖像空間中點(x,y)和原點連線與x軸正方向的夾角。
所用到的MobileNet-V3具體網(wǎng)絡結(jié)構(gòu)如表1所示。MobileNet-V3在網(wǎng)絡結(jié)構(gòu)上繼承了V1的深度可分離卷積[8]、V2的具有線性瓶頸的逆殘差結(jié)構(gòu)(Bottleneck)[9]的同時簡化了V2最后階段網(wǎng)絡結(jié)構(gòu),并且結(jié)合了MnasNet 模型引入的基于squeeze and excitation(SE)結(jié)構(gòu)的輕量級注意力結(jié)構(gòu)[10],達到了參數(shù)量更少、速度更快的目的。在模型結(jié)構(gòu)的優(yōu)化中,MobileNet-V3首先在計算和參數(shù)量受限的前提下搜索網(wǎng)絡的各個模塊[11],然后進行對各個模塊確定之后的網(wǎng)絡層的微調(diào)[12],并且通過引入一種新的激活函數(shù)h-swish[13]進一步提高了網(wǎng)絡精度。
表1 MobileNet-V3網(wǎng)絡結(jié)構(gòu)
續(xù)表
DenseNet每一層都會輸入來自前面所有層的輸出[14],這樣通過對特征極致利用可以達到更好的效果和更少的參數(shù)。在反向傳播時每一層都會接受其后所有層的梯度信息,不會隨著網(wǎng)絡深度的增加導致靠近輸入層的梯度變得越來越小,所以可以減輕在訓練過程中梯度消散的問題。并且由于大量的特征被復用,使得使用少量的卷積核就可以生成大量的特征,一定程度上減少了參數(shù)。
DenseNet結(jié)構(gòu)如圖3所示,其中Block包含兩次卷積,每個Block的輸出都會與前面的特征進行融合,每兩個DenseBlock之間插入一個TranBlock進行特征壓縮。所使用的DenseNet-121模型包含4個DenseBlock,每個DenseBlock分別包含6,12,24,16個Block。
圖3 DenseNet結(jié)構(gòu)示意圖
電樞檢測的區(qū)域劃分如圖4所示,電樞在2、3區(qū)域的特征是極其微小的,檢測工件缺陷時如果用整張圖作為網(wǎng)絡的輸入,由于電樞總體特征較為明顯,導致網(wǎng)絡可能忽略掉微小的缺陷特征,這樣極易導致網(wǎng)絡過擬合。若使用目標檢測網(wǎng)絡,數(shù)據(jù)集制作的時間成本和人力成本較大并且也有著前面所述的不足?;谝陨蠁栴},根據(jù)電樞特殊的幾何結(jié)構(gòu),把電樞的缺陷檢測由簡到難分為三個區(qū)域:外圍區(qū)域檢測,變阻部分檢測,銅線交叉區(qū)域檢測,并且對不同的區(qū)域運用專門的檢測方法進行檢測。采用三個區(qū)域不同模型同時檢測的方法不僅可以提高電樞檢測的準確率,也可以節(jié)省電樞的檢測時間和模型訓練成本。
圖4 檢測區(qū)域劃分
由于每個電樞會采集三張不同角度的圖片,為了避免外圍區(qū)域的重復檢測,只檢測電樞一側(cè)圖像即可?;陔姌械膸缀谓Y(jié)構(gòu),采用霍夫直線變換可以定位到目標區(qū)域。因為這種缺陷在電樞主體結(jié)構(gòu)的外部,且和背景區(qū)域有較大對比,使用雙邊濾波加上邊緣檢測對這種缺陷進行處理,再根據(jù)邊緣檢測結(jié)果設定合適的閾值就可以得到外圍區(qū)域的判別結(jié)果,檢測流程如圖5所示。
圖5 外圍區(qū)域檢測流程圖
電樞外圍區(qū)域的缺陷及其檢測結(jié)果如圖6所示,外圍區(qū)域缺陷主要為斷線、纖毛、異物和錫包大,可以看到,這些缺陷在外圍區(qū)域都可以被很好地檢測到。實驗表明,此方法具有95.8%準確率,滿足工業(yè)要求。
(a) 斷線 (b) 纖毛
(c) 異物 (d) 錫包大圖6 外圍區(qū)域缺陷檢測結(jié)果
變阻區(qū)域的檢測分為兩個步驟:①通過定義和變阻大小相同的掃描框在圖片的上半部分進行掃描并把框內(nèi)像素點灰度值的和與閾值進行比較,如果能夠得到在閾值范圍內(nèi)的框則進行步驟②,如果得不到就把工件判為變阻嚴重損壞,如圖7所示。②把框內(nèi)圖像輸入到訓練好的MobileNet-V3模型中進行判別。
圖7 變阻嚴重損壞
3.2.1 數(shù)據(jù)集
壞件中的缺陷類型如圖8所示,主要包括破損、斷裂、異物和油脂堆積。好件中容易誤判的主要包括焊錫粘在變阻上的工件和均勻油脂的工件,由于這種工件和壞件差別較小,容易導致誤判。為增加數(shù)據(jù)集,采用鏡像處理對壞件和難分好件進行數(shù)據(jù)增強,并對所有工件采用高斯噪聲進行數(shù)據(jù)增強。
(a) 破損 (b) 斷裂
(c) 異物 (d) 油脂堆積
(e) 好件 (f) 好件圖8 變阻區(qū)域數(shù)據(jù)集
3.2.2 實驗結(jié)果
訓練集12 420張,好件和壞件的比例約為1:1,測試集2936張,比例約為1:1。為增加模型泛性,訓練時采用隨機裁剪、亮度變化、隨即旋轉(zhuǎn)的方式進行在線數(shù)據(jù)增強。訓練中學習率采用自動衰減的方式,最終的訓練結(jié)果如圖9所示,準確率高達97.1%,滿足實際需要。
圖9 MobileNet-V3 Small訓練過程
從上圖可以看出,雖然在訓練35次之前幾個時間節(jié)點出現(xiàn)過擬合現(xiàn)象,但是之后隨著學習率的減小以及進一步的優(yōu)化,模型逐步收斂。
和基于HOG特征的SVM分類器對比的結(jié)果如表2所示,可以看出,HOG+SVM的方法學習能力差并且泛型差嚴重過擬合,因此人為構(gòu)造的HOG特征和神經(jīng)網(wǎng)絡自動尋找的高維特征相比具有很大局限性。
表2 不同方法準確率對比
由于銅線交叉區(qū)域缺陷種類繁多且微小,此區(qū)域缺陷最難檢測。為了最大化提高準確率,前期通過多個神經(jīng)網(wǎng)絡模型的嘗試找到最優(yōu)的神經(jīng)網(wǎng)絡模型,再通過改變超參數(shù)以及數(shù)據(jù)處理方式進行進一步優(yōu)化模型。
3.3.1 數(shù)據(jù)集
采用模板匹配得到銅線交叉區(qū)域數(shù)據(jù)集,壞件中主要的缺陷類型如圖10所示。由于工業(yè)上對錫珠、異物和銅線侵蝕這三類缺陷具有一定的容忍度,如果通過人工進行主觀判斷,標準難以統(tǒng)一。
(a) 錫包大 (b) 多線 (c) 錫珠
(d) 銅線露出 (e) 異物附著 (f) 銅線侵蝕
(g) 纖毛 (h) 銅線斷圖10 銅線交叉區(qū)域缺陷
3.3.2 實驗結(jié)果
為了選出檢測微小缺陷的最優(yōu)模型,先作初步實驗。首先對壞件進行鏡像作數(shù)據(jù)增強,得到訓練集15 855張,好件和壞件的比例約為2:1,測試集5332張,比例約為3:2。使用上述數(shù)據(jù)集,多個模型的實驗準確率對比如表3所示。
表3 不同模型準確率對比
由表3數(shù)據(jù)可知, DenseNet-121模型在相同的數(shù)據(jù)集下測試集有著最高的準確率即抵抗過擬合的能力最強,由于電樞的產(chǎn)量以百萬計,因此選用泛型最強的DenseNet-121模型作進一步的優(yōu)化。
通過調(diào)整初始學習率大小、更改學習率衰減方式、改變圖像處理方式、更換優(yōu)化器、提升數(shù)據(jù)集大小、添加數(shù)據(jù)增強方式包括高斯模糊、隨機裁剪、亮度變化以及隨即旋轉(zhuǎn),最后測試集準確率達到了97.8%,主以滿足要求。
在實驗中發(fā)現(xiàn)學習率衰減方式的設置對模型最后的收斂效果有著顯著的影響,最后學習率衰減方式采用余弦衰減,衰減公式如下:
(5)
上式中,L為新的學習率,l為上一次訓練所使用的學習率,d為衰減率,e為當前的訓練次數(shù),n為衰減到最小學習率所需的訓練次數(shù)。
通過改變衰減率d對模型的收斂過程有著很大的影響,如圖11所示。訓練時設置若連續(xù)訓練10次損失值不再減小則訓練停止,可以看到,當d=0.7的時持續(xù)優(yōu)化時間最長并且達到了最高的準確率,并且最后的準確率和衰減率沒有線性關系。
圖11 不同衰減率訓練結(jié)果
本文提出了一種基于經(jīng)典機器視覺和深度學習的電樞缺陷檢測系統(tǒng)。根據(jù)不同區(qū)域和不同類型的缺陷采用相適應的算法進行檢測。經(jīng)典機器視覺算法可以有效地檢測外圍區(qū)域缺陷;深度學習算法由于只檢測缺陷區(qū)域,不會受到非缺陷區(qū)域特征的干擾,所以在對變阻區(qū)域和銅線交叉區(qū)域的缺陷檢測上有著很高的準確率。經(jīng)過多次實驗,結(jié)果表明此方法滿足工業(yè)制造的要求。本文的主要貢獻如下:
(1)根據(jù)工件的實際檢測要求,設計了與其對應的檢測設備以及與之匹配的算法。
(2)通過實驗證明了深度學習算法和傳統(tǒng)機器視覺算法相結(jié)合可以有效地應用在工業(yè)領域當中。
(3)對工件進行分區(qū)域,并且用于不同的算法同時檢測的想法促進機器視覺更快地在工業(yè)領域應用。
(4)證明了MobileNet-V3和DenseNet模型可以有效地應用在不同的工業(yè)需求中。