謝 艦,姚劍敏,2*,嚴 群,2,林志賢
(1.福州大學 物理與信息工程學院,福建 福州 350108;2.晉江市博感電子科技有限公司,福建 晉江362200)
磁瓦是由永磁鐵氧體材料制成的瓦形磁體,其在工業上常作為生產永磁電機的核心部分之一。在廠端批量的生產加工磁瓦的過程中,不可避免地會產出表面帶有各種缺陷的殘次品。這些殘次品表面帶有不同類型的缺陷,如果用于生產永磁電機,將會影響永磁電機的性能,嚴重的會引發各種故障。另一方面廠端也需要精準地分辨各種缺陷的邊界和大小,來決定這些殘次品是否可進行維修或進入下一步工序,因此在磁瓦生產工藝中,表面質量檢測是十分重要的一環。傳統方法主要依靠人工檢查磁瓦的表面,這需要額外的雇傭大量的員工,并且需要專門培養員工來識別各種復雜的表面缺陷。這種方法十分耗時、耗力,不僅效率不高,并且限制了工廠的生產力。因此開發自動缺陷識別系統,將磁瓦表面缺陷識別自動化、智能化,是磁瓦制造企業適應工業化4.0發展的重要一步。
早期對磁瓦表面缺陷的自動識別還集中在使用傳統圖像處理技術上。Li[1]提出了一種使用快速離散曲波變換(FDCT)與紋理分析的方法來自動檢測磁瓦上裂紋缺陷的機制,可以檢測到最小長度為0.8 mm的裂紋。楊成立[2]等人提出使用小波變換去噪處理圖像,通過計算對比閾值提取區域匹配相似度和對比輪廓邊緣面積的方式判別磁瓦是否存在缺陷,該方法對磁瓦表面存在的顯著缺陷有較好的檢測效果。針對經典缺陷檢測算法不能很好地提取顏色暗、對比度低的磁瓦圖像缺陷問題,李雪琴[3]等人提出一種非下采樣Contourlet域自適應閾值面的磁瓦缺陷自動檢測方法。為了準確定位磁瓦表面缺陷的邊界,林麗君[4]等人提出一種基于圖像加權信息熵與小波模極大值兩者結合的缺陷邊緣檢測算法。以上所描述的方法能夠很好地解決部分場景下的磁瓦表面缺陷檢測,但面對生產線上背景復雜多變、顏色形狀繁多的缺陷,傳統圖像算法能夠起到的作用十分有限。
近幾年隨著深度學習技術的迅速發展,國內外對基于深度學習的缺陷提取技術進行了不同程度的研究,Wang[5]等人嘗試對輸入圖像進行滑窗切片并通過卷積神經網絡進行逐位置識別,來實現對布匹缺陷的檢測。Mei[6]等人通過改進的卷積降噪自編碼器網絡,使用無缺陷樣本進行訓練并完成對缺陷的定位。王春哲[7]等人引入卷積邊緣信息、顯著性及位置信息改進了候選區域算法從而有效提升了目標檢測算法的召回率。劉暢[8]等人通過U-net[9]分割磁瓦表面缺陷,并且將分割的前景裁剪后使用另一個單獨的分類網絡來進行缺陷分類,實現了缺陷的分割和分類并且都達到了很高的精度。但該方法分割的區域不準時會影響分類準確率,因而限制了準確率的提升。Tabernik[10]等人的工作是嘗試使用一個網絡同時完成分割與分類的任務,僅僅使用少量的訓練數據就在KolektorSDD數據集上取得了99.8%的缺陷識別率。但該方法只能輸出原圖1/8的分割結果,無法分割出原圖一致大小的精細掩膜。綜上所述,基于深度學習的方法在磁瓦表面缺陷檢測識別上已經取得了不錯的效果,但在實際生產過程中往往存在著能夠獲取的總數據少且每種類別分布不均勻的問題,并且想要滿足廠端缺陷分割精準、缺陷分類準確率高的要求,還要解決訓練過程中由于缺陷前景面積占比小導致網絡難以收斂等技術問題。
結合以上所存在的問題,本文提出了一種基于卷積神經網絡的新模型,能夠使用少量的訓練數據實現對磁瓦表面缺陷的實時分割與分類,很好地契合了工業界對于磁瓦表面質量檢測的高要求。
圖1顯示了本文設計的網絡的主要架構,其中包括了一階段的分割網絡,該分割網絡對磁瓦表面的缺陷進行像素級別的定位,通過添加輔助損失函數來提升模型的分割精度。隨后將網絡提取到的深層特征送入二階段的分類網絡,從而實現對磁瓦表面缺陷的精準分割和分類。
分割網絡使用的是經典的U-net網絡架構。U-net作為經典的語義分割模型,經常用于醫學圖像分割、缺陷分割等場景,它能夠使用較少的數據獲得不錯的分割效果。在網絡結構上,U-net采用的是編解碼的結構,先對輸入進行降采樣然后再上采樣。
編碼結構的存在是使卷積神經網絡通過多次降采樣后能夠擁有一個足夠大的感受野,這個感受野能讓網絡提取到更加底層的語義信息,更加關注于一個整體目標和其他背景間的區別。解碼結構是將網絡提取到的抽象特征恢復到原圖大小的過程,由于深度神經網絡一般會使用池化層或者步長不為1的卷積層進行降采樣,在這個過程中會逐漸丟失一些細粒度的信息,所以需要使用直連(Skip-connection)結構,這個結構從高層重新補充了語義信息,在底層特征的基礎上細化了輪廓和邊緣,從而保證了分割的精準度。
分割網絡結構如圖1的紅色虛線框部分所示,藍色的塊為每層輸出的特征圖,黃框內為每層的具體操作。為了加速網絡收斂、穩定訓練,分割部分使用的卷積除1×1的以外都通過了批歸一化層[11]和非線性激活層。將原圖經過兩個3×3的卷積進行擴維操作后,一共使用4個降采樣塊進行編碼操作,每個降采樣塊包含一個2×2的最大池化和兩個3×3的卷積,通過最大池化將輸出寬高降為原來的1/2。同時為了保證降采樣過程中總體信息不損失,每個降采樣塊都會將圖像通道數翻倍,于是在編碼部分的底層輸出原圖寬高1/16大小且通道數為512的特征圖。解碼部分可以看做編碼部分的鏡像,不同的是將2×2的最大池化替換為上采樣操作。上采樣使用的方法為雙線性上采樣,同時將圖像編碼部分提取到和上采樣后一致大小的特征圖在通道上進行合并,最后在經過兩個3×3的卷積合并多個通道的信息輸出給下一層。最終將編解碼得到的特征圖通過一個1×1的卷積進行像素級的分類,輸出和原圖一致大小的掩膜,于是就完成了磁瓦表面缺陷的分割。

圖1 網絡結構示意圖Fig.1 Network structure diagram
由于在分割上只關注缺陷前景和背景,所以在基礎損失函數的設計上本文使用的是二值交叉熵損失。對于每個像素預測為缺陷概率為p,背景概率為1-p,其公式的定義如下:

(1)
其中yi表示每個像素的標簽,缺陷類別為1,背景類別為0,pi表示像素預測為缺陷類別的概率。
并且在實際磁瓦表面缺陷分割問題上考慮到很多細小缺陷實際占磁瓦表面積比例很小,所以對于損失函數的形式進行修正,提升缺陷正樣本所占的損失比重,表達式如下:

(2)
其中i表示屬于標簽的所有缺陷類別的像素集合,j表示屬于標簽的所有背景類別的像素集合,兩者各自求交叉熵的均值后相加。
2.1.1 差異系數損失
為了解決部分的磁瓦表面缺陷前景面積占比太小,導致訓練階段梯度太小網絡難以收斂,本文添加了差異系數損失[12](Dice loss)來提升訓練速度和分割精度,其定義如下:

(3)
從定義上看差異系數是一個相似度度量函數,能夠用于計算兩個樣本間的匹配度。在分割任務上其計算形式是預測的前景區域和標簽掩膜前景區域的交并比,所以它是從一個整體角度去考慮和標簽的區別。這樣即使磁瓦表面缺陷前景面積很小,依然不會影響分割結果和標簽計算的差異度,從而維持訓練階段的梯度。并且直接將分割效果評估指標作為損失去監督網絡訓練,能夠忽略背景像素的影響,解決正負樣本不均衡的問題,提升網絡收斂速度。對應差異系數,其損失函數的形式如下:

(4)
其中,X是網絡預測缺陷區域的像素個數,Y是標簽掩膜的缺陷區域的像素個數。
2.1.2 多層損失
為了解決訓練過程中深層網絡的梯度逐漸消失導致模型無法完全收斂的問題,進一步提升分割精度。本文添加了多層損失[13]維持網絡深層的梯度,監督網絡的深層繼續優化從而降低網絡訓練難度并提升精度。具體的做法為:對于如圖1網絡編解碼部分輸出的特征圖F4_0、F3_1、F2_2和F1_3,在網絡訓練階段對每個特征圖通過一個1×1的卷積輸出和對應特征圖一致寬高的掩膜。于是除網絡本身輸出外,又得到了原圖1/2,1/4,1/8,1/16大小的多層輸出掩膜。并且考慮要得到原圖1/2,1/4,1/8,1/16大小的標簽掩膜,就需要對標簽的尺寸降低對應的倍率,這會導致一些過小的缺陷標簽完全失去邊緣信息。于是本文修改方法為對網絡多層輸出掩膜進行雙線性上采樣到原圖大小,然后計算對應的損失,具體的公式如下:
(5)

對應添加輔助損失函數后訓練的損失下降和缺陷類別的MIoU指標上升曲線如圖2所示,大約訓練75輪以后基礎的交叉熵損失趨近0,無法再提供梯度信息。此后主要由添加的差異系數損失和多層損失產生梯度,使得網絡能夠繼續優化,使得最終缺陷類別的MIoU指標可以提升至接近70%。

圖2 損失下降與MIoU上升曲線Fig.2 Loss decrease and MIoU rate increase curve
分類網絡的設計上采用的網絡架構類似于Tabernik[10]等人提出的方法,并且進行了適應性的修改。本文沒有設計一個單獨的分類網絡來重新訓練分割出的磁瓦表面缺陷,而是通過在分割網絡深層連接卷積層分支來將網絡編碼階段提取到的高級語義信息額外用于磁瓦表面缺陷分類。之所以這么做是因為考慮到分割任務本身就擁有比分類任務更強的監督信息,通過分割精確到像素的監督信息網絡能夠學習到缺陷更細致的輪廓與特征,進一步過濾背景等噪聲的影響,從而得到比只用類別標簽訓練更高的準確率。
參考通常的分類網絡[14-17]的設計一般會采用32倍的降采樣倍率,但考慮到部分缺陷很小,在多次的降采樣過程中的信息丟失會使得磁瓦表面的小缺陷難以區分,并且由于多層損失的引入使得網絡深層對缺陷特征提取能力獲得了進一步提升,于是本文在分類網絡部分沒有再進行降采樣。具體的設計是在圖1的藍色虛線框內,將一階段得到的分割網絡最終輸出的512維特征圖通過兩個殘差塊分別將最終通道合并為128維。此階段不在進行最大池化操作減少信息丟失,并且使用信息流通更加便捷的殘差塊[15]進行特征的編碼。
殘差塊的結構為在圖1的黃色虛線框內,將輸入分為兩條路徑后合并。一條為通過1×1卷積、3×3卷積和1×1卷積,其中除最后的1×1卷積未激活外,其余操作均經過批歸一化層和非線性激活層并且通過第一個1×1卷積合并通道數。另一條路徑為直接通過3×3卷積合并通道數并經過批歸一化層,在殘差塊結尾將兩個路徑輸出的特征圖結果按通道求和并通過非線性激活層進行輸出。經過兩個這樣的殘差塊合并通道特征編碼后,最后將輸出的128維度的特征圖通過全局平均池化和全局最大池化,并合并為256維的向量通過全連接層進行分類。
分類訓練時計算的損失函數為單類別基于sigmoid的二值交叉熵而非一般所使用多類別的softmax交叉熵,因為考慮到磁瓦表面可能存在多種類別缺陷共存的狀態,所以選取各種類別間不相互排斥的單類別交叉熵作為損失函數。網絡最終輸出的結果為一個6維的向量,對向量取sigmoid激活后獲得每個類別的概率分布,其中概率最大的就是網絡預測的類別。損失函數具體的定義如下:

, (6)
其中yi表示對應類別i的預測概率,pi為類別的標簽,樣本類別如果是i則為1,否則為0,將樣本所有類別的二值交叉熵求和的結果即為分類損失。
由于實際場景下能夠獲取的磁瓦表面圖像數據十分有限,在訓練集過小時模型的魯棒性會下降,并且有過擬合的風險。這時通過數據增強能夠有效地擴充訓練數據,增加數據的多樣性,增強模型的泛化能力,提升模型的性能。因此本文在訓練的過程中對數據進行在線增強,具體的操作如下:
在訓練的過程中對圖像和對應標注掩膜進行增強,具體的增強策略包括:(1)有0.5的概率隨機上下翻轉;(2)有0.5的概率隨機左右翻轉;(3)進行-5°~5°的隨機旋轉;(4)有0.5的概率加高斯白噪聲。在訓練過程中,每輪對以上4種圖像增強操作隨機選擇3種,測試集不進行數據增強。得到具體的效果如圖3所示。

圖3 磁瓦圖像增強效果Fig.3 Magnetic tile image augment effect
實驗環境基于開源深度學習框架pytorch,編程工具為vscode。計算機的配置為Ubuntu18.04操作環境,8 G內存,顯卡為GTX1060ti,顯存大小為6 G。模型的訓練是分階段進行的,將分割網絡部分和分類網絡部分分開訓練。分割網絡訓練時模型會只輸出分割網絡的結果,分類網絡的權重不會參與更新。同樣分類網絡訓練時將凍結分割網絡部分的權重,只對分類網絡的權重進行更新。在訓練階段不載入任何預訓練權重,而是權重隨機正態初始化。考慮到實際場景下的測試樣本會遠多于訓練樣本,為了更好地驗證模型的魯棒性并且降低模型過擬合的風險,對數據集進行5∶5劃分,訓練集包含670個樣本,測試集包含674個樣本,兩者的各類別的數目分布相同。
本文所使用的數據來自開源數據集magnetic tile surface defects[18],其包含5種缺陷類別和無缺陷類別,共1 344張。數據集的正負樣本比例為大約2∶5,無缺陷圖片占多數,數據分布很符合實際場景的工廠產出。所有圖片的寬高比例均不一,具體的寬高比例散點圖和數目分布如圖4所示。

圖4 原始圖像寬高分布散點圖Fig.4 Scatter plot of original image width and height distribution
針對原始圖像寬高分布和網絡的降采樣倍率,本文對所有圖片和對應標注掩膜的圖片先統一轉置使得寬大于高,然后再雙線性插值為寬352像素、高320像素的圖像。對應的預處理結果示例如圖5所示,數據集包含的磁瓦表面缺陷有氣孔、破損、裂紋、磨損、起層5種缺陷和無缺陷類別。

圖5 示例圖像Fig.5 Sample images
對于分割所使用的評估指標,我們一般會用平均交并比(Mean Intersection over Union,MIoU)來衡量某個模型的分割效果。IoU指的是兩個區域的交集面積與并集面積的比例,在缺陷分割中,IoU指的是缺陷真實標簽和預測值部分的交并的比值,而MIOU指的是該數據集中每個類別樣本的交并比的平均值。其定義如下:
(7)
其中TP表示實際為缺陷區域以及預測正確為缺陷部位的區域,FP表示實際為背景區域以及預測錯誤為缺陷部位的區域,FN表示實際為缺陷區域以及預測錯誤為背景的區域。
考慮到在缺陷分割任務中,對于缺陷圖片和無缺陷圖片,我們所期望的分割結果是不相同的,對于缺陷圖片更希望能夠分割出缺陷,我們可以用分割出前景的MIoU來衡量分割的效果。但對于無缺陷圖,我們更希望模型輸出一個正常的結果,也即沒有分割出任何前景。又由于實際場景的無缺陷圖片是遠多于缺陷圖片的,如果單純地放在一起進行統計會對總MIoU有很大的影響,從而對模型的指標評估產生偏差。所以本文對無缺陷圖片所采取的衡量方法為單獨取出評估,并且計算背景部分的MIoU。
在實際的場景下,一般會更加關注與缺陷分割出的面積占缺陷本身的比例。于是定義缺陷分割準確率PA(Pixel Accuracy,像素準確率)為分割出的缺陷部位面積占所有缺陷面積的平均值,計算公式如下:
(8)
對于分類評估的指標除了總分類準確率外,想要衡量對于每個缺陷類別的預測精度,會使用召回率(Recall)和準確率(Precition)來衡量每個類別的預測結果,其各自的定義如下:
(9)
(10)
其中TP表示預測為對應類別實際也是該類別的樣本,FP表示預測為該類別實際并非該類別的樣本,FN表示預測并非該類別實際是該類別的樣本。
為了平衡召回率和準確率,本文采用F1-score來衡量模型對每個缺陷類別的預測結果。F1-score同時兼顧了分類模型的精確率和召回率,在形式上表現為每個類別召回率和準確率的調和平均數,其公式定義如下:
(11)
分割網絡部分訓練過程如下:設定初始學習率0.01,優化器采用使用動量的SGD,設定權重衰減率為5e-5。訓練采取動態學習率衰減策略,在訓練輪數為100,200,300,400時令學習率衰減1/10,訓練500輪后網絡基本收斂。
為了驗證添加輔助損失以及數據增強的效果,本文訓練了4組模型,并且記錄了在測試圖片上的各種相關指標,具體結果如表1所示。

表1 添加輔助損失以及數據增強效果對比Tab.1 Effect comprison of add auxiliary loss and data augment
根據消融實驗的結果可以看到,原先分割網絡對于缺陷分割的準確率較低,通過添加差異系數損失能夠使得網絡繼續優化,從而提升2.4%的缺陷類別MIoU,但是缺陷分割準確率只提升0.4%,表明該損失函數貢獻主要在減少網絡對非缺陷部位的誤分割。對比添加多層損失的效果,缺陷類別MIoU提升6.4%,缺陷分割準確率提升10.4%,表明添加多層損失能夠有效優化網絡深層,明顯提升網絡分割效果。最后對比進行數據增強后的效果,缺陷類別MIoU提升8.2%,缺陷分割準確率提升16.9%,表明通過數據增強能夠有效提升模型的魯棒性,增強模型的泛化效果,解決數據量少、數據分布不均衡的問題,從而大幅提升分割精度。
分割網絡消融實驗效果對比如圖6所示,可以明顯看出,通過添加輔助函數后原先分割網絡對于缺陷能夠有效地分割出整體,通過數據增強訓練后,分割的輪廓更加精細。本文訓練使用的缺陷圖片共196張,最后在測試的196張缺陷圖片上獲得了94.5%的缺陷分割準確率,表明本文提出的方法能夠有效地分割出磁瓦表面缺陷,適應實際場景對于磁瓦表面缺陷分割的高精度要求。

圖6 分割效果對比圖。(a)原始圖像;(b)標簽掩膜;(c)原版分割網絡;(d)添加輔助損失;(e)添加輔助損失與數據增強。Fig.6 Comparison charts of segmentation effect.(a)Original image;(b)Label mask;(c)Original segment network;(d)Add auxiliary loss;(e)Add auxiliary loss and data augment.
分類網絡部分訓練過程如下:設定初始學習率3e-4,優化器采用Adam,設定權重衰減率為5e-5。凍結分割網絡部分的權重,訓練50輪后網絡收斂。
為了驗證本文通過分割提取特征進行分類方法的有效性,本文設置了對比實驗,使用同樣的訓練集與測試集來訓練常用的分類網絡。為了驗證本文方法相比劉暢等人的方法是否進一步提升了分類準確率,設置了和文獻[8]的對比實驗。并且為了橫向對比本文所提出的分類網絡結構的有效性,與擁有同樣類似結構的文獻[10]進行對比,最終實驗的結果如表2所示。

表2 分類準確率對比Tab.2 Comparison of classification accuracy
通過實驗1、2與3、4、5的對比,在同樣的圖片預處理下沒有通過一階段分割網絡直接使用Resnet-50[15]、X-ception[16]等分類網絡,最終分類準確率只有70%~89%,表明大量的無缺陷圖片對分類網絡的精度有很大影響,并且由于大部分缺陷占前景面積很小,網絡很難過濾背景信息的影響,因此很難有效提取到缺陷的特征并進行區分。而本文的方法能夠獲得98.9%的準確率表明通過分割部分的強監督學習,網絡能夠有效過濾缺陷背景并且學習到缺陷的特征,避免了類別不均衡的影響,獲得了很高的準確率。通過對比文獻[8]和本文方法的實驗結果,可以看到本文方法在分類準確率上提升了5.4%,表明通過分割網絡提取缺陷特征用于分類的方法能夠避免因誤分割或分割不全所導致的誤分類,從而進一步提升分類的準確率。
本文方法和文獻[10]對比的各缺陷類別F1-score分布柱狀圖如圖7所示。

圖7 各缺陷類別F1-score對比柱狀圖Fig.7 F1-score comparison histogram for each defect category
由圖7可知,本文方法所有的缺陷類別F1-score都能夠到達93%以上,并且大部分高于文獻[10]方法,對比可得應對該場景下本文的分類網絡結構設計更加合理,能夠獲得更高的缺陷分類準確率,滿足工業生產的高精度要求。
本文針對磁瓦生產工藝對磁瓦表面缺陷分割準確、缺陷分類精度高的要求,提出一種基于深度學習的缺陷分割與分類方法,該方法包括一個缺陷分割網絡和在分割網絡上添加的缺陷分類網絡。本文通過添加輔助損失函數有效地提升了分割精度,并使用在線數據增強的方式訓練模型。消融實驗表明,本文添加輔助損失函數和在線數據增強能夠有效提升網絡性能,使其分割出94.5%標注的缺陷區域。對比實驗表明,本文方法相比其他分類方法能夠獲得98.9%的分類準確率,滿足工業上磁瓦表面質量檢測的高要求。