彭露露,朱媛媛,金文倩,王笑梅
(上海師范大學(xué)信息與機(jī)電工程學(xué)院,上海 200234)
現(xiàn)代工業(yè)對(duì)汽車生產(chǎn)安全的要求逐漸提高,使汽車鋼鐵零件表面缺陷檢測(cè)成為研究熱點(diǎn)。開展汽車鋼鐵零件表面缺陷自動(dòng)檢測(cè)研究對(duì)現(xiàn)代汽車生產(chǎn)具有重要意義。能否發(fā)現(xiàn)和定位微小缺陷,降低漏檢率,提高檢測(cè)精度是研究重點(diǎn)。
近年來,深度學(xué)習(xí)技術(shù)日趨成熟,顯示出強(qiáng)大的圖像處理能力,尤其在目標(biāo)檢測(cè)算法[1]中取得了較大進(jìn)展?;谏疃葘W(xué)習(xí)的目標(biāo)檢測(cè)算法依靠大數(shù)據(jù)獲得比傳統(tǒng)方法更好的檢測(cè)結(jié)果,具有更強(qiáng)的魯棒性?,F(xiàn)有的目標(biāo)檢測(cè)方法可分為基于回歸的檢測(cè)、基于區(qū)域建議的檢測(cè)、基于無錨的目標(biāo)檢測(cè)這3類?;诨貧w的目標(biāo)檢測(cè)稱為單階段目標(biāo)檢測(cè),將識(shí)別問題當(dāng)作一個(gè)回歸問題,一步到位直接預(yù)測(cè)目標(biāo)位置和類別,代表性算法有YOLO[2-5]、SSD[6]等。基于區(qū)域建議的檢測(cè)又稱為雙階段目標(biāo)檢測(cè),首先使用區(qū)域推薦產(chǎn)生候選目標(biāo)區(qū)域,然后使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分類、回歸處理,代表性算法有R-CNN[7]、Fast R-CNN[8]、Faster R-CNN[9]、Mask R-CNN[10]等。基于無錨目標(biāo)檢測(cè)的算法[11-14]不再使用先驗(yàn)框,而是把目標(biāo)檢測(cè)問題當(dāng)做關(guān)鍵點(diǎn)檢測(cè)問題來解決,主要包括CornerNet[15]和CenterNet[16],前者通過檢測(cè)目標(biāo)框的左上角和右下角2個(gè)關(guān)鍵點(diǎn)得到預(yù)測(cè)框,后者通過對(duì)物體的中心點(diǎn)檢測(cè)得到目標(biāo)框。
基于卷積神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的目標(biāo)檢測(cè)方法由于其強(qiáng)大的代表性和學(xué)習(xí)能力,逐漸取代基于機(jī)器視覺的傳統(tǒng)缺陷識(shí)別方法[17-19],受到研究人員和工業(yè)界的關(guān)注,被應(yīng)用到工業(yè)缺陷檢測(cè)中。Deng等[20]建立了鐵材料極化圖像裂紋數(shù)據(jù)集,并采用Cascade-YOLOv4網(wǎng)絡(luò)模型進(jìn)行鋼鐵表面裂紋檢測(cè),提高了檢測(cè)準(zhǔn)確率和檢測(cè)速度,但該算法是用來檢測(cè)極化圖像,總體適用性不好。Shen等[21]針對(duì)工業(yè)鋁缺陷檢測(cè)中缺陷樣本稀疏問題,基于Faster R-CNN,設(shè)計(jì)了一種多任務(wù)深度網(wǎng)絡(luò)模型,解決了鋁缺陷檢測(cè)樣品少而導(dǎo)致檢測(cè)精度低的問題,但檢測(cè)速度不滿足工業(yè)實(shí)時(shí)性檢測(cè)的要求。Xu等[22]提出了一種基于YOLO模型的改進(jìn)金屬表面缺陷檢測(cè)技術(shù),但在天池?cái)?shù)據(jù)集上的平均檢測(cè)精度為75.1%,精度較低無法執(zhí)行小目標(biāo)檢測(cè)任務(wù)。趙振兵等[23]提出了一種基于改進(jìn)Cascade R-CNN的典型金具及其部分缺陷檢測(cè)方法,在一定程度上解決了金具檢測(cè)精確度低的問題,但檢測(cè)速度較低,F(xiàn)PS最高僅為8.3。
綜上,雙階段目標(biāo)檢測(cè)算法精度較高,但速度較低;單階段檢測(cè)算法速度較高,但精度較低。為了滿足汽車鋼鐵零件缺陷檢測(cè)工業(yè)生產(chǎn)實(shí)時(shí)性檢測(cè)和小目標(biāo)檢測(cè)要求,本文對(duì)比了目前主流的目標(biāo)檢測(cè)算法,針對(duì)單階段的YOLOv4算法檢測(cè)精度低的問題,作出以下改進(jìn),提出了SE-R-YOLOv4汽車鋼鐵零件表面缺陷檢測(cè)算法。
1)通過加權(quán)K-means算法[24]對(duì)鋼鐵零件表面缺陷數(shù)據(jù)集進(jìn)行聚類,得到與樣本更加匹配的anchor預(yù)選框,解決缺陷樣本不平衡問題。
2)將SENet(Squeeze-and-Excitation Networks)中的SE模塊[25]引入骨干網(wǎng)絡(luò)中的殘差單元,通過特征重標(biāo)定使模型更加關(guān)注信息量大的通道特征,抑制不重要的通道特征,從而提高準(zhǔn)確度。
3)在76×76特征圖后連接RFB-s模塊[26],增強(qiáng)對(duì)小目標(biāo)特征提取的能力。
通過自建的汽車鋼鐵零件表面缺陷數(shù)據(jù)集分別對(duì)原始的YOLOv4算法和改進(jìn)的SE-R-YOLOv4算法進(jìn)行訓(xùn)練和測(cè)試,實(shí)驗(yàn)結(jié)果表明,在保證速度滿足實(shí)時(shí)檢測(cè)的基礎(chǔ)上,改進(jìn)的SE-R-YOLOv4算法精度較高,并且mAP50相較于原始YOLOv4算法提高4.3個(gè)百分點(diǎn),驗(yàn)證了該算法的有效性,說明在實(shí)際應(yīng)用中,能滿足工業(yè)生產(chǎn)的精度要求。用COCO數(shù)據(jù)集對(duì)改進(jìn)后的算法進(jìn)行訓(xùn)練和測(cè)試,SE-R-YOLOv4算法在IOU閾值為0.5時(shí)的平均準(zhǔn)確率均值mAP50達(dá)到65.9%,比原始YOLOv4高出0.2個(gè)百分點(diǎn),驗(yàn)證了改進(jìn)算法的可遷移性和泛化性。
錨框的選擇影響模型的收斂性和檢測(cè)精度,原始YOLOv4中的預(yù)選框是在COCO數(shù)據(jù)集上聚類得到的。而汽車鋼鐵零件表面缺陷圖像為灰度圖,相比其它數(shù)據(jù)集信息量更少;同時(shí)缺陷的邊界沒有統(tǒng)一的劃分標(biāo)準(zhǔn),大小不一,并且多為微小缺陷,增加了位置信息的檢測(cè)難度。針對(duì)上述樣本不平衡和小目標(biāo)問題,需要根據(jù)標(biāo)注的缺陷大小重新選擇錨框。本文在K-means算法的基礎(chǔ)上提出了加權(quán)K-means算法[23],即引入權(quán)重系數(shù),為每一個(gè)樣本設(shè)置權(quán)重來解決樣本缺陷尺寸不平衡影響聚類結(jié)果的問題。采用聚類中心與樣本之間的最大交并比來評(píng)價(jià)聚類結(jié)果,步驟如下:
1)隨機(jī)選取K個(gè)聚類中心。
2)遍歷所有樣本與每個(gè)中心點(diǎn)的距離,樣本屬于與其最近的聚類中心所在的集合,即:
(1)
3)求出每個(gè)樣本與其對(duì)應(yīng)聚類中心之間的權(quán)重,構(gòu)成權(quán)重矩陣,即:
(2)
(3)
4)更新聚類中心,即為各聚類集合中所有樣本各個(gè)維度的平均值:
(4)
5)重復(fù)步驟2~步驟4,直到聚類中心位置不再改變。
YOLOv4網(wǎng)絡(luò)使用特征金字塔輸出3張不同比例的檢測(cè)圖,檢測(cè)不同尺寸的目標(biāo),從而實(shí)現(xiàn)端到端目標(biāo)檢測(cè)。但它是一種基于回歸的檢測(cè)方法,相比兩階段算法,對(duì)小目標(biāo)的檢測(cè)精度不高。而汽車行業(yè)對(duì)安全性要求高,汽車零件表面缺陷檢測(cè)要達(dá)到較高精度,要求檢測(cè)到微小缺陷。為了使更多的小目標(biāo)信息得以更充分的利用,本文調(diào)整了網(wǎng)絡(luò)結(jié)構(gòu),進(jìn)行了如下改進(jìn):
由于SENet中的SE模塊和特征增強(qiáng)的RFB模塊超輕量的特性,能與深度神經(jīng)網(wǎng)絡(luò)結(jié)合,本文將SE模塊和RFB模塊引入到Y(jié)OLOv4網(wǎng)絡(luò)中,在不影響模型的實(shí)時(shí)檢測(cè)的情況下增強(qiáng)網(wǎng)絡(luò)提取全局信息和小目標(biāo)信息的能力,從而提升檢測(cè)精度,滿足汽車鋼鐵零件表面缺陷檢測(cè)高精度和實(shí)時(shí)性的要求。
1.2.1 基于特征重標(biāo)定的SENet
網(wǎng)絡(luò)注意力機(jī)制是卷積神經(jīng)網(wǎng)絡(luò)中十分有效的組件,可用于增加網(wǎng)絡(luò)的表達(dá)能力。Hu等[25]提出了SENet,通過特征重標(biāo)定策略,對(duì)輸入的特征圖的每個(gè)通道賦予不同的權(quán)重,通過學(xué)習(xí)獲得不同通道的重要程度,增大有效通道的權(quán)重,減小無效或效果小通道的權(quán)重,提取更加重要的信息,同時(shí)不會(huì)對(duì)模型的計(jì)算和存儲(chǔ)帶來更大的開銷,從而提高網(wǎng)絡(luò)的性能。具體操作為:
1)Squeeze,即通過全局平均池化壓縮特征圖。不改變特征圖通道個(gè)數(shù),只將特征圖的每個(gè)二維通道變成一維實(shí)數(shù),這個(gè)實(shí)數(shù)在某種程度上具有全局的感受野。若輸入尺寸為W×H×C的特征圖,則輸出特征圖尺寸為1×1×C。計(jì)算公式為:
(5)
其中,uc表示輸入特征圖U的第c個(gè)通道,zc為Squeeze操作得到的結(jié)果,即第c個(gè)通道壓縮后得到的實(shí)數(shù)。
2)Excitation,即給每個(gè)通道生成權(quán)重構(gòu)成權(quán)重矩陣,然后使用2個(gè)全連接層來學(xué)習(xí)參數(shù)。第1個(gè)全連接層將通道個(gè)數(shù)降低為C/16,激活函數(shù)為ReLU;第2個(gè)全連接層將通道個(gè)數(shù)恢復(fù)為輸入通道個(gè)數(shù),激活函數(shù)使用sigmoid()進(jìn)行歸一化處理,最終得到一個(gè)0~1之間的標(biāo)量,即為通道的權(quán)重。其公式為:
s=Fex(z,W)=σ(g(z,W))=σ(W2·δ(W1·z))
(6)
其中,z為Squeeze操作得到的特征圖,首先用W1乘以z,即為第1個(gè)全連接層操作,為了減少通道個(gè)數(shù)來降低計(jì)算量,這里W1的維度是(C/16)×C。又因?yàn)閆C的維度是1×1×C,所以第1個(gè)全連接層的結(jié)果就是1×1×(C/16),隨后輸入ReLU層,輸出維度不變。接著將輸出結(jié)果與W2相乘進(jìn)行第2個(gè)全連接層操作,W2的維度是C×(C/16),輸出尺寸為1×1×C;最后,經(jīng)Sigmoid函數(shù)激活,得到s,即為所求的權(quán)重矩陣。
3)Reweight,即通過1個(gè)Scale操作,將得到的權(quán)重與原始的特征圖在每一個(gè)通道對(duì)應(yīng)相乘,完成在通道維度上的對(duì)原始特征的重標(biāo)定。其公式為:
(7)
其中,uc為原始特征圖中第c個(gè)通道的二維矩陣,Sc為第c個(gè)通道的權(quán)重值,因此Fscale操作就是把uc矩陣中的每個(gè)值都乘以Sc。
SENet結(jié)構(gòu)簡(jiǎn)單,不會(huì)帶來很大的計(jì)算和內(nèi)存開銷,因此容易被嵌入到其它卷積神經(jīng)網(wǎng)絡(luò)中。為了進(jìn)一步增強(qiáng)網(wǎng)絡(luò)提取鋼鐵零件表面缺陷特征的能力從而提升檢測(cè)的精度,本文將SE模塊嵌入到Y(jié)OLOv4主干網(wǎng)絡(luò)的ResUnit中,只改變單個(gè)殘差單元的結(jié)構(gòu),不改變殘差模塊中ResUnit的連接方式,形成新的SE-ResUnit模塊,如圖1所示,增加網(wǎng)絡(luò)感受野,對(duì)特征進(jìn)行自適應(yīng)細(xì)化處理,提高網(wǎng)絡(luò)性能。
圖1 SE-ResUnit模塊
1.2.2 增強(qiáng)特征提取的RFB-s模塊
為了增強(qiáng)輕量級(jí)CNN網(wǎng)絡(luò)的深層特征,創(chuàng)造快而精準(zhǔn)的檢測(cè)器,Liu等[26]受人類視覺系統(tǒng)RF結(jié)構(gòu)的啟發(fā),通過模擬人類視覺的感受野加強(qiáng)網(wǎng)絡(luò)的特征提取能力而提出了RFB模塊。本文中涉及小目標(biāo)檢測(cè)問題,小目標(biāo)在圖片中所占像素較小,RFB模塊中的5×5卷積對(duì)小目標(biāo)來說顯得太大,RFB-s模塊用2個(gè)3×3的連續(xù)卷積層代替5×5卷積層,可以加強(qiáng)對(duì)小目標(biāo)信息的特征提取能力;此外,RFB-s模塊用1×3和3×1卷積層代替3×3卷積層,減少了參數(shù)從而減小了計(jì)算量。
RFB-s是一個(gè)多分支卷積模塊,包含多分支卷積層和膨脹卷積層2個(gè)部分。多分支卷積層用不同尺寸的卷積核模擬不同大小的人眼感受野。膨脹卷積層在原始卷積核各值之間填充0,在保持參數(shù)數(shù)量不變的同時(shí)擴(kuò)大感受野。填充0的個(gè)數(shù)稱為卷積核的擴(kuò)張率,本質(zhì)是模擬人眼感受野與視網(wǎng)膜折射率之間的關(guān)系。RFB-s網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 RFB-s模塊
首先,在每個(gè)分支中用大小為1×1,步長(zhǎng)為2的卷積核構(gòu)成瓶頸結(jié)構(gòu),以減少特征映射中的通道數(shù)量和進(jìn)行跨通道的信息融合。其次,連接n×n卷積。RFB-s模塊中為了減少參數(shù)和使用更深的非線性層,用2個(gè)堆疊的3×3卷積代替RFB模塊中的5×5卷積,用堆疊的1×3加3×1卷積替換原始的3×3卷積。隨后將各分支的輸出contact連接后,與一個(gè)不帶非線性激活的1×1卷積直連層進(jìn)行Add操作,形成新的特征。
RFB-s模塊在保持參數(shù)數(shù)量不變的同時(shí),在更大的區(qū)域提取特征,捕獲更多上下文信息,生成更高分辨率的特征圖,增強(qiáng)神經(jīng)網(wǎng)絡(luò)的特征提取能力。并且RFB-s使用了較多的小卷積核,更適合應(yīng)用于較淺的層關(guān)注局部信息。因此,為了利用淺層特征圖豐富的小目標(biāo)信息,本文在76×76特征圖后連接一個(gè)RFB-s模塊。
1.2.3 SE-R-YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)
改進(jìn)后的網(wǎng)絡(luò)名為SE-R-YOLOv4,如圖3所示,由輸入、主干、頸部與預(yù)測(cè)4個(gè)部分組成。主干網(wǎng)絡(luò)提取圖像的特征圖,并將特征圖輸入到Neck網(wǎng)絡(luò)層進(jìn)行特征融合,融合后的特征圖傳遞到Head端,生成邊界框并預(yù)測(cè)類別。主干網(wǎng)絡(luò)可以分為5個(gè)CSP_SEResN模塊,每個(gè)模塊包含3個(gè)部分:一個(gè)大小為3×3,步長(zhǎng)為2的卷積核,N個(gè)SE-ResUnit順序連接組成的殘差模塊,1個(gè)CSP結(jié)構(gòu)。其中步長(zhǎng)為2的卷積核起到下采樣的作用。Neck網(wǎng)絡(luò)添加了SPP模塊、RFB-s模塊、FPN+PAN2模塊。SPP模塊通過融合4種形式的最大池化層來獲得魯棒的特征表示,擴(kuò)大主干特征的感受野,分離最重要的上下文特征。RFB-s模塊用來增強(qiáng)小目標(biāo)特征提取能力。FPN+PAN2模塊對(duì)輸入的不同尺寸的特征圖進(jìn)行合理的優(yōu)化,構(gòu)成特征金字塔,提高網(wǎng)絡(luò)性能。Head最終輸出含有網(wǎng)格個(gè)數(shù)為76×76、38×38、19×19的3種尺度的特征圖,分別預(yù)測(cè)小、中、大目標(biāo)。
圖3 SE-R-YOLOV4網(wǎng)絡(luò)模型
1.3.1 輸出特征向量
對(duì)于Head部分,本文采用一種基于先驗(yàn)框的預(yù)測(cè)辦法,本質(zhì)是一個(gè)分類回歸網(wǎng)絡(luò)。將輸出特征圖分別分割為76×76、38×38、19×19的網(wǎng)格,每個(gè)網(wǎng)格預(yù)測(cè)3個(gè)邊界框,輸出特征向量為以下3個(gè)部分:
1)邊界框。
包含邊界框的中心點(diǎn)坐標(biāo)和邊界框的寬、高信息,如圖4所示,其計(jì)算方式如下:
圖4 預(yù)測(cè)邊界框
bx=σ(tx)+Cx,by=σ(ty)+Cy
(8)
bw=pwetw,bh=pheth
(9)
σ(x)=1/(1+e-x)
(10)
其中,(Cx,Cy)為目標(biāo)中心點(diǎn)所在的網(wǎng)格單元格左上角的坐標(biāo),(bx,by)為實(shí)際預(yù)測(cè)框的中心點(diǎn)坐標(biāo),(σ(tx),σ(ty))為卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)的偏移值。pw、ph分別為anchor先驗(yàn)框的寬度和高度,bw、bh分別為實(shí)際預(yù)測(cè)框的寬度和高度,(tw,th)是神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)值。在獲取的特征圖中,每個(gè)單元格的寬度和高度為1,所以(Cx,Cy)=(1,1),使用Sigmoid函數(shù)將預(yù)測(cè)偏移量限制在0~1之間。
2)每個(gè)邊界框的置信度Confidence。
置信度反映了邊界框含有目標(biāo)的可能性和邊界框預(yù)測(cè)的準(zhǔn)確度2個(gè)方面信息。計(jì)算公式為:
(11)
3)每個(gè)網(wǎng)格預(yù)測(cè)的類別。
對(duì)于本文的單分類問題,輸出特征向量維度為3×(4+1)+1=16維,因此得到76×76×16、38×38×16、19×19×16這3個(gè)特征向量。
1.3.2 損失函數(shù)
將輸出特征向量送入回歸網(wǎng)絡(luò)對(duì)目標(biāo)位置和種類進(jìn)行回歸訓(xùn)練,用損失函數(shù)來計(jì)算訓(xùn)練過程中產(chǎn)生的損失量,通過反向傳播,不斷更新權(quán)值來最小化損失函數(shù)。本文采用的損失函數(shù)包含邊界框損失、置信度損失、分類損失3個(gè)部分。其中,置信度損失和分類損失仍然使用交叉熵?fù)p失。邊界框損失采用CIOU損失函數(shù),將重疊面積、中心點(diǎn)距離、長(zhǎng)寬比這3個(gè)重要幾何因素考慮進(jìn)去,相比均方誤差損失函數(shù),邊界框回歸速度更快,精確度更高。
置信度損失表示預(yù)測(cè)框?qū)Ρ粰z測(cè)對(duì)象的置信度,計(jì)算公式為:
(12)
邊界框損失是指真實(shí)框與預(yù)測(cè)框之間的誤差,計(jì)算公式為:
(13)
其中,C和D分別為真實(shí)框和預(yù)測(cè)框,IOU為目標(biāo)框和真實(shí)框的交并比,IOU是衡量預(yù)測(cè)框準(zhǔn)確性的指標(biāo)。IOU越大,預(yù)測(cè)框的位置越準(zhǔn)確。d()是歐氏距離,l為預(yù)測(cè)框與真實(shí)框的最小外接框的對(duì)角線距離。c、w和h分別表示預(yù)測(cè)框的中心坐標(biāo)、寬度和高度。cgt、wgt和hgt分別表示真實(shí)框的中心坐標(biāo)、寬度和高度。
分類損失表達(dá)式為:
(14)
因此,總的損失函數(shù)為:
L=Lciou+Lconf+Lcls
(15)
在實(shí)際工業(yè)生產(chǎn)中,由于生產(chǎn)設(shè)備及生產(chǎn)工藝的提升,大量的缺陷樣本往往難以獲取,而深度學(xué)習(xí)模型的訓(xùn)練需要大量數(shù)據(jù)做支撐,為了提高缺陷檢測(cè)的性能,以防止少量樣本訓(xùn)練造成的過擬合現(xiàn)象,影響模型的泛化能力,本文采用4種方式(見表1)對(duì)缺陷數(shù)據(jù)進(jìn)行擴(kuò)增,將原始的400張缺陷圖像擴(kuò)充至7倍并且按4∶1隨機(jī)分為訓(xùn)練集和測(cè)試集,然后利用LabelImg軟件進(jìn)行標(biāo)注,記錄所有缺陷的位置、類別信息,作為訓(xùn)練模型的輸入。
表1 數(shù)據(jù)擴(kuò)充方法
實(shí)驗(yàn)計(jì)算機(jī)設(shè)備配置:Ubuntu18.04操作系統(tǒng),Intel i7-7700 CPU, NVIDIA GTX 1080Ti GPU,軟件環(huán)境為Pytorch框架,Python版本3.6.10,Pycharm2020。
實(shí)驗(yàn)圖像尺寸為608×608,采用批次迭代訓(xùn)練法,批次大小設(shè)置為16,迭代2000次,學(xué)習(xí)率設(shè)置為0.001,學(xué)習(xí)率衰減為0.1,使用SGD隨機(jī)梯度下降優(yōu)化算法,momentum動(dòng)量值設(shè)為0.9。此后,將整個(gè)數(shù)據(jù)集遍歷2000次,所得到的表面缺陷檢測(cè)網(wǎng)絡(luò)訓(xùn)練損失函數(shù)曲線如圖5所示。
圖5 損失函數(shù)收斂曲線
圖5中橫坐標(biāo)表示迭代次數(shù),縱坐標(biāo)表示Loss損失值。其中,Box、Objectness、Classification分別為為邊界框GIoU Loss均值、置信度Loss均值、分類Loss均值。val Box、val Objectness、val Classification分別為驗(yàn)證集邊界框GIou Loss均值、驗(yàn)證集置信度Loss均值、驗(yàn)證集分類Loss均值。因?yàn)楸疚淖越〝?shù)據(jù)集中只有defect一個(gè)類別,故在對(duì)自建數(shù)據(jù)集訓(xùn)練時(shí)類別損失值為0。由測(cè)試結(jié)果可以看出,無論是訓(xùn)練集還是驗(yàn)證集,損失值都隨著迭代次數(shù)的增加不斷收斂,在迭代2000次后,模型各類損失值都趨于穩(wěn)定。其中訓(xùn)練集的損失值在1000次之前下降快速,在1000~2000次區(qū)間下降趨勢(shì)緩慢,在2000次以后損失值收斂,達(dá)到0.005以下,驗(yàn)證集的損失值相對(duì)訓(xùn)練集收斂更快,損失值達(dá)到0.04。
本文選用目標(biāo)檢測(cè)算法常用的FPS(Frame Per Second)、精度(Precision)、平均準(zhǔn)確率AP,平均準(zhǔn)確率均值mAP作為試驗(yàn)評(píng)價(jià)指標(biāo)。
FPS用來評(píng)估算法的檢測(cè)速度。它表示每秒可以處理的幀數(shù)。模型在不同的硬件配置下有不同的處理速度。因此,本文在比較檢測(cè)速度時(shí)使用相同的硬件環(huán)境。分類結(jié)果混淆矩陣表示方法如表2所示。
表2 混淆矩陣
表2中,TP表示正確預(yù)測(cè)的正樣本數(shù),F(xiàn)P表示錯(cuò)誤預(yù)測(cè)的負(fù)樣本數(shù),F(xiàn)N為錯(cuò)誤預(yù)測(cè)的正樣本數(shù),TN為正確預(yù)測(cè)的負(fù)樣本數(shù)。精度(Precision)是指正確預(yù)測(cè)為正的占全部預(yù)測(cè)為正的比例;召回率(Recall)指正確預(yù)測(cè)為正的占全部實(shí)際為正的比例;召回率的反面是漏檢率,其值為1-召回率,表示未被檢測(cè)到的正樣本。精度和召回率的計(jì)算公式如下:
(16)
(17)
平均準(zhǔn)確率AP是精度的平均值,表示模型在某一類別中的準(zhǔn)確率,AP值為以召回率為x軸,以精度為y軸的P-R曲線下的面積;mAP表示所有類別的平均準(zhǔn)確率,可以衡量網(wǎng)絡(luò)模型在所有類別中的性能,N為類別個(gè)數(shù)。計(jì)算公式如下:
(18)
(19)
本文使用自建的汽車鋼鐵零件表面缺陷數(shù)據(jù)集分別對(duì)原始的YOLOv4算法和改進(jìn)的SE-R-YOLOv4算法進(jìn)行訓(xùn)練和測(cè)試。首先分別使用K-means算法和加權(quán)K-means算法對(duì)數(shù)據(jù)集聚類,均得到9個(gè)anchor預(yù)選框,分配給3個(gè)不同尺度的特征圖。為了節(jié)約時(shí)間,先使用原始YOLOv4在COCO數(shù)據(jù)集上的預(yù)訓(xùn)練模型,再在自己的數(shù)據(jù)集上訓(xùn)練得到新的模型。利用新的模型對(duì)汽車鋼鐵零件表面缺陷數(shù)據(jù)集中的測(cè)試集進(jìn)行測(cè)試,得到實(shí)驗(yàn)結(jié)果。
圖6為SE-R-YOLOv4模型和原始YOLOv4模型的汽車鋼鐵零件表面缺陷檢測(cè)P-R曲線圖,其中縱坐標(biāo)表示精度,橫坐標(biāo)表示召回率,平均準(zhǔn)確率AP值為P-R曲線下的面積。此數(shù)據(jù)集中只有defect單一類別,故mAP值與AP值相等??梢钥闯觯琒E-R-YOLOv4網(wǎng)絡(luò)模型mAP較高,達(dá)到90.5%,比原始的YOLOv4提高了4.3個(gè)百分點(diǎn)。
圖6 汽車鋼鐵零件表面缺陷檢測(cè)P-R曲線
圖7(a)和圖7(b)分別為SE-R-YOLOv4模型和原始YOLOv4模型的混淆矩陣圖,從中可以看出,SE-R-YOLOv4模型的檢測(cè)精度Precision為0.93,比原始YOLOv4提高了0.05;漏檢率為0.07,比原始YOLOv4降低了0.05,說明SE-R-YOLOv4模型能檢測(cè)出更多缺陷,對(duì)小目標(biāo)缺陷的檢測(cè)能力更好。
圖7 混淆矩陣圖
為了進(jìn)一步驗(yàn)證改進(jìn)后的SE-R-YOLOv4算法的精度以及對(duì)小目標(biāo)和多目標(biāo)的檢測(cè)效果,將原始YOLOv4、Faster R-CNN、SSD作為橫向?qū)Ρ人惴?,與改進(jìn)后的SE-R-YOLOv4網(wǎng)絡(luò)模型進(jìn)行對(duì)比實(shí)驗(yàn),檢測(cè)結(jié)果如表3所示,部分檢測(cè)圖像如圖8和圖9所示。
圖8 小目標(biāo)檢測(cè)示例
圖9 多目標(biāo)檢測(cè)示例
從表3中的數(shù)據(jù)可以看到,SE-R-YOLOv4模型檢測(cè)準(zhǔn)確率最高,其檢測(cè)精度達(dá)到了90.5%,比原始的YOLOv4提高了4.3個(gè)百分點(diǎn),比雙階段目標(biāo)檢測(cè)算法Faster R-CNN高出7.9個(gè)百分點(diǎn)。由于增加了注意力模塊和特征增強(qiáng)模塊,其中,SE模塊嵌入主干網(wǎng)絡(luò)的殘差單元ResUnit中,形成新的SE-ResUnit模塊。而主干網(wǎng)絡(luò)中有5個(gè)CSP_SEResN模塊,每個(gè)模塊中分別包含1、2、8、8、4個(gè)SE-ResUnit模塊,故整個(gè)主干網(wǎng)絡(luò)中共嵌入1+2+8+8+4=23個(gè)SE結(jié)構(gòu),模型體積略微增大,導(dǎo)致FPS從56.4下降至53.1,但仍高于單階段目標(biāo)檢測(cè)算法SSD,滿足實(shí)時(shí)檢測(cè)的要求。本文提出的SE-R-YOLOv4算法模型在檢測(cè)精度上明顯優(yōu)于YOLOv4與Faster R-CNN,且速度仍滿足生產(chǎn)實(shí)時(shí)性要求,這表明本文提出的方法更適合應(yīng)用在實(shí)際生產(chǎn)過程中。
表3 不同算法在自建數(shù)據(jù)集上的檢測(cè)結(jié)果
圖8中SE-R-YOLOv4算法的預(yù)測(cè)邊界框更加貼合缺陷的形狀,置信度更高,說明微小缺陷檢測(cè)精度較高,在小目標(biāo)檢測(cè)方面表現(xiàn)良好。圖9中SE-R-YOLOv4算法檢測(cè)出了所有缺陷,并且預(yù)測(cè)邊界框置信度在0.9以上,而其余3種算法均存在漏檢情況,驗(yàn)證了SE-R-YOLOv4算法對(duì)多目標(biāo)圖像的檢測(cè)效果。
為了驗(yàn)證改進(jìn)SE-R-YOLOv4算法在其他數(shù)據(jù)集上的有效性,本文在公開的COCO數(shù)據(jù)集上對(duì)SE-R-YOLOv4模型進(jìn)行訓(xùn)練與測(cè)試,并與YOLOv4的實(shí)驗(yàn)結(jié)果進(jìn)行對(duì)比分析。由于COCO數(shù)據(jù)集中含有多個(gè)類別,mAP是所有目標(biāo)類別檢測(cè)精度的均值,所以COCO數(shù)據(jù)集檢測(cè)任務(wù)采用IOU閾值設(shè)置為0.5的mAP值進(jìn)行評(píng)價(jià),結(jié)果如表4所示。由表4可知,改進(jìn)的YOLOv4算法與原始YOLOv4算法相比,精度提高了0.2個(gè)百分點(diǎn),速度略有下降,F(xiàn)PS值從23下降到20,但仍滿足實(shí)時(shí)監(jiān)測(cè)。說明SE-R-YOLOv4算法能夠執(zhí)行多分類任務(wù),且分類精度高于原始YOLOv4算法,驗(yàn)證了該算法的可遷移性。
表4 COCO數(shù)據(jù)集測(cè)試結(jié)果
汽車鋼鐵零件表面缺陷檢測(cè)技術(shù)對(duì)于提高汽車制造行業(yè)的安全性和精密性具有重要意義。為了提高汽車鋼鐵零件表面缺陷檢測(cè)的精度,本文提出了改進(jìn)的SE-R-YOLOv4目標(biāo)檢測(cè)模型。首先采用加權(quán)K-means算法,重新確定更符合表面缺陷數(shù)據(jù)集的預(yù)選框。然后借鑒SENet思想,在殘差單元中連接SE模塊,通過對(duì)特征圖通道加權(quán),使神經(jīng)網(wǎng)絡(luò)更加關(guān)注包含重要信息的目標(biāo)區(qū)域,抑制無關(guān)信息,提高檢測(cè)精度。為了解決網(wǎng)絡(luò)層數(shù)過多導(dǎo)致小目標(biāo)信息丟失的問題,在包含更多小目標(biāo)信息的76×76特征圖后連接RFB特征增強(qiáng)模塊,保證小目標(biāo)識(shí)別的準(zhǔn)確度。實(shí)驗(yàn)結(jié)果表明,改進(jìn)的YOLOv4模型在鋼鐵汽車零件表面缺陷檢測(cè)任務(wù)中比原始YOLOv4精度更高,速度也滿足實(shí)時(shí)檢測(cè)的要求,具有更好的檢測(cè)效果。改進(jìn)后的SE-R-YOLOv4算法在COCO數(shù)據(jù)集精度上也比原始YOLOv4略有提高,驗(yàn)證了該算法的遷移性和普適性,為進(jìn)一步的實(shí)際應(yīng)用提供了理論參考。