楊彬,亞森江·木沙,張凱
(新疆大學(xué)機(jī)械工程學(xué)院,新疆 烏魯木齊 830047)
缺陷檢測(cè)是生產(chǎn)實(shí)際中不可缺少的一個(gè)程序。傳統(tǒng)的機(jī)器視覺(jué)在檢測(cè)物體缺陷時(shí),必須要設(shè)定明確的規(guī)則去進(jìn)行檢測(cè)。但是在實(shí)際生產(chǎn)中很難用這種方法去實(shí)現(xiàn)檢測(cè)要求。當(dāng)今工業(yè)產(chǎn)品外形的多樣性,使得很多生產(chǎn)企業(yè)員工或技術(shù)人員很難用這些特殊規(guī)則去描述其產(chǎn)品外表的缺陷。雖然人們很容易去看懂一個(gè)缺陷,但是真正用程序化語(yǔ)言去描述它是非常困難的。深度學(xué)習(xí)技術(shù)是一種不需要人工設(shè)計(jì)規(guī)則的數(shù)據(jù)驅(qū)動(dòng)方法。
通過(guò)構(gòu)建多層網(wǎng)絡(luò)來(lái)構(gòu)建基于視覺(jué)的缺陷檢測(cè)模型,用于評(píng)估產(chǎn)品外表上的缺陷。同時(shí),利用合理的損失函數(shù)和優(yōu)化算法使模型自主學(xué)習(xí)隱含在圖像數(shù)據(jù)內(nèi)部的潛在關(guān)系,從而使模型具有更好的泛化能力,以至于自主預(yù)測(cè)出產(chǎn)品的缺陷。
基于深度學(xué)習(xí)的缺陷檢測(cè)大致可分為三大類(lèi)。分別為基于分類(lèi)的方法,基于檢測(cè)的方法及基于分割的方法等。文獻(xiàn)[1]使用分類(lèi)的方法,用一種多層的CNN網(wǎng)絡(luò)對(duì)DAGM2007數(shù)據(jù)集中的六類(lèi)缺陷樣本進(jìn)行分類(lèi)。文獻(xiàn)[2]基于GoogLeNet 網(wǎng)絡(luò)的CNN 對(duì)LCD屏進(jìn)行異常檢測(cè)。文獻(xiàn)[3]使用GoogLeNet網(wǎng)絡(luò)遷移學(xué)習(xí)的方法進(jìn)行熱軋帶鋼表面質(zhì)量檢測(cè)。雖然基于分類(lèi)的方法具有檢測(cè)速度快等優(yōu)點(diǎn),但無(wú)法能夠精確描述缺陷的具體信息。為了克服分類(lèi)法的這種不足,許多研究者想到每次把樣本圖像分成多個(gè)區(qū)域,然后逐次選擇某個(gè)小區(qū)域并判斷在選定區(qū)域內(nèi)是否存在缺陷。利用深度學(xué)習(xí)分類(lèi)網(wǎng)絡(luò)對(duì)樣本圖像的各個(gè)小區(qū)域進(jìn)行分類(lèi)訓(xùn)練,然后利用滑動(dòng)窗口對(duì)整張圖片進(jìn)行預(yù)測(cè),直到把缺陷區(qū)域分割出來(lái)文獻(xiàn)[4]利用這種方法對(duì)混凝土裂縫進(jìn)行檢測(cè)。
但是這種方法同樣無(wú)法完成像素級(jí)的缺陷檢測(cè),其檢測(cè)精度很難得到保證。目標(biāo)檢測(cè)主要是找到圖像中感興趣的特征信息,并精確定位其位置。在缺陷檢測(cè)中,文獻(xiàn)[5]把Faster R?CNN用于土木建筑領(lǐng)域的混凝土、鋼裂紋等的損傷檢測(cè)。文獻(xiàn)[6]結(jié)合SSD、YOLO等方法構(gòu)建了一種從粗到細(xì)的級(jí)聯(lián)檢測(cè)網(wǎng)絡(luò),并應(yīng)用到高鐵線路緊固件缺陷檢測(cè)。
然而,目標(biāo)檢測(cè)技術(shù)使用矩形框架來(lái)定位物體的缺陷,而缺陷的分布和表面形狀不規(guī)則。因此,這種方法也無(wú)法能夠描述缺陷的具體特征。有些學(xué)者為了提高檢測(cè)精度,將缺陷檢測(cè)任務(wù)作為一個(gè)語(yǔ)義分割任務(wù)來(lái)處理。其目的是對(duì)樣本圖像中的缺陷進(jìn)行像素級(jí)的分類(lèi)。
即,將缺陷區(qū)域和非缺陷區(qū)域分為兩類(lèi),并產(chǎn)生像素級(jí)的檢測(cè)結(jié)果,將會(huì)大大提高檢測(cè)精度。文獻(xiàn)[7]應(yīng)用FCN進(jìn)行檢測(cè)混凝土裂縫,但是這種網(wǎng)絡(luò)架構(gòu)不適用于數(shù)據(jù)集較少的情況。然而在現(xiàn)實(shí)情況中產(chǎn)品缺陷的圖片是較少的,且比較難獲得的。因此,找到一種在訓(xùn)練集較少的情況下能夠得到較高的檢測(cè)精度和效率是非常關(guān)鍵。
在缺陷檢測(cè)中許多產(chǎn)品表面是高紋理的,例如紡織品、大理石等,它們存在的高紋理對(duì)缺陷的識(shí)別帶來(lái)了更大的挑戰(zhàn)性,背景紋理和缺陷存在相似性,紋理和缺陷不容易區(qū)分。針對(duì)這種類(lèi)型的缺陷,對(duì)不同高紋理背景下存在不同缺陷的數(shù)據(jù)集進(jìn)行檢測(cè),會(huì)得到高紋理下缺陷檢測(cè)更加通用的模型。
U?Net網(wǎng)絡(luò),如圖1所示。它是一種全卷積網(wǎng)絡(luò)結(jié)構(gòu),可以對(duì)任意大小的圖像進(jìn)行快速精確分割,能夠在很少的訓(xùn)練圖像前提下產(chǎn)生更精確的分割。該網(wǎng)絡(luò)首先由文獻(xiàn)[8]提出,并應(yīng)用于各種生物醫(yī)學(xué)圖像分割。在最近幾年由于U?Net優(yōu)異的性能也被用在其他領(lǐng)域的應(yīng)用中。例如,用它從遙感圖像中提取水體[9]、橋梁裂縫檢測(cè)[10]、石塊圖像分割[11]等。由于缺陷數(shù)據(jù)集往往有采集比較困難、數(shù)據(jù)量比較小以及圖片大小可能隨時(shí)變化等特點(diǎn),檢測(cè)中采用基于U?Net的網(wǎng)絡(luò)很好彌補(bǔ)這些缺點(diǎn)。
圖1 原始的U?Net網(wǎng)絡(luò)模型Fig.1 Original U?Net Network Model
由于缺陷檢測(cè)更偏向于分析數(shù)字圖像中的紋理信息,缺陷的語(yǔ)義信息比較弱。因此,底層的特征信息對(duì)于缺陷檢測(cè)非常重要。然而在U?Net網(wǎng)絡(luò)中經(jīng)過(guò)大量卷積和池化后丟失掉諸多底層特征信息,這對(duì)于缺陷檢測(cè)是非常不利的。
主要對(duì)原始的U?Net網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行三處優(yōu)化。在下采樣階段中,對(duì)每前一階段獲得的特征經(jīng)過(guò)下采樣融合到下一階段中,使其在采樣過(guò)程中能夠充分利用底層信息,防止過(guò)多紋理細(xì)節(jié)的丟失。在上采樣階段,將每一階段的特征進(jìn)行轉(zhuǎn)置卷積到跟輸出層一樣的大小,使它們?nèi)诤系捷敵鰧又?。在下采樣的最后一層用空洞卷積來(lái)替代普通卷積,增加卷積核的感受野。
在缺陷檢測(cè)中,缺陷沒(méi)有具體的形狀,且語(yǔ)義信息較弱,在檢測(cè)中應(yīng)該更注重底層的紋理特征信息。在原始網(wǎng)絡(luò)模型的下采樣過(guò)程中,隨著深度的增加會(huì)丟掉許多有用的底層特征信息。在下采樣過(guò)程中采用特征融合策略可以有效保留更多有用的紋理信息,從而提高檢測(cè)精度。
以U?Net 作為基礎(chǔ)網(wǎng)絡(luò),對(duì)其網(wǎng)絡(luò)結(jié)構(gòu)中的上采樣階段stage1到stage4進(jìn)行改進(jìn)。在stage1到stage4中,每個(gè)階段的第一層和第二層為卷積層,第三層為最大池化層。將輸入特征圖和第一階段的中間層進(jìn)行融合,在stage1到tage4中下一階段的中間層依次融合上一階段的最后一層。讓每一階段都能夠充分融合到上一階段的特征,讓底層特征盡可能保留更多的細(xì)節(jié)信息。在U?Net網(wǎng)絡(luò)結(jié)構(gòu)中上采樣都融合了對(duì)稱的下采樣的信息。即,在下采樣和上采樣過(guò)程中都進(jìn)行了豐富的紋理特征信息。改進(jìn)的網(wǎng)絡(luò),如圖2所示。
圖2 改進(jìn)的U?Net網(wǎng)絡(luò)模型Fig.2 Improved U?Net Network Model
在缺陷檢測(cè)中缺陷大小是未知的,形狀也是不規(guī)則的。為了能夠?qū)θ毕葸M(jìn)行精確的檢測(cè),在上采樣階段采用多尺度融合的策略,將局部細(xì)節(jié)信息和整體輪廓信息結(jié)合,使其更好地適用于缺陷較大或較小時(shí)的檢測(cè)精度。
對(duì)U?Net網(wǎng)絡(luò)結(jié)構(gòu)中的上采樣階段stage6到stage9進(jìn)行如下改進(jìn)。在上采樣中每個(gè)階段的第一層為反置卷積層,第二層和第三層為卷積層。把stage6到stage8的最后一層進(jìn)行轉(zhuǎn)置卷積,轉(zhuǎn)置卷積到與stage9 第一層同樣的大小,并把它們直接拼接到stage9的第一層。這樣在stage9中融合了多尺度特征,可以有效地提高檢測(cè)的精度。
通過(guò)計(jì)算在下采樣階段最高層的感受野為(140*140)。針對(duì)最高層的邊緣特征感受野不夠大,要提高特征的感受野,利用空洞卷積提高感受野,并且不會(huì)帶來(lái)額外的計(jì)算量。
在原始U?Net網(wǎng)絡(luò)中stage5兩層都為卷積核大小為(3*3)步幅為1的卷積層。在stage5中使用空洞卷積來(lái)代替卷積層,增加卷積核的感受野,兩個(gè)空洞卷積的膨脹系數(shù)分別取1和4。用普通卷積stage5輸出的感受野為(140*140),換成空洞卷積后感受野變?yōu)椋?68*268),遠(yuǎn)大于普通卷積的感受野??梢栽黾訉?duì)圖像中邊緣缺陷檢測(cè)的準(zhǔn)確度。
在DAGM(The German Association for Pattern Recognition)和GNNS(German Chapter of the European Neural Network Society)聯(lián)合舉辦的“工業(yè)光學(xué)檢測(cè)的弱監(jiān)督學(xué)習(xí)”競(jìng)賽提出的基準(zhǔn)數(shù)據(jù)集DAGM[12]上進(jìn)行大量的實(shí)驗(yàn),評(píng)估所提出方法的有效性。
DAGM數(shù)據(jù)集包含大小為(512×512)像素的6個(gè)類(lèi)的圖像樣本,如圖3所示。在圖中缺陷用紅色橢圓標(biāo)出,它由常見(jiàn)的不同的高紋理類(lèi)和不同的缺陷類(lèi)型組成。在圖3(a)中代表了高紋理下的模糊類(lèi)缺陷,圖3(b)和圖3(e)代表了高紋理下劃痕缺陷,圖3(c)代表了高紋理下壞點(diǎn)缺陷,圖3(e)代表了高紋理下擦傷缺陷,圖3(f)代表了高紋理下裂紋缺陷。每一類(lèi)由1000個(gè)無(wú)缺陷圖像和150個(gè)缺陷圖像組成。此數(shù)據(jù)集為弱標(biāo)記數(shù)據(jù)集,分割標(biāo)簽不是以像素級(jí)給出的,而是以橢圓圈出缺陷區(qū)域。由于在實(shí)際標(biāo)注中,像素級(jí)的標(biāo)注代價(jià)成本特別高,弱標(biāo)記可以節(jié)省大量成本,對(duì)標(biāo)注要求低,更符合現(xiàn)實(shí)情況。
此數(shù)據(jù)集具有很高的挑戰(zhàn)性。它的部分樣例,如圖3所示。在圖3(a)中,背景中有和缺陷相似的均勻紋理信息;在圖3(d)和(f)中背景紋理信息干擾特別大,其具有和缺陷類(lèi)似的高頻紋理信息;在圖3(c)中背景紋理信息和缺陷具有很大相似性;在圖3(b)和圖3(e)中背景噪聲很大,使得缺陷區(qū)域和非缺陷區(qū)域區(qū)別不明顯,對(duì)缺陷監(jiān)測(cè)造成較大的干擾。
圖3 DAGM數(shù)據(jù)集中的部分樣例展示Fig.3 Some Examples of DAGM Dataset
在實(shí)驗(yàn)中,每一類(lèi)隨機(jī)選擇575張圖片作為訓(xùn)練集,剩下的575 張圖片作為測(cè)試集。在訓(xùn)練集中采用5 折交叉驗(yàn)證,總共3450幅圖像被隨機(jī)分成5組,編號(hào)從0到4。每次選擇4組作為訓(xùn)練集,其余一組作為驗(yàn)證集。每類(lèi)每次有2760張訓(xùn)練圖像和690張驗(yàn)證圖像。
采用Adam算法對(duì)模型進(jìn)行優(yōu)化。Adam算法是一種對(duì)隨機(jī)目標(biāo)函數(shù)執(zhí)行一階梯度優(yōu)化的算法[13],其學(xué)習(xí)率在訓(xùn)練過(guò)程中會(huì)發(fā)生改變。Adam 可以通過(guò)計(jì)算梯度的一階矩估計(jì)和二階矩估計(jì),為不同的參數(shù)設(shè)計(jì)獨(dú)立的自適應(yīng)性學(xué)習(xí)率。這就可以加快前期訓(xùn)練的速度,而不影響后期訓(xùn)練的收斂性。算法的初始學(xué)習(xí)率η=0.0001,一階矩估計(jì)的指數(shù)衰減率β1=0.9,二階矩估計(jì)的指數(shù)衰減率β2=0.999。每次隨機(jī)選擇2張樣本圖像作為一個(gè)小批量進(jìn)行訓(xùn)練。
在U?Net進(jìn)行分割中的評(píng)價(jià)指標(biāo)為Dice系數(shù),其計(jì)算公式如式所示:
式中:mask—真實(shí)標(biāo)注;prediction—預(yù)測(cè)結(jié)果;Dice—描述圖像分割算法的結(jié)果與其相應(yīng)的真實(shí)缺陷標(biāo)注的相似程度;用Dice損失函數(shù)訓(xùn)練可以更直觀地達(dá)到更高的Dice值;Dice損失函數(shù)如式所示:
在進(jìn)行訓(xùn)練時(shí)發(fā)現(xiàn),Dice損失無(wú)法在初始訓(xùn)練時(shí)提供有意義的梯度。這會(huì)導(dǎo)致模型的不穩(wěn)定性,而這種不穩(wěn)定性往往會(huì)促使模型難以訓(xùn)練。用Dice損失函數(shù)訓(xùn)練過(guò)程中訓(xùn)練損失和驗(yàn)證損失,如圖4所示。
圖4 Dice損失函數(shù)下訓(xùn)練和驗(yàn)證損失Fig.4 Training And Verifying Loss with Dice Loss Function
由于交叉熵?fù)p失函數(shù)在開(kāi)始訓(xùn)練中收斂速度快,算法也引入了交叉熵?fù)p失函數(shù),其數(shù)計(jì)算公式如式所示:
采用交叉熵?fù)p失函數(shù)和Dice損失函數(shù)的聯(lián)合形式訓(xùn)練的訓(xùn)練損失和驗(yàn)證損失,如圖5所示。
圖5 聯(lián)合損失函數(shù)下訓(xùn)練和驗(yàn)證損失Fig.5 Training and Verifying Loss with Joint Loss Function
缺陷檢測(cè)算法實(shí)驗(yàn)采用Python3.7.3開(kāi)發(fā),其深度學(xué)習(xí)框架采用TensorFlow[14]。實(shí)驗(yàn)設(shè)備為一臺(tái)CPU 為Intel Xeon E5?2650L v3、顯卡為NVIDIA GTX?970上進(jìn)行。所改進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu)同文獻(xiàn)[3]中基于滑動(dòng)窗口的CNN方法、SegNet方法、U?Net方法進(jìn)行比較。基于滑動(dòng)窗口的CNN 方法是把原始圖像(512*512)分割成(32*32)像素后做分類(lèi)訓(xùn)練。一個(gè)圖像分成256個(gè)小塊,預(yù)測(cè)時(shí)在原圖上滑動(dòng)窗口進(jìn)行預(yù)測(cè)。通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),滑動(dòng)步長(zhǎng)越小,預(yù)測(cè)精度越高,但是預(yù)測(cè)用時(shí)越長(zhǎng)。當(dāng)所設(shè)的步長(zhǎng)為1、4、8、16、32時(shí),所用的時(shí)間分別為351ms、23ms、16ms、8ms、2ms等。考慮到預(yù)測(cè)的實(shí)時(shí)性,預(yù)測(cè)時(shí)設(shè)定滑動(dòng)窗口大小為32,滑動(dòng)步長(zhǎng)為8,對(duì)原圖進(jìn)行預(yù)測(cè)。對(duì)改進(jìn)的U?Net方法和原始U?Net方法、SegNet方法以及基于滑塊窗口的CNN方法進(jìn)行比較。檢測(cè)結(jié)果圖,如圖6所示。在圖中可以看出改進(jìn)的網(wǎng)絡(luò)具有比較好的檢測(cè)效果。
圖6 各算法缺陷檢測(cè)結(jié)果對(duì)比Fig.6 Comparison of Defect Detection Results of Each Algorithm
對(duì)測(cè)試集上的圖片進(jìn)行預(yù)測(cè)時(shí),由于基于滑動(dòng)窗口CNN的方法在檢測(cè)中不能提供像素級(jí)的缺陷檢測(cè),當(dāng)預(yù)測(cè)時(shí)滑動(dòng)窗口具有比較明顯的滑動(dòng)痕跡。當(dāng)把滑動(dòng)步長(zhǎng)減少時(shí),雖然滑動(dòng)窗口痕跡變?nèi)?,精度變高,但是檢測(cè)時(shí)間變長(zhǎng),達(dá)不到實(shí)時(shí)性要求。只列出它在預(yù)測(cè)中滑動(dòng)窗口步長(zhǎng)為8時(shí)的預(yù)測(cè)圖片,不再用它與其它檢測(cè)方法進(jìn)行參數(shù)比較。對(duì)于其它檢測(cè)方法分別用Dice系數(shù)值和Accuracy值來(lái)進(jìn)行評(píng)估。得到它們的平均Dice系數(shù)值、最大Dice值以及Accuracy值,如表1所示。
表1 各算法缺陷檢測(cè)參數(shù)值對(duì)比Tab.1 Comparison of Defect Detection Parameters of Each Algorithm
對(duì)于Accuracy設(shè)定,當(dāng)有缺陷時(shí)預(yù)測(cè)的Dice<0.5或把無(wú)缺陷預(yù)測(cè)成有缺陷時(shí),假設(shè)為預(yù)測(cè)失敗。當(dāng)有缺陷時(shí)預(yù)測(cè)的Dice>0.5或預(yù)測(cè)正確無(wú)缺陷類(lèi)型時(shí),認(rèn)為預(yù)測(cè)成功。其Accuracy評(píng)價(jià)指標(biāo)用如下公式確定:
式中:TP—預(yù)測(cè)成功的數(shù)量;FP—預(yù)測(cè)失敗的數(shù)量;Dice系數(shù)公式如式(1)所示。
在DAGM缺陷數(shù)據(jù)集上驗(yàn)證了改進(jìn)的U?Net算法,并與原始U?Net算法、SegNet算法以及文獻(xiàn)[3]中基于滑動(dòng)窗口的CNN網(wǎng)絡(luò)進(jìn)行對(duì)比。實(shí)驗(yàn)結(jié)果表明,改進(jìn)的U?Net方法平均Dice系數(shù)值以及Accuracy值都高于其它檢測(cè)方法,具有更高的分割精度和檢測(cè)效率。特別是對(duì)第四類(lèi)缺陷進(jìn)行檢測(cè)時(shí),其余方法存在檢測(cè)不到或錯(cuò)檢的現(xiàn)象,而改進(jìn)的U?Net 網(wǎng)絡(luò)可以有效地檢測(cè)出缺陷。這就說(shuō)明該算法有較強(qiáng)的通用性,對(duì)不同高紋理圖案的適應(yīng)性強(qiáng)。在同等條件下的缺陷檢測(cè)中,能夠體現(xiàn)出更高的檢測(cè)精度和的更好穩(wěn)定性。