時造雄,茅正沖
(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無錫 214000)
中國是世界上最大的布匹生產(chǎn)國,布匹瑕疵的識別與檢測在生產(chǎn)過程中是十分重要的一個環(huán)節(jié),傳統(tǒng)的布匹瑕疵檢測與識別是通過人工的方式進(jìn)行的,存在受主觀影響較大、檢測效率低下等問題。近年來,隨著計算機算力的突破,深度學(xué)習(xí)技術(shù)發(fā)展迅猛,在工業(yè)生產(chǎn)的瑕疵檢測領(lǐng)域已經(jīng)產(chǎn)生了越來越多的應(yīng)用。
目前主流的目標(biāo)檢測算法分為單階段和雙階段兩種類型,單階段算法以SSD(single shot multibox detector)和YOLO(you only look once)為典型,而雙階段則以Faster R-CNN(faster region-CNN)網(wǎng)絡(luò)為主[1]。
在針對花色布匹的瑕疵檢測上,文獻(xiàn)[2]在Faster R-CNN網(wǎng)絡(luò)模型的基礎(chǔ)上進(jìn)行改進(jìn),提升了對較小目標(biāo)瑕疵的檢出能力及復(fù)雜背景下的瑕疵檢出能力,但仍存在速度不足的缺陷[2];文獻(xiàn)[3]提出了雙路高分辨轉(zhuǎn)換網(wǎng)絡(luò)的花色布匹瑕疵檢測方法,消除復(fù)雜花色背景的影響并且解決了少數(shù)類瑕疵樣本準(zhǔn)確率不高的問題,該模型存在對小目標(biāo)瑕疵的檢測優(yōu)化不足的明顯短板,整體精度較低[3];文獻(xiàn)[4]提出基于級聯(lián)卷積神經(jīng)網(wǎng)絡(luò)的復(fù)雜花色布匹瑕疵檢測算法,該算法一定程度上改善了對瑕疵檢測的速度和精度要求[4];文獻(xiàn)[5]提出基于深度卷積神經(jīng)網(wǎng)絡(luò)的分類不平衡紋理布匹瑕疵檢測方法,能有效減輕瑕疵種類分布不均對模型的影響,且降低了模型對部分瑕疵較少的不敏感性,但該模型的精度表現(xiàn)一般,仍有待改善[5]。綜上所述之前國內(nèi)外得研究并不能滿足精度和速度的雙重要求。
在以上研究的基礎(chǔ)上,本文主要在YOLOv5網(wǎng)絡(luò)基礎(chǔ)上進(jìn)行改進(jìn),提出了DD-YOLOv5(defect detection YOLOv5)瑕疵檢測模型,首先將CoTNet與YOLOv5模型相結(jié)合,用于指導(dǎo)動態(tài)注意力矩陣的學(xué)習(xí),增強視覺表示能力;其次引入CBAM(convolutional block attention module)注意力機制,讓網(wǎng)絡(luò)學(xué)會關(guān)注重點信息;接著使用α-IoU損失函數(shù)代替原網(wǎng)絡(luò)中G-IoU損失函數(shù),提高邊界框的回歸精度;最后增加檢測頭,提升網(wǎng)絡(luò)對小目標(biāo)的檢測能力。經(jīng)實驗證明,改進(jìn)后的網(wǎng)絡(luò)能同時解決上述文章中提出的花色布匹瑕疵檢測的如瑕疵目標(biāo)小、種類分布不均、長寬比較為極端以及易與背景混淆等檢測難點,且在速度上優(yōu)于其它算法,表明該方法在花色布匹瑕疵檢測任務(wù)中具有良好的檢測性能。
YOLOv5系列網(wǎng)絡(luò)整體沿用系列網(wǎng)絡(luò)整體布局,主要由Backbone(主干)、Neck(頸部)、Head(頭部)3個部分組成,其結(jié)構(gòu)如圖1所示。
圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)圖
YOLOv5目標(biāo)檢測網(wǎng)絡(luò)的主干部分主要用于提取圖像淺層和深層的各項特征并整合。
主干部分中CSP1模塊主要借鑒了殘差網(wǎng)絡(luò)的思想,由殘差映射替換了以往的基礎(chǔ)映射,使得深層次的網(wǎng)絡(luò)模型達(dá)到更好的訓(xùn)練效果,在殘差網(wǎng)絡(luò)出現(xiàn)之前,學(xué)術(shù)界往往認(rèn)為網(wǎng)絡(luò)層數(shù)越深則獲取信息越多,模型泛化效果越好。然而后續(xù)的研究表明當(dāng)網(wǎng)絡(luò)的層數(shù)加深時,模型的準(zhǔn)確率反而有所降低。這是由于反向傳播過程中的梯度爆炸和梯度消失所造成。也就是說,網(wǎng)絡(luò)越深,模型越難優(yōu)化。為了能讓深層次的網(wǎng)絡(luò)模型達(dá)到更好的訓(xùn)練效果,殘差網(wǎng)絡(luò)中提出由殘差映射替換了以往的基礎(chǔ)映射。
SPPF模塊主要作用是對高層特征進(jìn)行提取并融合,在融合的過程中多次運用最大池化,盡可能多地去提取高層次的語義特征。
頸部網(wǎng)絡(luò)的主要作用是將主干網(wǎng)絡(luò)提取的淺層和深層信息加強并融合。該部分采用的是特征金字塔網(wǎng)絡(luò)(FPN,feature pyramid network)結(jié)合路徑聚合網(wǎng)絡(luò)(PAN,path aggregation network)的設(shè)計[6-7]。金字塔結(jié)構(gòu)是一種自頂向下的側(cè)邊連接,在所有尺度上構(gòu)建出高級語義特征圖的結(jié)構(gòu),該結(jié)構(gòu)經(jīng)過多層的網(wǎng)絡(luò)后,底層的目標(biāo)信息已經(jīng)非常模糊了,因此網(wǎng)絡(luò)在頸部又結(jié)合了路徑聚合網(wǎng)絡(luò),加入了自底向上的路線,彌補并加強了定位信息[8]。
檢測頭部分主要包括不同的損失函數(shù)。其主要目標(biāo)是通過降低預(yù)測框和真實框的損失函數(shù)來獲得最佳的目標(biāo)檢測框[9]。
本文提出的DD-YOLOv5模型結(jié)構(gòu)如圖2所示。
圖2 DD-YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)圖
通過圖2可知,與原生網(wǎng)絡(luò)相比,本文網(wǎng)絡(luò)主要改進(jìn)點為:首先用CoT3模塊代替原有CSP1模塊,主要考慮CoT模塊能夠充分利用輸入信息上下文的特點,以克服布匹瑕疵檢測中大部分瑕疵為較小目標(biāo)的難點[10];其次在頸部網(wǎng)絡(luò)中引入CBAM注意力機制,在骨干網(wǎng)絡(luò)后進(jìn)一步加強針對特征的信息篩選;最后在網(wǎng)絡(luò)的檢測層處,算法增加了一個檢測頭,使檢測頭覆蓋更大的檢測范圍,網(wǎng)絡(luò)能夠更加全面的關(guān)注到想要的信息。
Transformer的出現(xiàn)極大地促進(jìn)了自然語言處理領(lǐng)域的發(fā)展,該風(fēng)格的網(wǎng)絡(luò)架構(gòu)近期在計算機視覺領(lǐng)域也掀起了一波浪潮并取得了極具競爭力的結(jié)果[11]。盡管如此,現(xiàn)有的架構(gòu)直接在二維特征圖上執(zhí)行自注意力并得到注意力矩陣,但是關(guān)于近鄰豐富的上下文信息卻并未得到充分探索。
CoT模塊是一種能夠充分利用二維特征圖上下文信息的注意力機構(gòu),其結(jié)構(gòu)如圖3所示。
圖3 CoT模塊
本文中所提到的CoTNet結(jié)構(gòu)由CoT模塊代替主干網(wǎng)絡(luò)中的CSP1模塊而組成。
由圖3可知假設(shè)輸入二維特征X∈RH×W×C,而鍵向量K, 輸入特征Q以及值向量V分別定義為:
K=X,Q=X,V=XWv
(1)
其中:Wv是指將X進(jìn)行了特征的映射得到新的V。CoT模塊首先采用k×k卷積提取上下文信息,所得K1∈RH×W×C自然地可以反應(yīng)近鄰間的上下文信息,我們將其視作輸入X的靜態(tài)上下文表達(dá)。將前述所得K1與Q進(jìn)行拼接并通過兩個連續(xù)1×1卷積Wθ和Wδ來計算并得到注意力矩陣A:
A=[K1,Q]WθWδ
(2)
接下來,基于上述所得注意力矩陣A和值向量V,我們生成增強特征K2:
K2=V*A
(3)
上述所得增強特征K2可以捕獲關(guān)于輸入的動態(tài)特征交互,我們將其稱之為輸入X的動態(tài)上下文表達(dá)。最后將上述兩種上下文表達(dá)通過注意力機制融合即可得到CoT模塊的輸出。
CoT模塊能將上下文信息挖掘與自注意力學(xué)習(xí)集成到統(tǒng)一架構(gòu)中,充分探索近鄰間的上下文信息以一種高效方式提升自注意力學(xué)習(xí),進(jìn)而提升輸出特征的表達(dá)能力,提升了視覺表達(dá)能力。本文在DD-YOLOv5 模型的主干網(wǎng)絡(luò)中多次應(yīng)用該模塊,有利于模型對圖像深淺特征的全局提取,重點信息可以被加強,從而使花色布匹瑕疵中占比較多的瑕疵的全局特征能夠得到加強。
在花色布匹瑕疵檢測的過程中,部分瑕疵目標(biāo)僅占幾個像素點,部分瑕疵與背景極為相似,這些瑕疵的特征信息極易在深層網(wǎng)絡(luò)中丟失,很容易出現(xiàn)漏檢、錯檢。而CBAM注意力機制可有效增大小目標(biāo)在整張?zhí)卣鲌D中的權(quán)重,使得各種瑕疵信息更容易在網(wǎng)絡(luò)中學(xué)習(xí)到[12]。其結(jié)構(gòu)如圖4所示。
由圖可知,CBAM模塊包括通道注意力模塊和空間注意力模塊兩個子模塊。
首先利用通道注意力模塊來生成通道注意圖,特征圖的每個通道都被認(rèn)為是一個特征檢測器,因此通道的注意力能夠集中在給定輸入圖像中有意義的部分;在該模塊中,為了有效地計算通道注意力,采用壓縮輸入特征映射的空間維度的方法,即同時使用平均池化和最大池化的方法,這種做法比單獨使用一種池化方法更具有表征力。
此時將通道注意力模塊的輸出作為空間注意力模塊的輸入,然后利用空間注意力模塊去生成空間注意圖;與通道注意模塊不同的是,空間注意模塊更加關(guān)注的是信息的位置去作為通道注意模塊的補充;為了計算空間注意力,需要在通道中使用平均池化和最大池化操作,將它們連接起來以生成一個有效的特征描述符,然后使用兩個池化操作聚合一個特征圖的通道信息,生成兩個二維的特征圖,這兩個特征圖分別表示了通道的平均池化特性和最大池化特性,然后利用一個標(biāo)準(zhǔn)的卷積層進(jìn)行連接和卷積操作,得到最終需要的二維空間注意力圖。
這樣一來CBAM模塊可同時關(guān)注空間和通道信息,使得提取到的高層特征更全面更豐富[13-14]。
邊界框(Bbox,bounding box)是目標(biāo)檢測中用于框選出待檢測目標(biāo)的一個方框,一個目標(biāo)檢測器通常由邊界框回歸和一個分類回歸組成[15]。
早期的目標(biāo)檢測工作使用n范數(shù)損失函數(shù)進(jìn)行邊界框回歸,這種方法對邊界框的大小極為敏感,交并比 (IoU,intersection over union)損失函數(shù)的出現(xiàn)彌補了這一缺陷。與n范數(shù)損失函數(shù)相比,IoU損失函數(shù)對邊界框的尺度是不變的。然而,當(dāng)預(yù)測框與邊界框的真實值不重疊時,IoU損失會出現(xiàn)梯度消失問題,導(dǎo)致收斂速度減慢,進(jìn)而導(dǎo)致檢測器不準(zhǔn)確。這激發(fā)了幾種改進(jìn)的基于IoU的損失函數(shù)設(shè)計,包括GIoU (generalized IoU)、DIoU (distance IoU)和CIoU (complete IoU)。YOLOv5原本采用的損失函數(shù)為Loss_GIoU,當(dāng)預(yù)測的邊界框在真實的邊界框內(nèi)部時,GIoU無法判斷出正確的最小邊界框[16]。
在花色布匹瑕疵檢測中有部分瑕疵長寬比較為極端,處理不當(dāng)極容易出現(xiàn)漏檢情況,采用更有效的邊界框損失函數(shù)此時顯得尤為重要。為解決該問題,本文引入α-IoU予以改進(jìn),在原有的基礎(chǔ)上更加關(guān)注高IoU目標(biāo),能夠優(yōu)化所有層次的目標(biāo),實現(xiàn)不同水平的檢測框回歸精度[16]。Lossα-IoU的公式如下所示:
(4)
通過對Lossα-IoU中的參數(shù)α進(jìn)行調(diào)制,可以推導(dǎo)出現(xiàn)有的大多數(shù)IoU。本文中采用目前常用效果最好的LossCIoU改進(jìn)為Lossα-IoU,其定義如下所示:
(5)
其中:c代表的是能夠同時包含預(yù)測框和真實框的最小閉包區(qū)域的對角線距離,而v衡量長寬比的一致性,其定義如公式(6);β是一個正的權(quán)衡參數(shù),其數(shù)值如式(7),ρ2α(b,bgt)分別代表了預(yù)測框和真實框的中心點的歐式距離。
(6)
(7)
本文改進(jìn)的算法在檢測頭部分增加了一個低維且高分辨率的檢測頭,該檢測頭主要是用來處理難以檢測的小目標(biāo)部分[18]。
增加的檢測頭由低層高分辨率的特征圖生成,當(dāng)網(wǎng)絡(luò)的輸入圖像尺寸為960*960時,原算法中的3個檢測頭對應(yīng)的特征圖大小分別為120*120,60*60,30*30,而增加的檢測頭特征圖大小為240*240,該檢測頭能充分利用到淺層特征信息,明顯降低卷積帶來的小目標(biāo)區(qū)域特征信息丟失的影響,雖然在計算量上有所增加,但能明顯改善小目標(biāo)的檢測精度[19-20]。
本文選用的數(shù)據(jù)采集自佛山南海紡織車間,共計2 739張含有瑕疵的圖片,其中2 122張作為訓(xùn)練集,617張作為測試集。圖片中包括沾污、錯花、水印、花毛、縫頭、縫頭印、蟲粘、破洞、褶子、織疵、漏印、蠟斑、色差、網(wǎng)折共計14種瑕疵類型,圖5為瑕疵數(shù)量圖,沾污這種瑕疵的占比超過80%,種類分布極其不均衡。
圖5 瑕疵數(shù)量
圖6分別為小目標(biāo)瑕疵、長寬比極端瑕疵、與背景及其相似的瑕疵展示。
本文主要針對圖6中3種瑕疵檢測中的難點問題搭建檢測平臺,并使用改進(jìn)后的算法進(jìn)行檢測。
本文硬件配置環(huán)境如表1所示。
表1 實驗環(huán)境
圖7為多種瑕疵實際檢測效果圖的典型瑕疵檢測細(xì)節(jié)圖的展示。
圖7 部分瑕疵檢測實際效果
通過以上實際檢測效果圖可以發(fā)現(xiàn),在本文的算法下,對布匹瑕疵的檢測效果已經(jīng)可以達(dá)到工業(yè)現(xiàn)場級別的要求,且大部分的瑕疵檢測識別率更是在0.9以上。可以充分說明本文算法在針對花色布匹的瑕疵檢測上效果卓然。
本文中引入以下評估標(biāo)準(zhǔn)評估模型性能:
精確率(P,precision)又稱查準(zhǔn)率,指正確預(yù)測為正占全部預(yù)測為正的比例,如式(8)所示:
(8)
召回率(R,recall)又稱查全率,指正確預(yù)測為正占全部實際為正的比例,如式(9)所示:
(9)
平均精度(AP,average precision,)由精確率和召回率計算得出,根據(jù)召回率值繪出精確率的折線圖,計算出該折線下的面積,如式(10)所示:
(10)
平均精度均值(mAP,mean average precision)是指C個不同缺陷的平均精度AP的平均值,如式(11)所示:
(11)
為驗證本研究提出的關(guān)于 YOLOv5 的4種改進(jìn)策略,在數(shù)據(jù)集上展開消融試驗,以判斷每個改進(jìn)點的有效性,依次在原有模型基礎(chǔ)上加上改進(jìn)措施,使用改進(jìn)用“√”表示,未使用改進(jìn)則表格為空。訓(xùn)練過程使用相同的參數(shù)配置,結(jié)果如表 2 所示。
表2 消融實驗結(jié)果
消融實驗以原生YOLOv5網(wǎng)絡(luò)模型為基準(zhǔn),輸入圖像分辨率均為960*960。
通過表2中第1組和第2組的實驗對比,可以發(fā)現(xiàn)當(dāng)檢測層由三層增加到四層,mAP由71.1%升到了75.6%,結(jié)果表明增加的針對小目標(biāo)的提取淺層信息的檢測頭起到了顯著效果,很明顯的降低了漏檢率。
通過第2組和第3組對比,當(dāng)網(wǎng)絡(luò)中增加了CoT模塊形成CoTNet后,mAP由75.6%提升到77.4%,主要原因是因為CoT模塊能多挖掘網(wǎng)絡(luò)中的上下文信息,進(jìn)而對圖像深淺特征進(jìn)行全局提取,這一舉動雖然損失了較小的檢測速率,但能顯著提高對目標(biāo)的檢測準(zhǔn)確率。
通過第3組與第4組實驗對比顯示,在頸部網(wǎng)絡(luò)增加了CBAM模塊的網(wǎng)絡(luò)mAP值從77.4%提升到79.3%,表明CBAM模塊能夠更多地關(guān)注有用的信息,提高對重點瑕疵如沾污的識別率。
通過第4組與第5組的實驗數(shù)據(jù)對比,瑕疵識別的mAP值由79.3%提升到了80.0%,說明在引入了新的邊界框損失函數(shù)后,檢測器能更好地進(jìn)行邊界框的回歸,從而使得長寬比極端的瑕疵的漏檢率下降。
綜合上述可知,在結(jié)合了多種針對YOLOv5算法的改進(jìn)措施后,本文的算法能夠在布匹瑕疵的專項檢測中取得較好的效果,充分說明上述改進(jìn)措施在實際檢測中是有實際成效的。
圖8和圖9為原生算法和改進(jìn)后算法的損失函數(shù)收斂情況。
圖8 原生網(wǎng)絡(luò)損失函數(shù)收斂曲線
圖9 改進(jìn)后網(wǎng)絡(luò)損失函數(shù)收斂曲線
其中實線為定位損失box_loss,指預(yù)測框與標(biāo)定框之間的誤差,點劃線為置信度損失obj_loss,用于計算網(wǎng)絡(luò)的置信度,虛線為分類損失cls_loss,用于計算錨框與對應(yīng)的標(biāo)定分類是否正確。
通過兩圖對比可發(fā)現(xiàn)定位損失由明顯下降,這是由于算法中使用α-IoU代替原網(wǎng)絡(luò)中的G-IoU交并比計算方法,進(jìn)而使得另外兩種損失也跟著有所下降,網(wǎng)絡(luò)整體收斂更快,效果更好。
為了證明DD-YOLOv5網(wǎng)絡(luò)模型在花色布匹表面瑕疵檢測方面的優(yōu)勢,我們將其與目前幾種主流的目標(biāo)檢測算法進(jìn)行了對比,其對比結(jié)果如表3所示。
表3 對比實驗結(jié)果
從表3中可以得知,F(xiàn)aster-RCNN網(wǎng)絡(luò)在精確率方面不高,但召回率卻是最高,這是因為雙階段網(wǎng)絡(luò)結(jié)構(gòu)采用候選框機制遍歷特征圖,故能將圖中的目標(biāo)較齊全的檢測到,但這也同樣會使得二階段網(wǎng)絡(luò)計算量較大故而速度較慢,僅能達(dá)到22.4幀的速度。而同樣作為單階段目標(biāo)檢測的SSD網(wǎng)絡(luò)雖然在檢測速率上與YOLO系列沒有過大的差距,但是在檢測精度上,無論是精確率還是召回率,比起YOLO系列都差距較大,原因在于SSD的主干網(wǎng)絡(luò)為VGG系列網(wǎng)絡(luò),網(wǎng)絡(luò)層數(shù)較低,深層特征提取不全,針對花色布匹瑕疵的檢測效果較差。
同為YOLO系列的YOLOv4算法,比起YOLOv5系列算法在檢測精度上看來差距不大,僅小幅度落后于YOLOv5系列算法,但YOLOv4算法在檢測速度上比起YOLOv5系列網(wǎng)絡(luò)存在一定差距。
改進(jìn)后的DD-YOLOv5由于增加了針對小目標(biāo)檢測的檢測頭以及其他的改進(jìn)措施,使得整個網(wǎng)絡(luò)的復(fù)雜程度有所提高,相應(yīng)的在速度上有所損失,檢測速率為73.6 Hz,比原生YOLOv5算法的75.2 Hz降低了2%,但在精度綜合評估標(biāo)準(zhǔn)的mAP值上,本文算法比原生YOLOv5算法有著12.5%的檢測精度提升,故綜合精度和速度兩方面,本文算法在眾多算法中取得了較大的優(yōu)勢。
總之,本文提出的DD-YOLOv5算法在速度和精度的綜合考慮下獲得了最佳效果,比起經(jīng)典算法性能更好,相比同系列YOLO其他算法表現(xiàn)也最為優(yōu)異。
為了解決花色布匹瑕疵檢測問題,進(jìn)一步提高花色布匹表面瑕疵檢測的準(zhǔn)確率和識別速度,本文提出了一種基于YOLOv5的DD-YOLOv5模型,使用COT模塊替代CSP1模塊形成CoTNet并作為主干網(wǎng)絡(luò),利用輸入的上下文信息來指導(dǎo)自注意力機制的學(xué)習(xí),能夠?qū)D像深淺特征進(jìn)行全局提取,提升目標(biāo)檢測的準(zhǔn)確率,同時在頸部網(wǎng)絡(luò)中引入CBAM注意力機制,能同時關(guān)注空間和通道信息,促使專注于有用的目標(biāo)對象,在檢測頭部分還增加了一個關(guān)注于小目標(biāo)的檢測頭,明顯改善了網(wǎng)絡(luò)的精度,降低了漏檢率,最后用α-IoU替代原G-IoU交并比計算方法,使得網(wǎng)絡(luò)整體收斂更快,檢測效果更好。
通過實驗結(jié)果證明,DD-YOLOv5網(wǎng)絡(luò)模型在花色布匹瑕疵的數(shù)據(jù)集上mAP達(dá)到了80.0%,檢測速度也達(dá)到73.6fps,同時滿足了檢測精度和檢測效率的要求,對花色布匹瑕疵檢測具有重要的現(xiàn)實意義。今后將進(jìn)一步嘗試不損失精度的前提下繼續(xù)減小網(wǎng)絡(luò)模型的參數(shù)量,使模型得到進(jìn)一步的輕量化。