江培營 陶青川 艾夢琴
(四川大學電子信息學院 四川 成都 610065)
鋼板生產是國家重工業的基礎,近些年鋼板生產的質量要求越來越高,除了要求滿足使用性能外,還要有良好的外觀,即良好的表面質量。在鋼板生產制造過程中由于工藝技術的不成熟,往往會伴隨著鋼板表面缺陷的出現,而鋼板不同表面缺陷的呈現,意味著生產環節中相應工藝存在問題,所以鋼板表面缺陷識別極為重要,識別出鋼板缺陷類別有助于分析生產工藝中存在的某些問題,以提升鋼板生產質量和效率[1]。我國鋼板制造業雖然發展迅猛,但是鋼板表面質量檢測技術卻發展緩慢。由于鋼板生產工藝技術的不成熟和受環境的影響,生產出的鋼板的缺陷各有差異,采集的缺陷圖像存在著噪聲大、受光照不均勻、圖像對比度低、缺陷目標難以分割等缺點,都極大地增加了鋼板表面缺陷圖像分類識別算法的難度[2]。
目前借助于計算機技術進行鋼板表面缺陷分類檢測方法主要有兩種。一種是基于傳統機器視覺算法,傳統機器視覺算法基于提取變化的特征,使用支持向量機SVM[3]、隨機森林[4]等分類器進行分類,由于缺陷在鋼板圖像上的分布也無明顯規律,特征難以提取,導致該方法識別算法難度大,且識別準確率較低。二是基于卷積神經網絡CNN的鋼板表面缺陷圖像分類算法[5]。目前卷積神經網絡在語音和圖像識別等領域都得到飛速發展,可以直接將圖像作為網絡的輸入,自動提取特征,對光照與旋轉有一定的抗性,并且對圖片的變形,如平移、比例縮放、傾斜等,具有高度不變性[6],算法適應性強。
Inception[7]網絡可以并行執行多個不同卷積核大小的運算或池化操作,增加了網絡對尺度的適應性,并行處理這些卷積運算并合并所有結果,將獲得更好的圖像表征。ResNet網絡的殘差網結構可以使得隨著網絡層數的加深,準確率不下降。ResNet殘差學習模塊將每層的輸入和輸出進行一個堆疊,且并不會給網絡增加額外的參數和計算量,從而能夠加快模型訓練收斂速度,并且當模型的層數加深時,還能很好地解決退化問題[8]。Inception-ResnetV2網絡[9]基于Inception V3[10]采用殘差連接,使得能夠訓練層數更深的神經網絡從而產生更好的性能,在圖像分類基準上取得更高的識別率。Convolutional Block Attention Module(CBAM)[11]模塊是一種用于前饋卷積神經網絡的簡單而有效的注意模塊。對于給定一個中間特征圖譜,CBAM模塊沿著兩個獨立的維度,在通道和空間依次推斷注意力映射,然后將注意力映射圖譜乘以輸入特征圖譜以進行自適應特征細化,提升網絡性能。本文在上述網絡模型的基礎上,以Inception-ResnetV2為基礎網絡框架,并嵌入CBAM模塊,提出一種結合二者優勢、網絡層數更深、性能更優的CBAM-Inception-ResnetV2網絡,提高網絡模型分類的準確率。
本文的鋼板表面缺陷圖像分類算法流程如圖1所示。由于圖像質量會顯著影響后續神經網絡的特征提取以及分類,因此本文先將采集的圖像進行去噪濾波與圖像增強,然后進行閾值分割與ROI區域提取,經過預處理的數據集分為訓練集和測試集,訓練集用來訓練卷積神經網絡模型,測試集用來驗證已訓練網絡模型。
本文實驗中鋼板表面缺陷圖像主要分為六種,分別為斑跡、表面夾雜、大花臉、過酸洗、鐵皮氧化、壓痕。由于鋼板表面缺陷原圖像對比度低、噪聲大,且圖像整體對比度低下,因此有必要對鋼板表面圖像進行去噪濾波和圖像增強。本文采用雙邊濾波,在去噪的同時又能較好地保留圖像邊緣信息,然后進行圖像增強,采用直方圖均衡化,通過圖像的灰度分布直方圖來確定一條原始灰度值到變換灰度值的映射曲線,然后對圖像進行灰度變換,拉伸圖像對比度。最后在增強圖像上進行自適應閾值分割和投影,提取增強圖像中特征比較明顯的區域,作為神經網絡的輸入圖像,圖像預處理結果如圖2所示。

(a) 原圖 (b) 圖像增強 (c) 閾值分割 (d) ROI
Inception模塊是一種具有優良局部拓撲結構的網絡,即對輸入圖像并行地執行多個卷積運算或池化操作,如并行執行1×1、3×3、5×5和7×7等卷積核大小不同的卷積操作,可以獲得輸入圖像的不同層次的特征信息,并將所有卷積輸出結果合并拼接組成一個更深的特征圖譜以獲得更優的圖像表征[12-13]。Inception-ResnetV2網絡中的Inception結構主要采用分解的思想,將一個尺寸較大的二維卷積分解成兩個較小的不對稱一維卷積,例如將一個7×7 Conv拆成7×1 Conv和1×7 Conv,一個3×3 Conv拆成3×1 Conv和1×3 Conv,可以減輕計算量,從而減少參數量,且同時拆分成兩個不對稱卷積,可以得到更加多樣性的特征圖譜。Inception-ResnetV2網絡輸入從224×224變為299×299,其中Stem結構中采用了Inception V3模型中的并行結構和分解思想,可以在保證信息損失足夠小的情況下,使得計算量降低,結構中1×1的卷積核用來降維,并且也增加了非線性。Inception-Resnet-A、Inception-Resnet-B和Inception-Resnet-C結構采用Inception+殘差網設計,層次更深、結構更復雜,得到特征圖的通道數更多。而Reduction-A、Reduction-B、Reduction-C三種結構用來降低計算量和特征圖譜的尺寸。Inception-ResnetV2模型能很好地融合Inception模塊和殘差網結構二者優勢,既能增加網絡深度和寬度,又能避免梯度消失。圖3只給出Inception-Resnet-A結構,這與Inception-Resnet-B和Inception-Resnet-C結構類似。

圖3 Inception-Resnet-A網絡結構
1.3.1SENet
SENet(Sequeeze-and-Excitation Network)[14]是一個輕量級網絡,主要包括擠壓和激勵兩部分運算,可以嵌入到其他的分類或者檢測模型。一般認為特征圖譜的每個通道是同等重要的,并沒有區分各個通道的重要程度性,而SE模塊的核心思想就是通過損失函數去學習每個通道的特征權重,使得任務相關通道的特征圖譜權重大,從而提高模型的精準度。SENet結構組成詳解如圖4所示。

圖4 Sequeeze-and-Excitation結構

(1)Fsq操作:為了了解特征圖譜通道之間的相關性,先考慮輸出特征圖譜中各個通道的信息。由于每個學習到的卷積核都有自己的局部感受野,因此,卷積變換后得到的輸出的各個數據單元不能利用數據單元以外的信息。為了解決這個問題,壓縮操作使用了一個最大全局池化,將二維的空間特征壓縮成一個實數,從而在一定程度上可以得到具有全局感受野的單個通道的統計信息z,統計信息z的第c個分量計算公式如下:
(1)
式中:uc表示二維輸入矩陣;H表示矩陣高度;W表示矩陣寬度。
(2)Fex操作:為了有效利用壓縮操作生成的全局通道信息,激活操作通過兩個全連接層,融合特征圖各個通道之間的信息。為了降低模型計算量,第一個全連接層操作,將維度降到原來的1/r,然后第二個全連接層又恢復原來維度,然后經過Sigmoid函數得到權重s,計算公式如下:
s=Fex(z,W)=σ(g(z,W))=σ(W2δ(W1z))
(2)
式中:W1∈RC×C/r;W2∈RC/r×C;g表示全連接操作;δ為ReLU激活函數;σ為Sigmoid函數。
(3)Fscale操作:將上述激活操作得到的特征圖權重與之前通道上的輸入進行相乘,加權到之前的通道上,實現在通道維度上的對原始特征的重標定[15]。
xc=Fscale(uc,sc)=sc·uc
(3)
式中:sc表示權重。
1.3.2CBAM
CBAM(Convolutional Block Attention Module)表示卷積模塊的注意力機制模塊,是一種結合了空間和通道的注意力機制模塊。它相對于SE多了一個空間注意力模塊,其實就是圖像像素點位置的關注。CBAM模塊示意圖如圖5所示。

圖5 CBAM模塊結構
對輸入F,進行兩個運算,其中:MC表示通道維度上進行注意力映射計算;MS表示空間維度上進行注意力映射計算。兩個運算操作原理如下。

MC(F)=σ(MLP(AvgPool(F)))+σ(MLP(MaxPool(F)))
(4)
(5)
式中:F表示輸入;MLP表示多層感知機模型;W0∈RC/r×C;W1∈RC×C/r。
(2) Spatial Attention操作。空間上的計算主要關注位置信息,首先將特征圖進行列通道上的全局最大池化和平均池化得到兩個不同的特征描述。假如輸入特征圖為h×w×c,經過一次池化后變為h×w×1的特征圖,將經過全局最大池化和平均池化的特征描述合并,得到h×w×2的特征圖,采用7×7的卷積核進行卷積,使用Sigmoid函數進行標準化,將得到的結果與通道上的輸入相乘,實現在空間維度上的對原始特征的重標定。計算過程如下:
MS(F)=σ(f7×7([AvgPool(F);MaxPool(F)]))
(6)
式中:σ為Sigmoid函數;f表示卷積,7×7表示卷積核的大小。
本文實驗中將SENet和CBAM模塊嵌入到Inception-ResnetV2中[16]的Inception-Resnet-A、Inception-Resnet-B和Inception-Resnet-C結構中,并且簡化基礎模型,減少網絡層數,將Inception-Resnet-A、Inception-Resnet-B和Inception-Resnet-C結構個數分別置為3、5、3。以嵌入CBAM模塊為例,假設對于Inception卷積輸入為w×h×c,首先進行通道上的注意力映射計算,對于特征圖w×h×c的輸入,進行全局最大池化,其實是求每個w×h面積的最大值,得到1×1×c的結果,然后接兩層全連接層。第一層全連接層FC1為1×1×c/r,縮放參數r是為了減少通道數,從而降低計算量,本文算法中r設置為16,經過第二層全連接層FC2升到原來維度1×1×c,平均池化也一樣。經過Sigmoid函數,維度不變,與最開始的Inputs相乘,相當于[1×1×c]×[w×h×c],這里相乘相當于給每個通道作用了不同的權重。空間上的注意力機制,首先進行全局通道池化,通道池化相當于將通道壓縮到了1維,其實就是對通道維度求最大值,平均池化操作也類似,生成兩個w×h×1的特征圖。將兩個w×h×1的特征圖進行通道合并,用1個7×7的卷積核進行卷積,維度恢復到w×h×1,最后經過Sigmoid門函數,維度不變,然后將其與經過通道重標定的輸入相乘得到最終的結果。通過嵌入CBAM模塊對中間網絡層的通道和空間位置進行重標定,具體結構設計如圖6所示。

圖6 CBAM-Inception-ResnetV2結構
本文算法采用交叉熵損失函數作為代價函數,并且在求total_loss時加入L1、L2混合正則,損失函數如下:

(7)
(8)
式中:p表示x的實際概率分布;q表示x的預測概率分布;對整個batch的交叉熵求均值得到corss_loss,再進行L1、L2混合正則,以減輕過擬合;ω1表示權重;α表示正則化參數。
Adam算法是一種自適應學習率的算法,既能夠處理較大的數據集,也能適應稀疏的數據集,計算效率高[17]。由于本文實驗中的數據集較大,且數據集較稀疏,因此梯度下降算法采用Adam算法。Adam算法綜合梯度的一階矩估計和二階矩估計來計算梯度更新。Adam算法更容易找到比較平坦的最小值,概括性更好。Adam算法梯度更新規則如下:
gt=▽J(θt-1)
(9)
mt=β1mt-1+(1-β1)gt
(10)
(11)
(12)
(13)

本文采用的數據集來自合作伙伴上海寶鋼公司提供的42 280幅圖像,其中斑跡7 100幅、表面夾雜6 800幅、大花臉7 080幅,過酸洗6 900幅、鐵皮氧化7 100幅、壓痕7 300幅。圖像大小均為2 048×1 000。本文是在ubuntu環境下,基于TensorFlow深度學習框架,硬件平臺Intel Core i7- 7700,8 GB內存,GPU為NVIDIA GeForce GTX1080配置下進行訓練。將經過預處理后的圖像數據集按照3 ∶1劃分為訓練集和測試集,標簽分為6類。將訓練集作為模型的輸入,采用反向傳播算法對模型進行逐層訓練,采用Adam算法進行權值更新,用于模型的訓練和參數微調。測試集用來驗證模型的準確率和泛化能力。
在實驗過程中,在訓練時將初始學習率learning_rate設置為0.001,batchsize為64,損失函數采用交叉熵函數,用Adam算法進行權值更新,其中參數β1設置為0.9,β2設置為0.999,使用Softmax作為分類函數。圖7顯示了對Inception-Resnet-V2模型以及嵌入SE模塊和CBAM模塊三種網絡模型在訓練過程中的識別準確率變化,可以看出在epoch為90的時候三種模型識別準確率趨于穩定,結果表明CBAM-Inception-ResnetV2與SE-Inception-ResnetV2模型的識別率相近,但是相比于原始網絡模型識別率有所提升。圖8是三種網絡模型隨著迭代次數變化的損失函數圖,可以看出CBAM-Inception-ResnetV2模型訓練的收斂速度明顯要優于SE-Inception-ResnetV2和Inception-ResnetV2模型,這是由于CBAM模塊可以有效地強調或抑制和重新定義中間特征的內容和位置,使得網絡性能更優。

圖7 三種網絡模型識別準確率

圖8 三種網絡模型loss損失
表1是測試CBAM-Inception-ResnetV2模型將數據集隨機分配成5次計算平均準確率得到的結果。可以看出模型的表面夾雜、大花臉、過酸洗有較高的分類準確率,而對斑跡、鐵皮氧化、壓痕三種類別存在混淆,這是由于這三種類別之間存在模糊的定義,導致分類識別率有所下降。

表1 CBAM-Inception-ResnetV2分類準確率混淆矩陣
為了驗證本文網絡有更好的分類效果,本文還對比了多種當前主流分類神經網絡,如VGG19[18]、Resnet50[19]、InceptionV4[20]、Inception-Resnet-V2模型,由表2可以看出本文網絡CBAM-Inception-ResnetV2有更高的分識別類準確率,相對于Inception-ResnetV2模型識別準確率提高了2.17百分點以及參數量只有較小幅度的提升。且本文將Inception-ResnetV2模型進行簡化,CBAM-Inception-ResnetV2最終的參數量也只有37.8 M,可以看出在基礎網絡上嵌入CBAM模塊以較小參數量代價可以顯著提升模型識別率,提升網絡性能。

表2 各主流神經網絡算法與本文算法識別率比較
本文提出一種基于注意力機制和深度學習的鋼板表面缺陷圖像分類算法。在Inception-ResnetV2模型基礎上嵌入CBAM注意力機制模塊,能夠提取任務相關的特征,抑制任務無關的特征,重新定義每個通道和空間特征的重要性,以較小的開銷達到較為可觀地提升網絡性能、提高模型識別率和加快模型收斂速度。實驗結果表明,相較于其他算法,本文算法有更高的識別率,可以為鋼材生產工業提供更好的輔助作用。今后的工作重點是進一步優化網絡結構,提取更有效的特征,進一步提高識別率,更好地應用到鋼材生產工業中。