陳 晨,董 帥,梁椅輝,鄒 昆
(電子科技大學 中山學院,廣東 中山528400)
隨著汽車行業的高速發展,汽車玻璃需求大增,每年以20%的增長率不斷增加,中國汽車玻璃在全球市場份額占比高達25%以上。汽車玻璃生產過程中由于尺寸大、設備切割不精細,容易引起不規則斷裂、劃痕、輪廓不方正等缺陷如圖1所示,給企業生產效率造成較大影響。目前很多企業依靠人眼識別,不僅無法保障識別準確率,同時也浪費巨大人力。

圖1 玻璃斷裂、輪廓不方正等缺陷Fig.1 Defects such as glass breakage and irregular contour
隨著計算機技術的飛速發展,很多學者提出采用計算機視覺方法進行檢測,張彩霞結合邊緣檢測、Otsu閾值分割、K均值聚類算法對缺陷標記[1];Rosli提出傳統圖像處理方法檢測[2];Zhou,Xianen提出利用小波變換和頻域方法進行檢測[3];Yao則使用特殊的光配合視覺算法進行檢測[4]。近些年隨著深度學習的興起,許多學者使用深度學習來提高識別準確度,例如Xiong,Honglin提出多尺度卷積神經網絡進行玻璃表面檢測[5];亓手動設計特征提取和識別,再使用簡單的BP網絡進行缺陷分類[6];Tao,Zhang提出提取玻璃的敲擊聲,并通過復雜變換提取特征,最終使用神經網絡進行缺陷分類[7],該方法主要針對玻璃內部結構缺陷,非表面缺陷。總體而言深度神經網絡相關方法優于傳統方法,但其準確率是需要足夠多的缺陷樣本支撐,本文也提出相應方法解決該問題,同時在神經網絡分類功能部分使用多分類,有效提高檢測準確率。
眾所周知,深度學習的強大來源于大量高質量的數據作為驅動,因此采集大量高質量玻璃正負樣本可以有效提高模型對缺陷的識別率。實際生產中玻璃缺陷樣本較少,人工采集需要大量時間極其不方便,本文提出一種方法來解決該問題。首先定義缺陷類別為6種,見表1,包括了生產中常見缺陷類型。

表1 自定義常見缺陷類型Tab.1 Customize common defect types
1-2號缺陷生成方法:首先選取標準圖玻璃矩形框的4個頂點,隨機選擇矩形框一邊(邊的2個端點為AB)隨機中間一點,隨機修改該點距離這條邊(AB)的距離,得到新的點C,分別擬合3點A,C,B得到新的曲線邊,生成新的邊緣輪廓,2號缺陷增加曲線的彎曲幅度;3號缺陷生成方法:對玻璃的左右兩邊重復1-2號缺陷生成方法;4號缺陷生成方法:對玻璃的左右2邊,各分別隨機2個點,因此每條邊共有4個點,再分別對這4個點進行貝塞爾曲線擬合,當隨機的點距離邊越遠,得到斷裂效果越嚴重;5-6號缺陷生成方法:對玻璃的4個角隨機選擇一個角,在角兩邊分別選擇2個靠近角的點A、B,再在角內隨機選擇一個點C,分別連接AC、CB,生成2個新的邊得到一個缺角。生成的邊框效果如圖2所示。

圖2 自左往右、自上而下分別為1-6號生成缺陷邊框Fig.2 Defect borders are generated from left to right and top to bottom respectively for No.1-6
根據生成的邊框,可以生成缺陷圖,公式(1)如下:

其中,⊙符號表示像素位上前值存在,則保留后圖片該像素位上的值,&符號表示像素位上該值存在,則將其復制給后圖片該像素位上。生成的缺陷圖如圖3所示。

圖3 生成1-6種缺陷樣本Fig.3 1-6 types of generated defect samples
為了有效檢測玻璃缺陷,嘗試了不同方法的結合。首先將玻璃原圖進行灰度化得到灰度圖,灰度圖通過摳圖去噪后與原灰度圖相疊加得到疊加圖,疊加圖作為深度神經網絡的輸入,最后輸出原圖的預測結果,即是否包含缺陷,系統框架設計如圖4所示。

圖4 系統框架設計Fig.4 System framework
采集的玻璃圖由于受車間光線不均衡、玻璃是極易反光材質、金屬滾動傳送裝置的反光等影響,產生了較多的反光點,這些反光部分通過神經網絡學習會誤認為是缺陷部位,影響檢測準確度,因此濾波去噪是必要圖像預處理步驟;其次,需要去除圖片中玻璃周圍不相關的部分,使用摳圖算法摳圖,切割玻璃部分出來,去噪摳圖處理后效果如圖5所示。

圖5 去噪摳圖處理前后效果Fig.5 Effect after denoising and matting
其中去噪方法選擇使用雙邊濾波算法[8],相比高斯算法而言,該算法結合了空間距離與灰度距離對卷積核權重進行計算,濾波效果對保留邊緣更有效,算法公式(2)如下:

其中,Wp是歸一化項,I(x)‖)gs(‖xi-x‖);I是輸入的原始圖像;x是當前需要過濾的像素坐標;fr是平滑灰度值差異的范圍內核;gs是平滑幾何差異的空間內核;Wp的權值由灰度差異值和幾何空間差異值共同決定。
實驗中原始圖像灰度化后直接輸入神經網絡訓練、預測得到的準確度并不理想,由于原始圖像玻璃的反光以及玻璃外圍的噪聲對于神經網絡提取特征造成影響,因此本文對灰度圖進行了去噪摳圖預處理,處理后的圖像雖然減少噪聲干擾,同時也對玻璃裂縫特征做了平滑處理,降低了特征的顯著性,所以考慮如何保護玻璃裂縫原有的特征以及有效去掉反光噪聲。玻璃裂縫出現位置處于玻璃邊框附近,因此可以將灰度圖玻璃邊框附近像素保留,其它部分填充去噪摳圖后的像素值,如圖6所示。

圖6 去噪摳圖后的圖片中黑色區域填充灰度化后圖片Fig.6 The black area in the picture after denoising and matting is filled with grayscale picture
缺陷檢測基本目標是判斷玻璃的好壞類別,這是一個典型二分類問題。實驗中發現訓練過程中容易出現過擬合現象,嘗試采取將二分類判別問題轉為多分類判別問題[9],一方面解決過擬合問題,另一方面引導模型更好的學習缺陷的不同特征,具體按照表1所示對玻璃圖片進行標注。
其次,在模型選擇方面嘗試了多種經典模型框架進行訓練,結果表明神經網絡層次太大的模型不利于特征的學習,反而層次小的模型學習效果更好,因此缺陷檢測系統中的模型選擇網絡層次較淺的AlexNet作為基本框架,結構如圖7所示。

圖7 多分類卷積神經網絡設計Fig.7 Multi-classify cnn
其中包括5個卷積層和3個全連接層,第一層的卷積核尺寸為11×11,第二層的卷積核尺寸為5×5,第三至五層卷積核尺寸均為3×3,前2個全連接層輸出個數為4 096,最后一個全連接層輸出個數為7,即玻璃的7種類別,激活函數選擇ReLU激活函數,計算更簡單且模型更容易訓練。
為了提高分類的準確率,實驗對比了多分類與二分類的準確度,實驗環境為:Pytorch1.0、Alexnet網絡模型、損失函數為交叉熵損失、優化算法為Adam算法、學習率為0.000 1,實驗結果如圖8所示。

圖8 多分類與二分類預測結果對比Fig.8 Comparison of multi-classify and binary-classify
其中,多分類情況下預測準確率在epoch值為25后穩定在89%,二分類情況下的預測準確率在epoch值為25后穩定在76%,多分類比二分類的預測準確率提高了約24%,因此該問題轉為多分類問題可以有效提高準確率,將玻璃缺陷細分有利于模型對于缺陷特征進行學習。
圖片的分類網絡目前可選的有很多,如LeNet、AlexNet、VGG、ResNet、DenseNet等,主要區別是網絡的層次深度不同,本文選取了層次較淺AlexNet網絡與層次較深的ResNet網絡進行對比,發現ResNet在訓練集上效果非常好,但是在測試集上分類效果一般,這種情況一般是出現了過擬合,主要原因可能是ResNet網絡層次較深,兩者的預測結果對比如圖9所示。

圖9 AlexNet與Resnet預測結果對比Fig.9 Predict result comparison between AlexNet and Resnet
本文也嘗試了其他網絡分類,其結果對比見表2。實驗環境:Pytorch1.0、epoch為30、訓練集正負樣本各4 000張、測試集正負樣本各1 000張、損失函數為交叉熵損失、優化算法為Adam算法,學習率為0.000 1。對于玻璃這種圖形簡單、缺陷特征較明顯的分類問題,在小模型上分類結果較好,因此本文最終選擇多分AlexNet作為神經網絡模型。

表2 多種方法結果對比Tab.2 Result comparison of methods
目前汽車玻璃缺陷需要大量人工檢測,不僅浪費人力且準確率不高,本文提出一個汽車玻璃缺陷檢測系統用于改善該問題。該系統使用深度學習方法進行缺陷檢測,深度學習特征學習本質上是由數據驅動的,但缺陷樣本十分有限,故提出一種人工合成缺陷樣本的方法,增加深度學習的樣本數據集容量;將數據集缺陷細分成6類,深度學習網絡選擇AlexNet這種淺網絡進行多分類;其次,在圖像預處理階段,將原圖像灰度化并使用去噪摳圖等技術合成網絡模型的輸入圖,可以有效降低原圖中的噪聲,如玻璃的反光。該系統經實驗驗證,在汽車玻璃數據集上分類的準確率達到89%,可以實時進行玻璃缺陷檢測。不足之處是準確率還是不夠高,后續可以增加實際斷裂玻璃數據集數量以及使用對抗生成網絡生成缺陷樣本,進一步完善缺陷檢測系統。