何智成,王振興
(湖南大學(xué) 汽車車身先進(jìn)設(shè)計制造國家重點實驗室,長沙 410082)
白車身焊點質(zhì)量對汽車的性能有著重要的影響,焊點質(zhì)量檢測決定著白車身性能的可靠性。目前大部分的白車身焊點手動檢測需要耗費大量的人力資源,效率低下。采用自動化的檢測可以提升焊點檢測的效率,焊點檢測系統(tǒng)采用傳統(tǒng)圖像處理、霍夫圓變換的檢測方法[1]受環(huán)境的影響較大,在光照過亮、過暗或者焊點有污漬的情況下檢測效果不理想,且焊點輪廓不是標(biāo)準(zhǔn)的圓形,增大了霍夫圓變換檢測方法的檢測難度。
近年來,很多研究機(jī)構(gòu)與研究者對基于深度學(xué)習(xí)的目標(biāo)檢測算法進(jìn)行研究。文獻(xiàn)[2]提出了R-CNN目標(biāo)檢測方法,該方法使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測,但是檢測時間過長。文獻(xiàn)[3]提出了Fast R-CNN,將卷積特征提取、目標(biāo)分類、邊框回歸融合為一個階段,大幅節(jié)省了檢測時間。文獻(xiàn)[4]提出了Faster R-CNN,該方法將區(qū)域建議、卷積特征提取、目標(biāo)分類、邊框回歸融合到一個網(wǎng)絡(luò)中,在檢測性能上有很大的提升。R-CNN、Fast R-CNN、 Faster R-CNN等方法的思路都是基于區(qū)域建議的目標(biāo)檢測方法,雖然速度有了很大提升,但是仍然難以滿足實時性的要求。文獻(xiàn)[5]提出了YOLO目標(biāo)檢測算法,該算法在速度上大幅提升。文獻(xiàn)[6]提出了SSD目標(biāo)檢測模型。文獻(xiàn)[7]在YOLO的基礎(chǔ)上結(jié)合了SSD、Faster R-CNN的錨框機(jī)制,提出了YOLOv2檢測模型。YOLOv2在速度和精度上相比YOLO都有一定提升。為提升小目標(biāo)檢測能力,文獻(xiàn)[8]結(jié)合FPN[9]特征金字塔的方法提出了YOLOv3目標(biāo)檢測算法,采用多尺度預(yù)測提升了小目標(biāo)檢測能力。
目前有很多學(xué)者對YOLOv2目標(biāo)檢測算法進(jìn)行了研究并且應(yīng)用于各個領(lǐng)域,文獻(xiàn)[10]采用YOLOv2目標(biāo)檢測算法進(jìn)行了車輛的實時檢測。文獻(xiàn)[11]采用YOLOv2目標(biāo)檢測算法進(jìn)行無人機(jī)航拍圖定位研究。文獻(xiàn)[12]采用YOLOv2進(jìn)行紅外圖像行人檢測研究。文獻(xiàn)[13]采用DenseNet[14]的方法對YOLOv2進(jìn)行改進(jìn),構(gòu)建Tiny-yolo-dense,并應(yīng)用到了芒果檢測中。文獻(xiàn)[15]在YOLOv2的基礎(chǔ)上,提出使用更少的卷積層和去除卷積神經(jīng)網(wǎng)絡(luò)中批量標(biāo)準(zhǔn)化層的方法,得到輕量實時的目標(biāo)檢測模型YOLO-LITE。文獻(xiàn)[16]采用去除YOLOv2的兩個連續(xù)的3×3×1 024的卷積層的方法對YOLOv2進(jìn)行改進(jìn)得到了YOLOv2-Reduced,從而減少模型參數(shù),提高運行速度,并且在SAR圖像船只檢測中得到了良好的應(yīng)用。文獻(xiàn)[17]提出去除YOLOv2最后兩個3×3×1 024的卷積層以減少模型參數(shù),使用三層特征融合的方法進(jìn)一步提高模型的檢測精度,并構(gòu)成YOLOv2_Vehicle。可見,在目前的YOLOv2改進(jìn)方法中,最常用的是對YOLOv2的卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)進(jìn)行改進(jìn)和優(yōu)化,以滿足研究對象所需要的速度和精度要求。卷積神經(jīng)網(wǎng)絡(luò)模型決定著目標(biāo)檢測算法的精度與速度,目前常用的卷積模型中有VGG[18]、GoogLeNet[19]、ResNet[20]和DenseNet[14]等,這些網(wǎng)絡(luò)往往是模型較大,參數(shù)較多,運行速度較慢。為解決這一問題,文獻(xiàn)[21]提出MobileNet,并給出了深度可分離卷積的概念,以減少模型參數(shù),加快運行速度。為進(jìn)一步提升模型精度,文獻(xiàn)[22]提出了MobileNetv2,相比于MobileNet,檢測精度更高。
為提高焊點位置檢測效率,本文綜合考慮目前常見的YOLOv2改進(jìn)方法及深度分離卷積的作用,用MobileNetv2替換YOLOv2卷積層,同時采用細(xì)粒度特征的方法將不同層的特征進(jìn)行融合,運用GIoU loss[23]改進(jìn)損失函數(shù)并進(jìn)行訓(xùn)練比較,構(gòu)建一個輕量的焊點檢測模型FGM_YOLO。
YOLOv2目標(biāo)檢測算法是一種單階段目標(biāo)檢測方法,其檢測流程如圖1所示。本文設(shè)置輸入圖片大小為224×224,將圖片劃分為7×7的網(wǎng)格,每個網(wǎng)格預(yù)測5個預(yù)測框,然后去掉置信較低的預(yù)測框,最后經(jīng)過非極大值抑制[24]得到最后的預(yù)測結(jié)果。
圖1 YOLOv2算法檢測流程
YOLOv2的模型結(jié)構(gòu)如圖2所示。輸入圖片經(jīng)過一系列的卷積、最大值池化操作,之后將低層特征進(jìn)行重整操作與高層卷積的特征進(jìn)行融合,隨后進(jìn)行兩次卷積操作,最后送入檢測層。YOLOv2采用這種細(xì)粒度特征的方法,使得深層的特征引入了淺層的特征。由于淺層特征的感受野更小,具有更高的分辨率,而且淺層特征包含物體的輪廓信息,深層特征包含了豐富的語義信息,因此采用深層特征與淺層特征融合的操作使得YOLOv2模型的檢測效果更好。
圖2 YOLOv2模型結(jié)構(gòu)
當(dāng)輸入圖片大小為224×224時,YOLOv2模型的特征提取層最終輸出特征為7×7×B(C+5)。共7×7個網(wǎng)格,各網(wǎng)格有B個錨框(anchor),每個anchor有位置和置信共5個參數(shù),C為檢測類別數(shù)。模型損失函數(shù)如式(1)所示:
(1)
YOLOv2的損失函數(shù)包括位置損失、背景置信損失、前景置信損失和類別損失。首先計算anchor與真實框的交并比(Intersection over Union,IoU),這里計算IoU時只考慮anchor與真實框的形狀。將IoU最大的anchor與真實框匹配。匹配的anchor預(yù)測結(jié)果與真實框相比得出類別、位置以及有物體的置信損失(前景損失)。式(1)的第1項為位置損失,(2-wihi)表示根據(jù)真實框的大小對位置損失權(quán)重進(jìn)行修正。式(1)的第2項為無物體的置信損失(背景損失):無物體處的真實置信為0,把預(yù)測框與真實框的IoU小于閾值的預(yù)測框作為背景,另外其他大于閾值但是沒有與真實框匹配的預(yù)測框忽略不計算損失,這里閾值取0.6。此時IoU的計算考慮預(yù)測框與真實框的位置和大小,IoU示意圖如圖3所示,其中左下側(cè)框為真實框位置,右上側(cè)框為預(yù)測框位置,真實框與預(yù)測框的交集面積為:
(2)
真實框與預(yù)測框的并集面積為:
(3)
交并比為:
(4)
圖3 交并比示意圖
式(1)的第3項為有物體的置信損失,有物體處的真實置信為該anchor的預(yù)測框與真實框的IoU。式(1)的第4項為有物體的類別損失,但是由于本文待檢測的物體只有白車身焊點這一種類別,因此本文中的損失函數(shù)沒有類別損失。
雖然YOLOv2模型相比其他的目標(biāo)檢測模型規(guī)模較小,但是由于生產(chǎn)車間的工控機(jī)很少配置GPU,因此YOLOv2仍然參數(shù)過多,時效性不強(qiáng),不能用于對實時性嚴(yán)格要求的焊點檢測中。為提升焊點位置檢測效率及精度,本文從卷積結(jié)構(gòu)、損失函數(shù)、錨框聚類3個方面對YOLOv2算法進(jìn)行了改進(jìn)得到最終的FGM_YOLO模型,該模型訓(xùn)練流程如圖4所示。
圖4 FGM_YOLO訓(xùn)練流程
由于標(biāo)準(zhǔn)卷積的計算量以及卷積核參數(shù)比較多,ANDREW等人提出了深度可分離卷積代替標(biāo)準(zhǔn)卷積,深度可分離卷積將標(biāo)準(zhǔn)卷積分為深度卷積(Depthwise Convolution,DW)和點卷積。標(biāo)準(zhǔn)卷積及深度分離卷積的結(jié)構(gòu)如圖5所示。
圖5 標(biāo)準(zhǔn)卷積、深度卷積與點卷積結(jié)構(gòu)
假設(shè)某一卷積層的輸入特征為w×h×m,輸出特征為w×h×n,卷積核的大小為k×k,則采用標(biāo)準(zhǔn)卷積的計算量為:
w×h×n×m×k×k
(5)
采用深度分離卷積的計算量為:
w×h×m×k×k+w×h×n×m×1×1
(6)
計算量之比為:
(7)
采用標(biāo)準(zhǔn)卷積的參數(shù)個數(shù)為:
m×n×k×k
(8)
深度分離卷積的參數(shù)個數(shù)為:
m×k×k+m×n×1×1
(9)
參數(shù)之比為:
(10)
通過對比可知,采用深度可分離卷積相對于標(biāo)準(zhǔn)卷積計算量和參數(shù)會減少。深度可分離卷積的應(yīng)用將會使模型對硬件計算能力的要求降低、節(jié)省成本。
MobileNetv2模型是SANDLER等人提出的第2代輕量級模型,該模型相比于MobileNet參數(shù)更少,MobileNetv2是在ResNet的網(wǎng)絡(luò)基礎(chǔ)上引入了深度可分離卷積并且在殘差塊上進(jìn)行了改進(jìn)。MobileNetv2的卷積塊如圖6所示,卷積塊輸入特征通道數(shù)為cin,首先經(jīng)過1×1卷積擴(kuò)充為輸入通道數(shù)的6倍,經(jīng)過深度卷積之后通過1×1卷積進(jìn)行通道壓縮使通道數(shù)與輸入通道相同。在殘差塊的最后一層卷積之后沒有采用Relu激活而是采用了Linear激活以防止特征被破壞。當(dāng)深度卷積的步長s=1時進(jìn)行shortcut連接,如圖6(a)所示。深度卷積的步長s=2時不進(jìn)行shortcut連接,如圖6(b)所示。
圖6 MobileNetv2卷積塊結(jié)構(gòu)
本文用MobileNetv2卷積層代替YOLOv2的darknet19得到了M_YOLO模型。采用細(xì)粒度特征方法,將第12個卷積塊的輸出特征經(jīng)過重整操作之后與最后一層的輸出特征融合,然后經(jīng)過一次卷積操作,為減少參數(shù),該層卷積的卷積核大小為1×1。最后連接到檢測層得到改進(jìn)的焊點檢測模型FM_YOLO,FM_YOLO模型結(jié)構(gòu)如圖7所示,其中,a指經(jīng)過圖6(a)中的卷積塊結(jié)構(gòu)操作,b指經(jīng)過圖6(b)中的卷積塊結(jié)構(gòu)操作,c為卷積通道數(shù)目,s為卷積步長。
圖7 FM_YOLO焊點檢測模型
YOLOv2的損失函數(shù)相同,目標(biāo)檢測算法中的大小、位置損失一般為預(yù)測框長寬、位置與真實框長寬、位置的均方誤差。但是在目標(biāo)檢測中評價一個物體是否被正確檢測出,IoU是一個重要的度量標(biāo)準(zhǔn),而且IoU對尺寸變化不敏感,直接優(yōu)化IoU會有更好的結(jié)果。但是當(dāng)預(yù)測框與真實框不相交時,IoU一直為0,無法進(jìn)行優(yōu)化。為了把IoU作為損失函數(shù)直接進(jìn)行優(yōu)化,HAMID等人提出了廣義IoU的概念(Generalized Intersection over Union,GIoU)。GIoU能夠克服在IoU<0時無法繼續(xù)優(yōu)化的問題,而且GIoU對尺寸變化也不敏感。本文采用GIoU代替原來的位置損失函數(shù)能夠直接對度量標(biāo)準(zhǔn)進(jìn)行優(yōu)化,會使得位置檢測更加準(zhǔn)確。如圖3所示,預(yù)測框與真實框的交集為I,預(yù)測框與真實框的并集為U,預(yù)測框與真實框的最小包圍框的面積為:
(11)
GIoU為:
(12)
在FM_YOLO模型的基礎(chǔ)上,本文將GIoU作為損失函數(shù)的一部分得到FGM_YOLO模型,FGM_YOLO模型的損失函數(shù)如式(13)所示:
(13)
YOLOv2目標(biāo)檢測算法引入了錨框(anchor),采用K-means聚類算法[25]得到anchor數(shù)量及大小。本文采用K-means算法對白車身焊點數(shù)據(jù)集進(jìn)行聚類得到適合白車身焊點的anchor個數(shù)和大小。
K-means聚類算法中的K代表了聚類的類別數(shù)。在K-means聚類時,設(shè)定不同的K值不斷優(yōu)化距離值進(jìn)行聚類。聚類anchor時距離用聚類損失loss表示,每個數(shù)據(jù)與哪個聚類中心的交并比最大即loss最小則歸為哪一類,新的聚類中心為同類anchor長的均值與寬的均值。在聚類時不斷優(yōu)化loss直至loss收斂時聚類結(jié)束。交并比(IoU)如式(14)所示,這里計算交并比時只考慮長和寬,聚類anchor的損失函數(shù)如式(15)所示:
(14)
loss=1-IoU(b,c)
(15)
其中,b為標(biāo)定的真實框,c為聚類的中心,bw、bh為真實框的寬和高,cw、ch為聚類中心的寬和高。
本文對制作的白車身焊點數(shù)據(jù)集,采用K-means聚類算法進(jìn)行聚類得到候選區(qū)域anchor的數(shù)量以及大小。聚類結(jié)果如圖8所示,圖8為聚類損失loss、平均交并比(Average Intersection over Union,AvgIoU)隨著anchor數(shù)目的變化曲線。
圖8 聚類損失及平均交并比
根據(jù)聚類損失、平均交并比與聚類中心個數(shù)的變化曲線可以看出,當(dāng)anchor個數(shù)為5時,聚類損失和平均交并比變化減緩??紤]計算精度與速度,本文對于白車身焊點數(shù)據(jù)集選用5個anchor,分別為[0.718,0.667]、[1.006,0.921]、[1.400,1.328]、[0.854,0.815]、[1.149,1.115]。
在算法的驗證中,目標(biāo)檢測模型訓(xùn)練需要規(guī)范標(biāo)注的數(shù)據(jù)集。由于沒有現(xiàn)成的白車身焊點數(shù)據(jù)集,因此在實際生產(chǎn)車間采集了4 000張不同位置、不同光照亮度的白車身焊點圖片。然后對焊點圖片進(jìn)行標(biāo)注建立了白車身焊點檢測數(shù)據(jù)集,其中3 200張白車身焊點圖片作為訓(xùn)練集,800張白車身焊點圖片作為測試集。白車身焊點圖片樣本如圖9所示。
圖9 焊點樣本
3.2.1 評價指標(biāo)
目標(biāo)檢測模型的評價指標(biāo)一般采用均值平均精度 (mean Average Precision,mAP)進(jìn)行評價。mAP是所有類別的平均精度(Average Precision,AP)的均值,AP是召回率(Recall)與準(zhǔn)確率(Precision)曲線所包圍的面積,其中召回率指的是所有待檢測物體中正確檢測出的物體所占的百分比,準(zhǔn)確率指的是所有檢測出的物體中正確檢測的物體所占的百分比。本文采用COCO[26]數(shù)據(jù)集的評價標(biāo)準(zhǔn)。對于白車身焊點,如果預(yù)測框與真實框的IoU大于閾值則認(rèn)為是檢測出了焊點,若預(yù)測框與真實框的IoU小于閾值則認(rèn)為是沒有檢測出焊點。對于一個焊點若正確的檢測出來則為真正類(True Positive,TP),若對于一個不是焊點的位置檢測為焊點則為假正類(False Positive,FP)。設(shè)白車身焊點的總數(shù)為N,則檢測的召回率為:
(16)
檢測準(zhǔn)確率為:
(17)
當(dāng)召回率變化時記錄當(dāng)前召回率對應(yīng)的最大的準(zhǔn)確率,制作召回率與準(zhǔn)確率的曲線圖(P-R曲線)。P-R曲線所圍成的面積就是當(dāng)前閾值下模型的AP,設(shè)置10個IoU閾值,然后計算各個閾值下AP的均值,最終得到模型的AP。
3.2.2 實驗平臺及檢測結(jié)果
由于Keras簡單方便,本文采用Keras深度學(xué)習(xí)框架。電腦配置:顯卡為1050ti 4 GHz顯卡,CPU為i5-8400,運行內(nèi)存為8 GB。對3 200張白車身焊點數(shù)據(jù)集進(jìn)行了數(shù)據(jù)增強(qiáng)及訓(xùn)練,訓(xùn)練輪數(shù)為500輪,選用SGD優(yōu)化器,學(xué)習(xí)為0.001,batch size為16,訓(xùn)練輸入圖片大小為224×224。分別用YOLOv2,Tiny_YOLOv2、M_YOLO、FM_YOLO、FGM_YOLO、YOLO-LITE、YOLOv2-Reduced、YOLOv2_Vehicle進(jìn)行訓(xùn)練。訓(xùn)練完成后在測試集上進(jìn)行測試,對模型的輸出結(jié)果采用非極大值抑制之后得到最終的檢測結(jié)果。
本文方法FGM_YOLO與YOLOv2、Tiny_YOLOv2及Tiny-yolo-dense、YOLO-LITE、YOLOv2-Reduced、YOLOv2_Vehicle在IoU閾值為0.75時的P-R曲線如圖10所示。從圖10可以看出,本文FGM_YOLO模型的P-R曲線完全包圍其他模型,可知本文方法在IoU=0.75時的AP值最高。
圖10 不同方法P-R曲線
各個模型的檢測結(jié)果及模型的參數(shù)數(shù)量如表1所示。
表1 不同模型結(jié)果及參數(shù)數(shù)量
由表1的測試結(jié)果可知,M_YOLO相比于原YOLOv2參數(shù)個數(shù)減少到了YOLOv2參數(shù)的1/22, APIoU=0.50提升了0.29%,但AP、APIoU=0.75下降明顯。在MobileNetv2的基礎(chǔ)上加入細(xì)粒度特征FM_YOLO的AP 、APIoU=0.50、APIoU=0.75相比于YOLOv2分別提升了1.18%、0.23%和1.67%。采用GIoU loss的FGM_YOLO的AP 、APIoU=0.50和APIoU=0.75相比于YOLOv2分別提升了2.47%、0.24%和3.65%,每張圖片的檢測時間約是YOLOv2的1/2,模型參數(shù)約是YOLOv2的1/16。FGM_YOLO檢測速度比YOLO-LITE和Tiny-yolo-dense分別慢了0.004 s和0.003 s,但檢測精度提高明顯。FGM_YOLO相比于YOLOv2-Reduced、YOLOv2_Vehicle,檢測精度與速度都有明顯提升。另外,對比YOLOv2-Reduced、YOLOv2_Vehicle的檢測結(jié)果可以發(fā)現(xiàn),采用三層特征融合相比于兩層特征融合,在焊點數(shù)據(jù)集上檢測精度并沒有提升且出現(xiàn)了稍微下降。
YOLOv2、Tiny-yolo-dense、YOLO-LITE、YOLOv2-Reduced、YOLOv2_Vehicle與本文提出的FGM_YOLO檢測結(jié)果對比如圖11所示。從圖11可以看出,FGM_YOLO檢測結(jié)果比YOLOv2、Tiny-yolo-dens、YOLO-LITE、YOLOv2-Reduced、YOLOv2_Vehicle漏檢與誤檢更少。可見本文所提出的檢測方法與YOLOv2及其他改進(jìn)方法相比在焊點檢測中有一定的優(yōu)勢。
圖11 不同模型焊點檢測結(jié)果對比
為進(jìn)一步展示本文方法的效果,圖12對傳統(tǒng)圖像處理檢測方法(采用灰度變換、濾波、邊緣檢測、霍夫圓變換)的檢測結(jié)果與FGM_YOLO的檢測結(jié)果進(jìn)行了對比。其中,圖12(a)~圖12(d)第1行為原圖,第2行為FGM_YOLO模型的檢測效果,第3行為圖像處理方法的檢測效果。通過比較可知,在光照過暗或光照過亮的情況下,傳統(tǒng)的圖像處理檢測方法基本失效,在生銹和有污漬的情況下,傳統(tǒng)的圖像處理方法受到銹斑、污漬的影響,出現(xiàn)焊點檢測不出或檢測位置與真實位置偏離的情況。而本文提出的焊點檢測方法FGM_YOLO相比于傳統(tǒng)的檢測方法受光照影響很小,檢測效果更好。
圖12 FGM_YOLO與圖像處理方法焊點檢測結(jié)果對比
為解決白車身焊點質(zhì)量自動檢測時在復(fù)雜環(huán)境下焊點圖像識別與定位困難的問題,本文提出一個輕型、快速、精度更高的白車身焊點位置檢測模型。將YOLOv2的卷積層替換為輕量卷積神經(jīng)網(wǎng)絡(luò)Moilenetv2,采用細(xì)粒度特征方法進(jìn)行特征融合,并引入GIoU loss改進(jìn)模型的損失函數(shù),最后聚類獲得適合焊點大小的anchor。通過重新訓(xùn)練得到了效果更好的焊點檢測模型FGM_YOLO,相比原YOLOv2模型,該模型參數(shù)大量減少,檢測精度提升,檢測速度更快,可適用于對實時性要求嚴(yán)格且工控機(jī)沒有GPU的車間生產(chǎn)線。相比于傳統(tǒng)圖像處理檢測算法,本文方法受光照、污漬、銹斑等影響更小,解決了魯棒性差的問題,檢測效率大幅提升。下一步將研究更高精度目標(biāo)檢測算法并結(jié)合模型量化、剪枝、蒸餾等方法,擴(kuò)充數(shù)據(jù)集以提高檢測精度和速度。