方鈞婷,譚曉陽+
1.南京航空航天大學 計算機學院,南京 211106
2.模式分析與機器智能工業和信息化部重點實驗室,南京 211106
3.軟件新技術與產業化協同創新中心,南京 211106
隨著我國工業和制造業的蓬勃發展,高標準、高質量產品的需求逐漸旺盛。金屬是工業生產中的重要材料,在生產過程中,金屬表面不可避免地會產生缺陷,這些缺陷會對產品的質量和性能造成不利影響,同時與產品市場份額和品牌聲譽息息相關。許多工廠仍然使用人工檢查的方式進行金屬表面缺陷檢測,這不僅費時費力,而且無法滿足大規模工業生產的需求。與人工檢查相比,基于計算機視覺的表面缺陷檢測具有高精度和高效率的優點。因此,迫切需要將自動化的金屬表面缺陷檢測引入工業產品生產過程中。
缺陷是指在生產過程中產生的物理和化學損壞,通常是由于撞擊、摩擦、腐蝕等引起的。冰箱工業中金屬門的受檢圖像如圖1(a)所示,缺陷形狀各異,背景光照復雜。圖1(b)列舉了一些缺陷類型,其中劃痕類缺陷存在面積跨度大、易斷開的特點;污點類缺陷目標小并且易與背景紋理混淆;缺陷普遍存在邊緣不清晰和對比度低的問題。與光學部件和織物等非金屬表面不同,金屬表面容易出現照明不均勻和強反射等問題,強反光會使圖片出現盲區;金屬的鏡面材質還會產生周圍環境的倒影,這些特點均導致背景環境更加復雜,增加了檢測的難度。金屬表面缺陷檢測的難點在于:(1)環境因素,例如不均勻照明、零件邊界、強反光和背景紋理影響檢測效果。(2)缺陷的邊緣對比度低、模棱兩可,易漏檢和誤檢,檢測器難以準確定位。基于區域的對象檢測方法在目標檢測領域取得了突破性的成果,但是直接應用于缺陷檢測并不能很好地解決上述難點,檢測效果無法滿足工業需求。

Fig.1 Challenges of metal surface defects detection圖1 金屬表面缺陷檢測的挑戰
本文針對復雜的實際檢測環境,設計了高性能的金屬表面缺陷檢測算法,旨在對缺陷區域進行定位和分類,以滿足工業制造的需求。在基于傳統區域卷積神經網絡(region-based convolutional neural network,R-CNN)二階段目標檢測算法上,設計加入注意力機制提高神經網絡特征提取能力,引入級聯頭部網絡提高檢測質量。本文的主要貢獻如下:
(1)提出了一種基于注意力機制的端到端檢測方法。將級聯檢測頭部網絡用于金屬缺陷檢測,與普通檢測頭相比,它提供了高質量和更一致的檢測結果。
(2)設計了輕量高效的空間和通道注意力模塊。通過添加該模塊,卷積神經網絡可以計算長距離依賴關系和學習關注重要特征,有效地提高特征提取能力。
(3)大量實驗證明了本文方法的缺陷檢測精度更高,魯棒性更好。有希望在工業生產線上部署本系統,以提高生產質量。
表面缺陷檢測問題已有充分研究,傳統的檢測方法可分為兩類:圖像處理方法和基于手工特征的機器學習方法。(1)圖像處理方法使用局部異常反射來檢測缺陷,包括Gabor 濾波器、邊緣檢測、Kittler 方法等。文獻[1]通過Canny 邊緣檢測提取特征,用閾值法進行鐵路軌道表面缺陷檢測。文獻[2]在銅帶的紅外圖像上使用一階Haar 小波變換獲得小波特征,然后對其進行統計并區分是否存在缺陷。文獻[3]使用Gabor 濾波器和雙重閾值方法來檢測鋼板上的針孔。圖像處理方法無法利用缺陷的內部特征,導致將某些零件、邊界、紋理視為缺陷。而且這一類方法對背景顏色和照明條件十分敏感,當條件發生變化時,需要重新設計該方法。(2)基于手工特征的機器學習方法使用例如方向梯度直方圖(histogram of oriented gradient,HOG)、局部二值模式(local binary patterns,LBP)、灰度共生矩陣(gray-level co-occurrence matrix,GLCM)等算法進行特征提取,然后通過訓練好的分類器來確定輸入圖像是否有缺陷。文獻[4]提出了一種照明和圖像采集系統獲得金屬零件圖像,然后使用Otsu 閾值法和其他圖像處理方法對圖像進行二值化,最后使用支持向量機(support vector machine,SVM)來預測圖像是否包含缺陷。文獻[5]使用向量值正則核函數逼近和SVM 來定位鋼鐵產品的缺陷。這類方法有兩個局限:首先,對于復雜環境,手工制作的特征向量不能充分表達信息;其次,分類器檢測無法準確定位缺陷。上述兩種傳統方法缺乏對實際金屬檢測環境的適應性和魯棒性。
近年來,深度學習在目標檢測中表現出出色的性能,提出了幾種基于卷積神經網絡的缺陷檢測方法。文獻[6]提出了一種基于R-CNN 的快速缺陷檢測方法,該方法可以檢測各種缺陷,包括鋼表面腐蝕檢測。文獻[7]提出了一種多任務卷積神經網絡檢測金屬軸承滾子的表面缺陷。文獻[8]提出了一種CASAE(cascaded autoencoder)體系結構來分割和定位缺陷。文獻[9]提出了一種輕量級的網MobileNet-SSD 來檢測缺陷。上述方法并沒有針對金屬表面環境做出優化,在真實的復雜場景下,檢測效果有限。
目標檢測包括對目標的分類和定位。在深度學習神經網絡的快速發展下,目標檢測可以大致分為兩種類型:一階段方法和兩階段方法。
兩階段方法將目標檢測任務分為兩個階段:生成區域建議(region of interest,ROI),對區域建議進行分類和回歸。R-CNN[10]使用選擇性搜索[11]在輸入原始圖像中生成ROI,然后通過基于卷積神經網絡的獨立分類器對原始圖像中裁剪的ROI 進行分類和細化。SPPNet(spatial pyramid pooling network)[12]和Fast R-CNN[13]通過空間金字塔和ROIPooling簡化計算改進R-CNN,RoIAlign層[14]進一步改進了ROIPooling,解決粗略空間量化問題。Faster R-CNN[15]引入區域建議網絡(region proposal network,RPN),構建了一個統一的目標檢測端到端的框架,RPN 通過回歸錨框生成ROI,與檢測網絡共享相同的主干網絡,以替換原始耗時的選擇性搜索區域提議方法,RPN 被廣泛應用于之后的兩階段方法。R-FCN(region-based fully convolutional networks)[16]通過全卷積網絡構造位置敏感圖替換全連接層,進一步提高了Faster RCNN 的檢測速度。TridentNet[17]構建了并行的多分支架構,其中每個分支參數共享但是感受野不同,旨在提高檢測器對尺度變化的魯棒性。Cascade R-CNN[18]構建了交并比(intersection over union,IoU)閾值遞增的級聯架構,提高檢測精度的同時避免過擬合現象和訓練推理時的質量不匹配問題。一階段方法不進行ROI 提取,而是直接預測邊界框和類別。YOLO(you only look once)[19]將輸入圖像劃分為N×N的網格作為錨框進行分類和回歸。YOLOv2[20]通過使用更多的錨框和新的邊界框回歸方式提高性能。YOLOv3[21]通過使用更有效的網絡結構Darknet-53和多尺度預測進一步提升性能。SSD(single shot multibox detector)[22]將錨框密集地放置在輸入圖像上,并使用不同卷積層的特征對錨框進行回歸和分類。RetinaNet[23]提出Focal Loss 解決一階段檢測器的類別不平衡問題,使其結果能與兩階段檢測器相媲美。CornerNet[24]是另一種基于關鍵點的方法,將目標檢測框檢測為一對角點。CenterNet[25]將目標檢測為三個關鍵點,從而提高了檢測精度。這一類基于角點的方法放棄了Faster R-CNN 引入的被廣泛使用的錨框概念,并且取得了非常好的性能,為目標檢測帶來了新方法。
注意力機制在人們的感知中起著重要的作用[26-27]。目前,注意力機制已成功應用于各類任務,例如語音識別[28-29]、機器翻譯[30-31]和各類視覺任務。在視覺活動中,并不會完整地處理看到的所有東西,而是有選擇地專注在特殊的部位,以更好地獲得信息。注意力機制不僅可以將有限的處理資源分配于信息豐富的部分[26,32-33],同時也可以使得該部分的特征得到增強[34]。SENet[35]提出了擠壓與激發模塊,通過建模通道之間的相互依賴增強網絡的表達能力。GENet[36]和PSANet[37]也是關注于通道之間的關系,以校準通道特征響應。文獻[34]提出了可堆疊的注意力模塊,捕捉不同特征圖中的多層次注意力信息,使用殘差連接以避免出現梯度消失問題,但是由于多層堆疊導致插入網絡后大幅度增加了參數量和計算開銷。Non-local Net[38]提出了非本地模塊以捕獲遠程依賴關系與自我注意力[30]相結合,在目標檢測、姿態估計、視頻分類等多個視覺任務中起到了作用。文獻[39]在基于Faster R-CNN 的目標檢測框架中提出了目標關系模塊來刻畫目標之間相互關系,實現相對位置的注意力,提升目標檢測效果。GCNet[40]通過加法融合對全局上下文進行建模,在各種識別任務中做到了輕量有效。CBAM(convolutional block attention module)[41]通過對通道和空間兩個維度重新縮放推斷注意力圖,對原始特征圖進行自適應特征細化。
金屬表面缺陷檢測結構圖如圖2 所示,原輸入圖像是由普通相機在無特殊照明下拍攝而成,圖像尺寸為813×618。檢測過程主要包含兩個階段:

Fig.2 Architecture of proposed defect detection method圖2 提出的缺陷檢測算法的體系結構
(1)特征提取階段,利用卷積神經網絡提取特征,骨干網絡為增加了注意力模塊的ResNet-101,在2.1 節中將對注意力模塊進行詳細推導。
(2)多級聯分類回歸階段,包含區域候選網絡(RPN),通過多IoU 閾值級聯的頭部網絡設計獲得精確度更高的檢測框,具體設計在2.2 節中詳細介紹。
注意力模塊的目標是捕獲長期依賴關系,并將重點放在重要特征上。給定一個中間特征圖,按順序計算空間注意力和通道注意力,通過將注意力圖與原始特征圖相加來自適應地改進特征圖。空間注意力模塊計算圖像上任何兩個位置之間的相互作用,這對于大跨度和大面積缺陷特別有效。通道注意模塊計算特征通道之間的相互依賴性,學習選擇性地強調有意義的特征。本文在主干網ResNet-101 的res4 階段的最后一個殘差塊之前添加注意力模塊。表1 所示為金屬表面缺陷檢測器的特征提取階段網絡Attention-CNN 結構。注意力模塊操作函數為:

Table 1 Structure of Attention-CNN表1 Attention-CNN 的網絡結構

其中,⊕表示逐元素相加,X′∈RC×H×W表示通過上一個殘差塊后得到的特征圖,X″∈RC×H×W表示改進后的特征圖,fs(?)表示空間注意力計算模塊,fc(?)表示通道注意力計算模塊。其中,通道注意力模塊計算所得fc(X′)∈RC×1×1在相加之前要沿著空間維度廣播。
2.1.1 空間注意力模塊
卷積神經網絡憑借其豐富的表示能力,極大地推動了計算機視覺任務的發展。但是卷積神經網絡的卷積范圍是固定的,并不能很好地獲取長距離依賴關系。在實際工業檢查環境中,缺陷的大小和背景是多種多樣的。對于光滑的金屬表面,容易出現大面積背景環境的倒影,如果感受野太小,檢測器無法理解倒影,就會將倒影中反射的場景檢測為缺陷;對于大面積的劃痕和霧狀痕跡,如果感受野太小,檢測器只會檢測出部分缺陷。為了使缺陷檢測器具有良好的魯棒性,能被實際應用于工業,建立長距離依賴至關重要。卷積神經網絡通過加深網絡深度,使得深層卷積運算形成大感受野來模擬長距離依賴,這種方式會導致計算成本增加,而且網絡優化變得更加困難。
在本文中,設計簡單高效的空間注意力模塊,來捕獲長距離依賴從而增強全局特征的提取能力。空間注意力模塊計算的注意力圖將每個位置的注意力響應計算為該位置與所有位置之間的關系。受NLNet[38]的啟發,使用嵌入式高斯計算每個位置對的關系,然后根據文獻[40]簡化模塊,并應用瓶頸設計進一步降低計算成本。空間注意力的計算公式為:

其中,N=H×W表示特征圖的位置數量。i是查詢位置的索引,j是枚舉所有位置的索引。θ(xi)=Wθxi和φ(xi)=Wφxi表示嵌入計算,Wθ、Wφ和Wz表示線性變換矩陣,表示為1×1 卷積。C(x)是歸一化函數,在嵌入式高斯中可化為softmax 計算。圖3 顯示了模塊的架構,本文采用瓶頸比率r來減少參數的數量。
2.1.2 通道注意力模塊

Fig.3 Architecture of spatial attention module圖3 空間注意力模塊結構圖
特征圖各個通道被視為特征檢測器[42],即每個通道都表征一種特征,特征圖通常是高維的,且在網絡越深處維度越高,用來表示更深層的特征。為了關注于有意義的特征,本文建模通道之間的相互關系來生成通道注意力圖。SENet[35]和CBAM[41]提出的通道注意力模塊,都是在Sigmoid 操作后與輸入特征圖相乘,模塊被插在每一個殘差模塊的相加操作之前,這導致了參數大量增加和網絡加深。SENet和CBAM會使ResNet-50 增加9.9%參數量,使ResNet-101 增加10.7%參數量。若將其直接使用在金屬表面缺陷檢測問題,會出現以下問題:(1)骨干網絡選擇特征提取能力更強的ResNet-101,參數的大量增加使得訓練批大小必須減小,這會導致網絡收斂困難。(2)一般的注意力計算方法通常針對公共數據集中的自然圖像,其訓練樣本遠遠超過了工業檢查中的缺陷數據,網絡深度的大幅加深會導致訓練難度增加。在本文算法中,整個網絡里只插入一個注意力計算模塊,如果將其插在殘差塊中,經過跳躍連接后注意力自適應改進效果甚微,因而需要將其插在完整的殘差塊之后。而如果直接將SENet 和CBAM 的注意力模塊放置在殘差塊之外,使用Sigmoid 操作會出現梯度消失現象。本文所設計的通道注意力模塊,需要解決上述問題,才能有效應用于金屬表面缺陷檢測。
在本文中,對輸入的特征圖計算全局池化和最大池化以獲得兩個聚合空間信息的特征向量,通過一個共享的多層感知機(multilayer perceptrons,MLP)計算通道注意力,然后使用逐元素求和合并特征向量。最后,使用1×1 卷積進行特征轉換。本文的通道注意力模塊設計遵循GCNet[40]中提出的全局上下文建模框架。ResNet-101 在插入注意力模塊后,參數僅增加4.1%。通道注意力的計算公式為:

其中,X′表示經過空間注意力模塊后獲得的特征圖,表示具有一層隱藏層的多層感知機(MLP)組成的特征轉換函數。和表示平均池化特征和最大池化特征。圖4 顯示了該模塊的體系結構。

Fig.4 Architecture of channel attention module圖4 通道注意力模塊結構圖
在兩階段R-CNN 框架[13,15]目標檢測算法中,RPN在網絡獲得區域候選框(Proposals)后,通過一個由分類和回歸層組成的頭部網絡生成檢測結果。頭部網絡通過計算候選框與真實邊界框的交并比(IoU)來定義正負,一般將IoU 閾值設置為0.5,但這種寬松的要求會導致真實的正值不夠準確,并且易產生嘈雜的邊界框。缺陷檢測器應該準確定位所有缺陷,同時抑制誤報。本文提出級聯檢測頭部網絡來定位和分類缺陷,通過遞增的IoU 閾值來訓練檢測器,從而提高了檢測效果。頭部網絡結構如圖2 所示。
該架構由兩個頭部網絡級聯而成,每個檢測頭都具有與R-CNN 頭部相同的結構和自己的損失函數。第一個頭部的IoU 閾值設置為0.5,第二個頭部的IoU閾值設置為0.6。各階段按順序訓練,使用上一個階段的輸出來訓練下一個階段。在缺陷檢測任務中,分類任務比較簡單而回歸任務較難而且精度要求較高,本文重新設計損失函數。在每個階段t,頭部網絡包括針對相應的IoU 閾值進行優化的分類器和回歸器。損失函數如下所示:

其中,Lcls是分類的交叉熵損失函數,Lreg是定位任務的平滑L1損失函數,T=2 是階段總數,c是分類預測的概率,是類別標簽,r是預測的邊界框,是真實的邊界框,αt是不同階段的權衡系數,β是分類和回歸的權衡系數。通過這種級聯學習,一些錯誤的檢測框將被丟棄,因為它們無法滿足更嚴格的IoU,正確的檢測框通過更嚴格的IoU 頭部回歸后,將更接近真實值。
本次實驗數據集包含3 000 張像素為618×813 的普通相機拍攝的冰箱產品表面圖像,其中1 500 張圖像包含缺陷,1 500 張不包含缺陷。手工標注數據集上所有的缺陷坐標,然后按7∶3 的比例隨機分為訓練集和測試集。
由于已標記的金屬表面缺陷數據較少,而深度卷積神經網絡需要大量有效數據進行充分訓練,否則難以獲得具有泛化性的訓練結果,而且容易陷入過擬合。為此,采用了圖像水平翻轉、圖像垂直翻轉、圖像水平垂直翻轉、隨機摳取和尺度變換進行圖像增光,增加訓練樣本的多樣性。
本文的缺陷檢測系統是在Detectron 平臺上的基于Caffe2 實現的,使用RPN[15]生成區域提議,級聯RCNN的IoU閾值設置為U={0.5,0.6},α={1.0,0.5},β=1.5。本文使用FPN(feature pyramid networks)和ResNet-101 作為骨干網絡,并在ImageNet 上進行了預訓練。除了強大的骨干網絡,本文還應用了多尺度訓練和Soft-NMS。設置注意力機制模塊中的瓶頸系數為4。初始學習率設置為0.001,分別在6 000 和9 000 輪后縮小為原來的10%,共10 輪后結束訓練。在1 個GTXTITAN GPU 上運行,批大小為2。選取平均精度(average precision,AP)來衡量算法檢測精度,它可以更全面地評估算法模型。在計算AP 過程中,邊界框回歸的準確率用交并比IoU 閾值衡量,IoU 取值越大,評價越嚴苛。本文使用AP50和AP75兩個指標來評估檢測精度,AP50指IoU=0.50 時計算得到的AP 值,AP75指IoU=0.75 時計算得到的AP 值。
本節中設計了多個實驗來證明本文提出的結構設計選擇的有效性。在本實驗中,使用FPN和ResNet-101 作為baseline,具體的訓練和驗證策略同3.2 節。
3.3.1 模塊組合方式實驗
注意力模塊包含空間和通道兩個模塊,在2.1 節中描述了空間和通道模塊順序連接這一種組合方式,還有另外三種連接組合方式:僅一個空間模塊,通道和空間模塊順序連接,空間和通道模塊并行連接。如表2 所示,空間和通道模塊順序連接達到最佳結果,而且所有增加通道注意力的方法都勝過單個空間注意力模塊,表明用兩個維度計算注意力至關重要。

Table 2 Results of different combination表2 不同組合方式的實驗結果
3.3.2 不同注意力模塊對比實驗
通過上述消融研究,本文得到了最終注意力模塊組合方式,即按空間通道順序連接模塊。該實驗中,將本文方法與兩個常用的注意力模塊NLNet[38]和GCNet[40]進行對比。與文獻[38,40]設置相同,在res4的最后一個殘差塊之前添加一個NL block、一個GC block 或本文提出的注意力模塊。表3 顯示本文的注意力模塊比NL 塊和GC 塊具有更好的性能。值得注意的是,本文的注意力模塊是輕量級的,對ResNet-101 所需4.465×107參數以外引入3.1×106的附加參數,對應增加了6.9%,從而取得可觀的性能提升(從78.9%增至81.8%)。

Table 3 Results of different attention modules表3 不同注意力模塊的實驗結果
3.3.3 不同級聯策略對比實驗
級聯頭部網絡由多個R-CNN 頭部組合而成,頭部數量會影響檢測的精度和實時性。在該實驗中,分析級聯策略對實驗結果的影響,分別比較1~3 個頭部對實驗結果的影響。1 個頭部的實驗設置為U={0.5},α={1.00},β=1.5;2 個頭部級聯的實驗設置為U={0.5,0.6},α={1.00,0.50},β=1.5;3 個頭部級聯的實驗設置為U={0.5,0.6,0.7},α={1.00,0.50,0.25},β=1.5。實驗結果如表4 所示,級聯3 個頭部網絡AP50可以達到81.9%,比2 個頭部網絡高0.1 個百分點,檢測精度有細微的提升,但同時檢測速度下降,影響檢測實時性。因此,本文選擇2 個頭部網絡級聯作為最終模型。

Table 4 Results of different number of stages表4 不同級聯數量的實驗結果
為了證明算法的優越性,將其與傳統的機器學習方法進行比較。本實驗中選擇了HOG+SVM 和GLCM+SVM 進行了比較。HOG[43]是一種描述圖像局部紋理的共同特征,GLCM[44]是一種經典的用來描述像素空間關系的特征。在獲得上述特征后,選擇SVM 將其分類為常規圖像和缺陷圖像。由于傳統方法無法準確定位,使用AP 作為精度評估方法過于苛刻,因此在本實驗中,僅比較分類的準確性。對于本文算法,如果檢測到缺陷,則將整個圖像分類為缺陷圖像,否則分類為常規圖像。精度計算如下:

其中,Tp是真正例(true positives,TP)的數目,而Fp是假正例(false positives,FP)的數目。實驗結果對比如表5。從表中可以看出,僅在分類任務上,傳統方法只能達到約70%的精度,而本文方法則達到99.7%。顯然,本文方法要優于傳統檢測方法。

Table 5 Comparison with traditional methods表5 與傳統方法的比較結果
本節實驗旨在驗證算法的檢測精度。由于現在的基于深度學習的金屬缺陷檢測方法不夠通用,并且通常是在目標檢測方法上進行輕微改動,直接選擇與主流目標檢測算法進行比較:YOLOv3、Faster R-CNN、TridentNet 和CenterNet。在Detectron 和Detectron2上使用預訓練好的ResNet-101 對Faster R-CNN 和TridentNet 進行訓練,訓練方法和細節設置與本文方法相同。對于一階段檢測器,按照文獻[21]中給出的檢測框架來訓練YOLOv3,按照文獻[25]來訓練CenterNet。最后,還與文獻[7]所提出的金屬表面缺陷檢測方法進行了比較,本文采用與文獻[7]相同的26 層卷積神經網絡結構,相同的參數設置和數據擴充進行訓練。
表6 顯示了各個檢測算法在實際金屬缺陷數據集上的性能,用AP 作為評價標準。顯然,本文方法性能優于其他檢測算法,AP50可以達到81.8%。值得一提的是,CenterNet 作為一種可以與頂級二階段檢測器性能相媲美的一階段檢測器,在缺陷檢測任務上AP50只能達到23.8%。因為大量缺陷(例如劃痕)是不規則線性的,它們通常不會穿過中心位置,CenterNet無法檢測到中心關鍵點,從而導致大量漏檢。

Table 6 Comparison with deep learning methods表6 與深度學習方法的比較
本文針對復雜背景下的金屬表面缺陷檢測問題,設計了高效的檢測系統。針對背景大面積的反光和強反射,提出注意力模塊以捕捉長距離依賴關系以及特征之間的相互依賴關系。該模塊可以輕易插入主流主干網絡,在增加少量參數的情況下,有效提高網絡特征提取能力,在金屬表面缺陷檢測中表現好,后續可以考慮將其應用于傳統目標檢測問題。設計級聯頭部網絡實現高質量檢測,提高檢測框位置精度。實驗結果表明本文所提模型具有較高的準確性和魯棒性,滿足工業需求。