李 鑫,汪 誠(chéng),李 彬,郭振平,李秋良,李卓越
(空軍工程大學(xué)基礎(chǔ)部,西安,710038)
鋼材作為一種重要的工業(yè)產(chǎn)品,是航空航天、機(jī)械制造和國(guó)防工業(yè)等領(lǐng)域不可或缺的原材料。隨著我國(guó)工業(yè)水平的不斷發(fā)展,鋼材生產(chǎn)技術(shù)取得了巨大進(jìn)步[1]。而在鋼材的生產(chǎn)制造過(guò)程中,由于受到原料質(zhì)量、制造設(shè)備和生產(chǎn)環(huán)境等因素影響,產(chǎn)品表面會(huì)形成裂紋、孔洞、劃痕等不同種類的缺陷[2]。這些缺陷會(huì)使鋼材的強(qiáng)度、抗疲勞和耐磨性能下降,影響正常使用,甚至可能造成嚴(yán)重后果。因此,為保證鋼材的安全性能,必須對(duì)其表面進(jìn)行缺陷檢測(cè)。
傳統(tǒng)的鋼材表面缺陷檢測(cè)方法有人工檢測(cè)方法和頻閃光檢測(cè)方法[3],均為非自動(dòng)化的檢測(cè)方法。檢測(cè)人員需要進(jìn)行大量重復(fù)的工作,容易產(chǎn)生視覺(jué)疲勞,造成漏檢或誤檢的情況。
近年來(lái),機(jī)器視覺(jué)技術(shù)迅速發(fā)展,在圖像分類、人臉識(shí)別和目標(biāo)檢測(cè)等領(lǐng)域得到了應(yīng)用。機(jī)器視覺(jué)技術(shù)具有穩(wěn)定、高效、準(zhǔn)確等優(yōu)勢(shì)[4],有學(xué)者將該技術(shù)應(yīng)用于缺陷檢測(cè),提高了檢測(cè)效率和精度。韓強(qiáng)等利用檢測(cè)網(wǎng)絡(luò)對(duì)RPN網(wǎng)絡(luò)生成的區(qū)域建議框進(jìn)行分類回歸,提出了一種特征融合和級(jí)聯(lián)檢測(cè)網(wǎng)絡(luò)的Faster R-CNN鋼材表面缺陷檢測(cè)算法[5]。葉欣提出了一種使用自適應(yīng)空間特征融合結(jié)構(gòu)和EIoU損失函數(shù)的改進(jìn)YOLOv4算法,提高了對(duì)熱軋帶鋼表面缺陷的檢測(cè)精度[6]。楊莉等通過(guò)引入導(dǎo)向錨點(diǎn)候選區(qū)域和多任務(wù)FPN結(jié)構(gòu)解決了傳統(tǒng)Faster R-CNN網(wǎng)絡(luò)在檢測(cè)鋼材表面小目標(biāo)缺陷時(shí)特征融合不充分的問(wèn)題[7]。
本文基于鋼材表面缺陷檢測(cè)任務(wù),提出一種改進(jìn)的YOLOv5算法,旨在提高算法對(duì)鋼材表面缺陷的識(shí)別準(zhǔn)確率和檢測(cè)速度,并在NEU-DET數(shù)據(jù)集上驗(yàn)證了算法的有效性。
YOLO系列算法[8]是一種基于深度學(xué)習(xí)和卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法,具有推理速度快、檢測(cè)精度高、可實(shí)時(shí)檢測(cè)等優(yōu)點(diǎn)。YOLOv5是該系列算法的最新一代,相比前幾代具有更高的精度、更快的速度和更小的體積。該算法共有4種模型:YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x,網(wǎng)絡(luò)的深度和寬度依次增加。本文選擇YOLOv5s作為預(yù)訓(xùn)練模型,在其基礎(chǔ)上進(jìn)行遷移學(xué)習(xí),建立鋼材表面缺陷檢測(cè)算法。YOLOv5s的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)圖
YOLOv5s模型主要由4部分組成:Input、Backbone、Neck和Head。Input部分采用了Mosaic數(shù)據(jù)增強(qiáng),每次選取4張圖片進(jìn)行隨機(jī)組合,豐富了數(shù)據(jù)集的多樣性[9];Backbone部分用于提取圖像特征,主要由Focus、C3、SPP等模塊組成。Focus用來(lái)對(duì)輸入網(wǎng)絡(luò)的圖像進(jìn)行切片操作,可以增加輸出深度,同時(shí)減少計(jì)算量;C3主要由若干個(gè)Bottleneck結(jié)構(gòu)和卷積層組合而成,有利于加快推理速度;SPP[10]為空間金字塔池化層,分別使用尺寸為5、9、13的3種池化核對(duì)輸入圖像進(jìn)行最大池化操作,有效提升了網(wǎng)絡(luò)的感受野;Neck是網(wǎng)絡(luò)的融合部分,采用了特征金字塔網(wǎng)絡(luò)(feature pyramid networks,FPN)[11]+金字塔注意力網(wǎng)絡(luò)(pyramid attention networks,PAN)[12]的結(jié)構(gòu),二者結(jié)合增強(qiáng)了對(duì)不同尺度特征的融合效果;Head為網(wǎng)絡(luò)的預(yù)測(cè)部分,輸出3組包含預(yù)測(cè)框類別、置信度和坐標(biāo)位置的向量。
GhostNet[13]是一種新穎的計(jì)算模塊,可以通過(guò)使用較少的參數(shù)來(lái)生成更多的特征,原理如圖2所示。使用該模塊可以減少參數(shù)量、消除冗余特征、獲得更加輕量化的模型。
圖2 Ghost模塊原理
GhostNet的具體過(guò)程為:
Y′=X*f′
(1)
(2)
GhostBottleneck模塊分為2種結(jié)構(gòu),如圖3所示。步長(zhǎng)為1的GhostBottleneck主要由2個(gè)Ghost模塊堆疊而成;步長(zhǎng)為2的GhostBottleneck的2個(gè)Ghost模塊之間通過(guò)一個(gè)步長(zhǎng)為2的DW卷積層連接。
圖3 GhostBottleneck的兩種結(jié)構(gòu)
YOLOv5s網(wǎng)絡(luò)中的Bottleneck結(jié)構(gòu)對(duì)輸入特征圖先后使用32個(gè)1×1卷積核和64個(gè)3×3卷積核進(jìn)行卷積操作,因此本文采用步長(zhǎng)為1的GhostBottleneck替換網(wǎng)絡(luò)中的C3模塊,使用步長(zhǎng)為2的GhostBottleneck替換網(wǎng)絡(luò)中的CBS模塊,以減少模型計(jì)算量。
SENet(squeeze and excitation network)[14]是一種通道注意力機(jī)制,獲得了ImageNet 2017競(jìng)賽分類任務(wù)的冠軍。該網(wǎng)絡(luò)的原理如圖4所示,通過(guò)學(xué)習(xí)的方式自動(dòng)獲取每個(gè)特征通道的重要程度,并利用得到的重要程度來(lái)增強(qiáng)有用的特征,抑制不重要的特征,從而實(shí)現(xiàn)對(duì)特征權(quán)重的調(diào)整。
圖4 SE模塊
SE模塊主要包括squeeze、excitation和scale等操作:squeeze將特征圖的每個(gè)通道進(jìn)行壓縮,對(duì)H×W的二維向量進(jìn)行全局平均池化,輸出1×1×C的向量。
(3)
excitation在得到1×1×C向量后,利用全連接層,對(duì)每個(gè)通道生成一個(gè)權(quán)重,用來(lái)代表特征通道的重要程度。
s=σ(W2δ(W1z))
(4)
最后scale操作是將上一步輸出的權(quán)重看作每個(gè)特征通道的重要性,再加權(quán)到之前的特征上,完成在通道維度上對(duì)原始特征的重新標(biāo)定。
(5)
YOLOv5s網(wǎng)絡(luò)的head部分共輸出3個(gè)尺度的檢測(cè)層,輸入尺寸為640×640的圖像,輸出的檢測(cè)層尺度為80×80、40×40和20×20,分別用于檢測(cè)小、中、大目標(biāo)??紤]到本文所用數(shù)據(jù)集中部分缺陷占整張圖片的比例較大,因此在原YOLOv5s網(wǎng)絡(luò)的head部分再增加一個(gè)尺度為10×10的檢測(cè)層,相應(yīng)地在neck部分添加特征融合結(jié)構(gòu),以輸出新的特征圖。這樣在改進(jìn)后的網(wǎng)絡(luò)中,head部分共輸出4個(gè)尺度的檢測(cè)層。
DWConv(depthwise convolution,深度卷積)[16]的原理是將卷積核拆分成單通道形式,在不改變輸入特征圖像深度的情況下,對(duì)每個(gè)通道進(jìn)行獨(dú)立的卷積運(yùn)算,得到與輸入特征圖通道數(shù)一致的輸出特征圖。相比標(biāo)準(zhǔn)卷積,DW卷積能夠降低運(yùn)算量,節(jié)約計(jì)算成本。本文在引入注意力機(jī)制并增加檢測(cè)層后運(yùn)算量增加較多,因此在neck部分使用DW卷積替代部分標(biāo)準(zhǔn)卷積,從而達(dá)到減少運(yùn)算量的目的。
本文的實(shí)驗(yàn)環(huán)境基于Windows10操作系統(tǒng),內(nèi)存為64 GiB,使用PyTorch 1.9.1作為深度學(xué)習(xí)框架,Python版本為3.7.11,CUDA版本為10.2。CPU為Intel(R) Xeon(R) Gold 5218 CPU @2.30 GHz。GPU為NVIDIA GeForce RTX 2080Ti。
實(shí)驗(yàn)所用數(shù)據(jù)集為東北大學(xué)宋克臣團(tuán)隊(duì)制作的鋼材表面缺陷數(shù)據(jù)集(NEU-DET),包含6種缺陷類型:裂紋(crazing)、內(nèi)含物(inclusion)、斑塊(patches)、點(diǎn)蝕面(pitted surface)、氧化軋皮(rolled-in scale)、劃痕(scratches),共計(jì)1 800張圖片。圖片的原始尺寸為200×200,類別為灰度圖。采集鋼材表面缺陷的一種方法為:將2個(gè)LED光源對(duì)稱傾斜安裝于待測(cè)鋼材上方,在兩光源的中心軸線上放置一臺(tái)工業(yè)相機(jī),對(duì)鋼材表面的缺陷進(jìn)行照片采集,如圖5所示。對(duì)相機(jī)采集到的圖像進(jìn)行預(yù)處理,消除高頻噪聲,進(jìn)行灰度變換[17]。
圖5 采集缺陷示意圖
數(shù)據(jù)集圖片均使用LabelImg軟件依次對(duì)缺陷標(biāo)注真實(shí)框,得到格式為xml的標(biāo)簽文件。將數(shù)據(jù)集的1 800張圖片按照6∶2∶2劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集,得到訓(xùn)練集1 080張,驗(yàn)證集360張,測(cè)試集360張。數(shù)據(jù)集部分圖片如圖6所示。
圖6 數(shù)據(jù)集部分圖片
YOLOv5網(wǎng)絡(luò)的訓(xùn)練策略為:使用K-means聚類算法自動(dòng)根據(jù)數(shù)據(jù)集的標(biāo)注框計(jì)算三組初始錨框的大小;初始學(xué)習(xí)率lr0為0.01,使用余弦退火算法動(dòng)態(tài)調(diào)整學(xué)習(xí)率;學(xué)習(xí)率動(dòng)量momentum為0.937,權(quán)重衰減系數(shù)weight decay為5×10-4;訓(xùn)練過(guò)程中開啟Mosaic數(shù)據(jù)增強(qiáng),提高模型的泛化能力;batch-size設(shè)置為16,訓(xùn)練輪次為300個(gè)epoch。依次對(duì)原YOLOv5s模型和改進(jìn)的模型進(jìn)行訓(xùn)練和測(cè)試,對(duì)比分析各模型的參數(shù)和性能。
本文從模型參數(shù)量、運(yùn)算量、模型體積、平均推理時(shí)間、精確率P、召回率R、mAP[18]@0.5(IoU閾值為0.5時(shí)各個(gè)類別的平均AP值)等方面對(duì)模型進(jìn)行比較。參數(shù)量表示訓(xùn)練過(guò)程中模型的總參數(shù)量;運(yùn)算量FLOPs表示浮點(diǎn)運(yùn)算數(shù);模型體積表示訓(xùn)練完成后生成的模型權(quán)重大??;平均推理時(shí)間是指GPU推理一張圖片所需的時(shí)間;精確率指檢測(cè)出的正樣本中實(shí)際仍為正樣本的概率,召回率指在實(shí)際的正樣本中檢測(cè)出正樣本的概率;平均精度AP指的是在不同召回率下精確率的均值,即P-R曲線與坐標(biāo)軸圍成的面積,反映了準(zhǔn)確率和召回率的綜合性能,是目前主流目標(biāo)檢測(cè)模型的評(píng)價(jià)指標(biāo)。對(duì)各個(gè)類別的AP(式中簡(jiǎn)記為PA)求均值即可得到mAP(式中簡(jiǎn)記為PmA),即所有類別的平均精度。它們的具體計(jì)算公式為:
(6)
(7)
(8)
(9)
式中:P、R分別指精確率和召回率;N表示總的類別數(shù);PT表示模型預(yù)測(cè)為正樣本且實(shí)際也為正樣本的數(shù)量;PF表示模型預(yù)測(cè)為正樣本但實(shí)際為負(fù)樣本的數(shù)量;NF表示模型預(yù)測(cè)為負(fù)樣本但實(shí)際為正樣本的數(shù)量。
本文共設(shè)計(jì)了4種模型與原YOLOv5s模型進(jìn)行對(duì)比,分別為:
1) YOLOv5s-G:使用GhostBottleneck模塊替換Backbone中的CBS和C3模塊。
2) YOLOv5s-S:在Backbone中增加3個(gè)注意力機(jī)制SE模塊。
3) YOLOv5s-D:在head部分增加1個(gè)尺度為10×10的檢測(cè)層,同時(shí)在neck部分增加特征融合結(jié)構(gòu)。
4) YOLOv5s-GSD:在原YOLOv5s網(wǎng)絡(luò)中同時(shí)使用GhostBottleneck替換CBS和C3,添加3個(gè)注意力機(jī)制SE模塊,在網(wǎng)絡(luò)中增加1個(gè)10×10的檢測(cè)層和對(duì)應(yīng)的特征融合結(jié)構(gòu),使用DW卷積替換neck中的部分標(biāo)準(zhǔn)卷積。該模型即為本文所提出的改進(jìn)YOLOv5s模型,其網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示,其中GB-1和GB-2分別表示步長(zhǎng)為1和步長(zhǎng)為2的GhostBottleneck模塊。
圖7 改進(jìn)的YOLOv5s-GSD模型結(jié)構(gòu)
3.4.1 模型參數(shù)與性能對(duì)比
為了驗(yàn)證單個(gè)結(jié)構(gòu)改變對(duì)網(wǎng)絡(luò)性能的影響,本文進(jìn)行了消融實(shí)驗(yàn),對(duì)YOLOv5s、 YOLOv5s-G、YOLOv5s-S、YOLOv5s-D、YOLOv5s-GSD進(jìn)行訓(xùn)練和測(cè)試,得到5種模型的復(fù)雜度和性能對(duì)比如表1和表2所示。
表1 各模型復(fù)雜度對(duì)比
表2 各模型性能對(duì)比
分析實(shí)驗(yàn)結(jié)果可知,YOLOv5s-G模型相比原YOLOv5s的參數(shù)量減少了41.1%,運(yùn)算量減少了40.9%,模型大小減少了39.9%,平均推理時(shí)間減少了0.4 ms。這得益于GhostNet使用了線性運(yùn)算替代部分卷積過(guò)程,從而在得到近似于原始特征圖的同時(shí)減少計(jì)算量和特征圖冗余[19]。YOLOv5s-S相比于原YOLOv5s模型,由于SE注意力機(jī)制的引入,雖然增加了模型復(fù)雜度,使得模型的參數(shù)量、運(yùn)算量和模型體積略有增大,導(dǎo)致平均推理時(shí)間有0.2 ms的增加,但mAP值提升了1.6%,這證明了注意力機(jī)制對(duì)重要特征的強(qiáng)化作用。YOLOv5s-D由于增加一個(gè)檢測(cè)層和部分卷積結(jié)構(gòu),相比原YOLOv5s網(wǎng)絡(luò)參數(shù)量增加較多,平均推理時(shí)間增加0.3 ms,但mAP值提升了0.6%。本文提出的YOLOv5s-GSD模型,相比原YOLOv5s模型,參數(shù)量減少了11.5%,運(yùn)算量減少了44.5%,模型體積減少了10.4%,mAP值提升了3.3%,平均推理時(shí)間減少了0.1 ms。
YOLOv5s-GSD和YOLOv5s檢測(cè)各類缺陷的平均精度AP值如圖8所示。從圖中可以看出,改進(jìn)后的YOLOv5s-GSD模型相比原YOLOv5s模型,除scratches類缺陷的AP值降低2.2%外,其他類別均有不同程度的提高,其中crazing、inclusion、patches、pitted surface和rolled-in scale的平均精度分別提高5.9%、2.0%、4.6%、2.6%和7.2%,對(duì)于原模型檢測(cè)效果較差的crazing和rolled-in scale這兩類缺陷的檢測(cè)精度有了明顯提升。
圖8 YOLOv5s-GSD和YOLOv5s各類別平均精度AP值對(duì)比
綜合以上分析,可以得出:Ghost模塊和DW卷積對(duì)于模型輕量化和減少運(yùn)算量有顯著作用;SE注意力機(jī)制對(duì)于精確率有明顯的提升,很好地改善了誤檢的情況;在head部分新增的檢測(cè)層對(duì)于較大目標(biāo)的檢測(cè)精度有所提高。本文提出的YOLOv5s-GSD模型相比原YOLOv5s模型在參數(shù)量、運(yùn)算量、模型體積、mAP值以及推理速度等方面均有明顯優(yōu)勢(shì)。
3.4.2 訓(xùn)練過(guò)程損失
YOLOv5網(wǎng)絡(luò)的損失函數(shù)共包含3個(gè)部分:Lbox為定位損失函數(shù),用于衡量預(yù)測(cè)框?qū)ψ鴺?biāo)定位錯(cuò)誤的誤差;Lobj為置信度損失函數(shù),反映了預(yù)測(cè)框的置信度誤差;Lcls為分類損失函數(shù),反映了預(yù)測(cè)框?qū)δ繕?biāo)類別預(yù)測(cè)錯(cuò)誤引起的誤差。其中Lbox采用CIoU_Loss[20]函數(shù),Lobj和Lcls采用交叉熵?fù)p失函數(shù)。本文提出的YOLOv5s-GSD模型在訓(xùn)練過(guò)程中的損失變化如圖9所示。
圖9 YOLOv5s-GSD模型訓(xùn)練過(guò)程損失
訓(xùn)練設(shè)置迭代次數(shù)為300次,從圖中可以看出,在0到50次迭代的過(guò)程中,Lbox和Lcls急劇下降,之后的訓(xùn)練過(guò)程中緩慢下降,而Lobj在訓(xùn)練初期出現(xiàn)了局部的過(guò)擬合現(xiàn)象;經(jīng)過(guò)300次迭代后,損失值逐漸趨于平穩(wěn)。
為更加直觀地比較改進(jìn)后的YOLOv5s-GSD模型與原YOLOv5s模型的實(shí)際檢測(cè)效果,本文分別用2種模型對(duì)測(cè)試集的缺陷圖片進(jìn)行了檢測(cè),部分檢測(cè)結(jié)果對(duì)比如圖10所示。
圖10 改進(jìn)前和改進(jìn)后模型的檢測(cè)效果對(duì)比
圖10(a)為原YOLOv5s模型的檢測(cè)效果,(b)為改進(jìn)的YOLOv5s-GSD模型檢測(cè)效果。對(duì)比兩者可以看出,原YOLOv5s模型對(duì)于一些目標(biāo)存在漏檢的情況,且置信度普遍較低。改進(jìn)的YOLOv5s-GSD模型檢測(cè)缺陷目標(biāo)的置信度相比原YOLOv5s模型有了明顯提高,尤其是crazing類缺陷,在使用原YOLOv5s模型檢測(cè)時(shí)效果較差,且存在較多漏檢目標(biāo),改進(jìn)后的模型明顯提升了檢測(cè)效果,而且對(duì)于缺陷的定位也更加準(zhǔn)確。
為了進(jìn)一步評(píng)估YOLOv5s-GSD模型的性能,本文選取了3種主流的目標(biāo)檢測(cè)算法SSD[21]、YOLOv3和YOLOv4,在同樣的數(shù)據(jù)集上與本文改進(jìn)的YOLOv5模型進(jìn)行實(shí)驗(yàn)對(duì)比,結(jié)果如圖11和表3所示。
圖11 不同算法檢測(cè)的各類別平均精度AP值對(duì)比
表3 不同算法檢測(cè)性能對(duì)比
根據(jù)圖11和表3的實(shí)驗(yàn)結(jié)果可得:本文所改進(jìn)的YOLOv5s-GSD模型相比幾種主流目標(biāo)檢測(cè)算法,有效提升了對(duì)各種類別缺陷的檢測(cè)精度,尤其是主流算法檢測(cè)效果較差的crazing和rolled-in scale類缺陷,AP值有大幅提高,mAP值達(dá)76.8%;參數(shù)量和模型體積大幅減小,更加便于移動(dòng)端的部署;同時(shí)具有較高的檢測(cè)速度,達(dá)到了43.3 FPS,實(shí)現(xiàn)了對(duì)缺陷目標(biāo)的實(shí)時(shí)檢測(cè)。因此可以得出,本文改進(jìn)的YOLOv5模型在模型體積、檢測(cè)精度和檢測(cè)速度等方面均優(yōu)于主流目標(biāo)檢測(cè)算法,能更好地完成鋼材表面缺陷檢測(cè)的任務(wù)。
通過(guò)上述的實(shí)驗(yàn)結(jié)果可以得出,本文改進(jìn)的YOLOv5s-GSD模型對(duì)比原YOLOv5s模型和幾種主流的目標(biāo)檢測(cè)算法,在模型復(fù)雜度和檢測(cè)性能等方面都具有明顯優(yōu)勢(shì)。相比原YOLOv5s模型,參數(shù)量減少了11.5%,運(yùn)算量減少了44.5%,模型體積減少了10.4%,實(shí)現(xiàn)了模型的輕量化;同時(shí)mAP值提升了3.3%,幾乎對(duì)各類缺陷的檢測(cè)精度均有不同程度的提升。其中crazing類缺陷的檢測(cè)精度相對(duì)較低,有較大提升空間,本文推測(cè)可能是該類別缺陷的標(biāo)注存在一定的誤差??墒褂脴?biāo)注軟件對(duì)圖片的標(biāo)注信息進(jìn)行調(diào)整,提高圖片標(biāo)注精度,從而進(jìn)一步提升mAP值。
本文提出了一種基于改進(jìn)YOLOv5算法的鋼材表面缺陷檢測(cè)模型,利用GhostBottleneck結(jié)構(gòu)和DW卷積實(shí)現(xiàn)了網(wǎng)絡(luò)模型的輕量化;引入SE注意力機(jī)制,通過(guò)強(qiáng)化重要的特征來(lái)增強(qiáng)檢測(cè)效果;改進(jìn)了特征融合層結(jié)構(gòu),增加了一個(gè)尺度為10×10的檢測(cè)層,提升了對(duì)部分類別缺陷的檢測(cè)精度。下一步工作將驗(yàn)證模型在不同數(shù)據(jù)集上的訓(xùn)練和檢測(cè)效果,同時(shí)進(jìn)一步優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),提高網(wǎng)絡(luò)的檢測(cè)速度和精度。研究如何將模型部署在移動(dòng)端,在實(shí)際的缺陷檢測(cè)應(yīng)用中對(duì)模型加以完善和改進(jìn) 。