左 旺,陳仲生,李潮林,柳浩鵬
(湖南工業大學 電氣與信息工程學院,湖南 株洲 412007)
隨著中國制造業的快速發展,工業產品的數量和種類與日俱增。消費者和生產企業對產品的表面質量提出了更高要求,因此產品的表面缺陷視覺檢測已成為質檢重要環節之一。近年來隨著高性能并行計算技術的逐漸成熟,機器深度學習在表面缺陷檢測領域中取得了成功,逐漸替代了傳統的人工目視檢測方式。由于現階段采用深度學習的表面缺陷檢測需要大量的標注樣本,將會耗費較大的人力,這極大限制了現有表面缺陷檢測方法的應用。而無監督學習表面缺陷檢測模型僅需要少量的正樣本進行訓練,已成為更適合于表面缺陷檢測場景的檢測方法[1]。
無監督學習在表面缺陷檢測方法中,大致可以分為重構方法和嵌入向量相似性方法。重構網絡方法是當樣本中存在缺陷時,利用生成對抗網絡生成的重構網絡可以對缺陷進行修復,然后將輸入樣本與重構樣本進行比較,得出準確的缺陷區域[2]。嵌入向量相似性方法是使用卷積神經網絡來提取有意義的向量表示整張或局部圖片用以缺陷檢測,使用測試圖像的嵌入向量和代表正常訓練集的參考向量之間的距離作為缺陷分數[3]。
目前國內外學者對表面缺陷檢測方法做了大量的研究工作。陳財彪等[4]提出了一種基于LBP(local binary pattern)直方圖和SIFT(scale invariant feature transform)的藥品包裝缺陷檢測方法,在一定程度上減少了運算時間,提高了檢測效率,但該方法沒有實現定位缺陷區域。董豪等[5]提出了一種基于YOLOv4(you only look once)的缺陷檢測方法,實現了對藥用空心膠囊多類型缺陷的分類與定位,且具有較好的檢測效果和穩定性,但仍需大量標注樣本訓練檢測模型。Wang Y.L.等[6]提出了一種增強重建方法和自監督訓練策略的無監督學習方法,該方法使用沒有標記的缺陷樣本進行訓練,在測試階段中重建殘差用于檢測輪胎缺陷,但此方法只能完成二分類缺陷檢測任務。Wang J.C.等[7]提出了一種無監督方法來檢測和定位圖案化紋理表面圖像上的缺陷,利用擴展的深度卷積生成對抗網絡重建方法,實現對缺陷分割。
綜上所述,目前國內外科研人員在表面缺陷視覺檢測方面已經取得了豐碩的研究成果。然而工程應用中仍存在如下問題:1)基于有監督學習的表面缺陷檢測方法需要大量的標注樣本;2)大多數無監督表面缺陷檢測方法只能對缺陷圖像分類,而無法定位缺陷區域。為此,本文提出一種基于含注意力機制殘差網絡的表面缺陷檢測模型,只需少量正樣本進行訓練,實現基于像素級的缺陷區域定位,同時在主干網絡引入注意力機制,能夠有針對性地在圖像數據的空間范圍內提取有效的特征信息,與已有的方法相比,檢測精度更高,從而可以有效解決少樣本的產品缺陷視覺檢測難題。
為了有針對性地在圖像數據的空間范圍內提取有效的特征信息,本文將注意力模塊(convolutional block attention module,CBAM)集成到Resnet50 的Bottleneck 結構中,提出一種基于含注意力機制殘差網絡的表面缺陷檢測模型,如圖1 所示。

圖1 含注意力機制的表面缺陷檢測模型Fig.1 Surface defect detection model with an attention mechanism
由圖1 可知,首先,正樣本的每個Patch 位置都與加入注意力模塊的預訓練網絡Resnet50_CBAM 中其空間對應的激活向量相關聯,將來自不同層的激活向量連接起來,得到包含來自不同語義層和分辨率信息的嵌入向量。其次,通過降維方法減少嵌入向量的冗余信息。最后,從嵌入向量中學習多元高斯參數用以表示圖片的正常特征[3]。
測試階段的模型框架如圖2 所示,首先,將缺陷圖像通過預訓練網絡Resnet50_CBAM 計算出嵌入向量;其次,訓練階段正樣本的均值和協方差,通過馬氏距離計算出所有像素點的缺陷分數圖;再次,利用閾值判斷整張圖片每個像素點是否為缺陷,得到預測掩膜;最后,對缺陷圖像和預測掩膜采用形態學操作,得到缺陷定位圖,實現缺陷的定位。

圖2 模型測試流程Fig.2 Model testing process
CBAM 注意力機制分為兩個獨立的部分,通道注意力模塊和空間注意力模塊。CBAM 注意力機制根據特征圖實現卷積運算,并利用混合跨通道和空間信息提取信息特征,使提取到的特征更為精煉,增強了模型的表現力。
1.1.1 通道注意力模塊
為了讓輸入的圖像更有意義,利用通道注意力模塊為每個通道分配不同的權重,讓網絡關注重要的特征,抑制不重要的特征,從而提高特征表示能力。通道注意力模塊采用了平均池化(AvgPool)和最大池化(MaxPool)兩種處理方式,分別利用不同的信息,保持通道維度不變,壓縮空間維度,讓模塊關注輸入特征層中有意義的信息。模型框架如圖3 所示。

圖3 通道注意力模塊示意圖Fig.3 Channel attention module schematic diagram
由圖3 可知,首先,輸入特征層F,經過兩個并行的AvgPool和MaxPool將C×H×W的特征圖變成C×1×1 的大小;其次,經過一個Shared MLP(共享卷積神經網絡),壓縮通道數C/r,r為壓縮因子,再擴張回通道數C,得到兩個激活后的結果,把得到的兩個特征相加后通過一個Sigmoid激活函數獲得權重系數MC;最后,權重系數和原來的特征層F相乘即可獲得縮放后的新特征層F',從而完成通道注意力操作,如式(1)所示[8]。

1.1.2 空間注意力模塊
為了提升圖像關鍵區域的特征表達,增強感興趣的特定目標區域,同時弱化不相關的背景區域,從而引入空間注意力模塊。空間注意力模塊保持空間維度不變,壓縮通道維度,該模塊關注的是目標的位置信息。模型框架如圖4 所示。

圖4 空間注意力模塊示意圖Fig.4 Spatial attention module schematic diagram
由圖4 可知,首先,由通道注意力模塊所求出的特征層F',通過AvgPool和MaxPool得到的兩個H×W×1 的特征張量,并把這兩個張量拼接到一起;其次,經過一個 7×7 的卷積層(激活函數為Sigmoid),獲得權重系數MS;最后,將權重系數和特征相乘即可得到縮放后的新特征層F〞,完成空間注意力操作,如式(2)所示[8]。

本文將CBAM 注意力模塊集成到Resnet50 的Bottleneck 結構中,在每個(1×1,3×3,1×1) 卷積層后加入CBAM 注意力模塊,沿著通道和空間兩個維度依次推斷出注意力權重,對特征進行自適應調整,進行端到端的訓練,Resnet50_CBAM 網絡結構如圖5 所示。利用ImageNet 數據集對Resnet50_CBAM 網絡進行預訓練,得到預訓練權重。在對本文模型輸入少量的正樣本進行訓練時,只需加載預訓練權重并能夠快速完成訓練階段。

圖5 Resnet50_CBAM 網絡結構示意圖Fig.5 Schematic diagram of Resnet50_CBAM network structure
在訓練和測試階段,將圖像的每個patch 關聯到預訓練網絡Resnet50_CBAM,映射其空間對應的激活向量。然后將來自不同層次的激活向量連接起來,得到包含不同語義層次和分辨率信息的嵌入向量,從而使得網格中的每個patch 位置都與上面計算的嵌入向量相關聯。由于預訓練網絡層數較多,嵌入向量可能含有冗余信息,本文采用隨機降維方法進行降維。
在訓練階段,本文將從少量的N張正樣本中計算出嵌入向量集Xij,如式(3)所示,用以表示正常圖像不同(i,j)位置的特征信息。

式中:k為正樣本數量;
(i,j)為每個像素塊位置,且

其中W為原圖像寬度;
H為原圖像高度。
本文假設Xij之間相互獨立,Xij可由多元高斯分布表示,uij為樣本的均值,Cov(i,j)為樣本的協方差,如式(4)所示。

式中正則化項∈I使得協方差矩陣滿足可逆條件。
在訓練階段計算出正樣本的嵌入向量Xij,從中學習多元高斯參數N(uij,Cov(i,j))用以表示圖片的正常特征。在測試階段中,缺陷圖像通過預訓練網絡計算出嵌入向量xij。根據馬氏距離公式可計算出正樣本與缺陷圖像相對應每個像素點之間的距離,得到每張測試圖像的缺陷分數圖,如式(5)所示。

式中:uij為正樣本的均值;
xij為缺陷圖像的嵌入向量。
為了驗證本文所提出方法的有效性,本文在MVTec 木地板圖像公開數據集進行了實驗。實驗環境為Inter i5 CPU、Nvidia GTX2080GPU、8 GB 內存、Python3.7 及Pytorch 框架。木地板的缺陷類型包括油污、鉆洞、褶皺、劃傷等,如圖6 所示。木地板的圖像大小為1 024×1 024×3,本文將圖像切割成224×224×3 大小的木地板圖像塊,使用50 張無缺陷木地板圖像作為訓練集,71 張木地板缺陷圖像作為測試集。

圖6 木地板缺陷類型示意圖Fig.6 Different types of defects in wood flooring
為了評估模型對木地板圖像的缺陷檢測性能,本文采用真陽性率TPR、假陽性率FPR、ROCAUC分數以及F1作為評價指標,如式(6)~(8)所示。

式(6)~(8)中:TP為真正例,表示預測類別和真實類別都為缺陷像素點(缺陷圖像)的數量。
TN為真反例,表示預測類別和真實類別都為正常像素點(正樣本)的數量。
FP為假正例,表示預測類別為缺陷像素點(缺陷圖像)而真實類別為正常像素點(正樣本)的數量。
FN為假負例,表示預測類別為正常像素點(正樣本)而真實類別為缺陷像素點(缺陷圖像)的數量。
ROCAUC分數為計算曲線ROC下AUC的面積,為了更好度量分割缺陷性能,使用像素級ROCAUC(image ROCAUC)和圖像級ROCAUC(pixel ROCAUC)作為評價指標之一。
F1為圖像查全率和圖像查準率的調和均值,是衡量檢測模型精確度的評價指標。
本文輸入圖像的大小為224×224 像素,訓練集與測試集的批次大小為26,Patch 尺寸設置為56×56。由于嵌入向量是由不同層次的激活向量所組成,其中激活向量分別為Resnet50_CBAM 網絡的第一階段輸出層(Layer1)、第二階段輸出層(Layer2)、第三階段輸出層(Layer3)和第四階段輸出層(Layer4),對應輸出維度為(256×56×56),(512×28×28),(1 024×14×14),(2 048×7×7)。為了更好表示不同語義層次的嵌入向量,本文分別使用不同層次的激活向量作為嵌入向量,測試結果如表1 所示。由表中數據可知,前三層輸出相加比前三層任意一層輸出的評價指標得分都高,由此可得出,層數越深具有更高的語義信息,能夠更好的代表正樣本的特征,但將前四層輸出相加的評價指標得分比前三層輸出相加要低,是因為第四層維度很深,信息更復雜,難以特征表示。因此,在本文采用Layer1+2+3 作為超參數。
從嵌入向量中學習多元高斯分布表示圖片正常特征,由于前三層組成的嵌入向量共有1 792 維(256+512+1 024),可能含有冗余信息,本文采用隨機降維方法對嵌入向量降維至某一維度d,減少模型的計算和內存復雜性,并采用F1作為評價指標,測試結果如表2 所示。從表2 中可以看出,當維度d=550 時模型的F1分數最高。因此,本文采用d=550作為超參數。

表2 不同維度嵌入向量的測試結果Table 2 Test results of embedded vectors in different dimensions
本文以50 張木地板正樣本作為訓練集,71 張木地板缺陷圖像作為測試集,設置相同的超參數。首先使用Resnet50 和Resnet50_CBAM 預訓練網絡分別進行測試,不同預訓練網絡的測試結果如表3 所示,可知加入注意力機制模塊網絡的F1值、image ROCAUC和pixel ROCAUC評價指標得分均高于Resnet50 預訓練網絡的。同時本文對Resnet 101 和Resnet 152 網絡加入注意力機制模塊,測試結果表明,各評價指標得分都小于Resnet50_CBAM 預訓練網絡的得分,由此可以得出,加入注意力機制的網絡能進一步提升精度,但網絡越深、結構越復雜,注意力機制對網絡的影響越小。

表3 不同預訓練網絡的測試結果Table 3 Test results of different pre-training networks
本文以Resnet50_CBAM 作為預訓練網絡,使用不同批次正樣本數作為輸入圖像,分別為5,10,20,30,50 個正樣本,不同樣本數的測試結果如表4 所示。由表中數據可知,以50 個樣本進行訓練時,測試結果 的F1值、image ROCAUC和pixel ROCAUC評 價指標得分最高,其他批次正樣本數的評價指標得分相比50 個樣本雖然有所降低,但各評價指標得分相對較高,沒有大幅度下降,說明本模型適用于少樣本數的表面缺陷檢測。

表4 不同樣本數的測試結果Table 4 Test results under different sample numbers
本文對測試結果的圖像進行可視化檢測,結果如圖7 所示。由圖7a 所示測試階段輸入的缺陷圖像、圖7b 所示缺陷圖像的真實掩膜、圖7c 所示預測結果的熱力圖可以發現,引入注意力機制模塊后特征覆蓋到圖像的缺陷區域,這表明注意力機制能使網絡聚焦重點信息;圖7d 為預測掩膜,對預測結果進行形態學操作的開運算;圖7e 為預測圖像,并用線框定位缺陷區域。

圖7 測試結果Fig.7 Test results
為了評估木地板表面缺陷檢測方法的性能,本文將該方法與已有文獻中的SPAD[9]和PatchCore[10]兩種無監督檢測方法進行對比分析,設置相同的超參數、訓練集和測試集數量,不同算法的測試結果如表5 所示。由表5 可知,本文方法比其他兩種檢測算法具有更好的檢測效果,其原因在于本文方法融入了注意力機制,能針對性地在圖像數據空間范圍內提取有效的特征信息,減少了模型對冗余數據的處理過程,從空間上改善了模型捕獲圖像數據核心特征的能力,從而提升了檢測精度[11]。

表5 不同算法測試結果比較Table 5 Comparison of test results from different algorithms
本文提出了一種基于正樣本的產品表面缺陷視覺檢測方法。在訓練階段,通過預訓練網絡Resnet50_CBAM 學習到包含來自不同語義層和分辨率信息的嵌入向量,并利用多元高斯參數用以表示圖像的正常特征。在測試階段,將缺陷圖像通過預訓練網絡學習到的嵌入向量和表示正樣本特征的多元高斯參數,通過馬氏距離計算出整張缺陷圖像所有像素點的缺陷分數圖。本文方法將注意力機制加入Resnet50 網絡,能夠有針對性地在圖像數據的空間范圍內提取有效的特征信息,減少了模型對冗余數據的處理過程,從空間上改善了模型捕獲圖像數據核心特征的能力,提升了模型的檢測精度。不足之處是本文方法對新的樣本進行表面缺陷檢測結果不是很好,之后將繼續從提高算法的泛化性方面展開研究。