孫澤強(qiáng),陳炳才,2*,崔曉博,王 磊,陸雅諾
(1.新疆師范大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,烏魯木齊 830054;2.大連理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,遼寧 大連 116024)
目標(biāo)檢測作為計(jì)算機(jī)視覺中最基本、最具挑戰(zhàn)性的任務(wù)之一,旨在找出圖像中特定的目標(biāo),并對(duì)目標(biāo)進(jìn)行定位和分類,在工業(yè)質(zhì)檢、視頻監(jiān)控、無人駕駛等眾多領(lǐng)域應(yīng)用廣泛[1]。帶鋼產(chǎn)品是廣泛應(yīng)用于我國國民經(jīng)濟(jì)與鋼鐵工業(yè)的重要產(chǎn)品,衡量材料效率的主要判定依據(jù)是材料的性能、幾何尺寸和表面質(zhì)量。目前冷軋帶鋼產(chǎn)品在材料與尺寸方面已經(jīng)基本能夠滿足要求,但表面質(zhì)量問題往往成為主要的影響因素[2]。近些年來,各種基礎(chǔ)設(shè)施建設(shè)對(duì)于帶鋼的精度需求越來越高,帶鋼受到結(jié)構(gòu)和制作工藝影響可能會(huì)出現(xiàn)多種表面缺陷,如:夾雜、斑塊、麻點(diǎn)、壓入氧化皮和劃痕等,這些缺陷輕則減少帶鋼的使用壽命和用途,重則可能會(huì)影響建筑物的建設(shè)安全導(dǎo)致建筑事故。因此本文希望通過計(jì)算機(jī)視覺目標(biāo)檢測的方法快速有效地檢測出帶鋼表面的缺陷,進(jìn)而能分離出有問題的產(chǎn)品。
目前的目標(biāo)檢測算法主要分為兩類[3]:第一類是以RCNN(Regions with Convolutional Neural Network features)為代表的兩階段目標(biāo)檢測算法,例如R-CNN 算法[4]、Fast R-CNN算法[5]、Faster R-CNN 算法[6]、Mask R-CNN 算法[7]。兩階段目標(biāo)檢測算法需要先提取目標(biāo)候選框,也就是目標(biāo)位置,然后再對(duì)候選框做分類與回歸。另一類是以YOLO(You Look Only Once)算法為代表的一階段目標(biāo)檢測算法,例如OverFeat 算法[8]、YOLO 算法[9]、YOLOv2 算法[10]、YOLOv3 算法[11]和SSD(Single Shot multibox Detector)算法[12]。一階段算法不需要預(yù)測區(qū)域建議框的網(wǎng)絡(luò)(Region Proposal Network,RPN),直接輸入整張圖,直接在最后的檢測頭上預(yù)測邊界框的類別和位置,所以檢測速度較快,但是檢測精度相對(duì)較低。
卷積神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的引入使缺陷檢測實(shí)現(xiàn)了高準(zhǔn)確度和高效率,逐漸成為缺陷檢測的主要研究方向。文獻(xiàn)[13]在ResNet 中加入了軟注意力機(jī)制,達(dá)到了很高的圖像分類精度。而在目標(biāo)檢測方面,文獻(xiàn)[14]采用了改進(jìn)后的Mask R-CNN 算法對(duì)帶鋼表面進(jìn)行檢測,并使用K-meansⅡ聚類算法改進(jìn)RPN 的錨框生成方法,使精度有很大的提升,但是在速度上仍有很大的欠缺,每秒傳輸幀數(shù)(Frames Per Second,F(xiàn)PS)為5.9。文獻(xiàn)[15]調(diào)整YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)并新增一層大尺度檢測層,使小目標(biāo)的帶鋼缺陷檢測更準(zhǔn)確。文獻(xiàn)[16]中對(duì)YOLOv5 算法運(yùn)用雙向特征金字塔進(jìn)行多尺度特征融合,采用指數(shù)線性單元函數(shù)作為激活函數(shù),能加快網(wǎng)絡(luò)訓(xùn)練收斂速度,提升算法魯棒性。文獻(xiàn)[17]在骨干網(wǎng)絡(luò)中增加了一種多尺度殘差增強(qiáng)模塊,并且設(shè)計(jì)了一種注意力門控結(jié)構(gòu)嵌入模型,進(jìn)一步提高了YOLO 框架的性能。
為進(jìn)一步提高缺陷檢測的準(zhǔn)確率,本文采用YOLOv5 算法,并在此基礎(chǔ)上進(jìn)行改進(jìn)。首先將YOLOv5 的錨框聚類算法由原來的K-means 算法改進(jìn)為模糊C 均值(Fuzzy C-Means,F(xiàn)CM)算法,根據(jù)優(yōu)化目標(biāo)函數(shù)得到每個(gè)真實(shí)框?qū)λ垲惖腻^框(anchor)的隸屬度,從而確定這些真實(shí)框的類別以達(dá)到聚類anchor 的目的;然后改進(jìn)YOLOv5 原有的網(wǎng)絡(luò)結(jié)構(gòu),加入三層頻域通道注意力FcaNet(Frequency channel attention Network)[18]和更換解耦頭,提高對(duì)帶鋼表面缺陷檢測的準(zhǔn)確率;最后在劃分好的測試集NEU-DET 上進(jìn)行驗(yàn)證,得到更好的實(shí)驗(yàn)結(jié)果。
YOLO 算法是一種單階段目標(biāo)檢測算法,檢測速度相較于R-CNN 算法更快。YOLO 算法的核心思想是將目標(biāo)檢測問題變成一個(gè)回歸問題,在經(jīng)過特征提取以及特征融合后直接回歸出目標(biāo)的位置以及所屬的類別,使得計(jì)算資源和檢測時(shí)間成本大幅降低。YOLO 系列算法經(jīng)過不斷的創(chuàng)新和改進(jìn),自YOLOv1 算法提出后,YOLOv2 算法加入K-means 聚類錨框,大大提高了檢測的召回率;YOLOv3 算法首次采用Darknet53 的骨干網(wǎng)絡(luò),達(dá)到了更好的檢測精度;YOLOv4 算法 將Backbone 改進(jìn)為CSPDarknet53(Cross Stage Partial Darknet53)結(jié)構(gòu),并且采用PANet(Path Aggregation Network)特征融合的方法;YOLOv5 在YOLOv4 的基礎(chǔ)上加入了一些改進(jìn)的trick,根據(jù)網(wǎng)絡(luò)深度和寬度大小的不同,依次有YOLOv5s、YOLOv5m、YOLOv5l 和YOLOv5x 版本,版本越高,檢測精度越高,速度越慢。
YOLOv5 網(wǎng)絡(luò)架構(gòu)主要分為輸入端、Backbone 骨干網(wǎng)絡(luò)、Neck 特征融合和YOLO 檢測頭,YOLOv5 的輸入端采用Mosaic 數(shù)據(jù)增強(qiáng),它的基本操作是將隨機(jī)選取的4 張圖片進(jìn)行隨機(jī)裁剪,然后將其拼接成指定分辨率的圖像,以達(dá)到數(shù)據(jù)增強(qiáng)的目的;同時(shí),在圖像批量輸入網(wǎng)絡(luò)前,將數(shù)據(jù)集中的真實(shí)框進(jìn)行聚類,YOLOv5 算法采用K-means 聚類錨框,之后計(jì)算錨框和真實(shí)框的差距,進(jìn)行反向傳播。
Backbone 骨干網(wǎng)絡(luò)首先采用Focus 切片操作,將3 通道的圖片切片變成12 通道,接著經(jīng)過一層帶有32 個(gè)卷積核的卷積層,變成32 通道,F(xiàn)ocus 切片示意圖如圖1 所示;然后進(jìn)入CSPDarknet53 骨干網(wǎng)絡(luò),借鑒了跨階段局部網(wǎng)絡(luò)CSPNet(Cross Stage Partial Network)[19],其在ResNetXt 中證明了基數(shù)相較于網(wǎng)絡(luò)寬度和深度更加有效,可以顯著減少參數(shù)和計(jì)算量,并提升速度。
圖1 Focus切片示意圖Fig.1 Schematic diagram of Focus section
Neck 由特征金字塔(Feature Pyramid Network,F(xiàn)PN)[20]和路徑聚合網(wǎng)絡(luò)(Path Aggregation Network,PAN)[21]組成。FPN將Backbone 提取的深層特征上采樣與淺層信息逐元素相加,從而構(gòu)建尺寸不同的特征金字塔結(jié)構(gòu),同時(shí)還利用了低層特征高分辨率和高層特征高語義信息。PAN 在FPN 增強(qiáng)語義信息的同時(shí),又添加了一條自底向上的金字塔結(jié)構(gòu),以獲取更多的位置信息,PAN 與FPN 結(jié)合就可以獲取豐富的特征信息。YOLOv5 特征融合部分如圖2 所示。
Head 是YOLOv5 的網(wǎng)絡(luò)檢測頭部分,如圖2 所示,在特征融合部分之后產(chǎn)生三個(gè)檢測層,輸入分辨率為640×640 的圖像,產(chǎn)生20×20,40×40 和80×80 的預(yù)測結(jié)果,即分別負(fù)責(zé)預(yù)測大、中、小目標(biāo),同時(shí)每個(gè)檢測層上有3 個(gè)錨框進(jìn)行檢測,檢測結(jié)果包括目標(biāo)的定位信息(x,y,w,h)、對(duì)象信息(obj)和類別信息(cls)。
圖2 YOLOv5特征融合示意圖Fig.2 YOLOv5 feature fusion diagram
YOLOv5 算法采用PAN 的特征融合方式,提取多個(gè)不同尺度的檢測特征,提高了算法對(duì)不同大小目標(biāo)的檢測能力,如圖3 所示,將最終輸出的特征分成S×S的網(wǎng)格,虛線框代表需要調(diào)整的anchor,anchor 的寬度和高度分別是pw和ph,預(yù)測相對(duì)錨框的偏移量是tw和th,由式(1)可以得到預(yù)測框bw、bh、bx和by。
圖3 預(yù)測框Fig.3 Prediction box
YOLOv5 算法的損失函數(shù)包含置信度損失lobj、分類損失lcls以及目標(biāo)框定位損失lbox,如式(2)所示:
置信度損失lobj的計(jì)算如式(3)所示:
其中:K表示圖像的劃分網(wǎng)格系數(shù);M表示表示每個(gè)網(wǎng)格所預(yù)測的預(yù)測框的個(gè)數(shù);Ci為標(biāo)簽值;為預(yù)測值;λnoobj為懲罰權(quán)重系數(shù)。
目標(biāo)分類損失lcls的計(jì)算如式(4)所示:
目標(biāo)定位損失lbox采用完全交并比(Complete-IoU,CIoU)損失,如式(5)~(7)所示,CIOU 損失考慮到了3 個(gè)幾何因素,即預(yù)測框和真實(shí)框之間的重疊面積、預(yù)測框和真實(shí)框的中心點(diǎn)距離和長寬比。
其中:b是預(yù)測框的中心點(diǎn);bgt是真實(shí)框的中心點(diǎn);ρ表示歐氏距離;c表示預(yù)測框和真實(shí)框所構(gòu)成的外接矩形對(duì)角線長度;α表示權(quán)重系數(shù);交并比IoU(Intersection over Union)為預(yù)測框與真實(shí)框的交集和并集的比值;v表示預(yù)測框和真實(shí)框之間的長寬比差異,如果一致,則v=0,且差距越大,v也越大。
原始YOLOv5 算法采用K-means 算法聚類anchor,數(shù)據(jù)集中有很多目標(biāo)的標(biāo)注框,將這些標(biāo)注框的寬和高進(jìn)行聚類,就會(huì)形成大小不同的先驗(yàn)框,YOLOv5 在特征融合后產(chǎn)生3 個(gè)檢測層,分別對(duì)應(yīng)大、中、小尺度的Feature map,負(fù)責(zé)檢測大、中、小目標(biāo),最后采用交并比(IoU)評(píng)價(jià)聚類結(jié)果。
由于K-means 聚類算法是一種硬聚類、基于劃分的聚類算法,一般樣本點(diǎn)之間的相似度是基于歐氏距離來衡量,樣本點(diǎn)之間的歐氏距離越小,相似度就越大,是一種硬劃分,將每個(gè)待聚類的對(duì)象嚴(yán)格地劃分到某類,具有“非此即彼”的性質(zhì)。文獻(xiàn)[22]提出超像素的快速FCM 聚類算法應(yīng)用于彩色圖像分割,使得聚類算法更快更穩(wěn)定。該算法通過優(yōu)化目標(biāo)函數(shù)得到每個(gè)樣本點(diǎn)對(duì)聚類中心點(diǎn)的隸屬度,隸屬度越大樣本所屬該類的可能性越大。最終的聚類損失函數(shù)可以表示為式(8),其中m>1,用于控制聚類結(jié)果的模糊程度,一般取值為2。
FCM 聚類算法就是不斷迭代計(jì)算隸屬度uij和簇中心cj,直到達(dá)到最優(yōu)。隸屬度uij和簇中心cj如式(9)所示:
迭代更新的終止條件如式(10)所示:
其中:k是迭代的步數(shù);ε是誤差閾值,當(dāng)?shù)诫`屬度不再發(fā)生較大變化的時(shí)候,說明已經(jīng)達(dá)到了最優(yōu)的狀態(tài)。
在計(jì)算機(jī)視覺信息處理過程中引入注意力機(jī)制,不僅可以將有限的計(jì)算資源分配給重要的目標(biāo),而且能夠產(chǎn)生符合人類視覺認(rèn)知要求的結(jié)果[23]。文獻(xiàn)[24]在U-Net 中采用四重注意力,使用四個(gè)分支捕獲通道和空間位置之間的內(nèi)部和跨維度交互。通道注意力能給模型精度帶來較明顯的提升,如SENet(Squeeze-and-Excitation Network)[25],但由于計(jì)算開銷有限,通道注意方法的核心步驟是對(duì)每個(gè)通道計(jì)算一個(gè)標(biāo)量,同時(shí)采用全局平均池化(Global Average Pooling,GAP),因其簡單性和高效性而成為深度學(xué)習(xí)領(lǐng)域的標(biāo)準(zhǔn)選擇。
在 ICCV(IEEE International Conference on Computer Vision)2021 中收錄的FcaNet[18]中,采用的是頻域通道注意力的思想,它從不同的角度出發(fā),將通道表示問題視為一個(gè)使用頻率分析的壓縮過程,而不僅僅只是一個(gè)標(biāo)量,在頻率分析的基礎(chǔ)上,從數(shù)學(xué)角度證明了傳統(tǒng)的全局平均池化(GAP)其實(shí)是頻域特征分解的一種特例。因此,F(xiàn)caNet 把通道的標(biāo)量表示看作是一個(gè)壓縮問題,即通道的信息要用標(biāo)量進(jìn)行壓縮編碼,同時(shí)盡量保持整個(gè)通道的表示能力。
2.2.1 離散余弦變換
離散余弦變換(Discrete Cosine Transform,DCT)具有較強(qiáng)的能量壓縮特性,可以實(shí)現(xiàn)高質(zhì)量的數(shù)據(jù)壓縮比,通常典型的二維DCT[26]的基函數(shù)是式(11):
二維DCT 可以寫成式(12):
其中:i∈{ 0,1,…,H-1} ;j∈{0,1,…,W-1};f2D∈ RH×W為二維DCT 頻譜;x2D∈ RH×W為輸入;H為x2D的高度;W是x2D的寬度。
2.2.2 多譜通道注意力模塊
在FcaNet 中給出了一個(gè)定理并進(jìn)行了數(shù)學(xué)證明,定理如下:全局平均池化GAP 是二維DCT 的一種特殊情況,其結(jié)果與二維DCT 的最低頻率分量成正比?;谏厦娴亩ɡ砜梢钥闯?,在通道注意機(jī)力SENet 中使用GAP 意味著只保留了最低頻率的信息,而來自其他頻率的分量將會(huì)被丟棄,而其他頻率也可能包含一些有用的特征,如圖4 所示。
圖4 SENet通道注意力Fig.4 SENet channel attention
多譜通道注意力如圖5 所示,首先,沿著通道維度將輸入特征X分成許多部分,表示[X0,X1,…,Xn-1],其 中:Xi∈RC′×H×W,i∈{0,1,…,n-1},C′=C/n,C可被n整除。對(duì)每個(gè)部分分配相應(yīng)的二維DCT 頻率分量,由分配的DCT 頻率分量得到每個(gè)部分的Freq向量,如式(13):
圖5 多譜通道注意力Fig.5 Multi-spectral channel attention module
其中:i∈{ 0,1,…,n-1} ;[ui,vi]是與Xi相對(duì)應(yīng)的頻率分量的二維指數(shù),經(jīng)過壓縮后,F(xiàn)reqi變?yōu)镃′維的向量,整個(gè)壓縮后的向量可以通過拼接獲得式(14),其中Freq∈ RC是獲取到的多譜向量。
綜上,整個(gè)多譜通道注意力框架可以被寫成如式(15),由式(14)、(15)可以看出,本文算法將原來的全局平均池化GAP 方法推廣到一個(gè)具有多個(gè)頻率分量的框架,這樣可以有效地豐富壓縮后的信道信息,便于表示。
YOLOX[27]使用了解耦頭的方法,能加快收斂速度,提升檢測精度。在目標(biāo)檢測中,分類和回歸任務(wù)之間的沖突眾所周知[28],因此用于分類和定位任務(wù)的解耦頭在大多數(shù)一階段和二階段目標(biāo)檢測算法中應(yīng)用廣泛,然而,原始YOLOv5 算法依舊使用耦合頭,即分類和回歸任務(wù)不分離,如圖3 所示,特征融合后直接經(jīng)過一層卷積得到最終檢測頭,檢測頭耦合了分類、定位和置信度的檢測。而解耦頭如圖6 所示,,其中nanchor為anchor個(gè)數(shù),經(jīng)過1×1卷積后,通道維數(shù)減小至256;經(jīng)過兩個(gè)平行的3×3卷積層,其中一個(gè)用于分類任務(wù),另一個(gè)用于定位和置信度任務(wù);再經(jīng)過兩個(gè)分別用于定位和置信度檢測的平行的1×1 卷積,經(jīng)過上述操作,分類、定位和置信度檢測使用不同的檢測層,與YOLOX 算法不同,本文并沒有采用基于anchor-free 的檢測機(jī)制,還是采用基于anchor 的檢測,所以最后產(chǎn)生的檢測結(jié)果有9個(gè)anchor,最終的實(shí)驗(yàn)也表明基于anchor的YOLOv5算法比YOLOX的檢測精度更高。
圖6 解耦頭示意圖Fig.6 Schematic diagram of decoupled head
本文采用的東北大學(xué)發(fā)布的NEU-DET 數(shù)據(jù)集是熱軋帶鋼表面缺陷的經(jīng)典數(shù)據(jù)集,收集了6 種常見的表面缺陷,包括夾雜(Inclusion,In)、劃痕(Scratches,Sc)、壓入氧化皮(Rolled-in Scale,Rs)、裂紋(Crazing,Cr)、麻點(diǎn)(Pitted Surface,Ps)和斑塊(Patches,Pa),每種缺陷300 張,圖像尺寸為200×200。由于裂紋類圖像缺陷不明顯,模糊圖像不利于檢測任務(wù),刪去這類圖像缺陷,因此數(shù)據(jù)集有1 500 張缺陷圖像,將缺陷圖像按照8∶2 的比例隨機(jī)劃分成訓(xùn)練集和測試集,因此訓(xùn)練集有1 200 張,測試集有300 張,各類帶鋼缺陷如圖7所示。
圖7 各類帶鋼缺陷Fig.7 Schematic diagram of strip defects
原始的YOLOv5 算法的anchor 框是在COCO(COmmon objects in COntext)數(shù)據(jù)集上聚類得到的,由于COCO 數(shù)據(jù)集和帶鋼表面缺陷數(shù)據(jù)集的真實(shí)框不同,因此需要重新聚類,在YOLOv5 算法中,需要生成9 組不同的anchor,所以設(shè)置生成的聚類中心數(shù)為9,通過K-means 算法和FCM 算法生成9個(gè)anchor,最后得到每個(gè)樣本點(diǎn)和聚類中心交并比的最大值的平均,作為評(píng)價(jià)最終聚類結(jié)果的標(biāo)準(zhǔn),計(jì)算公式如式(16)所示:
其中:box為預(yù)測框;cen為標(biāo)記框。
通過FCM 算法生成anchor 框,代替原來K-means 聚類算法,最終FCM 生成的9 個(gè)anchor 分別為[73,121,104,248,183,160],[287,267,597,89,155,410],[103,608,289,593,593,612],按照式(16)計(jì)算得到的準(zhǔn)確率為68.15%,而通過K-means 算法聚類得到的準(zhǔn)確率為66.56%,所以FCM 的聚類結(jié)果更好,兩種算法聚類后的散點(diǎn)圖對(duì)比如圖8 所示,其中星號(hào)代表該類的聚類中心。
圖8 K-means和FCM算法聚類后散點(diǎn)圖對(duì)比Fig.8 Comparison of scatter plots after clustering between K-means and FCM algorithms
本文實(shí)驗(yàn)是在ubuntu16.04.10 版本的操作系統(tǒng)下完成的,采用的硬件配置為:Intel Xeon CPU E5-2680 v4 @2.40GH,NVIDIA GeForce RTX3080;軟件環(huán)境為CUDA10.2和CUDNN9.1;開發(fā)框架為PyTorch;編程語言為Python;預(yù)訓(xùn)練模型“yolov5-x.pt”,batch size 為8,一共訓(xùn)練100 個(gè)epochs。
目標(biāo)檢測領(lǐng)域通常使用召回率(Recall)、精準(zhǔn)率(Precision)和平均精度均值(mean Average Precision,mAP)對(duì)算法性能進(jìn)行評(píng)價(jià)。精準(zhǔn)率用于描述檢測為正樣本的數(shù)量占所有的樣本的比例;召回率用于描述檢測為正樣本的數(shù)量占標(biāo)記為正樣本的數(shù)量的比例。計(jì)算公式如(17)所示:
其中:TP(True Positive)表示標(biāo)記為正樣本檢測也為正樣本的數(shù)量;FP(False Positive)表示標(biāo)記為假樣本但檢測為正樣本的數(shù)量,即檢測錯(cuò)誤的數(shù)量;FN(False Negative)表示將樣本正類預(yù)測為負(fù)類的個(gè)數(shù),即遺漏檢測的個(gè)數(shù)。本文采用mAP 作為評(píng)價(jià)指標(biāo),平均精度(Average Precision,AP)為PR曲線下的面積,mAP 衡量全部類別下的AP 的均值,N為類別數(shù),計(jì)算公式如(19)所示:
IFPS用來衡量網(wǎng)絡(luò)的檢測速度,計(jì)算公式如式(20)所示:
其中:NumFigure表示檢測的圖像數(shù)量;TotalTime表示檢測所用的總時(shí)長。
為驗(yàn)證本文算法的有效性,設(shè)計(jì)三組實(shí)驗(yàn),對(duì)FCM 算法和解耦頭進(jìn)行分析。實(shí)驗(yàn)結(jié)果如表1 所示,三個(gè)實(shí)驗(yàn)均基于YOLOv5 算法進(jìn)行改進(jìn),實(shí)驗(yàn)1 不采用任何改進(jìn)策略,使用Kmeans 算法聚類先驗(yàn)框;實(shí)驗(yàn)2 使用FCM 算法進(jìn)行先驗(yàn)框的聚類,最終的mAP 值提升了1.6 個(gè)百分點(diǎn),檢測速度相差無幾,因?yàn)榫W(wǎng)絡(luò)結(jié)構(gòu)沒有變化,只是改變先驗(yàn)框的聚類方式,模糊聚類算法并不會(huì)嵌入網(wǎng)絡(luò)將聚類得好的先驗(yàn)框加入網(wǎng)絡(luò)進(jìn)行訓(xùn)練,因此不會(huì)增加額外的參數(shù)量;實(shí)驗(yàn)3 是在實(shí)驗(yàn)2 的基礎(chǔ)上將檢測頭替換為解耦頭,將分類任務(wù)和定位任務(wù)解耦合之后,由于增加額外的卷積層,mAP 值又提升了1.0 個(gè)百分點(diǎn),但是FPS 下降5.14 個(gè)百分點(diǎn)。
表1 不同改進(jìn)算法的對(duì)比實(shí)驗(yàn)結(jié)果Tab.1 Comparative experimental results of different improved algotithms
表2 是在前兩個(gè)改進(jìn)點(diǎn)的基礎(chǔ)上加入不同的注意力機(jī)制進(jìn)行對(duì)比的結(jié)果,圖9 是加入不同注意力機(jī)制使用Grad_cam 在缺陷圖片上的熱力圖展示結(jié)果。如表2 所示,加入SE(Squeeze-and-excitation)、BAM(Bottleneck Attention Module)[29]、CBAM(Convolutional Block Attention Module)[30]、CCA(Criss-Cross Attention)[31]、CA(Coordinate Attention)[32]后mAP 均有一定下降;而加入Non-Local[33]、DA(Dual Attention)[34]、FcaNet 后mAP 提高較明顯,相較于改進(jìn)2,分別提高1.2、1.3 和3.0 個(gè)百分點(diǎn),檢測速度除Non-Local 提升明顯外,DA 和FcaNet 基本不變。DA 是從空間和通道兩個(gè)分支并行地構(gòu)建特征圖的相關(guān)性矩陣;FcaNet 采用頻域通道注意力,將通道看作頻率壓縮的過程,兩者都達(dá)到了不錯(cuò)的檢測精度。對(duì)增加注意力機(jī)制后的額外參數(shù)量進(jìn)行分析,加入BAM 的額外參數(shù)量最少,但是mAP 只有81.4%;加入FcaNet相對(duì)其他注意力模塊所增加的額外參數(shù)量較少,而mAP 提升較明顯,達(dá)到85.5%。從熱力圖對(duì)比結(jié)果看出,對(duì)于“劃痕”缺陷,加入FcaNet 后,對(duì)缺陷的檢測效果更好,誤檢的目標(biāo)更少,在可視化的角度證明了FcaNet 在缺陷檢測上效果更優(yōu)。
圖9 加入不同注意力模塊熱力圖對(duì)比結(jié)果Fig.9 Heat map comparison results after adding different attention modules
表2 加入不同注意力模塊對(duì)比實(shí)驗(yàn)結(jié)果Tab.2 Comparison experimental results by adding different attention modules
表3 是不同算法在NEUDET 數(shù)據(jù)集上的對(duì)比結(jié)果,其中文獻(xiàn)[14]采用改進(jìn)的Mask R-CNN 兩階段算法,檢測精度達(dá)到96%,但是檢測速度只有5.90 FPS,雖然檢測精度很高,但是難以滿足檢測的實(shí)時(shí)性要求;文獻(xiàn)[15]采用改進(jìn)的YOLOv3 算法,對(duì)于5 類缺陷的檢測精度達(dá)到82.2%,還可以進(jìn)一步提升;Faster R-CNN 算法和SSD 算法的特征提取網(wǎng)絡(luò)均為Resnet50,是目前檢測性能較好的Backbone。對(duì)比不同的算法檢測結(jié)果可以發(fā)現(xiàn):1)相較于原始的YOLOv5 算法,改進(jìn)的YOLOv5 算法在各類缺陷的檢測精度上均有明顯提升,尤其是針對(duì)檢測效果不佳的壓入氧化皮缺陷,達(dá)到了72.7%,整體mAP 相較于原始YOLOv5 提升了4.2 個(gè)百分點(diǎn),檢測速度下降不多。2)改進(jìn)后的YOLOv5 算法的檢測速度低于文獻(xiàn)[15]算法、原始YOLOv3 和SSD,而檢測精度更高。主要因?yàn)閷?shí)驗(yàn)使用的YOLOv5-x 版本,是YOLOv5 所有版本中網(wǎng)絡(luò)深度和寬度最大的結(jié)構(gòu),因此在檢測速度上未能勝過SSD 和YOLOv3 算法。YOLOv5 也使用解耦頭來進(jìn)行檢測,但是采用的是anchor-free 的檢測方法,所以在帶鋼表面缺陷檢測效果并不佳。
表3 不同算法檢測性能的對(duì)比結(jié)果Tab.3 Comparison results of detection performance of different algorithms
本文針對(duì)帶鋼表面缺陷數(shù)據(jù)集中的五類不同的缺陷進(jìn)行高精度檢測的問題,提出一種改進(jìn)的YOLOv5 算法,首先使用FCM 算法代替K-means 算法對(duì)先驗(yàn)框進(jìn)行聚類,接著采用解耦的檢測頭,從而分離分類和定位任務(wù),不同的任務(wù)使用不同的卷積層,最后加入了FcaNet 通道注意力模塊,使用多譜通道注意力機(jī)制提取到更有效的特征信息,最后實(shí)驗(yàn)結(jié)果表明,本文提出的改進(jìn)方法能夠準(zhǔn)確、快速地檢測出不同缺陷的帶鋼圖像。本文方法在Nvidia RTX 3080 測試條件下mAP 達(dá)到0.855,速度為27.71 FPS,實(shí)現(xiàn)了高精度的檢測,檢測精度高于通用目標(biāo)檢測模型,檢測速度還有待提升,該方法為帶鋼的缺陷檢測提供了有益的幫助。下一步將在嵌入式設(shè)備上進(jìn)行模型的性能改進(jìn),進(jìn)一步縮小網(wǎng)絡(luò)結(jié)構(gòu),以便在移動(dòng)端實(shí)時(shí)地檢測帶鋼缺陷。