朱安康,王嬈芬,張振宇
(上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院,上海 201620)
鋁型材在實(shí)際生產(chǎn)過程中由于各種因素的影響會在其表面產(chǎn)生瑕疵,因此必須要進(jìn)行瑕疵檢測。然而,由于鋁型材的表面部分紋路與瑕疵無法準(zhǔn)確區(qū)分,質(zhì)檢的效率難以把控,無法保證檢測強(qiáng)度和精度。目前的工業(yè)檢測主要采用機(jī)器學(xué)習(xí)方法[1,2],如神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)和聚類算法等,但這些方法不能自動提取缺陷特征,魯棒性不足?,F(xiàn)有的鋁型材表面缺陷檢測方法有肉眼檢查、機(jī)器視覺、深度學(xué)習(xí)、磁粉檢測、滲透檢測、渦流檢測[3]等。
近年來,隨著計(jì)算機(jī)性能的不斷提升,深度學(xué)習(xí)得以蓬勃發(fā)展[4]。2015年,Girshick R[5]提出了Fast RCNN,這是RCNN的改進(jìn)版本,采用ROI Pooling來共享運(yùn)算量大的部分,提升整個(gè)模型的工作效率。但是這個(gè)方法帶來的缺點(diǎn)是提取候選特征區(qū)域運(yùn)行時(shí)間較長,不利于實(shí)際運(yùn)用。針對這個(gè)問題,周強(qiáng)等人[6]在原有網(wǎng)絡(luò)基礎(chǔ)上再次加以改進(jìn),引入?yún)^(qū)域推薦網(wǎng)絡(luò)(region proposal network,RPN),提出了FasterRCNN模型并取得了很好的效果。卷積神經(jīng)網(wǎng)絡(luò)(CNN)提取特征相比于人工提取,效果更好,魯棒性更強(qiáng)。在人臉識別[7]、目標(biāo)檢測和三維重建領(lǐng)域中應(yīng)用廣泛,成果顯著。
鋁型材的缺陷在圖像中存在著尺度分布不均勻的問題,不同缺陷之間缺陷尺度也沒有明顯規(guī)律,若單獨(dú)使用FasterRCNN可能無法取得比較好的效果。因此本文對經(jīng)典的深度學(xué)習(xí)網(wǎng)絡(luò)FasterRCNN進(jìn)行改進(jìn),適當(dāng)改變主干網(wǎng)絡(luò)的結(jié)構(gòu)和超參數(shù),并且創(chuàng)新性地加入了可變形卷積(deformable Conv,DCN)以加強(qiáng)特征提取效果,進(jìn)而得到更理想的檢測結(jié)果。
數(shù)據(jù)集中包括正常類別和10種瑕疵類別(10種瑕疵類別分別是擦花(ch)、不導(dǎo)電(bdd)、角位漏底(jwld)、桔皮(jp)、漏底(ld)、噴流(pl)、漆泡(qp)、起坑(qk)、雜色(zs)和臟點(diǎn)(zd)),帶標(biāo)簽圖片4 356張,其中1 351張正常圖片,3 005張瑕疵圖片,瑕疵圖片標(biāo)簽帶有位置信息(瑕疵位置的矩形坐標(biāo))。在仿真中按照分層采樣的方法將整個(gè)數(shù)據(jù)集按7︰2︰1的比例劃分為訓(xùn)練集、測試集以及交叉驗(yàn)證集。
傳統(tǒng)的鋁型材表面缺陷檢測都是通過人工提取特征然后再進(jìn)行訓(xùn)練,而CNN[8]作為一種新的圖像檢測方法,通過卷積與池化等操作不斷加強(qiáng)對目標(biāo)缺陷的提取。本文設(shè)計(jì)的系統(tǒng)在傳統(tǒng)的卷積網(wǎng)絡(luò)上做了改進(jìn),通過加入DCN加強(qiáng)特征提取以提升檢測準(zhǔn)確率。本文整體系統(tǒng)設(shè)計(jì)流程圖如圖1所示?;谏疃葘W(xué)習(xí)的鋁材表面缺陷檢測系統(tǒng)主要分為兩個(gè)部分:1)進(jìn)行數(shù)據(jù)預(yù)處理;2)進(jìn)行目標(biāo)缺陷檢測。
圖1 系統(tǒng)設(shè)計(jì)框圖
目標(biāo)缺陷檢測也分為2大部分:1)使用標(biāo)準(zhǔn)數(shù)據(jù)集訓(xùn)練VGG—16網(wǎng)絡(luò)得到預(yù)訓(xùn)練網(wǎng)絡(luò)并保存訓(xùn)練權(quán)重;2)改變主干網(wǎng)絡(luò)的結(jié)構(gòu),適當(dāng)加深網(wǎng)絡(luò)的深度并加大通道數(shù),加入DCN來加強(qiáng)網(wǎng)絡(luò)對小缺陷的特征提取效果。遷移訓(xùn)練好的VGG—16網(wǎng)絡(luò)權(quán)重參數(shù)進(jìn)入改進(jìn)后的網(wǎng)絡(luò),使用改進(jìn)后的網(wǎng)絡(luò)模型對鋁型材表面缺陷數(shù)據(jù)集進(jìn)行訓(xùn)練,訓(xùn)練完成后得到改進(jìn)的網(wǎng)絡(luò)模型,從而完成對鋁型材表面缺陷的檢測任務(wù)。
由于使用的數(shù)據(jù)集為極度不平衡數(shù)據(jù)集,所以為了易于網(wǎng)絡(luò)訓(xùn)練要將數(shù)據(jù)集進(jìn)行數(shù)據(jù)增強(qiáng),主要包括:1)翻轉(zhuǎn):將缺陷圖片180°翻轉(zhuǎn);2)濾波:使用自適應(yīng)中值濾波[9]去除噪聲;3)裁剪:將多余的背景剔除,以更好地訓(xùn)練缺陷特征。預(yù)處理效果如圖2所示。
圖2 鋁型材缺陷圖像預(yù)處理
本文使用的深度學(xué)習(xí)網(wǎng)絡(luò)的主干網(wǎng)絡(luò)為ResNet101[10],相比于其他網(wǎng)絡(luò)模型有以下特點(diǎn):
1)卷積層使用更小的卷積核尺寸和間隔。ResNet101一共有15層,其中卷積層的通道數(shù)最大為23,相比于傳統(tǒng)的深度學(xué)習(xí)網(wǎng)絡(luò)如vgg—16更深,均采用的卷積核作為池化層,小卷積核相比于大卷積核具有更好的非線性[11]。
2)使用殘差網(wǎng)絡(luò)更有利于學(xué)習(xí)。ResNet101網(wǎng)絡(luò)是由L個(gè)殘差模塊堆疊而成,每一個(gè)殘差模塊的輸入和輸出表示為xl和xl+1,得到如下公式
yL=h(xL)+F(xL,wL)=wsxL+F(xL,wL)
(1)
xL+1=f(yL)
(2)
現(xiàn)假設(shè)xL+1=f(yL)=yL,ws=I,其中ws為單位矩陣,h(xL)=xL,綜上所述有
(3)
在網(wǎng)絡(luò)的反向傳播中設(shè)E為總誤差,則有
(4)
式中 ?E/?xl為損失函數(shù)到達(dá)L時(shí)的梯度,l為短路機(jī)制[12],能夠無損傳播梯度,另一個(gè)殘差則需要經(jīng)過一個(gè)帶權(quán)重的層,這樣做的好處是,不讓梯度直接傳遞,而是經(jīng)過中間變量,從而避免梯度消失。
在ResNet101的基礎(chǔ)上,對FasterRCNN的主干網(wǎng)絡(luò)進(jìn)行改進(jìn),改進(jìn)后的模型如圖3所示。原始的ResNet101網(wǎng)絡(luò)與改進(jìn)的網(wǎng)絡(luò)第一層均沒有變化,卷積核大小為7×7,卷積核數(shù)量64,步長為2。經(jīng)過第一層卷積后是一個(gè)卷積核大小為3×3的最大池化層,步長不變。隨后第二層卷積層也沒有發(fā)生變化。改進(jìn)方式為在原有的網(wǎng)絡(luò)基礎(chǔ)上加大了網(wǎng)絡(luò)的通道(channel)數(shù),在第三層卷積網(wǎng)絡(luò)增加了4條通道、第四層卷積網(wǎng)絡(luò)增加了13條通道,最后將第四層網(wǎng)絡(luò)移植到第五層并增加4條通道。這樣做的原因是,單純地加深網(wǎng)絡(luò)深度,效果反而會下降[13],所以需要在加深網(wǎng)絡(luò)的同時(shí)加大通道數(shù)。
圖3 改進(jìn)模型原理
CNN對形狀不規(guī)則的目標(biāo)識別存在缺陷,這種缺陷來自于它的網(wǎng)絡(luò)結(jié)構(gòu):卷積層對輸入特征圖的固定位置進(jìn)行采樣;池化層以固定的比例進(jìn)行池化;即使是ROI Pooling,也是將ROI分割到固定的Pooling層中去。這會導(dǎo)致在同一個(gè)卷積層中,所有激活單元的感受野是一樣的,但由于不同位置可能對應(yīng)著不同尺度的物體,所以,要想進(jìn)行缺陷的精確定位,需要對尺度或者感受野大小進(jìn)行自適應(yīng)調(diào)整。為了解決這一問題,DCN應(yīng)運(yùn)而生。這個(gè)模塊基于一個(gè)基準(zhǔn)網(wǎng)絡(luò)學(xué)習(xí)偏移(offset),使得卷積核在采樣點(diǎn)發(fā)生偏移,集中于目標(biāo)區(qū)域。
DCN的大體流程如下:首先輸入特征圖,通過滑動窗口(sliding window)[14]得到錨點(diǎn)(anchors),從而預(yù)測出感興趣區(qū)域。引入DCN后,將原來的卷積網(wǎng)絡(luò)分為兩部分,共享輸入特征圖,一部分用一個(gè)額外的卷積層來學(xué)習(xí)目標(biāo)偏移,輸出得到2個(gè)方向上的偏移,得到這個(gè)偏移后,使用經(jīng)過偏移后的窗口來代替原有的滑動窗口,之后的計(jì)算過程和常規(guī)卷積[15]一樣。
將ResNet101及其改進(jìn)的模型分別在標(biāo)準(zhǔn)數(shù)據(jù)集PASCAL VOC上進(jìn)行測試,訓(xùn)練過程中的損失函數(shù)[16]為
=-lg[(pi)2+(1-p′i)(1-pi)]
(5)
式中pi為Anchor預(yù)測為目標(biāo)的概率;p′i為GT標(biāo)簽;Lcls(pi,p′i)為兩個(gè)類別的對數(shù)損失;ti為一個(gè)向量,表示Anchor的預(yù)測偏移量;t′i為一個(gè)向量,表示Anchor實(shí)際的偏移量。模型改進(jìn)前后的訓(xùn)練損失(Loss)對比如圖4所示。圖4(a)為改進(jìn)前模型的網(wǎng)絡(luò)訓(xùn)練Loss圖,從圖中可以看出總體較為振蕩。圖4(b)為改進(jìn)后模型的網(wǎng)絡(luò)訓(xùn)練Loss圖,其中橫坐標(biāo)為epoches值,縱坐標(biāo)為Loss值。從圖中可以看出迭代到4 000次以后模型逐漸收斂,基本保持在0.5以下,說明改進(jìn)后的網(wǎng)絡(luò)效果較好。
圖4 改進(jìn)前后模型的訓(xùn)練Loss
mAP(mean average precision)即所有類別準(zhǔn)確率的平均值,主要反映了算法在10種不同的瑕疵中的檢測性能。計(jì)算公式如下
(6)
(7)
(8)
式中P為查準(zhǔn)率;R為召回率;TP為標(biāo)簽正樣本,預(yù)測為正樣本的樣本數(shù)量;FP為標(biāo)簽是負(fù)樣本,預(yù)測為正樣本的樣本數(shù)量;FN為標(biāo)簽是正樣本,預(yù)測為負(fù)樣本的樣本數(shù)量;Pn和Rn分別為P和R在第n個(gè)閾值下的值。
F1是目標(biāo)檢測的一個(gè)重要指標(biāo),表示的是準(zhǔn)確率和召回率的調(diào)和平均。計(jì)算公式如下
(9)
式中P為查準(zhǔn)率;R為召回率。
實(shí)驗(yàn)基于Linux操作系統(tǒng)Ubuntu16.04,在TensorFlow上完成訓(xùn)練,GPU型號為GTX1060。
實(shí)驗(yàn)中一共訓(xùn)練2個(gè)網(wǎng)絡(luò)模型:FasterRCNN、改進(jìn)的FasterRCNN。每個(gè)網(wǎng)絡(luò)訓(xùn)練10 000個(gè)epoches,總訓(xùn)練時(shí)長達(dá)到23 h。整個(gè)訓(xùn)練過程超參數(shù)設(shè)置如下:動量(momentum)0.9,權(quán)重衰減(decay)系數(shù)0.0005,初始學(xué)習(xí)率(lear-ning rate)0.1,batch size 256,最大迭代次數(shù)10 000,并在迭代次數(shù)為1 000,5 000,8 000次時(shí)改變學(xué)習(xí)率。
通過仿真得到的改進(jìn)網(wǎng)絡(luò)檢測結(jié)果如圖5、圖6所示。從圖5左邊可以看出,F(xiàn)asterRCNN在面對大目標(biāo)時(shí),識別率可觀,但在面對小目標(biāo)時(shí),會出現(xiàn)漏檢和錯(cuò)檢的情況;而從圖5右邊改進(jìn)網(wǎng)絡(luò)的檢測結(jié)果可以看出,有效地避免了這一情況,準(zhǔn)確度有所提升。從圖6中可以看出多瑕疵目標(biāo)的檢測情況,原網(wǎng)絡(luò)無法識別一張圖中的多個(gè)瑕疵(圖左),改進(jìn)后的網(wǎng)絡(luò)能準(zhǔn)確識別出一張圖中的多瑕疵圖(圖右),且置信度相對較高。
圖5 原始網(wǎng)絡(luò)和改進(jìn)網(wǎng)絡(luò)的單瑕疵檢測結(jié)果
圖6 原始網(wǎng)絡(luò)和改進(jìn)網(wǎng)絡(luò)的多瑕疵目標(biāo)的檢測結(jié)果
為了更好地證明本文方法的優(yōu)越性,將本文提出的改進(jìn)算法與其他目標(biāo)檢測算法進(jìn)行了對比,其結(jié)果見表1。表2為不同網(wǎng)絡(luò)模型在測試集上的檢測性能。
表1 不同網(wǎng)絡(luò)模型在測試集上單個(gè)類別的檢測性能 %
表2 不同網(wǎng)絡(luò)模型在測試集上的檢測性能
從表2中可以看出:使用傳統(tǒng)的網(wǎng)絡(luò)模型SSD的平均準(zhǔn)確率較低;傳統(tǒng)的目標(biāo)檢測網(wǎng)絡(luò)FasterRCNN的性能要優(yōu)于SSD,準(zhǔn)確率高出20.3 %,而改進(jìn)的FasterRCNN模型明顯要優(yōu)于現(xiàn)有的主流目標(biāo)檢測模型,準(zhǔn)確率相對于FasterRCNN高出6.5 %。在目標(biāo)檢測準(zhǔn)確率的一個(gè)重要指標(biāo)F1估計(jì)值方面,改進(jìn)的模型為92.3 %,相對于FasterRCNN高出6.4 %,說明該檢測模型在取得較高的檢測準(zhǔn)確率的同時(shí)召回率也很高,魯棒性較強(qiáng)。但是,改進(jìn)后的網(wǎng)絡(luò)模型使用DCN獲取了額外的淺層特征,導(dǎo)致其比FasterRCNN的檢測時(shí)間長0.055 s,但明顯短于SSD,實(shí)用性更佳。
本文以FasterRCNN為基礎(chǔ),設(shè)計(jì)了一種基于深度學(xué)習(xí)的鋁型材表面缺陷檢測系統(tǒng)。由于傳統(tǒng)的深度學(xué)習(xí)算法固有缺陷使得在鋁型材表面缺陷檢測上識別效果較差,因此,使用卷積網(wǎng)絡(luò)自動提取特征進(jìn)行檢測,通過使用ResNet101模型進(jìn)行遷移學(xué)習(xí),進(jìn)一步提高了鋁型材表面缺陷檢測的準(zhǔn)確率,并在此基礎(chǔ)上改變網(wǎng)絡(luò)結(jié)構(gòu),并針對小目標(biāo)特征提取困難的問題加入了DCN,進(jìn)一步提高了識別率。最后,在深度學(xué)習(xí)平臺TensorFlow上分別構(gòu)建FasterRCNN和FasterRCNN改進(jìn)網(wǎng)絡(luò),利用天池大賽官方標(biāo)注好的的數(shù)據(jù)集分別對兩個(gè)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,最后得到改進(jìn)后的網(wǎng)絡(luò)對缺陷的檢測平均準(zhǔn)確率(mAP)為90.1 %,比單獨(dú)使用FasterRCNN提升了6.5個(gè)百分點(diǎn)。
下一步的研究計(jì)劃是使用其他有效的特征提取方法與特征金字塔相融合,提升網(wǎng)絡(luò)模型的特征提取能力以得到更好的檢測效果。