劉太亨,何昭水
(廣東工業(yè)大學自動化學院,廣州 510006)
表面缺陷檢測是檢驗產(chǎn)品表面情況的重要步驟,是保證產(chǎn)品質(zhì)量和制造效率的重要步驟。缺陷物品必須及時檢測并清除生產(chǎn)線,否則將嚴重影響后續(xù)裝配線,導致整體質(zhì)量水平下降[1]。傳統(tǒng)上,表面缺陷檢查是手動執(zhí)行的,這種檢測存在采樣率低、檢測精度低和效率低、勞動強度高等問題。因此,利用機器學習方法來替代人工檢測成為目前的主流檢測方法,因為采用自動化方式替代人工檢測,不僅可降低人工成本,而且可提高缺陷檢測效率[2-4]。
傳統(tǒng)的機器學習方法包括神經(jīng)網(wǎng)絡(luò)[5]、支持向量機(Support Vector Machine,SVM)[6]等。例 如,Jeon 等[7]使 用Gabor濾波器并進行邊緣對檢測,并且將基于直方圖和梯度紋理特征輸入SVM來檢測板面上的劃痕。Song等[8]提出了一種基于熱軋鋼帶表面缺陷的局部二進制模式特征的方法。Ding等[9]提出了一種基于定向梯度特征直方圖和SVM的織物缺陷檢測方法。Chondronasios等[10]提出了一種基于灰度共發(fā)生矩陣的鋁型材表面缺陷分類方法。但是,這些方法有一定的局限性,如傳統(tǒng)的機器學習方法在現(xiàn)實生活中很難應(yīng)用于復雜的缺陷情況,如遮擋、物體變形等,它們提取的特征水平低、不夠穩(wěn)固。
近年來,隨著圖像處理和深度學習技術(shù)的飛速發(fā)展,深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)取得了重大成功,尤其在圖像分析和識別方面[11]。深度神經(jīng)網(wǎng)絡(luò)能夠構(gòu)建復雜的表示,并自動學習輸入和輸出之間的組成關(guān)系,將輸入圖像映射到輸出標簽。在表面缺陷檢測中,基于深度學習的方法是近年來的發(fā)展趨勢,大致分為三類:1)基于圖像分類;2)基于對象檢測;3)基于像素分割分成。為了提供高精度的缺陷檢測,許多研究者提出了基于深度學習的分類方法,試圖設(shè)計一個復雜的網(wǎng)絡(luò)結(jié)構(gòu),以提高檢測功率和缺陷分類的性能[12-13]。然而,為了追求高精度,這些復雜的網(wǎng)絡(luò)算法具有參數(shù)多、計算復雜、訓練時間長等缺點,對實際應(yīng)用條件提出了嚴格的要求。這些方法并不適用于那些硬件條件低的中小企業(yè),以至于難以在實際環(huán)境中大規(guī)模使用。
針對上述問題,本文提出了一種基于自編碼和知識蒸餾的表面缺陷檢測方法(Surface defect Detection method based on Auto-Encoding and Knowledge Distillation,SD_AEKD)。該方法包含兩個部分:缺陷檢測和分類。檢測模塊的目的是對輸入的原始圖片進行缺陷的定位。分類模塊的目的是將已經(jīng)定位缺陷區(qū)域通過知識蒸餾方法進行類別分類。實驗結(jié)果表明,該方法不僅能夠精準地定位物品缺陷的區(qū)域,而且能夠提高分類的精度。
知識蒸餾是將知識從大模型(Teacher Model)轉(zhuǎn)移到小模型(Student Model)的過程。盡管Teacher 模型(例如非常深的神經(jīng)網(wǎng)絡(luò)或許多模型的集合)具有比小型模型更高的知識能力,但這種能力可能未得到充分利用。即使模型使用很少的知識能力,評估模型在計算上也可能同樣代價昂貴。知識蒸餾將知識從大模型Teacher 轉(zhuǎn)移到小模型Student 而不會喪失有效性。由于較小的模型評估成本較低,因此可以很容易將其部署在功能較弱的硬件(例如移動設(shè)備)上。
近年來,知識蒸餾在許多計算機視覺任務(wù)中得到了成功的利用。Hinton 等[14]率先探索神經(jīng)網(wǎng)絡(luò)中的知識蒸餾的研究,通過研究圖像分類問題,將教師網(wǎng)絡(luò)的軟輸出定義為包含有用信息的知識,這些信息表示類內(nèi)的相似性和多樣性。Romero 等[15]利用教師網(wǎng)絡(luò)隱藏層的中級提示來訓練一個薄而深的學生網(wǎng)絡(luò)。Li 等[16]提及的對象檢測研究中,小型檢測網(wǎng)絡(luò)有望在大型網(wǎng)絡(luò)的高級功能的監(jiān)督下,學習更多有關(guān)對象表示的知識。Wei等[17]利用模擬和量化策略來訓練一個非常小的檢測網(wǎng)絡(luò),在該方法中,通過轉(zhuǎn)移來自教師網(wǎng)絡(luò)的知識來提高學生網(wǎng)絡(luò)的性能;同時,將全精度網(wǎng)絡(luò)轉(zhuǎn)換為量化網(wǎng)絡(luò),而性能不會大幅下降。通過對未標記數(shù)據(jù)進行知識蒸餾,自適應(yīng)蒸餾知識損失(Adaptive Distillation knowledge Loss,ADL)[18]的性能優(yōu)于僅使用硬目標的數(shù)據(jù)蒸餾方法。通過采用ADL,Student 檢測器的性能優(yōu)于其Teacher 的性能。文獻[19-20]研究了在大型網(wǎng)絡(luò)的額外監(jiān)督下訓練小型語義分割網(wǎng)絡(luò)的知識提煉策略。Liu 等[19]只是簡單地將分割問題視為聚合的單獨像素分類問題,用知識蒸餾策略對緊湊的語義分割網(wǎng)絡(luò)進行訓練。He 等[20]提出了一個新的親和力蒸餾模塊,將這些廣泛分離的空間區(qū)域之間的長期依賴性從教師模型轉(zhuǎn)移到學生模型。基于知識蒸餾技術(shù)的這些優(yōu)勢,本文利用其來進一步提高SD_AEKD 的檢測精度,同時也使SD_AEKD具有高實時性。
本文提出了一種用于物品表面缺陷檢測的基于自編碼和知識蒸餾的框架。該框架主要包含兩個主要部分:缺陷檢測和分類,如圖1所示。
圖1 基于自編碼和知識蒸餾的表面缺陷檢測方法流程Fig.1 Flow chart of surface defect detection method based on auto-encoding and knowledge distillation
2.1.1 級聯(lián)自動編碼器
自編碼器(Auto-Encoder,AE)網(wǎng)絡(luò)廣泛用于信息編碼和重建。通常,AE網(wǎng)絡(luò)包括編碼器網(wǎng)絡(luò)和解碼器網(wǎng)絡(luò)。該網(wǎng)絡(luò)由一個或多個解碼器層塊組成。編碼器網(wǎng)絡(luò)是一個轉(zhuǎn)換單元,通過它將輸入圖像轉(zhuǎn)換為多維特征圖像,用于特征提取和表示,獲取的要素圖中存在豐富的語義信息。相反地,解碼器網(wǎng)絡(luò)通過合并所有中間圖層中所學要素映射中的上下文信息來微調(diào)像素級標簽。此外,解碼器網(wǎng)絡(luò)可以使用向上采樣操作將最終輸出還原到與輸入圖像相同的大小。
由于物品表面缺陷是均勻紋理中的局部異常,缺陷和背景紋理具有不同的特征表示。利用AE 網(wǎng)絡(luò)了解缺陷數(shù)據(jù)的表示,找出物品表面缺陷的共性。因此,物品表面缺陷檢測問題變成了物體分割問題。使用編碼器解碼器體系結(jié)構(gòu)將輸入缺陷圖像轉(zhuǎn)換為像素預測掩碼。
在級聯(lián)自動編碼器(Cascaded Auto-Encoder,CAE)中,新的圖像分割架構(gòu)基于兩個AE 網(wǎng)絡(luò)的級聯(lián),這兩個AE 網(wǎng)絡(luò)共享相同的結(jié)構(gòu)。如圖1 所示,第一個網(wǎng)絡(luò)的預測掩碼作為第二個網(wǎng)絡(luò)的輸入,像素標簽的進一步微調(diào)在第二個網(wǎng)絡(luò)中執(zhí)行。這樣,后一個網(wǎng)絡(luò)可以增強前一個網(wǎng)絡(luò)的預測結(jié)果。
圖2 顯示了單個AE 體系結(jié)構(gòu)。由于物品表面膜不同,損壞點等相同缺陷具有不同的顏色。這種模棱兩可的顏色會影響AE 網(wǎng)絡(luò)的訓練。因此,將原始彩色圖像規(guī)范化為512 ×512 灰度圖像,然后輸入到AE 網(wǎng)絡(luò)中,以減少顏色干擾并加快缺陷分割。該體系結(jié)構(gòu)由編碼器和解碼器組成,如圖2所示。
圖2 自動編碼器(AE)網(wǎng)絡(luò)的體系結(jié)構(gòu)Fig.2 Architecture of Auto-Encoder(AE)network
解碼器網(wǎng)絡(luò)的結(jié)構(gòu)與編碼器網(wǎng)絡(luò)相似。編碼器部分包括10個卷積層,每個卷積層包含3× 3卷積操作以及隨后的整流線性單元(Rectified Linear Unit,ReLU)非線性操作。兩個卷積層中每個層后跟2 × 2 最大池操作,步幅為2。本文在每個最大池層后將要素數(shù)量增加一倍,以減少語義信息的丟失。在兩個卷積層中每個層之后,在解碼器應(yīng)用2 × 2向上采樣操作。向上采樣操作的結(jié)果與編碼器部分的相應(yīng)要素貼圖串聯(lián),以獲取最終要素貼圖。在最后一層,1× 1 卷積與軟最大層連接到AE網(wǎng)絡(luò),以將輸出轉(zhuǎn)換為概率圖。最終預測掩碼是缺陷概率圖,其大小調(diào)整為與輸入圖像的大小相同。
上述AE 網(wǎng)絡(luò)中具有穩(wěn)定的卷積范圍。此網(wǎng)絡(luò)很難“看到”整個缺陷并集成全局上下文以生成預測掩碼。在真實的工業(yè)檢驗環(huán)境中,產(chǎn)品缺陷區(qū)域的大小是不一樣的以及其缺陷的形狀也是多種多樣的。上述網(wǎng)絡(luò)不了解物品表面有更大的檢測對象,如灰塵和纖維。因此,必須設(shè)計不同尺寸的接受字段以適應(yīng)這種情況。本文對空洞卷積進行單元化,以增加網(wǎng)絡(luò)檢測大缺陷的感受野。在圖3 中,圖(a)表示卷積是常規(guī)的3× 3 卷積,圖(b)表示卷積是因子為2 的3× 3 空洞卷積??斩淳矸e將卷積中求和的像素外化,但總和像素與常規(guī)卷積相同。空白中卷積的權(quán)重為0,不參與卷積操作。因此,它們的有效感受野是7× 7。AE 網(wǎng)絡(luò)編碼器部分的常規(guī)卷積被填充1 和步幅1 所替換。AE 網(wǎng)絡(luò)中卷積的詳細參數(shù)顯示在表1中。在編碼器部分中,有四個卷積層被“卷積”所取代。
圖3 空洞卷積示意圖Fig.3 Schematic diagram of atrous convolution
表1 AE網(wǎng)絡(luò)中空洞卷積的參數(shù)Tab.1 Parameters of atrous convolution in AE network
為了訓練AE 網(wǎng)絡(luò),改進了像素交叉熵與重量的減少wa設(shè)計。通常,物品表面的捕獲圖像的背景像素比有缺陷的像素多,因此要重新加權(quán)不平衡的類,即設(shè)置wdefect=0.8 和wbackground=0.2。損失函數(shù)定義為:
其中:wa表示權(quán)重;A=2 表示類數(shù)(背景和缺陷);N表示訓練樣本的大小;M表示每個圖像補丁中的像素數(shù)是指標函數(shù),當=k時,它的值為1,否則為0是第i張圖像中的第j個像素補丁,表示的真實標簽;Pa(·)表示像素為第a類的概率,這是Softmax層的輸出。
2.1.2 閾值模塊
閾值模塊作為獨立模塊添加到ACMD 網(wǎng)絡(luò)的末尾,主要用于進一步優(yōu)化預測掩碼的結(jié)果,它還可以對概率圖應(yīng)用像素閾值操作。本文中,給定的閾值Gs分配給最終預測掩碼:
其中:ITH表示二值化后的最終圖像;Ipm表示二進制化后的預測掩碼圖像;Gs表示細化閾值。當ACMD 訓練時,Gs是檢驗體系結(jié)構(gòu)中需要調(diào)整的唯一閾值。在ITH中,灰色值為0 的像素表示缺陷區(qū)域,灰色值為1 的像素表示非缺陷區(qū)域。為了便于顯示被檢測到的缺陷,在原始彩色圖像上用白色標記缺陷區(qū)域的像素。
2.1.3 缺陷區(qū)域檢測
當獲得所有可能缺陷的語義分割結(jié)果時,將進一步使用斑點分析來找到準確的缺陷輪廓,并從缺陷圖像ITH中提取基于缺陷輪廓的最小封閉矩形區(qū)域(Minimum Enclosed Rectangular area,MER)。這是因為MER 能夠準確地反映缺陷區(qū)域,最終使分類模塊的輸入更加準確和容易。
由于MER 具有隨機方向,因此本文基于仿射變換將斜MER 轉(zhuǎn)換為正方向。正MER 設(shè)置為關(guān)注區(qū)域(Region Of Interest,ROI),最終缺陷區(qū)域是這些ROI。這些缺陷是從原始圖像中裁剪出來,并將其輸入到下一個模塊進行分類。
在分類模塊中,將缺陷區(qū)域劃分為特定類別。當被檢測的物品不同時,通過成像,相同的缺陷(損傷點)可能具有不同的顏色。因此,顏色信息無助于缺陷的分類。首先,將圖像的缺陷區(qū)域補丁轉(zhuǎn)換為灰度圖像,以減少不同背景顏色和照明的影響。其次,考慮到在工業(yè)應(yīng)用中,系統(tǒng)檢測的精度、速度和效率等都是至關(guān)重要的。雖然較大的網(wǎng)絡(luò)可以實現(xiàn)高精度,但是較小的網(wǎng)絡(luò)運行時間較少,成本更低。因此,為了更好地權(quán)衡較大和較小網(wǎng)絡(luò)的優(yōu)點,本文采用知識蒸餾的方法對物品缺陷區(qū)域進行分類。
在知識蒸餾中,為了保持Teacher 模型和Student 模型之間的功能一致性,本文中的Student 模型采用高至低分辨率網(wǎng)絡(luò)(High-to-low Resolution Network,HRNet)——HRNet-18[21],Teacher 模型采用HRNet-32,其中HRNet-32 與HRNet-18 具有相同的架構(gòu)但HRNet-32要大得多。
所提出的知識蒸餾方法通過Teacher 和Student 的平行訓練進行。這意味著Teacher 和Student 的批處理大小、迭代計數(shù)、優(yōu)化器以及學習率等訓練條件是相同的。此外,Teacher和Student 同時訓練。Teacher 經(jīng)過訓練可以最大限度地減小Teacher 預測結(jié)果與真實結(jié)果之間的Softmax 交叉熵損失。但是,對Student 進行訓練,目的是使Teacher 最后一個卷積層的特征圖FT與Student最后一個卷積層的特征圖FS之間的L2損失最小。Teacher和Student模型的損失函數(shù)分別定義如下:
其中:x為輸入的圖像;W表示分類器的權(quán)重;p(xi)表示從訓練數(shù)據(jù)獲得的類的概率分布;q(xi)表示通過HRNet-32模型推導的類的概率分布;C表示輸入圖像的通道;H表示輸入圖像的分辨率。
因此,知識蒸餾總損失函數(shù)為:
其中,α為平衡參數(shù)。在本文中,為了減少實驗的復雜性,知識蒸餾的平衡參數(shù)設(shè)置為α=0.5。
本文采用兩個真實的數(shù)據(jù)集來驗證方法的性能。
1)DAGM 數(shù)據(jù)集。該數(shù)據(jù)集有10個類,如圖4所示,每個類包含1000 個非缺陷圖像和150 個有缺陷的圖像。數(shù)據(jù)處理方法如下:本文使用128× 128像素窗口來滑動和剪切原始的512 × 512像素圖像,對于無缺陷圖像步長為128,對于有缺陷的圖像步長為8,無缺陷圖像的數(shù)量多于有缺陷的圖像數(shù)量。對于剪切的缺陷圖像,本文保留圖像超過80%的缺陷部件,并混合10 種類型的圖像。最終訓練集包含790 個缺陷圖像和5260 張無缺陷圖像,測試集包含710 個缺陷圖像和5040張無缺陷圖像。
圖4 DAGM數(shù)據(jù)集的部分樣例Fig.4 Some samples of DAGM dataset
2)Magnetic-tile數(shù)據(jù)集。Magnetic-tile由6個數(shù)據(jù)集組成,如圖5所示,每個數(shù)據(jù)集包括等比例的Image和正確標注圖片(Ground Truth,GT),其中Blowhole 有230 張,Break 有170 張,Crack 有114 張,F(xiàn)ray 有64 張,Uneven 有206 張,F(xiàn)ree 有1904張。為了更好地驗證所提方法的性能,本文隨機將整個數(shù)據(jù)集拆分為訓練集和測試集,比率為3∶1。數(shù)據(jù)處理方法如下:本文使用128× 128 像素窗口來滑動和剪切原始的1408×512 像素圖像,步長為128;對于無缺陷圖像,步長為8。對于剪切的缺陷圖像,本文存儲了包含55%以上缺陷部件的圖像,因為部分瓦片缺陷區(qū)域較小,并且在數(shù)據(jù)集中的缺陷圖像數(shù)量很少。最終訓練集包含588 張缺陷圖像和142 張無缺陷圖像,測試集包含196張缺陷圖像和476張無缺陷圖像。
圖5 Magnetic-tile數(shù)據(jù)集的部分樣例Fig.5 Some samples of Magnetic-tile dataset
為了評估模型的性能,本文采用準確率(Accuracy)、精確率(Precision)、召回率(Recall)和交并比(Intersection over Union,IoU)來評價物品缺陷圖像檢測和分類的性能。四個評價指標的定義如下:
其中:TP、FP、TN和FN分別表示真陽性、假陽性、真陰性和假陰性;GT表示真實檢測框;PM表示預測檢測框。
3.3.1 SD_AEKD的缺陷檢測性能
為了評估SD_AEKD 的檢測性能,將所提出的SD_AEKD方法與下面的七種方法進行實驗對比分析:1)用于裂痕檢測的圖像處理工具箱(Image processing Toolbox for Crack detection,CrackIT)[22],這是一套全面的圖像處理算法,用于檢測和表征路面的表面裂紋。2)最小路徑選擇(Minimal Path Selection,MPS)[23],這是一種從二維路面圖像自動檢測裂痕的新方法,它依賴于每個圖像中最小路徑的定位。3)基于隨機樹的道路裂痕檢測(Crack detection based on random Forest,CrackForest)框架[24],這是一種基于隨機結(jié)構(gòu)化森林的新型道路裂縫檢測框架,用于道路裂痕不均勻檢測。4)U 型卷積網(wǎng)絡(luò)(U-shaped convolutional Network,U-Net)[25],這是一種全卷積網(wǎng)絡(luò)進行語義分割的算法,用于對缺陷圖像進行分割檢測。5)全卷積網(wǎng)絡(luò)(Fully Convolutional Network,F(xiàn)CN)[1],這是一種端到端的圖像分割方法,用于圖像像素級別的標簽預測。6)快速區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Fast Region-Convolutional Neural Network,F(xiàn)ast-RCNN)[26]是一種快速對整個圖像進行區(qū)域獨立特征提取的網(wǎng)絡(luò),用于圖像的目標檢測。7)掩模區(qū)域卷積神經(jīng)網(wǎng) 絡(luò)(Mask Region-Convolutional Neural Network,Mask-RCNN)[27]是一種基于Fast-RCNN的目標檢測網(wǎng)絡(luò),它在Faster R-CNN的基礎(chǔ)上添加了一個預測分割mask的分支。這些方法涵蓋了目前對表面缺陷檢測的各個類別,即檢測、分類和分割。
表2 給出了在兩個真實數(shù)據(jù)集上的檢測結(jié)果。從表2 可以看出,本文所提出的SD_AEKD 方法在數(shù)據(jù)集DAGM 上以0.9647 的準確率(Accuracy)、0.9392 的精度(Precision)、0.9578 的召回率(Recall)和0.8192 的IoU 達到最佳性能,且在Magnetic-tile 上以0.9647 的準確率(Accuracy)、0.9392 的精度(Precision)、0.9578 的召回率(Recall)和0.8192 的IoU也達到最佳性能。圖6 給出了一些樣例在數(shù)據(jù)集DAGM 上的檢測分類結(jié)果。
圖6 部分樣例在DAGM數(shù)據(jù)集上的檢測分類結(jié)果Fig.6 Detection and classification results of some samples on DAGM dataset
表2 不同方法在物品表面缺陷檢測上的性能指標對比Tab.2 Performance index comparison of different methods in item surface defect detection
3.3.2 SD_AEKD的分類性能
為了定量評估知識蒸餾的分類性能,本文將所提出的SD_AEKD 方法與其他的三種傳統(tǒng)的機器學習分類方法進行比較,這些方法的代碼可以公開獲取。
1)灰度共生矩陣(Gray Level Co-occurrence Matrix,GLCM)[10]:此方法是經(jīng)典的紋理提取,其中包括四個典型的描述:能量、對比度、熵和相關(guān)性。
2)定向梯度直方圖(Histogram of Oriented Gradient,HOG)[9]:它通??梢酝ㄟ^以下步驟獲得。首先,通過將圖像劃分為較小的連接區(qū)域來獲得單元;然后,獲取單元中每個像素的梯度或邊緣方向直方圖;最后,通過組合這些直方圖來構(gòu)成完整的特征描述符。
3)HOG+SOBEL:本文以SOBEL 操作為特征計算梯度幅度,并結(jié)合以上HOG特征形成一個新特征。
取決于上述特征,使用多層感知器(MultiLayer Perceptron,MLP)進行了三個缺陷分類實驗。MLP 在隱藏層和具有三個輸出變量的輸出層中包含15 個單元。輸入層數(shù)由上述特征的尺寸決定。MLP中優(yōu)化算法的最大迭代次數(shù)為1000。GLCM 功能由六個灰度級組成,并在共現(xiàn)矩陣中計算90°方向。HOG 中灰度值的量化為8。SOBEL 中濾鏡的大小為33。表3 給出了不同分類方法的性能對比。可以看出,在DAGM 和Magnetic-tile 數(shù)據(jù)集上,三種傳統(tǒng)的基于機器學習的淺層特征方法的平均準確率分別達到了70.54%和79.26%,而知識蒸餾的準確率相較于這些方法分別提高了19.87 個百分點和15 個百分點。圖7 給出了一些樣例在Magnetic-tile 數(shù)據(jù)集上的檢測分類結(jié)果。
表3 不同方法在物品表面缺陷分類上的性能指標對比Tab.3 Performance index comparison of different methods in item surface defect classification
圖7 部分樣例在Magnetic-tile數(shù)據(jù)集上的檢測分類結(jié)果Fig.7 Detection and classification results of some examples on Magnetic-tile dataset
本文提出了一種新穎的基于自編碼和知識蒸餾的表面缺陷檢測體系結(jié)構(gòu),可以針對復雜的工業(yè)場景準確執(zhí)行物品表面的缺陷檢測和分類任務(wù)。在SD_AEKD框架中,檢測模塊將缺陷圖像轉(zhuǎn)換為僅包含缺陷像素和背景像素的逐像素預測蒙版,目的是能夠精準地定位缺陷的區(qū)域。此外,分類模塊利用知識蒸餾方法將所檢測出來的缺陷進行類別分類。最后,在兩個真實的表面缺陷數(shù)據(jù)集的實驗結(jié)果表明,本文所提出的SD_AEKD方法的缺陷檢測平均準確率為97.00%,在IoU評價指標上的平均得分為86.05%,并進一步驗證本文所提出的SD_AEKD方法在檢測和分類的性能顯著提升。