齊宇霄,王 正,謝 輝,唐 倩,童 瑩
(南京工程學(xué)院 信息與通信工程學(xué)院,江蘇 南京 211167)
表面缺陷檢測對工業(yè)生產(chǎn)而言至關(guān)重要,缺陷檢測通常是指對物品表面缺陷進(jìn)行檢測。傳統(tǒng)缺陷檢測通過人眼檢查,費(fèi)時(shí)費(fèi)力,效率低下,檢測精度難以達(dá)標(biāo)。
近幾年,隨著機(jī)器視覺的興起,表面缺陷檢測隨之發(fā)生變化,使用機(jī)器視覺系統(tǒng)代替人類視覺系統(tǒng)大大提高了檢測效率和檢測精度。傳統(tǒng)圖像特征提取算子處于較低水平,在很多情況下提取的特征無法處理,因此很多算法并不適用。最近,深度學(xué)習(xí)在圖像特征提取方面展現(xiàn)出其優(yōu)勢,卷積神經(jīng)網(wǎng)絡(luò)對目標(biāo)分類與定位、語義分割等精度較高。
Faghih-Roohi等[1]使用深度卷積神經(jīng)網(wǎng)絡(luò)在軌道表面執(zhí)行缺陷檢測。將軌道圖像分為6類,包括1類非缺陷圖像和5類缺陷圖像,之后使用DCN對它們再次分類。LIU等提出了兩階段方法[2],該方法將選擇性搜索和卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合,檢測并識別獲得的區(qū)域,然后完成對膠囊表面缺陷的檢測。Yu等[3]使用2個(gè)FCN語義分割網(wǎng)絡(luò)檢測缺陷[4],其中一個(gè)為粗略定位,另一個(gè)為精細(xì)定位,由此準(zhǔn)確繪制缺陷的輪廓,該方法在DAGM 2007數(shù)據(jù)集[5]上比原始FCN具有更高的精度,并可以實(shí)時(shí)完成[6]。
工業(yè)檢測應(yīng)用在實(shí)際當(dāng)中時(shí),因訓(xùn)練樣本中的缺陷較少,因此難以事先收集全面的缺陷樣型。所以,在訓(xùn)練過程中正樣本和負(fù)樣本的數(shù)量極不平衡,生成的模型可能不穩(wěn)定或無效。同時(shí),手動貼標(biāo)簽價(jià)格昂貴,因此難以在實(shí)際缺陷檢測過程中采用。由于缺陷種類不同,且檢測標(biāo)準(zhǔn)和質(zhì)量指標(biāo)也不同,這就需要針對特定需求手動標(biāo)記大量訓(xùn)練樣本,因此人力需求較大。
針對該問題,本文設(shè)計(jì)了一種基于正樣本的產(chǎn)品缺陷檢測方法。首先,需要在已有正樣本中構(gòu)建簡單的缺陷特征,形成自構(gòu)建負(fù)樣本。之后,將自構(gòu)建負(fù)樣本放入自動編碼器,恢復(fù)缺陷特征,實(shí)現(xiàn)對自動編碼器的訓(xùn)練。然后,將測試集中的真實(shí)負(fù)樣本放入訓(xùn)練好的自動編碼器進(jìn)行缺陷修復(fù),生成修復(fù)樣本。最后,使用LBP算法將修復(fù)樣本與真實(shí)缺陷樣本的LBP特征圖相減得到差值特征圖,再將差值特征圖二值化,得到缺陷區(qū)域坐標(biāo)。該方法無需手動粘貼標(biāo)簽,無需大量負(fù)樣本進(jìn)行訓(xùn)練,缺陷檢測精度高、效率高,對工業(yè)檢測的實(shí)際應(yīng)用有很大參考價(jià)值。
系統(tǒng)訓(xùn)練流程和測試流程分別如圖1、圖2所示。
圖1 訓(xùn)練流程
圖2 測試流程
Autoencoder(簡稱AE)[7]是一種可以以無監(jiān)督方式進(jìn)行學(xué)習(xí)的人工神經(jīng)網(wǎng)絡(luò)。早期,自編碼器被用于解決表征學(xué)習(xí)中的編碼問題,其結(jié)構(gòu)如圖3所示。
圖3 自編碼器結(jié)構(gòu)
自編碼器結(jié)構(gòu)簡單,訓(xùn)練時(shí)無需標(biāo)簽,輸出數(shù)據(jù)與輸入數(shù)據(jù)基本可保持一致,所以自編碼器是一種無監(jiān)督算法。重建輸入的神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程,其隱藏層向量具有降維作用。編碼器會創(chuàng)建一個(gè)隱藏層(或多個(gè)隱藏層),包含有輸入數(shù)據(jù)含義的低維向量。解碼器通過隱藏層的低維向量重建輸入數(shù)據(jù),通過神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,AE在隱藏層中得到一個(gè)代表輸入數(shù)據(jù)的低維向量,幫助數(shù)據(jù)進(jìn)行分類、可視化顯示、存儲。
為了能讓網(wǎng)絡(luò)更好地處理圖像類的輸入數(shù)據(jù),我們用卷積層和反卷積層替換了自編碼器中的全連接層,自編碼器結(jié)構(gòu)如圖4所示。
圖4 自編碼器結(jié)構(gòu)
用卷積的思想替換全連接層,可以大大減少網(wǎng)絡(luò)架構(gòu)的參數(shù),同時(shí)卷積可以更好地學(xué)習(xí)圖像特征(具有平移不變性)。一般的卷積神經(jīng)網(wǎng)絡(luò)在卷積層之后接池化層,但這往往會遺漏很多圖像信息,為改善這一現(xiàn)象,我們設(shè)置卷積核的步長為2。逐層卷積后,圖像尺寸越來越小,所以在網(wǎng)絡(luò)后部分使用反卷積方法,逐漸將特征圖融合復(fù)原成原始尺寸,通過訓(xùn)練盡可能讓輸出接近原始圖像。損失函數(shù)計(jì)算:
局部二值模式(Local Binary Pattern, LBP)是用于描述圖像局部紋理特征的算子,具有旋轉(zhuǎn)不變性和灰度不變性等優(yōu)點(diǎn)。它首先由T. Ojala,M.Pietikainen于1994年[8]提出,用于紋理特征提取。
傳統(tǒng)的LBP算子定義在3×3窗口內(nèi),以窗口中心像素為閾值,將相鄰8個(gè)像素的灰度值與其進(jìn)行比較,若周圍像素值大于中心像素值,則該像素點(diǎn)的位置被標(biāo)記為1,否則為0。這樣,3×3鄰域內(nèi)的8個(gè)點(diǎn)經(jīng)比較可產(chǎn)生相應(yīng)的二進(jìn)制數(shù)(通常轉(zhuǎn)換為十進(jìn)制數(shù),即LBP碼,共256種),之后得到該窗口中心像素點(diǎn)的LBP值,并用該值反映該區(qū)域的紋理信息。LBP計(jì)算如圖5所示。
圖5 LBP計(jì)算
提取LBP特征向量的步驟如下:
(1)首先將檢測窗口劃分為16×16的小區(qū)域(cell)。
(2)對于每個(gè)cell中的像素,將相鄰8個(gè)像素的灰度值與其進(jìn)行比較,得到該窗口中心像素點(diǎn)的LBP值。
(4)將得到的每個(gè)cell的統(tǒng)計(jì)直方圖連接成為一個(gè)特征向量,即整幅圖的LBP紋理特征向量。
圖6所示為本文模型使用LBP求缺陷位置的流程。
圖6 利用LBP求缺陷位置的流程
在訓(xùn)練過程中,輸入訓(xùn)練集中給定的正樣本,在正樣本上人工構(gòu)建缺陷,形成缺陷樣本。然后將缺陷樣本放入自動編碼器中訓(xùn)練其修復(fù)能力。本次實(shí)驗(yàn)使用“征圖杯”人工智能大賽數(shù)據(jù)來測試實(shí)驗(yàn)?zāi)P偷男阅?,?shù)據(jù)集為平坦區(qū)下的缺陷數(shù)據(jù)集與非缺陷數(shù)據(jù)集。其中,訓(xùn)練集全為正樣本,測試集既有負(fù)樣本也有正樣本。訓(xùn)練流程如圖7所示,使用自構(gòu)建負(fù)樣本訓(xùn)練自動編碼器的效果如圖8所示。
圖7 訓(xùn)練流程
圖8 使用自構(gòu)建負(fù)樣本訓(xùn)練自動編碼器的效果
測試過程中,將測試圖片真實(shí)負(fù)樣本輸入自動編碼器中,得到生成的修復(fù)樣本(若判別為正樣本則直接輸出),由于還原的圖片細(xì)節(jié)信息存在一些錯(cuò)誤,因此不應(yīng)直接將還原圖片與原始圖片進(jìn)行分割。使用LBP算法進(jìn)行特征提取,然后在每個(gè)像素周圍搜索最匹配的像素。LBP算法是一種非參數(shù)算法,具有光不變性特征,適用于密集點(diǎn)環(huán)境。獲取有缺陷圖片的步驟:通過LBP算法對真實(shí)負(fù)樣本和修復(fù)樣本進(jìn)行處理,設(shè)得到的特征圖為x和y。對于x的每個(gè)像素點(diǎn),在y的對應(yīng)位置搜索最近的特征值點(diǎn),該點(diǎn)作為匹配點(diǎn)的像素點(diǎn)。得到2個(gè)匹配點(diǎn)特征值之差的絕對值,獲得的值越小,該點(diǎn)成為缺陷的可能性就越低。使用固定閾值二值化進(jìn)行處理[9],找到缺陷的位置。測試流程如圖9所示,測試效果如圖10所示。
圖9 測試流程
圖10 測試效果
本實(shí)驗(yàn)基于Keras深度學(xué)習(xí)框架,采用Python語言,選擇首屆“征圖杯”校園機(jī)器視覺人工智能大賽的初賽A榜數(shù)據(jù)集[10],在只使用給定正樣本數(shù)據(jù)集訓(xùn)練的情況下,檢測出給定正樣本與負(fù)樣本混合的測試集缺陷樣本。實(shí)驗(yàn)將同時(shí)使用本文提出的網(wǎng)絡(luò)模型與傳統(tǒng)的圖像邊緣檢測(使用Sobel算子)加填充的方法對缺陷區(qū)域進(jìn)行檢測,對比模型的效果優(yōu)劣。數(shù)據(jù)信息見表1所列。結(jié)果對比如圖11所示。
表1 數(shù)據(jù)信息
圖11 結(jié)果對比
從測試模塊中得到的效果圖像結(jié)果可以看出,我們的模型對于缺陷區(qū)域檢測的檢測精度較傳統(tǒng)的檢測方法更高。此外,分別計(jì)算2個(gè)模型測試得到的缺陷標(biāo)簽圖與缺陷真實(shí)標(biāo)簽的交并比和漏檢率與過檢率之和,比較2種模型的優(yōu)劣。標(biāo)簽對比結(jié)果如圖12所示。測試結(jié)果比較見表2所列。
圖12 標(biāo)簽對比結(jié)果
表2 測試結(jié)果比較 %
實(shí)驗(yàn)表明,在只有正樣本作為訓(xùn)練集的情況下,我們的模型與傳統(tǒng)方法相比,在缺陷區(qū)域檢測精度上有很大優(yōu)勢??梢钥闯?,對于傳統(tǒng)的邊緣檢測加填充的方法,樣本分類存在很多缺點(diǎn),自動編碼器與LBP結(jié)合的模型效果更好。
本文提出的基于正樣本的產(chǎn)品缺陷檢測方法對于只有正樣本作為訓(xùn)練集且背景較平坦的缺陷檢測有著不錯(cuò)的效果,該方法無需手動設(shè)置標(biāo)簽,無需大量負(fù)樣本訓(xùn)練,在缺少負(fù)樣本的情況下缺陷檢測精度和效率更高。