左 旺,陳仲生,李潮林,柳浩鵬
(湖南工業(yè)大學(xué) 電氣與信息工程學(xué)院,湖南 株洲 412007)
隨著中國制造業(yè)的快速發(fā)展,工業(yè)產(chǎn)品的數(shù)量和種類與日俱增。消費者和生產(chǎn)企業(yè)對產(chǎn)品的表面質(zhì)量提出了更高要求,因此產(chǎn)品的表面缺陷視覺檢測已成為質(zhì)檢重要環(huán)節(jié)之一。近年來隨著高性能并行計算技術(shù)的逐漸成熟,機器深度學(xué)習(xí)在表面缺陷檢測領(lǐng)域中取得了成功,逐漸替代了傳統(tǒng)的人工目視檢測方式。由于現(xiàn)階段采用深度學(xué)習(xí)的表面缺陷檢測需要大量的標(biāo)注樣本,將會耗費較大的人力,這極大限制了現(xiàn)有表面缺陷檢測方法的應(yīng)用。而無監(jiān)督學(xué)習(xí)表面缺陷檢測模型僅需要少量的正樣本進(jìn)行訓(xùn)練,已成為更適合于表面缺陷檢測場景的檢測方法[1]。
無監(jiān)督學(xué)習(xí)在表面缺陷檢測方法中,大致可以分為重構(gòu)方法和嵌入向量相似性方法。重構(gòu)網(wǎng)絡(luò)方法是當(dāng)樣本中存在缺陷時,利用生成對抗網(wǎng)絡(luò)生成的重構(gòu)網(wǎng)絡(luò)可以對缺陷進(jìn)行修復(fù),然后將輸入樣本與重構(gòu)樣本進(jìn)行比較,得出準(zhǔn)確的缺陷區(qū)域[2]。嵌入向量相似性方法是使用卷積神經(jīng)網(wǎng)絡(luò)來提取有意義的向量表示整張或局部圖片用以缺陷檢測,使用測試圖像的嵌入向量和代表正常訓(xùn)練集的參考向量之間的距離作為缺陷分?jǐn)?shù)[3]。
目前國內(nèi)外學(xué)者對表面缺陷檢測方法做了大量的研究工作。陳財彪等[4]提出了一種基于LBP(local binary pattern)直方圖和SIFT(scale invariant feature transform)的藥品包裝缺陷檢測方法,在一定程度上減少了運算時間,提高了檢測效率,但該方法沒有實現(xiàn)定位缺陷區(qū)域。董豪等[5]提出了一種基于YOLOv4(you only look once)的缺陷檢測方法,實現(xiàn)了對藥用空心膠囊多類型缺陷的分類與定位,且具有較好的檢測效果和穩(wěn)定性,但仍需大量標(biāo)注樣本訓(xùn)練檢測模型。Wang Y.L.等[6]提出了一種增強重建方法和自監(jiān)督訓(xùn)練策略的無監(jiān)督學(xué)習(xí)方法,該方法使用沒有標(biāo)記的缺陷樣本進(jìn)行訓(xùn)練,在測試階段中重建殘差用于檢測輪胎缺陷,但此方法只能完成二分類缺陷檢測任務(wù)。Wang J.C.等[7]提出了一種無監(jiān)督方法來檢測和定位圖案化紋理表面圖像上的缺陷,利用擴展的深度卷積生成對抗網(wǎng)絡(luò)重建方法,實現(xiàn)對缺陷分割。
綜上所述,目前國內(nèi)外科研人員在表面缺陷視覺檢測方面已經(jīng)取得了豐碩的研究成果。然而工程應(yīng)用中仍存在如下問題:1)基于有監(jiān)督學(xué)習(xí)的表面缺陷檢測方法需要大量的標(biāo)注樣本;2)大多數(shù)無監(jiān)督表面缺陷檢測方法只能對缺陷圖像分類,而無法定位缺陷區(qū)域。為此,本文提出一種基于含注意力機制殘差網(wǎng)絡(luò)的表面缺陷檢測模型,只需少量正樣本進(jìn)行訓(xùn)練,實現(xiàn)基于像素級的缺陷區(qū)域定位,同時在主干網(wǎng)絡(luò)引入注意力機制,能夠有針對性地在圖像數(shù)據(jù)的空間范圍內(nèi)提取有效的特征信息,與已有的方法相比,檢測精度更高,從而可以有效解決少樣本的產(chǎn)品缺陷視覺檢測難題。
為了有針對性地在圖像數(shù)據(jù)的空間范圍內(nèi)提取有效的特征信息,本文將注意力模塊(convolutional block attention module,CBAM)集成到Resnet50 的Bottleneck 結(jié)構(gòu)中,提出一種基于含注意力機制殘差網(wǎng)絡(luò)的表面缺陷檢測模型,如圖1 所示。
圖1 含注意力機制的表面缺陷檢測模型Fig.1 Surface defect detection model with an attention mechanism
由圖1 可知,首先,正樣本的每個Patch 位置都與加入注意力模塊的預(yù)訓(xùn)練網(wǎng)絡(luò)Resnet50_CBAM 中其空間對應(yīng)的激活向量相關(guān)聯(lián),將來自不同層的激活向量連接起來,得到包含來自不同語義層和分辨率信息的嵌入向量。其次,通過降維方法減少嵌入向量的冗余信息。最后,從嵌入向量中學(xué)習(xí)多元高斯參數(shù)用以表示圖片的正常特征[3]。
測試階段的模型框架如圖2 所示,首先,將缺陷圖像通過預(yù)訓(xùn)練網(wǎng)絡(luò)Resnet50_CBAM 計算出嵌入向量;其次,訓(xùn)練階段正樣本的均值和協(xié)方差,通過馬氏距離計算出所有像素點的缺陷分?jǐn)?shù)圖;再次,利用閾值判斷整張圖片每個像素點是否為缺陷,得到預(yù)測掩膜;最后,對缺陷圖像和預(yù)測掩膜采用形態(tài)學(xué)操作,得到缺陷定位圖,實現(xiàn)缺陷的定位。
圖2 模型測試流程Fig.2 Model testing process
CBAM 注意力機制分為兩個獨立的部分,通道注意力模塊和空間注意力模塊。CBAM 注意力機制根據(jù)特征圖實現(xiàn)卷積運算,并利用混合跨通道和空間信息提取信息特征,使提取到的特征更為精煉,增強了模型的表現(xiàn)力。
1.1.1 通道注意力模塊
為了讓輸入的圖像更有意義,利用通道注意力模塊為每個通道分配不同的權(quán)重,讓網(wǎng)絡(luò)關(guān)注重要的特征,抑制不重要的特征,從而提高特征表示能力。通道注意力模塊采用了平均池化(AvgPool)和最大池化(MaxPool)兩種處理方式,分別利用不同的信息,保持通道維度不變,壓縮空間維度,讓模塊關(guān)注輸入特征層中有意義的信息。模型框架如圖3 所示。
圖3 通道注意力模塊示意圖Fig.3 Channel attention module schematic diagram
由圖3 可知,首先,輸入特征層F,經(jīng)過兩個并行的AvgPool和MaxPool將C×H×W的特征圖變成C×1×1 的大?。黄浯?,經(jīng)過一個Shared MLP(共享卷積神經(jīng)網(wǎng)絡(luò)),壓縮通道數(shù)C/r,r為壓縮因子,再擴張回通道數(shù)C,得到兩個激活后的結(jié)果,把得到的兩個特征相加后通過一個Sigmoid激活函數(shù)獲得權(quán)重系數(shù)MC;最后,權(quán)重系數(shù)和原來的特征層F相乘即可獲得縮放后的新特征層F',從而完成通道注意力操作,如式(1)所示[8]。
1.1.2 空間注意力模塊
為了提升圖像關(guān)鍵區(qū)域的特征表達(dá),增強感興趣的特定目標(biāo)區(qū)域,同時弱化不相關(guān)的背景區(qū)域,從而引入空間注意力模塊??臻g注意力模塊保持空間維度不變,壓縮通道維度,該模塊關(guān)注的是目標(biāo)的位置信息。模型框架如圖4 所示。
圖4 空間注意力模塊示意圖Fig.4 Spatial attention module schematic diagram
由圖4 可知,首先,由通道注意力模塊所求出的特征層F',通過AvgPool和MaxPool得到的兩個H×W×1 的特征張量,并把這兩個張量拼接到一起;其次,經(jīng)過一個 7×7 的卷積層(激活函數(shù)為Sigmoid),獲得權(quán)重系數(shù)MS;最后,將權(quán)重系數(shù)和特征相乘即可得到縮放后的新特征層F〞,完成空間注意力操作,如式(2)所示[8]。
本文將CBAM 注意力模塊集成到Resnet50 的Bottleneck 結(jié)構(gòu)中,在每個(1×1,3×3,1×1) 卷積層后加入CBAM 注意力模塊,沿著通道和空間兩個維度依次推斷出注意力權(quán)重,對特征進(jìn)行自適應(yīng)調(diào)整,進(jìn)行端到端的訓(xùn)練,Resnet50_CBAM 網(wǎng)絡(luò)結(jié)構(gòu)如圖5 所示。利用ImageNet 數(shù)據(jù)集對Resnet50_CBAM 網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,得到預(yù)訓(xùn)練權(quán)重。在對本文模型輸入少量的正樣本進(jìn)行訓(xùn)練時,只需加載預(yù)訓(xùn)練權(quán)重并能夠快速完成訓(xùn)練階段。
圖5 Resnet50_CBAM 網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.5 Schematic diagram of Resnet50_CBAM network structure
在訓(xùn)練和測試階段,將圖像的每個patch 關(guān)聯(lián)到預(yù)訓(xùn)練網(wǎng)絡(luò)Resnet50_CBAM,映射其空間對應(yīng)的激活向量。然后將來自不同層次的激活向量連接起來,得到包含不同語義層次和分辨率信息的嵌入向量,從而使得網(wǎng)格中的每個patch 位置都與上面計算的嵌入向量相關(guān)聯(lián)。由于預(yù)訓(xùn)練網(wǎng)絡(luò)層數(shù)較多,嵌入向量可能含有冗余信息,本文采用隨機降維方法進(jìn)行降維。
在訓(xùn)練階段,本文將從少量的N張正樣本中計算出嵌入向量集Xij,如式(3)所示,用以表示正常圖像不同(i,j)位置的特征信息。
式中:k為正樣本數(shù)量;
(i,j)為每個像素塊位置,且
其中W為原圖像寬度;
H為原圖像高度。
本文假設(shè)Xij之間相互獨立,Xij可由多元高斯分布表示,uij為樣本的均值,Cov(i,j)為樣本的協(xié)方差,如式(4)所示。
式中正則化項∈I使得協(xié)方差矩陣滿足可逆條件。
在訓(xùn)練階段計算出正樣本的嵌入向量Xij,從中學(xué)習(xí)多元高斯參數(shù)N(uij,Cov(i,j))用以表示圖片的正常特征。在測試階段中,缺陷圖像通過預(yù)訓(xùn)練網(wǎng)絡(luò)計算出嵌入向量xij。根據(jù)馬氏距離公式可計算出正樣本與缺陷圖像相對應(yīng)每個像素點之間的距離,得到每張測試圖像的缺陷分?jǐn)?shù)圖,如式(5)所示。
式中:uij為正樣本的均值;
xij為缺陷圖像的嵌入向量。
為了驗證本文所提出方法的有效性,本文在MVTec 木地板圖像公開數(shù)據(jù)集進(jìn)行了實驗。實驗環(huán)境為Inter i5 CPU、Nvidia GTX2080GPU、8 GB 內(nèi)存、Python3.7 及Pytorch 框架。木地板的缺陷類型包括油污、鉆洞、褶皺、劃傷等,如圖6 所示。木地板的圖像大小為1 024×1 024×3,本文將圖像切割成224×224×3 大小的木地板圖像塊,使用50 張無缺陷木地板圖像作為訓(xùn)練集,71 張木地板缺陷圖像作為測試集。
圖6 木地板缺陷類型示意圖Fig.6 Different types of defects in wood flooring
為了評估模型對木地板圖像的缺陷檢測性能,本文采用真陽性率TPR、假陽性率FPR、ROCAUC分?jǐn)?shù)以及F1作為評價指標(biāo),如式(6)~(8)所示。
式(6)~(8)中:TP為真正例,表示預(yù)測類別和真實類別都為缺陷像素點(缺陷圖像)的數(shù)量。
TN為真反例,表示預(yù)測類別和真實類別都為正常像素點(正樣本)的數(shù)量。
FP為假正例,表示預(yù)測類別為缺陷像素點(缺陷圖像)而真實類別為正常像素點(正樣本)的數(shù)量。
FN為假負(fù)例,表示預(yù)測類別為正常像素點(正樣本)而真實類別為缺陷像素點(缺陷圖像)的數(shù)量。
ROCAUC分?jǐn)?shù)為計算曲線ROC下AUC的面積,為了更好度量分割缺陷性能,使用像素級ROCAUC(image ROCAUC)和圖像級ROCAUC(pixel ROCAUC)作為評價指標(biāo)之一。
F1為圖像查全率和圖像查準(zhǔn)率的調(diào)和均值,是衡量檢測模型精確度的評價指標(biāo)。
本文輸入圖像的大小為224×224 像素,訓(xùn)練集與測試集的批次大小為26,Patch 尺寸設(shè)置為56×56。由于嵌入向量是由不同層次的激活向量所組成,其中激活向量分別為Resnet50_CBAM 網(wǎng)絡(luò)的第一階段輸出層(Layer1)、第二階段輸出層(Layer2)、第三階段輸出層(Layer3)和第四階段輸出層(Layer4),對應(yīng)輸出維度為(256×56×56),(512×28×28),(1 024×14×14),(2 048×7×7)。為了更好表示不同語義層次的嵌入向量,本文分別使用不同層次的激活向量作為嵌入向量,測試結(jié)果如表1 所示。由表中數(shù)據(jù)可知,前三層輸出相加比前三層任意一層輸出的評價指標(biāo)得分都高,由此可得出,層數(shù)越深具有更高的語義信息,能夠更好的代表正樣本的特征,但將前四層輸出相加的評價指標(biāo)得分比前三層輸出相加要低,是因為第四層維度很深,信息更復(fù)雜,難以特征表示。因此,在本文采用Layer1+2+3 作為超參數(shù)。
從嵌入向量中學(xué)習(xí)多元高斯分布表示圖片正常特征,由于前三層組成的嵌入向量共有1 792 維(256+512+1 024),可能含有冗余信息,本文采用隨機降維方法對嵌入向量降維至某一維度d,減少模型的計算和內(nèi)存復(fù)雜性,并采用F1作為評價指標(biāo),測試結(jié)果如表2 所示。從表2 中可以看出,當(dāng)維度d=550 時模型的F1分?jǐn)?shù)最高。因此,本文采用d=550作為超參數(shù)。
表2 不同維度嵌入向量的測試結(jié)果Table 2 Test results of embedded vectors in different dimensions
本文以50 張木地板正樣本作為訓(xùn)練集,71 張木地板缺陷圖像作為測試集,設(shè)置相同的超參數(shù)。首先使用Resnet50 和Resnet50_CBAM 預(yù)訓(xùn)練網(wǎng)絡(luò)分別進(jìn)行測試,不同預(yù)訓(xùn)練網(wǎng)絡(luò)的測試結(jié)果如表3 所示,可知加入注意力機制模塊網(wǎng)絡(luò)的F1值、image ROCAUC和pixel ROCAUC評價指標(biāo)得分均高于Resnet50 預(yù)訓(xùn)練網(wǎng)絡(luò)的。同時本文對Resnet 101 和Resnet 152 網(wǎng)絡(luò)加入注意力機制模塊,測試結(jié)果表明,各評價指標(biāo)得分都小于Resnet50_CBAM 預(yù)訓(xùn)練網(wǎng)絡(luò)的得分,由此可以得出,加入注意力機制的網(wǎng)絡(luò)能進(jìn)一步提升精度,但網(wǎng)絡(luò)越深、結(jié)構(gòu)越復(fù)雜,注意力機制對網(wǎng)絡(luò)的影響越小。
表3 不同預(yù)訓(xùn)練網(wǎng)絡(luò)的測試結(jié)果Table 3 Test results of different pre-training networks
本文以Resnet50_CBAM 作為預(yù)訓(xùn)練網(wǎng)絡(luò),使用不同批次正樣本數(shù)作為輸入圖像,分別為5,10,20,30,50 個正樣本,不同樣本數(shù)的測試結(jié)果如表4 所示。由表中數(shù)據(jù)可知,以50 個樣本進(jìn)行訓(xùn)練時,測試結(jié)果 的F1值、image ROCAUC和pixel ROCAUC評 價指標(biāo)得分最高,其他批次正樣本數(shù)的評價指標(biāo)得分相比50 個樣本雖然有所降低,但各評價指標(biāo)得分相對較高,沒有大幅度下降,說明本模型適用于少樣本數(shù)的表面缺陷檢測。
表4 不同樣本數(shù)的測試結(jié)果Table 4 Test results under different sample numbers
本文對測試結(jié)果的圖像進(jìn)行可視化檢測,結(jié)果如圖7 所示。由圖7a 所示測試階段輸入的缺陷圖像、圖7b 所示缺陷圖像的真實掩膜、圖7c 所示預(yù)測結(jié)果的熱力圖可以發(fā)現(xiàn),引入注意力機制模塊后特征覆蓋到圖像的缺陷區(qū)域,這表明注意力機制能使網(wǎng)絡(luò)聚焦重點信息;圖7d 為預(yù)測掩膜,對預(yù)測結(jié)果進(jìn)行形態(tài)學(xué)操作的開運算;圖7e 為預(yù)測圖像,并用線框定位缺陷區(qū)域。
圖7 測試結(jié)果Fig.7 Test results
為了評估木地板表面缺陷檢測方法的性能,本文將該方法與已有文獻(xiàn)中的SPAD[9]和PatchCore[10]兩種無監(jiān)督檢測方法進(jìn)行對比分析,設(shè)置相同的超參數(shù)、訓(xùn)練集和測試集數(shù)量,不同算法的測試結(jié)果如表5 所示。由表5 可知,本文方法比其他兩種檢測算法具有更好的檢測效果,其原因在于本文方法融入了注意力機制,能針對性地在圖像數(shù)據(jù)空間范圍內(nèi)提取有效的特征信息,減少了模型對冗余數(shù)據(jù)的處理過程,從空間上改善了模型捕獲圖像數(shù)據(jù)核心特征的能力,從而提升了檢測精度[11]。
表5 不同算法測試結(jié)果比較Table 5 Comparison of test results from different algorithms
本文提出了一種基于正樣本的產(chǎn)品表面缺陷視覺檢測方法。在訓(xùn)練階段,通過預(yù)訓(xùn)練網(wǎng)絡(luò)Resnet50_CBAM 學(xué)習(xí)到包含來自不同語義層和分辨率信息的嵌入向量,并利用多元高斯參數(shù)用以表示圖像的正常特征。在測試階段,將缺陷圖像通過預(yù)訓(xùn)練網(wǎng)絡(luò)學(xué)習(xí)到的嵌入向量和表示正樣本特征的多元高斯參數(shù),通過馬氏距離計算出整張缺陷圖像所有像素點的缺陷分?jǐn)?shù)圖。本文方法將注意力機制加入Resnet50 網(wǎng)絡(luò),能夠有針對性地在圖像數(shù)據(jù)的空間范圍內(nèi)提取有效的特征信息,減少了模型對冗余數(shù)據(jù)的處理過程,從空間上改善了模型捕獲圖像數(shù)據(jù)核心特征的能力,提升了模型的檢測精度。不足之處是本文方法對新的樣本進(jìn)行表面缺陷檢測結(jié)果不是很好,之后將繼續(xù)從提高算法的泛化性方面展開研究。