萬 東 孫志剛 肖 力
(華中科技大學(xué)自動(dòng)化學(xué)院 武漢 430074)
在紡織工業(yè)生產(chǎn)中,紡織品的檢測是一道重要的工序,它決定了產(chǎn)品的質(zhì)量,因此,疵點(diǎn)檢測是生產(chǎn)工序中絕不可忽視的環(huán)節(jié).然而,傳統(tǒng)的織布疵點(diǎn)檢測仍然是通過人工視覺來評定,人工長時(shí)間的檢驗(yàn)不僅會(huì)影響產(chǎn)品質(zhì)量的客觀評定,還受限于檢驗(yàn)人員的熟練程度。隨著布匹生產(chǎn)速度的提高以及對產(chǎn)品質(zhì)量要求的提高,人工檢驗(yàn)存在很大的弊端,包括檢測速度慢、檢測率低和穩(wěn)定性差等,這使得人工檢驗(yàn)越來越不適應(yīng)工業(yè)生產(chǎn)的需求,因此,迫切需求生產(chǎn)過程中實(shí)現(xiàn)自動(dòng)、精準(zhǔn)、快速檢測疵點(diǎn)的方法[1~4]。近年來,紡織品疵點(diǎn)檢測領(lǐng)域也提出了一些檢測算法,但是,在準(zhǔn)確率和實(shí)時(shí)性上尚難兼得,難以適應(yīng)工業(yè)生產(chǎn)的需求。
本文提出一種基于共度共生矩陣(GLCM)和支持向量機(jī)(SVM)實(shí)現(xiàn)織布疵點(diǎn)檢測的算法,借助GPU強(qiáng)大的計(jì)算能力,并行計(jì)算得到GLCM以及特征值,組成特征向量輸入已訓(xùn)練完成的SVM分類模型,得到圖像最終的分類,實(shí)現(xiàn)織布圖像中的疵點(diǎn)類型檢測,算法流程如圖1所示。GPU完成圖像GLCM以及特征值的計(jì)算,保證了算法的實(shí)時(shí)性;GLCM特征值反映的圖像紋理特征以及SVM強(qiáng)大的分類能力保證了算法檢測的準(zhǔn)確率。實(shí)驗(yàn)證明該方法能夠精準(zhǔn)且快速檢測出布匹中的孔洞、異物、油漬和折痕疵點(diǎn)。
圖1 檢測算法流程示意圖
灰度共生矩陣(GLCM)用圖像中具有某種空間位置關(guān)系的像素對的聯(lián)合分布概率密度來定義,可以看成兩個(gè)像素對的灰度分布聯(lián)合直方圖,是一種二階統(tǒng)計(jì)。它不僅反映了圖像灰度變化信息,也很好地反映了相同灰度級(jí)像素之間的位置分布關(guān)系等特征[5]。
假設(shè)輸入圖像為 f(x,y),大小為M×N,灰度級(jí)為L,則滿足一定空間關(guān)系的GLCM定義為概率矩陣:
其中,#{x}表示集合 x中的元素個(gè)數(shù),因此,GLCM(i,j)是一個(gè)L×L的方陣,假設(shè)圖像中的兩點(diǎn) (x1,y1)與 (x2,y2)間距為 d,兩點(diǎn)所在直線與坐標(biāo)軸之間的夾角為θ,其中概率矩陣中元素(i,j)的值表示一個(gè)灰度為i,另一個(gè)灰度為 j的兩個(gè)相距為d的像素對在夾角θ的方向上出現(xiàn)的次數(shù)。
像素對的間距和方向用一個(gè)一維向量表示,如圖2所示,圖像中某點(diǎn)(x,y)的灰度值為i,而在(x+dx,y+dy)點(diǎn)的灰度值 j,則此時(shí)將GLCM中相應(yīng)位置 (x,y)處的值加1(初始值為0)[6]。
圖2 GLCM的定義及計(jì)算方法示意圖
灰度共生矩陣有2個(gè)重要的參數(shù):1)圖像灰度級(jí)總數(shù);2)向量對[dx,dy]。對同一輸入圖像,取不同的向量[dx,dy]會(huì)得到不同的灰度共生矩陣。
原始灰度圖像的灰度級(jí)為256,特征矩陣較大,一般為了減小計(jì)算量,可以降低圖像的灰度級(jí),但會(huì)損失信息。本模塊采用GPU計(jì)算,灰度級(jí)對時(shí)間影響不大,因此,灰度級(jí)確定為256。
[dx,dy]向量對的選擇往往依賴于布匹表面紋理的分析,利用自相關(guān)函數(shù)[7]分析如圖所示紋理圖像,得到橫向和縱向紋理周期均為8pixels,因此,GLCM的生成步長取為8,方向選擇0°、45°、90°和135°4個(gè)方向,即向量對選擇為[8,0]、[8,8]、[0,8]和[-8,8]。
GLCM不能直接用于描述圖像的紋理特征,本算法選取能量Asm、熵Ent、對比度con和逆差矩ind等4個(gè)統(tǒng)計(jì)量[8]來提取它所反映的紋理特征,它們的定義如下所述,其中P(i,j)代表GLCM。
能量反映了圖像灰度分布的均勻性,粗紋理的能量矩較大,細(xì)紋理的能量矩較??;
熵值是圖像所具有的信息量的度量。若圖像沒有任何紋理,則熵值接近零,若圖像充滿細(xì)紋理,則圖像的熵值最大,若圖像中分布著較少的紋理,則圖像的熵值較??;
對比度反映了影響紋理的清晰度,紋理的溝紋越深,其對比度越大,圖像的視覺清晰效果越好;
逆差矩反映了局部同質(zhì)性,當(dāng)GLCM沿對角線集中時(shí),其逆差矩值較大。
CUDA是NVIDIA于2006年推出的一套針對異步計(jì)算資源下的大規(guī)模并行計(jì)算的架構(gòu),該架構(gòu)使GPU能夠解決復(fù)雜的計(jì)算問題。CUDA采用一種分層的編程模型來組織線程,其基本思路是:用戶根據(jù)需要定制一定數(shù)量的線程準(zhǔn)備投入計(jì)算,并能夠定制線程和數(shù)據(jù)的映射關(guān)系;在計(jì)算中線程被分為若干線程組,每個(gè)線程組被映射到圖形處理器中的一個(gè)處理單元組上,組內(nèi)的線程可以協(xié)同工作,它們具有一些相關(guān)屬性,不同的線程組根據(jù)硬件的規(guī)格并發(fā)或順序的被激活[6]。CUDA采用單指令多線程(SIMT)的計(jì)算模型,其線程結(jié)構(gòu)如圖3。
圖3 CUDA線程結(jié)構(gòu)示意圖
在CUDA架構(gòu)下,GPU執(zhí)行時(shí)的最小單位是線程(thread),若干個(gè) thread組成 1個(gè)線程塊(block)。每個(gè)block內(nèi)所能夠包含的thread數(shù)量是有限的。執(zhí)行相同程序的block,可以組成grid。
為了保證算法的實(shí)時(shí)性,將GLCM和特征值的計(jì)算放置到GPU端執(zhí)行。
圖4 圖像紋理分塊圖
圖5 計(jì)算GLCM時(shí)GPU端線程分布圖
由于GLCM考慮的是像素對的關(guān)系,因此,GPU端采用二維的grid和block完成GLCM的并行計(jì)算,將原始圖像劃分為二維的紋理塊,GPU的每個(gè)block處理一個(gè)紋理塊,block內(nèi)的每個(gè)線程負(fù)責(zé)1個(gè)像素。原始圖像大小為227×227,紋理塊的大小為32×32,原始圖像被劃分為8×8個(gè)紋理塊,如圖4,對應(yīng)8×8個(gè)block,每個(gè)block內(nèi)線程分布為32×32,GPU端線程劃分如圖5。
GPU端線程劃分中,在blockIdx.x=7的block內(nèi),僅僅threadIdx.x<3的線程參與計(jì)算,其他線程不做處理;在blockIdx.y=7的block內(nèi),僅僅thread?Idx.y<3的線程參與計(jì)算,其他線程不做處理。
由于GLCM的灰度級(jí)確定為256,因此,其能量、熵、對比度和逆差矩等4種特征值的計(jì)算,采用1維的grid和block,即256個(gè)block,如圖6,其中每個(gè)block中256個(gè)thread,每個(gè)線程負(fù)責(zé)一項(xiàng),對于能量、熵、對比度和逆差矩,每個(gè)線程分別負(fù)責(zé)對應(yīng)歸 一 化 后 的 P(i,j)2、 -P(i,j)·lgP(i,j) 、,通過2次規(guī)約求和,得到最后的4種特征值。
GPU端計(jì)算出4個(gè)向量對應(yīng)GLCM的特征值,共計(jì)16維組成特征向量。
圖6 計(jì)算4種特征值時(shí)GPU端線程分布圖
支持向量機(jī)[9~10](SVM)是上世紀(jì) 90 年代被提出來的一種機(jī)器學(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)處理多類問題時(shí),就需要構(gòu)造合適的多類分類器。當(dāng)前,設(shè)計(jì)多分類器的方法主要有兩類:一種是直接法,即直接設(shè)計(jì)多分類SVM分類器[11],該方法直接在目標(biāo)函數(shù)上修改,將多個(gè)分類面的參數(shù)求解合并到一個(gè)最優(yōu)化問題中,通過求解該最優(yōu)化問題“一次性”實(shí)現(xiàn)多類分類。該方法計(jì)算復(fù)雜度高,實(shí)現(xiàn)困難。另外一種是間接法,主要通過多個(gè)SVM二分類器組合實(shí)現(xiàn)多分類器,組合方式有兩種,一種是“一對多”,另一種是“一對一”。
一對多法:訓(xùn)練時(shí)依次將某個(gè)類別的樣本歸為一類,其余樣本歸為另一類,這樣k個(gè)類別的樣本即構(gòu)造出k個(gè)SVM。分類時(shí)將未知樣本分類為具有最大分類函數(shù)值的那類。
一對一法:在任意兩類樣本之間設(shè)計(jì)一個(gè)SVM,因此k個(gè)類別的樣本需要設(shè)計(jì)k(k-1)/2個(gè)SVM。當(dāng)對一個(gè)未知樣本進(jìn)行分類時(shí),最后得票最多的類別即為該未知樣本的類別。
由于本文針對的織布疵點(diǎn)有多種類型,因此采用“一對一法”設(shè)計(jì)SVM多分類器,織布疵點(diǎn)種類數(shù)目為N,則設(shè)計(jì)N+1類分類器,用于對N類疵點(diǎn)圖像以及無疵點(diǎn)圖像進(jìn)行分類。
將包含各類疵點(diǎn)以及無疵點(diǎn)的織布圖像作為學(xué)習(xí)集,將學(xué)習(xí)集的圖像計(jì)算出4個(gè)方向的GLCM的4類特征值組成特征向量作為SVM的輸入來訓(xùn)練SVM分類模型,為了確定SVM的超參數(shù),采用N折交叉驗(yàn)證法[12]。訓(xùn)練完成后,得到滿足要求的各樣本間的最優(yōu)超平面,SVM分類模型即得到。
本文實(shí)驗(yàn)檢測對象為如圖7含有孔洞、油漬、異物、折痕4類疵點(diǎn)以及無疵點(diǎn)的織布圖像,圖像大小227×227。軟件環(huán)境為:UBuntu16.04 64位操作系統(tǒng),CUDA開發(fā)工具版本號(hào)為8.0,算法實(shí)現(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個(gè),核心頻率為1607MHz,顯存帶寬為320GB/s。
圖7 待檢測的織布圖像
在對準(zhǔn)確率和耗時(shí)進(jìn)行測試之前,需將SVM 5分類模型訓(xùn)練完成。本文通過工業(yè)相機(jī)采集并截取得到的3000張圖像按照5:1分為訓(xùn)練集和驗(yàn)證集,使用10折交叉驗(yàn)證法訓(xùn)練SVM,得到訓(xùn)練完成的SVM模型后,采用另外的500張圖像(每類圖像各100張)進(jìn)行準(zhǔn)確率和耗時(shí)進(jìn)行測試。測試準(zhǔn)確率和耗時(shí)結(jié)果分別如表1和表2。
表1 各類圖像的分類準(zhǔn)確率
其中的單張圖像總耗時(shí)542μs是根據(jù)輸入圖像到輸出結(jié)果的總耗時(shí),除表中的灰度共生矩陣和特征值的計(jì)算時(shí)間,還包括CPU端圖像數(shù)據(jù)拷貝至GPU耗時(shí)以及計(jì)算過程中求最大像素值的耗時(shí)。
表2 各階段平均耗時(shí)結(jié)果
由表1可見,該算法對孔洞、油漬、異物、折痕4類疵點(diǎn)以及不含疵點(diǎn)的圖像的識(shí)別正確率較高,其中,對于含折痕疵點(diǎn)和不含任何疵點(diǎn)的布匹圖像的識(shí)別準(zhǔn)確率最高,均不低于98%,對于異物和油漬疵點(diǎn)的識(shí)別準(zhǔn)確率較好,但對于孔洞疵點(diǎn)的識(shí)別正確率遠(yuǎn)低于其他類型。由表2可見,該算法對于227×227的單張圖像平均耗時(shí)542μs,實(shí)時(shí)性很好。
針對當(dāng)前織布疵點(diǎn)檢測的正確率和實(shí)時(shí)性問題,提出一種基于CUDA計(jì)算灰度共生矩陣特征值和支持向量機(jī)的檢測算法,借助GPU強(qiáng)大的計(jì)算能力,并行計(jì)算得到GLCM以及特征值,組成特征向量輸入已訓(xùn)練完成的SVM分類模型,得到圖像最終的分類,實(shí)現(xiàn)織布圖像中的疵點(diǎn)類型檢測。GPU強(qiáng)大的計(jì)算能力保證了算法的實(shí)時(shí)性;GLCM特征值反映的圖像紋理特征以及SVM強(qiáng)大的分類能力保證了算法檢測的準(zhǔn)確率。實(shí)驗(yàn)結(jié)果表明,本文采取的算法能夠較為準(zhǔn)確并且實(shí)時(shí)的檢測出織布圖像中的各類疵點(diǎn),能夠基本滿足工業(yè)生產(chǎn)的需求。
[1]劉建麗,卓寶奇,曾憲奕.基于小波紋理分析和LVQ神經(jīng)網(wǎng)絡(luò)的無紡布均勻性識(shí)別[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濾波器的非織造布疵點(diǎn)檢測[J].東華大學(xué)學(xué)報(bào),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]黃瀟玲,孫科,李子燊.表面疵點(diǎn)在線檢測技術(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]曾躍民,劉麗芳.基于計(jì)算機(jī)圖象處理的非織造布質(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]劉海平.基于機(jī)器視覺的無紡布疵點(diǎn)在線檢測系統(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)分析的織物疵點(diǎn)檢測方法[J].計(jì)算機(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é)報(bào),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]克里斯特安尼.支持向量機(jī)導(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)計(jì)學(xué)習(xí)理論與支持向量機(jī)[J].自動(dòng)化學(xué)報(bào),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]曹兆龍.基于支持向量機(jī)的多分類算法研究[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.