張淇雅, 逄煥利
(長春工業大學 計算機科學與工程學院, 吉林 長春 130012)
元器件質量是制造過程中的一個重要組成部分[1]。表面缺陷對工業產品質量和性能有著不利影響[2]。對于制造商來說,已經做了大量工作來檢查表面缺陷和產品的質量控制[3-4]。但是為了滿足日益增長的需求,在工業生產過程中,仍須在提高生產效率的同時,嚴格保證產品質量[5-6]。
近年來,基于機器視覺的表面缺陷檢測方法由于能夠克服人工檢測精度低、實時性差、主觀性強、勞動強度高等缺點,逐漸成為表面缺陷檢測的一種趨勢。這些基于機器視覺的檢測系統出現在許多工業應用中,例如鋼帶檢測[6]、液晶顯示器(LCD)檢測[6]、織物檢測[6]、鋁型材檢測[6]、鐵路軌道檢測[6]、螺紋檢測[7],食品檢測[6]和光學元件檢測[8]等。得益于計算機視覺的快速發展,上述挑戰正逐漸在工業生產中得到解決。其它基于手工特征的方法被應用于工業檢測中,如太陽能組件[9]、金屬[10]、鋼材[11]的缺陷檢測,近年來取得了良好的效果。然而,這些方法都是人為地為特定缺陷設計一組特征,是不通用的。最近,基于深度學習的方法已經被證明在許多視覺任務中是有效的。深度學習利用非線性組合構建卷積神經網絡(CNN)體系結構,通過改變網絡的寬度和深度控制數據量,從而在大量圖像中進行特征提取[12]。其統計穩定性和像素依賴性的局部特征提取已經被證明比人工設計特征更好。
目前,基于CNN的缺陷檢測方法已廣泛應用于工業缺陷檢測中,通過設計不同的網絡模型完成缺陷檢測。對于低對比度問題,模型需要有效利用目標特征來區分目標和背景的差異。不同層次的CNN特征對目標有不同的敏感性。低層特征具有更高的分辨率,可以生成清晰、詳細的邊界,但上下文信息較少;高級特征具有更多抽象的語義信息,擅長進行類別分類,但形狀和位置較弱。
Masci J等[13]采用多尺度金字塔池網絡對鋼材缺陷進行分類,可以適應不同尺寸的輸入圖像。Natarajan V等[14]提出了基于CNN的多層深度特征提取框架,通過轉移學習來檢測異常數據集中的異常。通過將深層特征與線性支持向量機(SVM)分類器相結合,設計了一種投票機制來克服過擬合問題。以上兩種方法設計的深層網絡結構主要是針對缺陷圖像的分類任務而設計的,并且缺陷的位置沒有被定位。Tian Wang等[15]提出了一種快速、魯棒的自動質量視覺檢測方法,利用傳統帶滑動窗口的CNN定位產品的損傷。Liu Z等[16]提出了一種基于深度卷積神經網絡(DCNN)的檢測系統,包括兩個用于定位關鍵部件的檢測器和一個用于診斷其狀態的分類器。這些方法將表面缺陷檢測問題轉化為計算機視覺中的目標檢測問題。缺陷定位通常是在一個邊界框內[17],實際上并不代表缺陷的邊界[18],也不能描述它的形狀。
綜上所述,文中開發了一種基于Faster R-CNN的結構損傷檢測方法,用于檢測裂紋、夾雜、斑塊、麻點、劃痕和滾壓6種類型的表面損傷。利用類激活映射技術對缺陷區域進行定位,無需區域級人工標注[19]。基于以上理論的改進,文中對6種不同缺陷數據集進行大量實驗,證明了該方法的有效性和通用性。主要貢獻如下:
1) 介紹了一種基于深度學習的金屬表面圖像缺陷檢測方法,證明了該方法具有一定的通用性和理論價值。
2) 介紹了一種基于像素級而非圖像級或區域級的表面缺陷檢測方法,同時,該方法的目的是檢測和區分不同類型的缺陷,而不僅僅是突出圖像中的顯著區域。
3) 在訓練過程中加入了遷移學習,以加快收斂速度。最后的框架在6個缺陷數據集上取得了優異性能。
與光滑表面相比,金屬表面的照片容易出現光照不均勻[20-22]、反光強烈[23]、背景噪聲[24]等問題,增加了檢測難度。由于缺陷的復雜性,缺陷自動檢測任務主要有三個方面的挑戰:
1)低對比度[25]。在工業生產中,灰塵的存在和光強的變化導致圖像中缺陷與背景的對比度較低。
2)類內差異[26]。與其他應用不同,在工業生產中,缺陷的形狀是不規則的。
3)類間相似性[27]。由于生產過程的不確定性,一些不同種類的缺陷差別不大。
文中用于訓練的數據來自于NEU-DET缺陷數據集,使用該數據集對所提方法的適用性和通用性進行了驗證和評價。NEU-DET缺陷數據集是為解決熱軋帶鋼自動識別問題而收集的標準化高質量數據庫。數據集包括裂紋、夾雜、斑塊、麻點、劃痕和滾壓6種類型的表面缺陷。該數據集圖像采集的硬件配置主要包括光源和攝像頭兩個部分。光源提供照明以使缺陷可見。使用了四個區域掃描CCD攝像機。原始灰度圖像的尺寸為1 024×1 024像素。為了節省后續部分計算時間,原始圖像在下采樣過程中執行,因此數據集將采樣圖像設置為200×200像素。每個原始圖像的分辨率為200×200,每個類別包括300個具有緊密邊界框注釋的圖像。部分NEU-DET原始圖像和其存在問題區域的局部細節放大圖像如圖1所示。
Faster R-CNN是He Kaiming等[19]在2015年提出的一種目標檢測算法,該算法自提出以來已經在許多領域得到了廣泛應用。經典的RCNN檢測算法使用選擇搜索(Selective Search)方法生成候選框,而Faster R-CNN在此基礎上提出了區域生成網絡(Region Proposal Network, RPN),直接生成候選框,使得目標檢測速度有了極大提高。Faster R-CNN網絡采用VGG 16作為特征提取網絡,該網絡的模型結構如圖2所示。

圖1 部分NEU-DET原始圖像和其存
文中研究的Faster R-CNN網絡對數據集中缺陷的檢測過程如下:
1)使用特征提取網絡VGG16對輸入模型中的圖像進行特征提取,所提取的特征圖(feature maps)分別被用于RPN層和ROI Pooling層。
2)RPN網絡作為第一部分用來生成候選框,通過激活函數softmax判斷特征提取結果屬于前景或者背景,即判斷是否包含前景,再利用邊界框回歸來修正特征提取結果或者相對準確的候選框;ROI Pooling層作為第二部分把RPN網絡生成的候選框縮放到相同尺寸送入全連接層。
3)經過全連接層后再通過分類函數計算出候選框的類別,同時再次對邊界框進行回歸,得到測試集圖像中缺陷的精確位置。Faster R-CNN網絡的整個檢測過程如圖3所示。
整體模型的關鍵特征參數見表1。
1.3.1 激活函數
在卷積層將原模型的relu函數修改為leaky_relu,在keras框架中自帶leaky relu定義,但是文中的leaky_relu也不同于程序自帶的leaky relu函數,在該函數的基礎上進行了微調。原始模型的激活函數relu屬于線性整流函數,數學表達為
f(x)=max(0,x)。
(1)
作為神經網絡的激活函數,其定義了線性變換wTx+b之后的非線性輸出結果,即輸出值為f(x)=max(0,wTx+b),以relu為激活函數,輸入值x為負的時候,輸出結果為0。但是relu可能導致神經元死亡。對于relu中(x<0)的激活,此時梯度為0,因此在下降過程中權重不會被調整。這意味著進入這種狀態的神經元將停止對錯誤/輸入的變化做出反應(僅僅因為梯度為0,沒有任何變化)。這就是所謂的dying relu problem。平時使用時relu的缺點并不是特別明顯,只有在學習率設置不恰當(較大)時,會加快神經網絡中神經元的“死亡”。
leaky relu為帶泄露線性整流,當輸入值x為負的時候,其梯度為常數θ∈(0,1),不會判定為0,正值與relu一致。表達式為

(2)
選擇leaky relu作為激活函數,對于葉片的邊緣檢測精度可以達到要求,但是模型分割效果不平滑,且雖然避免了輸入值x為負數時判定取值為0的問題,但當學習率設置較低的時候,此激活函數特性需要增加大量訓練次數。
1.3.2 損失函數
文中模型的損失函數主要由兩部分組成,其中第一部分是分類損失,第二部分是回歸損失,用于確定網絡訓練過程中的偏移量,兩個部分函數的具體公式為

(3)

Ncls----網絡訓練過程中生成的256個檢測框。

(4)
式中:ti----訓練階段預測值的偏移量;

λ----平衡回歸損失和分類損失的參數。

圖2 VGG16特征提取網絡結構

圖3 網絡的整體目標檢測流程

表1 Faster R-CNN的結構配置

續表1
文中使用的Faster R-CNN深度學習目標檢測網絡主要調用編碼器中的VGG16預訓練來構建,因此在訓練過程中引入Imagenet的權重,對Faster R-CNN模型進行遷移學習訓練。遷移學習是一種新的機器學習方法,它將來自相關但不同領域的知識應用于目標領域,旨在解決目標領域中幾乎沒有標簽數據的問題[16]。文中因為輸入圖像的尺寸較小,可以看作是一種小樣本數據訓練問題,在訓練過程中使用訓練過的VGG16模型進行遷移學習可以更快地訓練目標檢測模型,有利于模型的快速收斂。
為了使檢驗結果與其它檢驗方法相結合,分別對檢驗結果進行定量評價。分類模型通常采用總體精度(Accuracy)、召回率(Recall)以及F1-score作為評價指標。文中采用以上3個評價指標對模型的檢測計數性能進行客觀評估。各評價指標公式如下:

(5)

(6)
式中:TP----正陽性;
FP----假陽性;
FN----假陰性;
TN----正陰性。

(7)
模型訓練是在處理器為Intel(R) Xeon(R) CPU Gold 6 148×2、內存大小為256 GB、顯卡為NVIDIA Quadro P6000 GPU硬件平臺上完成的。在Windows 10操作系統下進行環境配置,Cudnn版本為7.4,Cuda版本為10.0,tensorflow版本為1.13.2。
選擇隨機梯度下降法(Stochastic Gradient Descent, SGD)來更新學習率,從而對網絡進行訓練。訓練時將初始學習率設置為1e-4,迭代20次后學習率更改為1e-5。設置網絡訓練迭代次數為100個epoch,每個epoch訓練2 000步。
模型在100個epoch的訓練迭代后完成了訓練,訓練過程中的損失曲線如圖4所示。

圖4 模型的訓練損失曲線
訓練完成模型輸出的各種參數見表2。

表2 訓練完成模型輸出的各種參數
為了評估模型在數據集圖像中缺陷檢測的性能,比較了6種不同缺陷圖像的檢測性能。檢測結果如圖5所示。

圖5 模型在測試集中的缺陷檢測結果
從圖5可以看出,模型對數據集中不同缺陷的圖像均實現良好的檢測效果。
為了定量地評價文中描述方法的分類性能,利用多層感知器(MLP)進行了3次缺陷分類實驗。MLP由隱藏層和輸出層中的15個單元組成,輸出層有3個輸出變量。輸入層數量由上述特征的尺寸決定。該優化算法在MLP中的最大迭代次數為1 000次。特征包括6個要區分的灰度級,并在共生矩陣中計算90°方向。第一次實驗中灰度值的量化為8,第二次實驗中過濾面具的尺寸為3.3。實驗結果見表3。

表3 不同方法分類結果的性能比較 %
結果表明,基于機器學習的淺層特征提取方法的準確率僅為70%左右,文中方法則比這些方法高出15%以上,組合的淺層特征比單個特征稍有改善。
傳統的機器學習方法通常需要設計特征來訓練模型。然而,Faster R-CNN已經實現了端到端的訓練,從特征學習到分類結果的直接輸出。傳統方法很難區分這兩種類型的粉塵和損傷點。可能是因為它們的紋理和漸變信息非常接近,有時很難區分開來。然而,該方法能更好地區分損傷點和粉塵,損傷點的分類準確率可達84%以上。這可以解釋為在工業場景中存在非常復雜的缺陷,僅靠紋理特征和梯度特征很難完全反映實際缺陷的特征。
提出一種基于深度學習的方法,可以在復雜的工業場景下準確地執行金屬表面缺陷檢測和分類任務。在此基礎上,將缺陷檢測問題轉化為目標檢測與分類問題。所提出的方法是一種在緊湊環境下快速獲取缺陷的方法,利用NEU-DET數據集,檢驗結果準確率達到86.93%。可視化和定量實驗結果表明,文中檢測算法能夠滿足復雜工業要求的環境。此外,該方法無需多做修改,也可直接應用于其它工業材料的缺陷檢測。
文中方法的一個局限性是深層網絡訓練需要人工標記數據,這需要大量的時間和費用。今后工作將包括減少使用半監督學習的數據標簽,以及將該方法應用于更現實的檢查問題,如手機屏幕的檢查。