萬 東 孫志剛 肖 力
(華中科技大學(xué)自動化學(xué)院 武漢 430074)
在紡織工業(yè)生產(chǎn)中,紡織品的檢測是一道重要的工序,它決定了產(chǎn)品的質(zhì)量,因此,疵點檢測是生產(chǎn)工序中絕不可忽視的環(huán)節(jié).然而,傳統(tǒng)的織布疵點檢測仍然是通過人工視覺來評定,人工長時間的檢驗不僅會影響產(chǎn)品質(zhì)量的客觀評定,還受限于檢驗人員的熟練程度。隨著布匹生產(chǎn)速度的提高以及對產(chǎn)品質(zhì)量要求的提高,人工檢驗存在很大的弊端,包括檢測速度慢、檢測率低和穩(wěn)定性差等,這使得人工檢驗越來越不適應(yīng)工業(yè)生產(chǎn)的需求,因此,迫切需求生產(chǎn)過程中實現(xiàn)自動、精準(zhǔn)、快速檢測疵點的方法[1~4]。近年來,紡織品疵點檢測領(lǐng)域也提出了一些檢測算法,但是,在準(zhǔn)確率和實時性上尚難兼得,難以適應(yīng)工業(yè)生產(chǎn)的需求。
本文提出一種基于共度共生矩陣(GLCM)和支持向量機(SVM)實現(xiàn)織布疵點檢測的算法,借助GPU強大的計算能力,并行計算得到GLCM以及特征值,組成特征向量輸入已訓(xùn)練完成的SVM分類模型,得到圖像最終的分類,實現(xiàn)織布圖像中的疵點類型檢測,算法流程如圖1所示。GPU完成圖像GLCM以及特征值的計算,保證了算法的實時性;GLCM特征值反映的圖像紋理特征以及SVM強大的分類能力保證了算法檢測的準(zhǔn)確率。實驗證明該方法能夠精準(zhǔn)且快速檢測出布匹中的孔洞、異物、油漬和折痕疵點。
圖1 檢測算法流程示意圖
灰度共生矩陣(GLCM)用圖像中具有某種空間位置關(guān)系的像素對的聯(lián)合分布概率密度來定義,可以看成兩個像素對的灰度分布聯(lián)合直方圖,是一種二階統(tǒng)計。它不僅反映了圖像灰度變化信息,也很好地反映了相同灰度級像素之間的位置分布關(guān)系等特征[5]。
假設(shè)輸入圖像為 f(x,y),大小為M×N,灰度級為L,則滿足一定空間關(guān)系的GLCM定義為概率矩陣:
其中,#{x}表示集合 x中的元素個數(shù),因此,GLCM(i,j)是一個L×L的方陣,假設(shè)圖像中的兩點 (x1,y1)與 (x2,y2)間距為 d,兩點所在直線與坐標(biāo)軸之間的夾角為θ,其中概率矩陣中元素(i,j)的值表示一個灰度為i,另一個灰度為 j的兩個相距為d的像素對在夾角θ的方向上出現(xiàn)的次數(shù)。
像素對的間距和方向用一個一維向量表示,如圖2所示,圖像中某點(x,y)的灰度值為i,而在(x+dx,y+dy)點的灰度值 j,則此時將GLCM中相應(yīng)位置 (x,y)處的值加1(初始值為0)[6]。
圖2 GLCM的定義及計算方法示意圖
灰度共生矩陣有2個重要的參數(shù):1)圖像灰度級總數(shù);2)向量對[dx,dy]。對同一輸入圖像,取不同的向量[dx,dy]會得到不同的灰度共生矩陣。
原始灰度圖像的灰度級為256,特征矩陣較大,一般為了減小計算量,可以降低圖像的灰度級,但會損失信息。本模塊采用GPU計算,灰度級對時間影響不大,因此,灰度級確定為256。
[dx,dy]向量對的選擇往往依賴于布匹表面紋理的分析,利用自相關(guān)函數(shù)[7]分析如圖所示紋理圖像,得到橫向和縱向紋理周期均為8pixels,因此,GLCM的生成步長取為8,方向選擇0°、45°、90°和135°4個方向,即向量對選擇為[8,0]、[8,8]、[0,8]和[-8,8]。
GLCM不能直接用于描述圖像的紋理特征,本算法選取能量Asm、熵Ent、對比度con和逆差矩ind等4個統(tǒng)計量[8]來提取它所反映的紋理特征,它們的定義如下所述,其中P(i,j)代表GLCM。
能量反映了圖像灰度分布的均勻性,粗紋理的能量矩較大,細(xì)紋理的能量矩較??;
熵值是圖像所具有的信息量的度量。若圖像沒有任何紋理,則熵值接近零,若圖像充滿細(xì)紋理,則圖像的熵值最大,若圖像中分布著較少的紋理,則圖像的熵值較??;
對比度反映了影響紋理的清晰度,紋理的溝紋越深,其對比度越大,圖像的視覺清晰效果越好;
逆差矩反映了局部同質(zhì)性,當(dāng)GLCM沿對角線集中時,其逆差矩值較大。
CUDA是NVIDIA于2006年推出的一套針對異步計算資源下的大規(guī)模并行計算的架構(gòu),該架構(gòu)使GPU能夠解決復(fù)雜的計算問題。CUDA采用一種分層的編程模型來組織線程,其基本思路是:用戶根據(jù)需要定制一定數(shù)量的線程準(zhǔn)備投入計算,并能夠定制線程和數(shù)據(jù)的映射關(guān)系;在計算中線程被分為若干線程組,每個線程組被映射到圖形處理器中的一個處理單元組上,組內(nèi)的線程可以協(xié)同工作,它們具有一些相關(guān)屬性,不同的線程組根據(jù)硬件的規(guī)格并發(fā)或順序的被激活[6]。CUDA采用單指令多線程(SIMT)的計算模型,其線程結(jié)構(gòu)如圖3。
圖3 CUDA線程結(jié)構(gòu)示意圖
在CUDA架構(gòu)下,GPU執(zhí)行時的最小單位是線程(thread),若干個 thread組成 1個線程塊(block)。每個block內(nèi)所能夠包含的thread數(shù)量是有限的。執(zhí)行相同程序的block,可以組成grid。
為了保證算法的實時性,將GLCM和特征值的計算放置到GPU端執(zhí)行。
圖4 圖像紋理分塊圖
圖5 計算GLCM時GPU端線程分布圖
由于GLCM考慮的是像素對的關(guān)系,因此,GPU端采用二維的grid和block完成GLCM的并行計算,將原始圖像劃分為二維的紋理塊,GPU的每個block處理一個紋理塊,block內(nèi)的每個線程負(fù)責(zé)1個像素。原始圖像大小為227×227,紋理塊的大小為32×32,原始圖像被劃分為8×8個紋理塊,如圖4,對應(yīng)8×8個block,每個block內(nèi)線程分布為32×32,GPU端線程劃分如圖5。
GPU端線程劃分中,在blockIdx.x=7的block內(nèi),僅僅threadIdx.x<3的線程參與計算,其他線程不做處理;在blockIdx.y=7的block內(nèi),僅僅thread?Idx.y<3的線程參與計算,其他線程不做處理。
由于GLCM的灰度級確定為256,因此,其能量、熵、對比度和逆差矩等4種特征值的計算,采用1維的grid和block,即256個block,如圖6,其中每個block中256個thread,每個線程負(fù)責(zé)一項,對于能量、熵、對比度和逆差矩,每個線程分別負(fù)責(zé)對應(yīng)歸 一 化 后 的 P(i,j)2、 -P(i,j)·lgP(i,j) 、,通過2次規(guī)約求和,得到最后的4種特征值。
GPU端計算出4個向量對應(yīng)GLCM的特征值,共計16維組成特征向量。
圖6 計算4種特征值時GPU端線程分布圖
支持向量機[9~10](SVM)是上世紀(jì) 90 年代被提出來的一種機器學(xué)習(xí)方法,它較好的解決了小樣本、高維數(shù)、非線性、局部極小等問題。其基本思想是在樣本空間,構(gòu)造出最優(yōu)超平面使得超平面與不同類樣本集之間的距離最大,從而達(dá)到最大的泛化能力。SVM中對于線性不可分的問題通過引入核映射解決。
SVM原本解決的是二分類問題,給定樣本集(xi,yi) ,i=1,2,…,N,xi∈Rd,yi∈{-1,1} ,對于在原空間線性不可分的分類問題,普通的線性分類器效果很差,但是SVM能夠很好地解決,它引入非線性映射Φ:Rd→Rn,將輸入向量映射至高維空間Rn,通過在Rn中線性可分解決問題,SVM分類即求解在Rn中構(gòu)造的最大間隔超平面wΦ(x)+b。
αi可通過求解如下二次規(guī)劃問題解決:
而其中高維空間的內(nèi)積(Φ(xi)Φ(xj))通過核映射交給原空間的內(nèi)積解決,即在原空間確定核函數(shù)K(xi,xj)=(Φ(xi)Φ(xj)),因此,原二次規(guī)劃問題即轉(zhuǎn)化為
SVM本為解決二分類問題,當(dāng)處理多類問題時,就需要構(gòu)造合適的多類分類器。當(dāng)前,設(shè)計多分類器的方法主要有兩類:一種是直接法,即直接設(shè)計多分類SVM分類器[11],該方法直接在目標(biāo)函數(shù)上修改,將多個分類面的參數(shù)求解合并到一個最優(yōu)化問題中,通過求解該最優(yōu)化問題“一次性”實現(xiàn)多類分類。該方法計算復(fù)雜度高,實現(xiàn)困難。另外一種是間接法,主要通過多個SVM二分類器組合實現(xiàn)多分類器,組合方式有兩種,一種是“一對多”,另一種是“一對一”。
一對多法:訓(xùn)練時依次將某個類別的樣本歸為一類,其余樣本歸為另一類,這樣k個類別的樣本即構(gòu)造出k個SVM。分類時將未知樣本分類為具有最大分類函數(shù)值的那類。
一對一法:在任意兩類樣本之間設(shè)計一個SVM,因此k個類別的樣本需要設(shè)計k(k-1)/2個SVM。當(dāng)對一個未知樣本進(jìn)行分類時,最后得票最多的類別即為該未知樣本的類別。
由于本文針對的織布疵點有多種類型,因此采用“一對一法”設(shè)計SVM多分類器,織布疵點種類數(shù)目為N,則設(shè)計N+1類分類器,用于對N類疵點圖像以及無疵點圖像進(jìn)行分類。
將包含各類疵點以及無疵點的織布圖像作為學(xué)習(xí)集,將學(xué)習(xí)集的圖像計算出4個方向的GLCM的4類特征值組成特征向量作為SVM的輸入來訓(xùn)練SVM分類模型,為了確定SVM的超參數(shù),采用N折交叉驗證法[12]。訓(xùn)練完成后,得到滿足要求的各樣本間的最優(yōu)超平面,SVM分類模型即得到。
本文實驗檢測對象為如圖7含有孔洞、油漬、異物、折痕4類疵點以及無疵點的織布圖像,圖像大小227×227。軟件環(huán)境為:UBuntu16.04 64位操作系統(tǒng),CUDA開發(fā)工具版本號為8.0,算法實現(xiàn)語言為C++,圖像處理的基本函數(shù)以及SVM基于OpenCV2.4.13庫。硬件環(huán)境為:Intel(R)Xeon E5-2630 v4 CPU,主頻為2.2GHz,內(nèi)存為8GB;GPU為 NVIDIA GeForce GTX1080,顯存為 8GB,CUDA核心數(shù)為2560個,核心頻率為1607MHz,顯存帶寬為320GB/s。
圖7 待檢測的織布圖像
在對準(zhǔn)確率和耗時進(jìn)行測試之前,需將SVM 5分類模型訓(xùn)練完成。本文通過工業(yè)相機采集并截取得到的3000張圖像按照5:1分為訓(xùn)練集和驗證集,使用10折交叉驗證法訓(xùn)練SVM,得到訓(xùn)練完成的SVM模型后,采用另外的500張圖像(每類圖像各100張)進(jìn)行準(zhǔn)確率和耗時進(jìn)行測試。測試準(zhǔn)確率和耗時結(jié)果分別如表1和表2。
表1 各類圖像的分類準(zhǔn)確率
其中的單張圖像總耗時542μs是根據(jù)輸入圖像到輸出結(jié)果的總耗時,除表中的灰度共生矩陣和特征值的計算時間,還包括CPU端圖像數(shù)據(jù)拷貝至GPU耗時以及計算過程中求最大像素值的耗時。
表2 各階段平均耗時結(jié)果
由表1可見,該算法對孔洞、油漬、異物、折痕4類疵點以及不含疵點的圖像的識別正確率較高,其中,對于含折痕疵點和不含任何疵點的布匹圖像的識別準(zhǔn)確率最高,均不低于98%,對于異物和油漬疵點的識別準(zhǔn)確率較好,但對于孔洞疵點的識別正確率遠(yuǎn)低于其他類型。由表2可見,該算法對于227×227的單張圖像平均耗時542μs,實時性很好。
針對當(dāng)前織布疵點檢測的正確率和實時性問題,提出一種基于CUDA計算灰度共生矩陣特征值和支持向量機的檢測算法,借助GPU強大的計算能力,并行計算得到GLCM以及特征值,組成特征向量輸入已訓(xùn)練完成的SVM分類模型,得到圖像最終的分類,實現(xiàn)織布圖像中的疵點類型檢測。GPU強大的計算能力保證了算法的實時性;GLCM特征值反映的圖像紋理特征以及SVM強大的分類能力保證了算法檢測的準(zhǔn)確率。實驗結(jié)果表明,本文采取的算法能夠較為準(zhǔn)確并且實時的檢測出織布圖像中的各類疵點,能夠基本滿足工業(yè)生產(chǎn)的需求。
[1]劉建麗,卓寶奇,曾憲奕.基于小波紋理分析和LVQ神經(jīng)網(wǎng)絡(luò)的無紡布均勻性識別[J].專家系統(tǒng)及其應(yīng)用,2010,37(3):2241-2246.LIU Jianli,ZUO Baoqi,ZENG Xianyi.Nonwoven unifor?mity identification using wavelet texture analysis and LVQ neural network[J].Expert Systems with Applications,2010,37(3):2241-2246.
[2]陳琳,汪軍,李立輕.基于二維Gabor濾波器的非織造布疵點檢測[J].東華大學(xué)學(xué)報,2012,38(6):695-699.CHEN Lin,WANG Jun,LI Liqing.Nonwoven Fabric De?fects Detection Based on 2D Gabor Filter[J].Journal of Donghua University,2012,38(6):695-699.
[3]黃瀟玲,孫科,李子燊.表面疵點在線檢測技術(shù)在非織造領(lǐng)域的應(yīng)用[J].產(chǎn)業(yè)用紡織品,2009(5):39-43.HUANG Xiaoling,SUN Ke,LI Zishen.Application of on-line inspection of surface defect in nonwovens[J].In?dustrial textiles,2008(5):39-43.
[4]曾躍民,劉麗芳.基于計算機圖象處理的非織造布質(zhì)量檢測與控制技術(shù)[J].非織造布,2001(3):37-40.ZENG Yuemin,LIU Lifang.Nonwovens Properties Detec?tion and Control Technology Based on Computer Image Processing[J].Nonwovens,2001(3):37-40.
[5]李剛.皮膚檢測技術(shù)的研究與應(yīng)用[D].重慶:重慶大學(xué),2008:26-28.LI Gang.Skin Detection Technology Research and Appli?cation[D].Chongqing:Chongqing University,2008:26-28.
[6]劉海平.基于機器視覺的無紡布疵點在線檢測系統(tǒng)搞研究[D].武漢:華中科技大學(xué),2015:20-21.LIU Haiping.Research on Nonwoven Fabric Defect On?line Detection System Using Machine Vision[D].Wuhan:Huazhong University of Science and Technology,2015:20-21.
[7]祝雙武,郝重陽,李鵬陽.基于紋理結(jié)構(gòu)分析的織物疵點檢測方法[J].計算機應(yīng)用,2008,28(3):647-649.ZHU Shuangwu,HAO Chongyang,LI Pengyang.Fabric de?fect detection method based on texture structure analysis[J].Journal of Computer Applications,2008,28(3):647-649.
[8]白雪冰,王克奇.基于灰度共生矩陣的木材紋理分類方法的研究[J].哈爾濱工業(yè)大學(xué)學(xué)報,2005,37(12):1667-1670.BAI Xuebin,WANG Keqi.Research on the classification of wood texture based on Gray Level Co-occurrence Matrix[J].J Harbin Inst Technol,2005,37(12):1667-1670.
[9]克里斯特安尼.支持向量機導(dǎo)論[M].北京:電子工業(yè)出版社,2004:82-98.Nello Cristianini.An Introduction to Support Vector Ma?chines and Other Kernel-based Learning Methods[M].Beijjing:Publishing House of Electronics Industry,2004:82-98.
[10]張學(xué)工.關(guān)于統(tǒng)計學(xué)習(xí)理論與支持向量機[J].自動化學(xué)報,2000,26(1):32-41.ZHANG Xuegong.Introduction to Statistical Learning Theory and Support Vector Machines[J].Acta Automati?ca Sinica,2000,26(1):32-41.
[11]曹兆龍.基于支持向量機的多分類算法研究[D].上海:華東師范大學(xué),2007:19-25.CAO Zhaolong.Multiclass classification Method Re?search With SVM Arithmetic[D].Shanghai:East China Normal University,2007:19-25.
[12]Stone M.Cross-validatory choice and assessment of sta?tistical predictions[J].Journal of the Royal Statistical,1974,36(2):111-147.