嚴(yán) 偉,楊 朔
(1.浙江省科技信息研究院,浙江 杭州 310006;2.浙江天正信息科技有限公司,浙江 杭州 310006)
我國作為世界上絲綢織物的最主要產(chǎn)地,絲綢從古代開始,就成為了我國與外國貿(mào)易的重要組成部分。也因為絲綢織物的貿(mào)易,從而產(chǎn)生了“陸上絲綢之路”和“海上絲綢之路”。到了近現(xiàn)代,我國的絲綢制造業(yè)在世界范圍內(nèi)也仍處于領(lǐng)先地位。但是在織物花紋缺陷檢測的過程中,傳統(tǒng)的人工檢測花費時間長、人力成本高等缺陷也暴露出來,影響了我國各類織物產(chǎn)品的市場競爭力。在實際生產(chǎn)中,最小的織物缺陷大小僅為0.5毫米[1],一個熟練的操作工平均每分鐘能夠檢測長度為17米、寬度為1米左右的織物。如果工人長時間工作,則會導(dǎo)致效率下降,甚至?xí)z漏重要的缺陷和疵點。如果改用攝像頭獲取圖像,再通過計算機使用深度神經(jīng)網(wǎng)絡(luò)的算法來檢測采集到的織物缺陷類型,則既可以縮短檢測時間,也可以減少人力成本,提高經(jīng)濟效益。
如圖1所示是最簡單的神經(jīng)元,x為輸入量,+1是偏移,h為輸出量。
圖1 最簡單的神經(jīng)元
f(x)是激活函數(shù),它有兩種形式,一種是sigmoid形式,另一種是tanh形式。公式分別為:
sigmoid函數(shù)值范圍為[0,1],而 tanh函數(shù)值范圍為[-1,1]。
BP神經(jīng)網(wǎng)絡(luò)[2]可以學(xué)習(xí)大量的輸入和輸出關(guān)系,且效果非常好。它是一種多層前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Network),由3層組成:輸入層、隱藏層和輸出層。前一層與后一層相互連接,但是本層的信號元之間并不相連,隱藏層的數(shù)量可以是一層或者一層以上,BP神經(jīng)網(wǎng)絡(luò)模型如圖2所示。
圖2 BP神經(jīng)網(wǎng)絡(luò)模型
神經(jīng)元的層與層之間交流由兩種組成:第一種是工作信號,是一種在輸入層輸入然后在輸出層輸出的向前傳播的信號;第二種是誤差信號,它是實際輸出與期望輸出的誤差,從輸出端開始逐漸向前(即輸入端方向)傳播。BP神經(jīng)網(wǎng)絡(luò)是前向傳輸和誤差反向傳播相結(jié)合的一種網(wǎng)絡(luò)。開始時,通過在輸入層輸入,再一層一層的向后傳播,直到輸出層。此時通過比較輸出層的實際輸出和期望輸出,如果相差很大,則會進入誤差反向傳播過程[2],誤差信號按原路返回,調(diào)節(jié)閾值和權(quán)值,然后重復(fù)計算。由于BP神經(jīng)網(wǎng)絡(luò)簡單、效果好的特點,所以被廣泛使用,但同時也有很多缺點,比如需要反向傳播,所以它學(xué)習(xí)效率低,收斂速度相對較慢。
針對BP神經(jīng)網(wǎng)絡(luò)的缺點,提出了3種解決方法:
(1)附加動量
附加動量是在網(wǎng)絡(luò)在反向傳播修正權(quán)值的時候,考慮誤差在梯度上的作用和誤差曲面的變化趨勢。
(2)自適應(yīng)學(xué)習(xí)速率
一般情況下,學(xué)習(xí)速率通常由經(jīng)驗或者實驗得到,但是此數(shù)據(jù)未必有好的效果,故需要神經(jīng)網(wǎng)絡(luò)自動調(diào)節(jié)學(xué)習(xí)速率。如果實際誤差過大,可以調(diào)高學(xué)習(xí)速率;如果出現(xiàn)過調(diào)的情況,就需要降低學(xué)習(xí)速率。
(3)動量—自適應(yīng)學(xué)習(xí)速率
動量附加的方法,可以獲得最優(yōu)解;自適應(yīng)學(xué)習(xí)速率法,則可以減少學(xué)習(xí)時間。故將兩者結(jié)合可以得到一個效率高、訓(xùn)練時間短的神經(jīng)網(wǎng)絡(luò)。
AE[3]是指AutoEncoder自編碼模型,是一種無監(jiān)督學(xué)習(xí)算法,分為輸入層、隱藏層和輸出層3層,其中輸入層和輸出層的維數(shù)相同。
自動編碼器是一種盡可能展現(xiàn)原始輸入信號的神經(jīng)網(wǎng)絡(luò),它先把輸入:
映射到:
其公式是
s為非線性函數(shù),這個過程是編碼過程。與其相對應(yīng),把y轉(zhuǎn)化為z則稱為解碼過程。
整個過程被稱為重構(gòu)過程。重構(gòu)過程中的損失函數(shù)為:
在開始時輸入一個輸入量,此輸入量經(jīng)過一個編碼器Encoder,得到Code,然后再經(jīng)過一個解碼器Decoder,得到輸出。把輸出和輸入比較,如果兩者非常相近,則Code就可以作為一個特征向量。然后不斷調(diào)整Encoder和Decoder,使輸出和輸入的誤差最小,如圖3。
圖3 AE工作原理
DAE[2]是去噪自動編碼器,其結(jié)構(gòu)和AE幾乎一致,只是在樣本中加入了一些具有噪聲的訓(xùn)練樣本,這樣可以訓(xùn)練從受污染的樣本中提取純凈的輸入。去噪自動編碼器認(rèn)為在AE的過程中,提取到的特征不一定是完善的,應(yīng)該在其中添加噪聲,這樣才可以提高特征向量的魯棒性和純潔性。
在原訓(xùn)練樣本X中加入噪聲得到樣本,經(jīng)過重新編碼后得到Y(jié),再把Y解碼重新得到重構(gòu)向量Z,損失函數(shù)即為 LH(X,Z)。 DAE與 AE 的主要區(qū)別在于加入了噪聲,得到更純凈性的特征向量,具體的去噪自動編碼器的流程如圖4所示。
圖4 去噪自動編碼器的原理圖
稀疏自動編碼器[3]也是編碼器的一種,同樣要求輸出和輸入的維度相等,并且它的隱藏層必須是稀疏的,也就是說隱藏層是經(jīng)過壓縮的,那么就會導(dǎo)致丟失一定的信息。稀疏編碼的公式為:
假設(shè)輸入層的維度為m*n,那么根據(jù)自動編碼器的原理可得輸出層的維度也為m*n,把隱藏層的維度設(shè)置為 x*y(x*y<m*n),那么這樣就可以得到稀疏編碼,它的實質(zhì)就是降維。如圖5所示,Layer L1是輸入層,編碼后得到隱藏層Layer L2,L2的維度小于L1,進行壓縮后再次解碼,得到和L1維度相同的輸出層Layer L3,這就是稀疏編碼器。L1中的節(jié)點大部分為0,小部分為1;如果使用tanh作為激活函數(shù),則大部分節(jié)點為-1。
圖5 稀疏自動編碼器的原理
實際生產(chǎn)中較為常見的疵點:
破洞:織物的線橫向和縱向斷裂均超過3根;
污漬:織物由于其他原因?qū)е禄y產(chǎn)生瑕疵;
雜物:在生產(chǎn)中,由于木屑或者其他東西卡入織物中而產(chǎn)生的瑕疵;
經(jīng)疵:縱向的圖案花紋缺陷;
緯疵:橫向的圖案花紋缺陷。
這些缺陷在實際生產(chǎn)中僅僅占一小部分,還有其他種類的缺陷,比如:橫檔、棉球、雙經(jīng)、云織等,這是由不同的缺陷分類標(biāo)準(zhǔn)決定的。
由于受到樣本數(shù)量和種類較少等因素的限制,本實驗主要以正常樣本、經(jīng)疵樣本和緯疵樣本為例,對樣本和標(biāo)簽訓(xùn)練,進行結(jié)果的測試。
圖6 基于BP算法的缺陷檢測
網(wǎng)絡(luò)的層數(shù)一般為3層及以上,包括1層輸入層、1層輸出層和1層或者多層隱藏層[3]。增加網(wǎng)絡(luò)層數(shù)可以提高網(wǎng)絡(luò)的精度,但是會讓網(wǎng)絡(luò)更加復(fù)雜,導(dǎo)致網(wǎng)絡(luò)的訓(xùn)練時間增加。但是增加隱藏層單元數(shù)目比增加隱藏層層數(shù)要簡單得多,在具體設(shè)計中,一般需要多次實驗,才能獲取最合適的網(wǎng)絡(luò)以及初始權(quán)值。初始權(quán)值會直接影響到訓(xùn)練的時間,學(xué)習(xí)速率過大,則會導(dǎo)致系統(tǒng)的不穩(wěn)定,過小則會導(dǎo)致訓(xùn)練時間過長。
首先需要對訓(xùn)練樣本進行預(yù)處理和特征提取,主要是利用圖像分割技術(shù)消除圖像的大小、顏色差異,最后通過歸一化操作得到16×16的像素點陣圖。由于BP神經(jīng)網(wǎng)路是一種有監(jiān)督的學(xué)習(xí),都由一個輸入對象和一個期望輸出組成,所以可以直接輸出分類后的結(jié)果。把圖像和標(biāo)簽一起導(dǎo)入訓(xùn)練,就可以得到所需要的訓(xùn)練集。本實驗采用2層的BP神經(jīng)網(wǎng)絡(luò),隱藏層節(jié)點數(shù)為25,輸出層節(jié)點數(shù)為1。流程如圖6所示,在訓(xùn)練結(jié)束后,對待測試的圖像重新進行測試,表1和表2所示分別為基于BP處理64×64和16×16缺陷圖像的正確率與平均時間。
表1 基于BP處理64×64的缺陷圖像正確率與平均時間
表2 基于BP處理16×16的缺陷圖像正確率與平均時間
由于待測樣本存在缺陷過小,花紋復(fù)雜等因素,所以會出現(xiàn)缺陷的漏測或誤測發(fā)生。如圖7所示均是直接使用BP神經(jīng)網(wǎng)絡(luò)無法檢測出的圖片,因為缺陷的寬度和長度均不明顯,所以程序無法識別出它的缺陷。
圖7 較難檢測的圖像
在程序開始時,先對樣本圖進行訓(xùn)練,利用SAE深度神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,其中包含4個隱藏層。由于原圖大小是64×64,所以輸入層為4096維;4 個隱藏層,分別為 1500,500,200,50,編碼和解碼的過程如圖8所示。在這些訓(xùn)練的樣本中,還隨機加入了部分具有缺陷的樣本,使訓(xùn)練出的特征更具有魯棒性,訓(xùn)練后得到一張64×64圖像,稱為重構(gòu)圖像,如圖9所示。
圖8 樣本的編碼和解碼過程
圖9 訓(xùn)練后的64×64重構(gòu)圖
由于SAE是無監(jiān)督學(xué)習(xí)方式,所以它僅能把訓(xùn)練樣本的數(shù)據(jù)集進行重新建模,在測試過程中并不能直接得到該缺陷的具體種類,因此還需要進一步地對測試圖像進行手動分類處理。把測試圖像和獲得的重構(gòu)圖像均作二值化處理后作差,得到的圖樣即為缺陷圖像,如圖10所示,從左到右分別為導(dǎo)入圖像、重構(gòu)圖像、缺陷圖像。但由于織物花紋顏色的多變性,左側(cè)部分的白色小點不是缺陷,而是需要被過濾的噪聲,最后得到的缺陷圖像如圖11所示。在經(jīng)過多次試驗后,得出二值時期的最佳閾值,以及根據(jù)缺陷圖長寬比值判斷為經(jīng)疵還是緯疵,長寬比值一般設(shè)置為0.9和1.1。
圖10 缺陷檢測結(jié)果圖
圖11 經(jīng)過濾波后的缺陷檢測圖
通過對缺陷的判斷,最后可以獲得織物的檢測結(jié)果,分為3類:正常、經(jīng)疵和緯疵。算法的流程如圖12所示。第一步是通過大量樣本進行訓(xùn)練,500張64×64的樣本訓(xùn)練時間為10分鐘。然后得到一個訓(xùn)練集以及重構(gòu)圖像。把帶檢測圖像導(dǎo)入作差過濾后的圖像就是最終得到的缺陷圖像。
圖12 基于SAE算法的缺陷檢測流程圖
表3 基于SAE處理64×64的缺陷圖像正確率與平均時間
表4 基于SAE處理16×16的缺陷圖像正確率與平均時間
圖13 正常、經(jīng)疵和緯疵圖像
表3和表4是關(guān)于SAE處理64×64和16×16大小的圖像的數(shù)據(jù)。從表格中可以看出,正常的圖片都可以檢測出,經(jīng)疵絕大部分都可以檢測出,但是緯疵也依舊沒有得到較高的檢出正確率。由圖13c)顯示,由于部分的緯疵圖像缺陷不明顯,所以無法檢測出原本缺陷,反而會歸類到正常的圖像中。
本試驗主要進行了4個神經(jīng)網(wǎng)絡(luò)測試,分別是SAE檢測(64×64大小的圖片、16×16大小的圖片)、BP 算法檢測(64×64 大小的圖片、16×16 大小的圖片)。本文使用MATLAB 2015a,在CPU為Intel core i5-4288u的計算機上運行程序,以下為4個神經(jīng)網(wǎng)絡(luò)的具體運行情況統(tǒng)計。
根據(jù)試驗結(jié)果,不同的算法和不同的圖片大小對圖片的檢測正確率和檢測時間都有影響。
(1)由表1和表2對比可以發(fā)現(xiàn),如果同時使用BP算法檢測缺陷,在其他條件一致的情況下,如果圖像像素越小,則圖像檢測時間也越短,雖然圖像的檢測正確率也有所提高,但是效果并不明顯。64×64的圖像大小約為16×16的16倍,但檢測的時間卻相差并不多。
(2)比較表3和表4可知,在算法一致的情況下,圖像像素越小,圖像的正確率越高,圖像的檢測時間就越短。該情況與(1)基本一致,但是圖像檢測的時間延長較多。
圖14 BP和SAE神經(jīng)網(wǎng)絡(luò)對織物缺陷檢測的平均時間比較
缺陷檢測算法通常情況下可以分為兩大類。第一類是將缺陷區(qū)域不同的灰度值變化視為不同的紋理,然后將缺陷識別轉(zhuǎn)化為對圖像灰度值以及圖像紋理的分析,之后,針對所得到的圖像的數(shù)據(jù)特征,設(shè)計一系列的分類規(guī)則來對缺陷進行判斷。2002年H Zheng針對不平金屬表面的缺陷,提出了采用遺傳算法學(xué)習(xí)形態(tài)學(xué)處理的方法來對缺陷進行檢測。2014年Yongxiong Wang等人設(shè)計了一種自動管道缺陷檢測方法,該方法首先對圖像進行分割和特征提取,然后,采用K均值聚類,最后,結(jié)合決策樹對缺陷做出分析判決。這類算法的優(yōu)勢在于不需要額外的空間來存儲模板圖像,并能夠針對所檢測缺陷的特征來設(shè)計具體的檢測算法。
基于參考的缺陷檢測算法是另一類常用的缺陷檢測算法。該種方法經(jīng)常通過模板匹配來獲取缺陷。1989年Oli Silven等人利用圖像的邊緣信息來對印刷電路板進行檢測。其具體采用的方法是,首先選擇合適的線段作為參考條件,然后對檢測圖像進行旋轉(zhuǎn)、移動來對模型圖像進行對準(zhǔn),在進行缺陷分析時同時采用了統(tǒng)計信息和結(jié)構(gòu)信息。采用該種方法對缺陷進行檢測時,在簡單的情況下,統(tǒng)計信息能獲得較好的缺陷檢測結(jié)果,但在復(fù)雜的情況下,結(jié)構(gòu)信息則更能有利于檢測圖像中的缺陷。由于該方法在檢測相關(guān)項目中較為有效,因此很多相關(guān)項目中的研究人員都采用類似的方案并對其加以改進。其基本思路均為通過模板匹配,采用待檢測圖像與模板圖像進行差值的方式來進行缺陷檢測,這種采用模板進行參考的方式在表面缺陷自動檢測中也得到較為廣泛地應(yīng)用。
本文比較了2種基于機器視覺的織物缺陷檢測算法,對速度和缺陷檢出情況進行了初步的考察。BP神經(jīng)網(wǎng)絡(luò)算法作為目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)模型之一,能夠?qū)W習(xí)和存貯大量的輸入-輸出模式映射關(guān)系,而無需事前揭示描述這種映射關(guān)系的數(shù)學(xué)方程??紤]應(yīng)用的便利性和廣泛性,故選擇為本次研究對比參考對象。
自動編碼器作為無監(jiān)督深度學(xué)習(xí)結(jié)構(gòu),通過編碼層對輸入數(shù)據(jù)的非線性編碼實現(xiàn)特征提取,在織物缺陷檢測中,用于缺陷特征表達的特征向量往往是維數(shù)極高,而用于織物檢測缺陷訓(xùn)練的樣本數(shù)卻無法達到這一數(shù)量級。當(dāng)特征向量維度超過訓(xùn)練樣本數(shù)時,容易導(dǎo)致過擬合問題,造成訓(xùn)練誤差較小的情況下,實際測試誤差偏大。故本文選擇SAE算法進行特征提取,通過稀疏化的方式更好地應(yīng)對此問題。
以機器視覺和深度神經(jīng)網(wǎng)絡(luò)的缺陷檢測以圖像預(yù)處理、圖像分割算法、圖像特征提取為基礎(chǔ),結(jié)合一定程度的機器學(xué)習(xí),提高算法的準(zhǔn)確性、實時性和魯棒性,是目前缺陷檢測高效的關(guān)鍵。在實際生產(chǎn)應(yīng)用中,檢測速度、檢測精度(識別率)和對于各種缺陷檢測的適應(yīng)性是非常重要的要素,因此,對這些方面的研究和改進,將會是主要工作。
第一,本文的比較方法基于靜態(tài)圖片,對檢測上速度的考察主要針對算法設(shè)計;實際應(yīng)用情況下,更加傾向于在動態(tài)環(huán)境下采集圖像進行在線檢測。除去算法,需要設(shè)計和考察包含圖像采集在內(nèi)的整個系統(tǒng)。下一步,擬與增加對圖像采集部分的研究。
第二,實際生產(chǎn)中,缺陷的情況多種多樣,遠遠超過本測試的范圍,并且區(qū)分和判斷不同的缺陷類型,對生產(chǎn)線的維護和管理也具有積極意義。故針對不同缺陷進行識別和分類的算法研究也是進一步研究的方向。