張靖, 俞錫光, 鄭東旭, 施定威, 潘洲民
(1.寧波合力科技股份有限公司, 浙江 寧波 315700; 2.浙江大學(xué), 浙江 杭州 310058)
隨著國內(nèi)制造業(yè)的發(fā)展,汽車中鋁鑄件的需求量也逐年攀升,在鋁鑄件生產(chǎn)過程中,不可避免地會出現(xiàn)一些缺陷,如磨損、凹陷、沖蝕等[1]。傳統(tǒng)鋁鑄件表面缺陷的檢測主要依賴人工,需要花費(fèi)大量的成本,且存在標(biāo)準(zhǔn)不統(tǒng)一、識別能力有限、檢測的準(zhǔn)確率不高等問題[2]。因此鋁鑄件自動檢測具有重要的研究意義。
隨著計算機(jī)技術(shù)的發(fā)展,機(jī)器視覺在缺陷檢測領(lǐng)域中的應(yīng)用也逐年增長。汽車鋁鑄件圖像缺陷處理主要包括缺陷區(qū)域提取、缺陷分割、缺陷分類[3],缺陷分割是圖像缺陷處理中的重要環(huán)節(jié),缺陷分割質(zhì)量影響對鋁鑄件的判定。
在基于圖像處理的缺陷檢測方法中,H F NG使用最大類間方差實(shí)現(xiàn)了基于原始圖像自動閾值化的缺陷檢測[4]。BAI X L等對原始圖像進(jìn)行傅里葉變化,增強(qiáng)了缺陷區(qū)域的顯示,同時實(shí)現(xiàn)了對圖像無缺陷區(qū)域的衰減,提高了對鋁鑄件缺陷位置的定位準(zhǔn)確度[5]。LUO X C提出了一種混合SVM-QPSO的缺陷檢測算法判斷鋁鑄件的缺陷[6]。V REBUFFEL等通過試驗(yàn)證明,與二階導(dǎo)數(shù)和形態(tài)學(xué)操作相比,二維小波變換是一種更穩(wěn)健的自動分割鋁鑄件典型內(nèi)部缺陷的方法[7]。上述方法無法對缺陷區(qū)域信息進(jìn)行精確提取,只能識別缺陷的大致位置、大小等信息,要求精確提取缺陷,傳統(tǒng)圖像處理方法一般使用背景差分法,從預(yù)處理圖像中減去背景圖像以留下包含缺陷和隨機(jī)噪聲的殘差圖像[8-10]。LI X L等將背景差分法用于焊接缺陷檢測,取得了良好的效果,但背景差分法對圖像定位及隨機(jī)圖像噪聲比較敏感[11]。
將深度學(xué)習(xí)引入缺陷檢測領(lǐng)域是近年來發(fā)展的一個方向,由于深度學(xué)習(xí)模型普遍泛化能力強(qiáng),在不同領(lǐng)域圖像之間兼容性高,避免了工業(yè)生產(chǎn)應(yīng)用中數(shù)據(jù)采集困難、數(shù)據(jù)量小的缺點(diǎn),將深度學(xué)習(xí)技術(shù)引入工業(yè)領(lǐng)域也是當(dāng)前的趨勢。劉力哲[12]、J MASCI等[13-14]提出了用于檢測鋁鑄件缺陷的卷積神經(jīng)網(wǎng)絡(luò),并對比了不同的池化函數(shù),但是卷積神經(jīng)網(wǎng)絡(luò)只能檢測鋁鑄件的表面缺陷位置信息,不能實(shí)現(xiàn)缺陷分割。LIU R X等提出了用于提取高位特征空間中的孔隙率信息的深度學(xué)習(xí)網(wǎng)絡(luò),并引入?yún)?shù)傳遞機(jī)制減輕神經(jīng)網(wǎng)絡(luò)中的過擬合現(xiàn)象,該網(wǎng)絡(luò)可以相對提高精度檢測缺陷,但需要大量原始標(biāo)記數(shù)據(jù)集[15]。WANG T等[16]、YAO Y等[17]提出了可以自動從缺陷區(qū)域提取幾何特征的深度卷積神經(jīng)網(wǎng)絡(luò),但幾何特征提取精度低,限制了缺陷等級的判定精度。O RONNEBERGER等針對生物醫(yī)學(xué)圖像分割問題提出UNet網(wǎng)絡(luò),過對稱的U形網(wǎng)絡(luò)結(jié)構(gòu)構(gòu)造對稱的編碼器與解碼器,還使用了跳躍連接,將解碼器與編碼器中具有相同分辨率的子模塊的輸出進(jìn)行連接,作為解碼器中下一個采樣的輸入,該方法實(shí)現(xiàn)了像素的精確定位,克服了小訓(xùn)練集邊緣不夠精確的難點(diǎn)[18]。ZHOU Z W等在UNet網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上提出了UNet++結(jié)構(gòu),抓取不同層次的特征,使分割結(jié)果進(jìn)一步精細(xì)化[19]。UNet系列網(wǎng)絡(luò)在裂紋檢測、礦石分割領(lǐng)域均表現(xiàn)優(yōu)秀,但較少有研究者將其用于鋁鑄件表面缺陷分割。
生成對抗網(wǎng)絡(luò)(generative adversarial networks,GAN)[20]是通過生成器與判別器相互博弈對數(shù)據(jù)進(jìn)行學(xué)習(xí)的方法。P LUC等提出將對抗網(wǎng)絡(luò)用于語義分割任務(wù),通過判別器結(jié)果與語義分割網(wǎng)絡(luò)的博弈來提高分割網(wǎng)絡(luò)的性能,與對抗網(wǎng)絡(luò)結(jié)合后的語義分割網(wǎng)絡(luò)在查準(zhǔn)率和查全率上均超出原方法的3%~5%,表明將GAN與原始分割結(jié)果相結(jié)合具有更好的分割精度與魯棒性[21]。汽車鋁鑄件生產(chǎn)過程中產(chǎn)生的缺陷具有邊緣復(fù)雜、不確定性強(qiáng)的特點(diǎn),且現(xiàn)有公開缺陷數(shù)據(jù)集沒有圖像標(biāo)記,需要手動標(biāo)記,因此需要尋找一種對樣本需求量小,分割效果好的圖像分割方法?,F(xiàn)旨在用少量樣本集獲得更精確的分割結(jié)果,提出一種基于GAN-UNet++的鋁鑄件缺陷檢測方法,首先對圖像進(jìn)行預(yù)處理,并通過Labelme進(jìn)行圖像分割制作標(biāo)記圖,再將UNet++網(wǎng)絡(luò)作為生成器,將生成器結(jié)果與標(biāo)簽圖同時輸入判別器網(wǎng)絡(luò),通過提取圖像特征判斷圖像來源,通過生成器和判別器的相互博弈,提升圖像分割質(zhì)量,通過試驗(yàn)驗(yàn)證并與UNet、UNet++、GAN-UNet 分割結(jié)果進(jìn)行對比,表明了GAN-UNet++的可行性。
UNet網(wǎng)絡(luò)是一種語義分割卷積神經(jīng)網(wǎng)絡(luò),主要由3個部分組成:編碼器、解碼器和連接底層信息與高層信息的跳躍連接,UNet網(wǎng)絡(luò)結(jié)構(gòu)組成如圖 1 所示,其工作原理如下。
(1)將汽車鋁鑄件的缺陷圖與缺陷標(biāo)記圖作為網(wǎng)絡(luò)的輸入進(jìn)行編碼。利用卷積神經(jīng)網(wǎng)絡(luò)提升圖像深度并提取圖像特征,再通過池化操作壓縮圖像面積,經(jīng)過四層卷積池化操作后獲得最底層圖像,保留最小圖像特征。
(2)將圖像通過反卷積操作進(jìn)行解碼,并與編碼過程中位于同一深度的圖像合并,再使用一定的卷積核操作進(jìn)行圖像反卷積,各層操作類似,直至在最后一層輸出分割圖像。
觀察UNet網(wǎng)絡(luò)結(jié)構(gòu)可知,UNet網(wǎng)絡(luò)將下采樣過程中獲得的特征圖與上采樣過程中相同深度的圖像進(jìn)行跳躍連接。
圖1 UNet網(wǎng)絡(luò)結(jié)構(gòu)
UNet++是對原UNet的優(yōu)化[18],其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。UNet++對UNet的改進(jìn)主要體現(xiàn)在跳躍連接部分。以UNet網(wǎng)絡(luò)中X0,4為例,在UNet網(wǎng)絡(luò)中X0,4只與X0,0卷積單元相連接,而UNet++網(wǎng)絡(luò)中,X0,4同時和X0,0、X0,1、X0,2、X0,3卷積單元相連。在UNet++中,各個深度的特征都被兼顧,將判斷特征重要性的任務(wù)交給網(wǎng)絡(luò)。此外在UNet++網(wǎng)絡(luò)中,只需訓(xùn)練一個編碼器,通過不同路徑的解碼還原不同層次的特征。假設(shè)Xi,j代表Xi,j節(jié)點(diǎn)的輸出特征圖,Xi,j的計算可表示為:
圖2 UNet++網(wǎng)絡(luò)結(jié)構(gòu)
其中,i表示下采樣過程中的第i層;j表示相同深度的連接層中第j個卷積單元;H()表示帶有激活函數(shù)的卷積運(yùn)算;u()表示上采樣過程;[]代表疊加操作。
UNet++在UNet網(wǎng)絡(luò)原有結(jié)構(gòu)基礎(chǔ)上,添加了密集跳躍連接,使底層信息和高層信息之間實(shí)現(xiàn)多層次融合,這將使待檢測區(qū)域的細(xì)節(jié)更為完整的保留,從而被分割出來。圖像缺陷分割區(qū)域細(xì)節(jié)豐富,不同分割精度影響鋁鑄件缺陷等級判定,因此相對于UNet,UNet++網(wǎng)絡(luò)更適用于圖像缺陷語義分割。
生成對抗網(wǎng)絡(luò)(GAN)由判別器和生成器兩部分組成。生成器用來生成擬合真實(shí)圖像,判別器用于判斷生成器產(chǎn)生的圖像是否真實(shí),通過兩者之間相互博弈對抗,實(shí)現(xiàn)近似于真實(shí)圖像的輸出。
GAN的目標(biāo)優(yōu)化函數(shù)為:
其中,x為真實(shí)數(shù)據(jù),真實(shí)數(shù)據(jù)x符合Pdata(x)分布;z為噪聲數(shù)據(jù),噪聲數(shù)據(jù)z符合Pz(z)分布;D(x)表示x被判別為真的概率;G(z)為生成器生成數(shù)據(jù);D(G(z))表示生成器生成數(shù)據(jù)被判別為真的概率。
在訓(xùn)練開始階段,由于生成器還沒有開始訓(xùn)練,生成效果較差,此時判別器D判斷真實(shí)圖像的能力強(qiáng),辨別生成圖像能力弱,即此時D(x)和D(G(z))都接近于1,log(1-D(G(z)))的值趨近于負(fù)無窮大,生成器需要減小log (1-D(G(z)))的值,使生成器獲得較大的梯度來更新模型參數(shù)。生成器不斷訓(xùn)練更新,生成更接近真實(shí)的圖像,判別器的梯度也相應(yīng)發(fā)生改變,不斷更新模型以減小D(G(z)),由此判別器與生成器不斷博弈,形成一個對抗過程,GAN結(jié)構(gòu)如圖3所示。
圖3 GAN結(jié)構(gòu)
采用UNet++結(jié)合生成對抗網(wǎng)絡(luò)的優(yōu)化方法,解決缺陷分割圖像中的邊緣細(xì)節(jié)錯分、缺分問題,提出基于GAN-UNet++的缺陷圖分割方法,提升了分割精確度。
將UNet++作為GAN的生成器,產(chǎn)生圖像分割數(shù)據(jù)。常用判別器網(wǎng)絡(luò)為卷積網(wǎng)絡(luò),分析對抗網(wǎng)絡(luò)需求,選取多層卷積神經(jīng)網(wǎng)絡(luò)作為判別器網(wǎng)絡(luò)。將生成器UNet++輸出圖像和標(biāo)簽圖像作為判別依據(jù)分別輸入多層神經(jīng)網(wǎng)絡(luò)判別器。采用全連接卷積分別求出生成器分割圖像和分割標(biāo)簽圖像對應(yīng)的判別器值,并使用交叉熵計算判別器網(wǎng)絡(luò)損失值,采用Adam方法進(jìn)行網(wǎng)絡(luò)學(xué)習(xí)優(yōu)化,在四層卷積網(wǎng)絡(luò)中選擇步長為2,長寬為4×4的卷積核。
在UNet++結(jié)構(gòu)中,每層都會產(chǎn)生一個偽圖像,現(xiàn)只選用最后一層的偽圖像輸入判別器,因此判別器的主要目標(biāo)函數(shù)為:
雖然UNet++其他層生成的偽圖像不需要用于訓(xùn)練判定網(wǎng)絡(luò),但它們?nèi)匀灰糜谟?xùn)練各自層的網(wǎng)絡(luò)。為了保證偽圖像與真實(shí)圖像更加相似,每層UNet++中都加入了L1損失,因此生成器的目標(biāo)函數(shù)為:
首先對數(shù)據(jù)集的樣本圖進(jìn)行分析,鋁鑄件缺陷處理區(qū)域集中,使用傳統(tǒng)的圖像處理方法對鋁鑄件圖像缺陷分割存在一定的局限性。在深度學(xué)習(xí)處理圖像缺陷分割問題時,待分割圖像需要手工標(biāo)注分割區(qū)域,使用標(biāo)注工具Labelme對圖像缺陷進(jìn)行標(biāo)注。對物體逐點(diǎn)標(biāo)注形成分割圖像并形成json文件,對json文件轉(zhuǎn)換后得到缺陷標(biāo)注圖。
隨機(jī)選取其中的90幅為訓(xùn)練集,12幅為測試集,在GAN-UNet網(wǎng)絡(luò)訓(xùn)練過程中,對預(yù)處理后的圖像進(jìn)行圖像增強(qiáng),擴(kuò)充訓(xùn)練集多樣性,圖像增強(qiáng)操作包括隨機(jī)翻轉(zhuǎn)、高斯模糊、仿射變換、圖像截取和填充等。
模型進(jìn)行30 000次迭代訓(xùn)練,每個訓(xùn)練隊(duì)列使用9個樣例。整體網(wǎng)絡(luò)學(xué)習(xí)率為0.000 1,采用0.5的丟棄率以減少網(wǎng)絡(luò)過擬合現(xiàn)象,并使用Adam梯度下降法進(jìn)行網(wǎng)絡(luò)訓(xùn)練。
對于分割圖像質(zhì)量的評價方法,選取Dice系數(shù)、平均像素精度(mean pixel accuracy)、準(zhǔn)確率Rprecision、召回率Rrecall、F1-score來進(jìn)行評估。
Dice用于計算分割結(jié)果與參考圖像之間的相似度,取值范圍在[0,1],計算公式為:
其中,X表示輸出結(jié)果圖像;Y表示參考圖像。
準(zhǔn)確率Rprecision、召回率Rrecall、F1-score指標(biāo)計算公式為:
其中,NTP表示正確檢測屬于缺陷區(qū)域的像素;NFP表示錯誤檢測屬于缺陷區(qū)域的像素;NFN表示錯誤檢測屬于背景區(qū)域的像素。
平均像素準(zhǔn)確度在實(shí)際應(yīng)用中更為廣泛,它通過累加每個類別的預(yù)測正確像素占比并求平均:
其中,Pii代表i類的像素被預(yù)測為i類;Pij代表i類的像素被預(yù)測為j類,k為總類別數(shù),取值為4。
將缺陷圖像分別進(jìn)行UNet、UNet++、GAN-UN-et、GAN-UNet++等分割,分別選取3類缺陷分割結(jié)果各1幅進(jìn)行分析。
劃痕類分割結(jié)果如圖4所示,對比圖4中的試驗(yàn)結(jié)果,GAN-UNet算法檢測結(jié)果與原始缺陷差異較大,如圖4中間的方框內(nèi),GAN-UNet檢測結(jié)果有明顯的粘連現(xiàn)象,而提出的GAN-UNet++算法檢測結(jié)果劃痕連接處更清晰。UNet算法與UNet++算法對于較小劃痕檢測能力偏弱,相較于GAN-UNet++還原度較低。
圖4 劃痕缺陷檢測結(jié)果
斑塊類分割結(jié)果如圖5所示,斑塊類缺陷邊緣較為模糊,UNet和UNet++分割時易出現(xiàn)過擬合現(xiàn)象,不利于正確判斷斑塊類型。在這一缺陷類別中,GAN-UNet++與GAN-UNet表現(xiàn)較好,GAN-UNet邊緣較為平滑,對于小區(qū)域識別能力偏弱。
圖5 斑塊缺陷檢測結(jié)果
夾雜類分割結(jié)果如圖6所示,同劃痕類缺陷分割結(jié)果類似,GAN-UNet檢測結(jié)果粘連現(xiàn)象明顯,容易誤判夾雜缺陷的數(shù)量和大小。UNet算法與UN-et++算法檢測結(jié)果較GAN-UNet好,但仍有部分粘連現(xiàn)象存在,二者的還原度均弱于提出的GAN-UN-et++算法。
圖6 夾雜缺陷檢測結(jié)果
根據(jù)參考文獻(xiàn)[22],將Dice=0.95,Rprecision=0.90,Rrecall=0.98,Aaccuracy=0.97作為分割得分75分的參考值,根據(jù)線性插值計算4項(xiàng)誤差的得分Wsc,繪制標(biāo)準(zhǔn)箱體圖,如圖7所示,虛線表示75分,小正方形表示平均值Wal,UNet、UNet++、GAN-UNet和GAN-UN-et++各項(xiàng)指標(biāo)均在75分之上,可知UNet系列網(wǎng)絡(luò)及變體在鋁鑄件缺陷分割領(lǐng)域表現(xiàn)良好。
圖7 采用所提方法分割結(jié)果的各項(xiàng)指標(biāo)得分和加權(quán)總得分
對測試集的圖像分割結(jié)果進(jìn)行分析,統(tǒng)計不同算法Dice、Rprecision、Rrecall、Aaccuracy的平均值如表1所示。由表1可知,所提出的GAN-UNet++與標(biāo)記圖相似度達(dá)到了97.6%,網(wǎng)絡(luò)模型分割結(jié)果與參考圖相比較,Dice、Rprecision和Aaccuracy的值均優(yōu)于其他3種算法,Rrecall略低于GAN-Unet。
表1 不同網(wǎng)絡(luò)的檢測結(jié)果
生產(chǎn)過程中缺陷對生產(chǎn)效率有重要影響,針對傳統(tǒng)閾值分割效率低,參數(shù)選擇困難的問題,通過將工業(yè)缺陷圖像進(jìn)行手工標(biāo)記,制作工業(yè)圖像分割數(shù)據(jù)集,提出UNet++作為生成器的生成對抗網(wǎng)絡(luò)模型,實(shí)現(xiàn)在小樣本集上的高效分割。提出的GANUNet++與UNet、UNet++、GAN-UNet等算法分割結(jié)果進(jìn)行對比,表明所提出算法的Dice系數(shù)優(yōu)于其他3種算法,解決了深度學(xué)習(xí)網(wǎng)絡(luò)圖像分割邊緣細(xì)節(jié)缺失,分割結(jié)果不夠準(zhǔn)確的問題,為后續(xù)缺陷分級判定提供了有效判據(jù)。