張曉昇,方凱,徐鑫
(湖北汽車工業(yè)學(xué)院 電氣與信息工程學(xué)院,湖北 十堰 442002)
制造過(guò)程中難免出現(xiàn)工件損傷,正確識(shí)別缺陷是實(shí)現(xiàn)無(wú)缺陷制造的關(guān)鍵[1]。小型商用車變速箱油封座在生產(chǎn)壓鑄過(guò)程中出現(xiàn)的氣孔、印痕和劃痕等質(zhì)量缺陷必須檢測(cè)。早期在金屬器件的檢測(cè)中應(yīng)用了傳統(tǒng)的機(jī)器視覺(jué)方法,對(duì)采集的圖片進(jìn)行處理,實(shí)現(xiàn)了較高效率、不接觸式檢測(cè),但極易受到現(xiàn)場(chǎng)環(huán)境和人為操作等干擾,特征提取的識(shí)別分類能力有待提高,難以大規(guī)模應(yīng)用到實(shí)際生產(chǎn)中[2]。隨著人工智能的蓬勃發(fā)展,深度學(xué)習(xí)廣泛應(yīng)用于缺陷檢測(cè),主要算法分為2 類:1)以Faster-RCNN 為代表的Two-stage 檢測(cè)算法[3],將目標(biāo)生成候選框并進(jìn)行分類,檢測(cè)實(shí)時(shí)性較差;2)以SSD、YOLO 為代表的One-stage 檢測(cè)算法[4],使用回歸機(jī)制對(duì)輸入的整個(gè)圖形直接檢測(cè),從模型中選擇的候選幀數(shù)量少,速率較快,但精度略低于2步法。李維剛等人[5]利用YOLOv3 檢測(cè)熱軋帶鋼表面缺陷,使用加權(quán)K-means聚類算法來(lái)優(yōu)化先驗(yàn)框參數(shù),提高了先驗(yàn)框與特征圖層的匹配度;方葉祥等人[6]利用特征金字塔與殘差層融合對(duì)缺陷定位,使用非極大抑制法篩選邊界框,基于缺陷權(quán)重優(yōu)化損失函數(shù),有效提高了YOLOv3算法對(duì)鋼材表面劃痕的檢測(cè)精度;邢俊杰等人[7]提出基于CutMix 和YOLOv3 的識(shí)別金屬工件缺陷方法CSYOLOv3,使用CutMix方法增加對(duì)缺陷的檢測(cè)數(shù)量,拆分淺層大特征圖與預(yù)測(cè)分支特征圖融合,能提取更多的特征信息,增強(qiáng)魯棒性。目前基于YOLOv3 的研究都是在數(shù)據(jù)和網(wǎng)絡(luò)部分改進(jìn),在鑄件表面缺陷檢測(cè)中,由于缺陷目標(biāo)尺寸過(guò)小,算法對(duì)目標(biāo)不敏感,易造成漏檢現(xiàn)象。文中基于YOLOv3網(wǎng)絡(luò),對(duì)不同大小缺陷進(jìn)行分類檢測(cè),新增特征圖層,形成4個(gè)預(yù)測(cè)尺度,同時(shí)合并BN層和卷積層參數(shù),提高檢測(cè)精度和速率。
YOLO屬于1步檢測(cè)算法,以整幅圖像為輸入,利用CNN 對(duì)輸入圖片進(jìn)行特征提取,將目標(biāo)檢測(cè)轉(zhuǎn)化為回歸問(wèn)題。YOLOv3 將Darknet-19 升級(jí)到Darknet-53,卷積層增至53層[8],提高了檢測(cè)精度。
Darknet-53 網(wǎng)絡(luò)采用全卷積層結(jié)構(gòu),由多個(gè)1×1和3×3卷積層組成。YOLOv3特征提取網(wǎng)絡(luò)使用殘差神經(jīng)網(wǎng)絡(luò)思想,在網(wǎng)絡(luò)中加入了5 個(gè)殘差塊,每個(gè)殘差塊包含不同數(shù)量的殘差單元,殘差單元由輸入與2 個(gè)DBL 單元進(jìn)行殘差操作組成。因?yàn)镈arknet-53網(wǎng)絡(luò)中加入了殘差單元,解決了梯度消失的問(wèn)題,提高了特征的重用性。結(jié)構(gòu)中每個(gè)卷積層后跟有1個(gè)歸一化層和1個(gè)激活層,在正向傳播過(guò)程中設(shè)置卷積核的步長(zhǎng)為2,經(jīng)過(guò)5次下采樣,圖像變成原尺寸的1/32,結(jié)構(gòu)如圖1所示[9]。
圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3 使用K-means 均值聚類獲得目標(biāo)的Anchor Boxes大小,輸出3個(gè)尺度的特征圖,尺寸分別為13×13、26×26 和52×52,不同尺度的特征圖分別檢測(cè)大中小目標(biāo)。在每種尺度特征圖上生成3個(gè)Anchor Box,共9 個(gè)Anchor Box[10]。檢測(cè)時(shí)輸入圖片分別劃分為若干個(gè)網(wǎng)格,網(wǎng)格寬和長(zhǎng)分別為cx和cy,如圖2所示。預(yù)測(cè)框的坐標(biāo)點(diǎn)為[11]
圖2 預(yù)測(cè)框示意圖
式中:tx、ty、tw、th分別為網(wǎng)格輸出相對(duì)于Anchor Box的偏移量;bx、by、bw、bh分別為預(yù)測(cè)框的中心坐標(biāo)、寬和高;pw、ph分別為Anchor Box 的寬和高;σ為激活函數(shù)Sigmoid。將tx和ty的預(yù)測(cè)值映射到[0,1]集合內(nèi),計(jì)算對(duì)應(yīng)的置信度。
YOLOv3 使用多個(gè)獨(dú)立的Logistic 分類器代替Softmox分類器。Softmox選取概率最大值為判定類別,僅屬于1個(gè)類別;實(shí)際中1個(gè)目標(biāo)可能不只屬于1 個(gè)類別,故利用Logistic 對(duì)每個(gè)類別進(jìn)行二分類,函數(shù)將輸入值歸一化[0,1],Sigmoid函數(shù)為[12]
式中:z為分類邊界函數(shù)。假設(shè)z為線性:
將式(3)代入Sigmoid函數(shù),得到預(yù)測(cè)函數(shù)為
分類器Logistic 利用計(jì)算出的Sigmoid 值是否大于0.5來(lái)判定目標(biāo)是否屬于該類別,使用若干個(gè)Logistic可達(dá)到多類別劃分的目的。
YOLOv3 的損失函數(shù)主要有目標(biāo)置信度損失函數(shù)Lconf(o,c)、目標(biāo)分類損失函數(shù)Lcla(O,C) 和目標(biāo)定位損失函數(shù)Lloc(l,g),計(jì)算公式為
針對(duì)檢測(cè)過(guò)程中常見(jiàn)的定位損失,包括預(yù)測(cè)幀寬高(w,h)損失函數(shù)和中心點(diǎn)(x,y)損失函數(shù),分別采用誤差平方和、二元交叉熵法計(jì)算。
YOLOv3通過(guò)3個(gè)不同尺度的特征層來(lái)檢測(cè)目標(biāo),分別利用32×32、16×16、8×8網(wǎng)格劃分圖像實(shí)現(xiàn)對(duì)大中小目標(biāo)的識(shí)別。系統(tǒng)結(jié)構(gòu)在第79層之后經(jīng)卷積操作得到1 32的預(yù)測(cè)結(jié)果,感受野較大,適合檢測(cè)大尺寸目標(biāo)。將結(jié)果通過(guò)上采樣與61層進(jìn)行拼接,經(jīng)卷積操作得到1 16的預(yù)測(cè)結(jié)果,感受野略小,適合檢測(cè)中等尺寸目標(biāo)。將91 層結(jié)果通過(guò)上采樣與36層進(jìn)行拼接,經(jīng)過(guò)卷積得到1 8的預(yù)測(cè)結(jié)果,感受野最小,適合檢測(cè)小尺寸目標(biāo)。最終輸出的3 個(gè)預(yù)測(cè)尺度分別為1 32、1 16、1 8。因汽車變速箱油封座鑄件表面存在更小的缺陷,在原尺度的基礎(chǔ)上新增第4 種尺度,按照YOLOv3 拼接原理,將103 層結(jié)果通過(guò)上采樣與11 層進(jìn)行拼接,即在52×52 特征圖層完成上采樣,在104×104 特征圖層完成拼接,實(shí)現(xiàn)深淺層的特征融合,結(jié)構(gòu)見(jiàn)圖3。
圖3 文中算法結(jié)構(gòu)圖
在Darknet-53 結(jié)構(gòu)中利用第2 個(gè)殘差塊的淺層輸出和經(jīng)過(guò)2 倍上采樣的深層輸出進(jìn)行拼接操作,在原基礎(chǔ)上擴(kuò)充張量維度,利用concat 函數(shù)完成維度合并,如圖4所示;再經(jīng)過(guò)1×1的卷積核,新增1 個(gè)預(yù)測(cè)尺度即輸出1 個(gè)104×104 特征圖層,提高了系統(tǒng)的特征提取能力。新特征層將輸入圖像劃分為104×104個(gè)網(wǎng)格,更小的網(wǎng)格對(duì)小目標(biāo)更敏感,利用網(wǎng)絡(luò)淺層特征和深層特征相結(jié)合,適用文中對(duì)鑄件工件的缺陷檢測(cè)。
圖4 張量的拼接操作
在訓(xùn)練結(jié)構(gòu)模型的過(guò)程中,利用批歸一化層(batch normalization,BN)增快網(wǎng)絡(luò)收斂,同時(shí)防止過(guò)擬合。雖然在一定程度上BN 層提高了系統(tǒng)的訓(xùn)練性能,但使網(wǎng)絡(luò)前向推移增加了運(yùn)算,延長(zhǎng)了檢測(cè)速度。為提高模型前向推移速度,將BN 層參數(shù)合并到卷積層。卷積層的計(jì)算公式為
式中:Wconv為卷積權(quán)重;X為卷積層輸入;bconv為卷積偏置;Yconv為卷積層輸出;BN層的計(jì)算公式為
式中:aBN和bBN為BN 層的結(jié)構(gòu)參數(shù);x為該批層的輸入;m為均值;ε為方差;δ為0 的極限變量;將式(6)的輸出作為式(7)的輸入,計(jì)算過(guò)程為
式中:W'conv為合并后卷積層權(quán)重;b'conv為合并后卷積層偏置。合并后BN層和卷積層共用Blob數(shù)據(jù),在分類精度不變的前提下加快了運(yùn)算速度(表1)。
表1 合并前后檢測(cè)結(jié)果對(duì)比
實(shí)驗(yàn)操作系統(tǒng)為Window10 系統(tǒng);CPU 為Core i5-9400;GPU為GTX1050ti;內(nèi)存為16 G;在深度學(xué)習(xí)框架Tensorflow 利用CUDA10.0 和CUDNN7.5.1加快GPU運(yùn)算。
選用某專業(yè)廠汽車變速箱后油封座的表面缺陷數(shù)據(jù)集,圖像用BFSU3-89S6C-C 面陣CCD 工業(yè)相機(jī)采集,包括有劃痕、氣孔、欠鑄以及印痕等類型缺陷,共1500 張,其中1350 張有缺陷,150 張無(wú)缺陷,按照9:1的比例分為訓(xùn)練集和測(cè)試集。使用labelImg進(jìn)行數(shù)據(jù)集的標(biāo)注,標(biāo)注過(guò)程中對(duì)目標(biāo)點(diǎn)進(jìn)行框定并定義其類型,之后生成.xml,部分標(biāo)注數(shù)據(jù)集如圖5所示。
圖5 不同類型缺陷數(shù)據(jù)集
在模型學(xué)習(xí)過(guò)程中,輸入圖像大小為416×416,IOU 閾值為0.45,學(xué)習(xí)率為0.001,迭代次數(shù)為30,衰減系數(shù)為0.0005,設(shè)置batch_size 為4。引用評(píng)價(jià)指標(biāo)準(zhǔn)確率、召回率和平均精準(zhǔn)度[13-14]:
式中:P為樣本缺陷預(yù)測(cè)準(zhǔn)確率;R為樣本缺陷預(yù)測(cè)召回率;mAP為樣本缺陷預(yù)測(cè)平均精準(zhǔn)度;TP為被正確預(yù)測(cè)為缺陷的正樣本;FP為被錯(cuò)誤預(yù)測(cè)為缺陷的負(fù)樣本;FN為被錯(cuò)誤預(yù)測(cè)為缺陷的正樣本;n為檢測(cè)缺陷的目標(biāo)類別。各類缺陷的精度AP為
圖6為各類缺陷的P-R曲線,橫縱坐標(biāo)軸與曲線所圍的面積表示此類缺陷的檢測(cè)精準(zhǔn)度。
圖6 各類缺陷P-R曲線
改進(jìn)后YOLOv3網(wǎng)絡(luò)mAP為76.95%,是改進(jìn)前結(jié)構(gòu)mAP(61.37%)的1.25 倍。新增的特征層對(duì)小目標(biāo)檢測(cè)有明顯提高,尤其對(duì)較小印痕mark1類缺陷的檢測(cè)精度達(dá)到97.23%,mark2 也達(dá)到了80.82%,相比YOLOv3 網(wǎng)絡(luò)分別提高了26.22%和5.06%。實(shí)驗(yàn)結(jié)果表明:增加第4 個(gè)尺度預(yù)測(cè)能有效提高原算法對(duì)車變速箱油封座鑄件缺陷小目標(biāo)的檢測(cè)精度,驗(yàn)證改進(jìn)方法的可行性。
采用文中改進(jìn)模型對(duì)測(cè)試集進(jìn)行檢測(cè),檢測(cè)效果如圖7~8 所示,可以看出,所有類別缺陷均可以檢測(cè),且文中算法的檢測(cè)精度結(jié)果高于改進(jìn)前YOLOv3算法,召回率也實(shí)現(xiàn)了一定程度的提高。
圖7 Yolov3算法檢測(cè)效果
圖8 文中算法檢測(cè)效果
為了驗(yàn)證綜合檢測(cè)能力,采用文中算法與經(jīng)典的目標(biāo)檢測(cè)算法及文獻(xiàn)[5-6]中的算法對(duì)文中變速箱油封座數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)對(duì)比。在相同實(shí)驗(yàn)條件下,設(shè)置初始學(xué)習(xí)率為0.001,文中IOU 閾值為0.45,目標(biāo)類別置信度閾值為0.5,利用mAP和檢測(cè)速度對(duì)比算法結(jié)果,如表2所示。由表2分析可知:Faster RCNN網(wǎng)絡(luò)檢測(cè)精度較高,略低于文中算法,屬于two-stage算法,檢測(cè)速度最低。SSD算法檢測(cè)速度基本和YOLOv3算法相近,檢測(cè)精度最低。文獻(xiàn)[5]和文獻(xiàn)[6]算法也是基于YOLOv3 改進(jìn)的算法,相比文中算法,精度分別低了8.1%和2.8%;算法檢測(cè)速度方面,文中算法的檢測(cè)速度略低于文獻(xiàn)[5]算法,這是由于文獻(xiàn)[5]采用加權(quán)K-means聚類算法對(duì)先驗(yàn)框參數(shù)優(yōu)化調(diào)整,提高了運(yùn)算速率,但相比常用檢測(cè)算法,文中算法的檢測(cè)精度較高。相比YOLOv3,文中算法mAP提高了15.5%,檢測(cè)速度提高6 f·s?1。上述對(duì)比結(jié)果說(shuō)明文中算法實(shí)現(xiàn)了一定程度的性能優(yōu)化,有效避免了汽車變速箱油封座在加工生產(chǎn)中存在缺陷工件的漏檢。
表2 不同算法結(jié)果對(duì)比
針對(duì)傳統(tǒng)視覺(jué)缺陷檢測(cè)存在的問(wèn)題,設(shè)計(jì)了基于YOLOv3的改進(jìn)算法,在Darknet-53網(wǎng)絡(luò)中新增第4 種尺度,將輸入圖片進(jìn)行104×104劃分來(lái)提高對(duì)小目標(biāo)缺陷的敏感性,增強(qiáng)了檢測(cè)系統(tǒng)的精確性。通過(guò)運(yùn)算合并BN 層的參數(shù)到卷積層,加快了系統(tǒng)前向推移的速度。實(shí)驗(yàn)表明文中算法的精度和速率都得到了顯著提高,滿足了現(xiàn)場(chǎng)對(duì)工件的檢測(cè)需求。后續(xù)將在不損失檢測(cè)效率的前提下對(duì)模型繼續(xù)優(yōu)化,提升檢測(cè)精度。