阮夢玉,李 敏,何儒漢,姚 迅
(武漢紡織大學(xué)計算機與人工智能學(xué)院,武漢 430200)
在紡織產(chǎn)品的生產(chǎn)過程中,質(zhì)量控制貫穿著整個過程。有質(zhì)量問題的織物會在很大程度上影響其價格,因此對織物進行疵點檢測,是成品布出廠的最后一道工序,也是控制成布質(zhì)量的關(guān)鍵環(huán)節(jié)[1-2]。傳統(tǒng)的織物疵點檢測方法,主要是以人工檢測的方式為主。人工檢測需要大量勞動力,且容易受到檢測員主觀因素和外界環(huán)境等客觀因素的影響,出現(xiàn)誤檢和漏檢的問題,導(dǎo)致檢測效果差[3]。
為了提高織物疵點檢測的效率,從20世紀(jì)90年代開始,研究者們就提出了大量的基于圖像處理的織物疵點自動檢測方法[4]。不僅如此,自2015年開始,深度學(xué)習(xí)的方法被引入到織物疵點檢測領(lǐng)域,這些方法突破了傳統(tǒng)織物疵點檢測的局限性,算法性能得到了大大提升。Jun等[5]提出了一種利用深度卷積神經(jīng)網(wǎng)絡(luò),通過將局部缺陷預(yù)測和全局缺陷識別兩者結(jié)合起來進行疵點識別,使得模型的檢測準(zhǔn)確率提高。周文明等[6]利用上下文視覺顯著性抑制織物紋理背景,突出疵點區(qū)域,該方法能夠?qū)ι椢镏械拇命c進行準(zhǔn)確的定位,且適應(yīng)性較好。景軍鋒等[7]提出了一種將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于織物缺陷檢測和分類的算法,該算法在單色匹織物上檢測效果較好,縮短了檢測時間,能夠?qū)Υ命c區(qū)域進行精準(zhǔn)的定位。劉紀(jì)等[8]提出一種利用生成對抗網(wǎng)絡(luò)(Generative adversarial networks,GAN)和霍夫變換(Hough transform,HT)結(jié)合的方法,檢測點狀缺陷織物,其檢測的準(zhǔn)確率達到了97.2%。李敏等[9]利用視覺顯著性模型對小提花織物圖像進行疵點檢測,正確率達到了93.5%。
相比傳統(tǒng)方法而言,以上基于深度學(xué)習(xí)的方法對織物疵點進行檢測,取得了良好的檢測結(jié)果,使檢測性能大幅提升,解決了傳統(tǒng)方法適應(yīng)性差、檢測精度低的問題。但是,上文所提的部分方法只能實現(xiàn)對織物疵點的分類,不能定位織物疵點;盡管其中的一些方法能夠定位織物疵點,但只是檢測單色或者單一類型的織物。
為實現(xiàn)對多種類型的織物疵點的分類和定位,本文將RefineDet模型用于織物疵點檢測中,并針對傳統(tǒng)RefineDet模型分類性能不佳和定位結(jié)果不精確等問題,對其進行了改進。研究結(jié)果將為實現(xiàn)織物圖像中疵點的分類和定位提供技術(shù)指導(dǎo)。
RefineDet模型是由Zhang等[10]在2018年提出的,該模型使用VGG16或ResNet101作為特征提取網(wǎng)絡(luò),主要由Anchor細(xì)化模塊(Anchor refinement module,ARM)和目標(biāo)檢測模塊(Object detection module,ODM)組成,如圖1(a)所示。
圖1 RefineDet模型
在RefineDet中,ARM的目標(biāo)是消除負(fù)樣本Anchors,以便減少分類器的搜索空間,同時粗略調(diào)整Anchors的大小和位置,為隨后的回歸器提供更好的初始化結(jié)果[11];ODM的目標(biāo)是根據(jù)細(xì)化后的Anchors,把檢測的結(jié)果回歸到準(zhǔn)確的目標(biāo)位置并預(yù)測多類別標(biāo)簽。
為了在ARM和ODM之間建立連接,Zhang等[10]引入了傳輸連接塊(Transfer connection block,TCB),如圖1(b)所示。TCB將ODM所需要的信息通過ARM來提供,從而達到ODM可以共享ARM的特征信息的目標(biāo),所以O(shè)DM是由TCB的輸出組成。同時,TCB傳輸Anchor細(xì)化模塊中的特征,它不僅可以在ODM中預(yù)測目標(biāo)的位置、尺寸和類別標(biāo)簽,還可以通過將ARM的高級特征添加到傳輸?shù)奶卣鱽砝^承大規(guī)模的上下文,以提高檢測的準(zhǔn)確性[11]。不僅如此,為了讓它們之間的維度相匹配,TCB通過逆卷積來達到增強高級特征圖的目的,然后對高級特征圖進行對應(yīng)元素求和操作,再通過對求和之后的結(jié)果添加卷積層來提高檢測結(jié)果的可辨性,最后由ODM對目標(biāo)區(qū)域進行分類和定位。
本文使用RefineDet對不同類型的織物圖像進行大量實驗。圖2顯示的是用RefineDet對紗疵進行檢測的結(jié)果。
圖2 RefineDet對疵點的檢測結(jié)果
圖2(a)是原始織物圖像,圖2(b)藍色框標(biāo)記了疵點的真實位置,圖2(c)顯示了用RefineDet進行疵點檢測的結(jié)果。從圖2(c)可以看出,RefineDet可以檢測出織物圖像中的較大疵點,但是當(dāng)疵點較小或者與圖像背景色相近時,RefineDet無法檢測出這類疵點。造成這種現(xiàn)象的主要原因在于,RefineDet使用傳統(tǒng)的貪心算法,在很大概率上會出現(xiàn)漏檢的情況,導(dǎo)致RefineDet忽略疵點的細(xì)節(jié)信息,最后出現(xiàn)定位不精確的現(xiàn)象。
RefineDet模型具有較強的目標(biāo)定位能力和良好的泛化能力,為更好的適用于織物疵點檢測,本文針對RefineDet模型不能有效解決小疵點的檢測問題,對RefineDet模型中的ARM和TCB進行了改進,包括:在ARM中引入了注意力機制,可以使模型關(guān)注疵點重要的特征并抑制不必要的特征,用于增強對疵點檢測的能力;在TCB中引入了SE模塊結(jié)構(gòu)(Squeeze and excitation, SE)[12],用于提高網(wǎng)絡(luò)的分類性能。具體流程如下:
a)首先,在ARM中加入注意力機制,通過同時使用平均池化和最大池化來處理ARM之前的層,抑制非疵點區(qū)域,關(guān)注疵點區(qū)域。
b)其次,在連接ARM的TCB模塊后面加入4個SE模塊。
c)將TCB的結(jié)果作為SE模塊的輸入,在SE模塊中進行全局均值池化,將池化后的結(jié)果進行拼接并輸入到Softmax層進行全連接計算。記改進后的模型為改進的RefineDet。
d)使用改進后的RefineDet模型對數(shù)據(jù)集進行訓(xùn)練后,根據(jù)4個SE模塊處理后得到4種尺寸的特征圖,為了使其維度匹配,通過逆卷積增強高級特征圖,然后把高級特征圖的對應(yīng)元素求和。
e)最后,對求和之后的結(jié)果添加卷積層來提高檢測結(jié)果的可辨性,ODM將結(jié)果回歸到準(zhǔn)確的疵點位置并預(yù)測疵點的多類別標(biāo)簽。
算法的整體流程如圖3所示。
圖3 本文算法整體流程
2.2.1 特征提取網(wǎng)絡(luò)
為了得到織物疵點更多的特征信息,需要一個網(wǎng)絡(luò)結(jié)構(gòu)簡單且網(wǎng)絡(luò)深度足夠的深度網(wǎng)絡(luò),用來完成提取疵點多級特征的任務(wù)。本文在VGG16的基礎(chǔ)上,對網(wǎng)絡(luò)進行修改,將VGG16的最后兩個完全連接層和最后一個池化層去掉,將VGG16修改為完全卷積網(wǎng)絡(luò),并對修改后的網(wǎng)絡(luò)重新進行訓(xùn)練。這是因為全連接層所占參數(shù)量較大,將全連接層去掉,可以減少參數(shù)數(shù)量,且對性能沒有明顯影響。
2.2.2 AM-ARM
在第一步分類和回歸的Anchor細(xì)化模塊中加入注意力機制(Attention mechanism, AM),將改進后的模塊記為AM-ARM。注意力機制的原理是通過快速掃描圖像的全局,從而獲得需要重點關(guān)注的目標(biāo)區(qū)域,也就是一般所說的注意力焦點,而后對這一區(qū)域投入更多注意力資源,以獲取更多所需要關(guān)注目標(biāo)的細(xì)節(jié)信息,而抑制其他無用信息[13]。本文利用注意力機制這一優(yōu)點,將注意力機制引入到織物疵點檢測中,可以使模型關(guān)注織物圖像的重要特征并抑制不必要的特征,從而將疵點凸顯出來,增強對疵點檢測的能力。
如圖4所示,給定一個中間特征圖Input記為M,M∈RW*H*C作為輸入,AM-ARM的輸出Output記為P,計算見式(1)和式(2):
圖4 全卷積通道注意力模塊
P=?1(FConv(AvgPool(M))+
FConv(MaxPool(M)))
(1)
FConv(*)=?2(Conv2(?2(Conv1(*))))
(2)
式中:AvgPool()代表全局平均池化;MaxPool()代表全局最大池化;FConv代表全卷積;Conv1代表卷積層1;Conv2代表卷積層2;?1是Sigmoid激活函數(shù);?2是Relu激活函數(shù);W、H、C分別代表卷積特征圖的寬、高和通道數(shù);特征圖大小為W×H×C。
2.2.3 引入SE模塊
SE模塊思想簡單,易于實現(xiàn),并且很容易可以加載到現(xiàn)有的網(wǎng)絡(luò)模型框架中,不僅如此,SE模塊能夠顯著改善網(wǎng)絡(luò)的分類能力,而且該模塊對網(wǎng)絡(luò)的負(fù)面影響也較小。SE模塊的結(jié)構(gòu)如圖5所示,圖5 中:ReLu代表ReLu激活函數(shù);Sigmoid代表Sigmoid激活函數(shù);Scale代表通道權(quán)重相乘;W、H、C分別代表卷積特征圖的寬、高和通道數(shù);特征圖大小為W×H×C。
圖5 SE模塊結(jié)構(gòu)
本文將SE引入到織物疵點檢測分類中來,以提高疵點的分類性能。具體實現(xiàn)過程如下:
a)將AM-ARM輸出的特征圖作為TCB的輸入,此時得到了4種不同尺寸的特征。
b)將經(jīng)TCB處理后的結(jié)果作為SE模塊的輸入,即在TCB后加入了4個SE模塊。SE模塊是由全連接層和非線性約束層構(gòu)成的,它能夠很方便的加載到現(xiàn)有的網(wǎng)絡(luò)模型中。SE模塊通過對卷積特征的通道進行加權(quán)操作,對分類有效的通道特征進行增強操作,對分類無效的通道特征進行抑制。
c)根據(jù)4個SE模塊處理后得到4種不同尺寸的特征圖,為了使其維度匹配,通過逆卷積增強高級特征圖,然后把高級特征圖的對應(yīng)元素求和,其中高級特征圖的大小分別為40×40×256,20×20×256,10×10×256,5×5×256,最后對求和之后的結(jié)果添加卷積層來提高檢測結(jié)果的可辨性。
d)ODM將結(jié)果回歸到準(zhǔn)確的疵點位置并預(yù)測疵點的多類別標(biāo)簽。
2.2.4 ODM
將從SE模塊輸出的特征圖作為ODM的輸入,ODM預(yù)測疵點的位置、尺寸和類別標(biāo)簽。
ODM與ARM相似,由4個卷積層組成,通道數(shù)為K×(C+4),其中C代表疵點類別的數(shù)量,4代表預(yù)測框的4個坐標(biāo)值(xmin,ymin,xmax,ymax),K為縱橫比,本文設(shè)置為3。在計算損失函數(shù)方面,主要包含AM-ARM和ODM兩方面,這兩部分的損失函數(shù)都是一起向前傳遞的。在網(wǎng)絡(luò)中選擇合適的激活函數(shù)可以降低損失,因此本文選擇Sigmoid、ReLu激活函數(shù)。另外在訓(xùn)練時,訓(xùn)練時間足夠,迭代105次以及合適的學(xué)習(xí)率0.0001。與原始RefineDet相同,在訓(xùn)練階段,總的兩步損失計算見式(3):
L({pi},{xi},{ci},{ti})=
(3)
式中:i是訓(xùn)練批次中標(biāo)記框的索引;Narm和Nodm分別指的是ARM和ODM中正樣本Anchors的數(shù)目;pi指的是預(yù)測的anchori是一個目標(biāo)的置信度;xi指的是ARM細(xì)化后預(yù)測的Anchori的坐標(biāo);ci是ODM中預(yù)測標(biāo)記框的物體類別;ti是ODM中預(yù)測標(biāo)記框的坐標(biāo);Lb表示二元分類損失,即目標(biāo)與非目標(biāo)的交叉熵?fù)p失;Lr表示回歸損失;Lm表示多類別分類損失;指數(shù)函數(shù)[l*i≥1]表示當(dāng)框i屬于缺陷類時,輸出1,否則為0;l*i是anchori真實的類別標(biāo)簽;g*i是Anchori真實的位置和大小。
a)數(shù)據(jù)集及實驗環(huán)境
本實驗操作系統(tǒng)為Ubuntu16.04LTS,顯卡為NVIDIA GeForce RTX 2080Ti,CPU為Intel Core i9-9900X,內(nèi)存大小為125.6 GB,使用Python編程語言和Pytorch深度學(xué)習(xí)框架。網(wǎng)絡(luò)學(xué)習(xí)率為 0.0001,動量和權(quán)重衰減分別設(shè)為0.9和0.0005。
數(shù)據(jù)集使用TILDA織物數(shù)據(jù)庫,它是一個公開的紡織品紋理數(shù)據(jù)庫,共有8類,其中有4類無圖案的織物圖像,兩類規(guī)則圖案的織物圖像和兩類復(fù)雜圖案的織物圖像。TILDA數(shù)據(jù)集包含1600張分辨率為768×512的圖像,從中選取1200張圖像,輸入圖像大小為320×320,并按照3∶1的比例隨機生成訓(xùn)練集和測試集,根據(jù)疵點類型,將數(shù)據(jù)集分為孔、污漬、紗疵、線狀4類比較常見的類別,如圖6所示,并對疵點類別進行標(biāo)注。
圖6 TILDA數(shù)據(jù)集中4種常見類別的織物疵點
b)評價指標(biāo)
實驗結(jié)果采用均值平均精度(mean Average precision,mAP)進行評價,mAP的具體計算公式如式(7)所示。其中AP(Average precision)為平均精度,如式(6)所示;式(6)中的P(Precision)為測試精度,R(Recall)為召回率;式(4)、式(5)中的TP(True positives)為預(yù)測框與標(biāo)簽框正確的匹配;FP(False positives)為預(yù)測框?qū)⒈尘邦A(yù)測為目標(biāo);FN(False negatives)指需要模型檢測出的物體,沒有檢測出[14]。
(4)
(5)
(6)
(7)
在TILDA數(shù)據(jù)集上,使用相同的訓(xùn)練集進行訓(xùn)練,并對比傳統(tǒng)RefineDet模型與改進后的模型二者之間的損失。圖7顯示的是模型訓(xùn)練階段的損失,其中圖7(a)顯示的是傳統(tǒng)RefineDet模型訓(xùn)練階段的損失,圖7(b)為改進后模型的損失函數(shù)。從圖7(a)可以看出在訓(xùn)練階段損失不斷減小,直到收斂。經(jīng)過105次迭代,完成模型參數(shù)的訓(xùn)練。對比圖7和圖7(b)可以發(fā)現(xiàn),相比傳統(tǒng)RefineDet的疵點檢測方法而言,本文提出的方法各項損失較低且擬合效果較好。
圖7 模型訓(xùn)練階段的損失
圖8顯示的是模型測試的P-R曲線。其中 圖8(a)和圖8(b)顯示的是使用兩種不同的方法對相同的織物圖像進行測試后所得到的mAP值。圖8(a)表示通過傳統(tǒng)RefineDet方法對4種類型的疵點進行檢測,其均值平均精度mAP達到了 74.7%,圖8(b)表示通過本文所提出的方法,其均值平均精度mAP達到了79.7%,相比于傳統(tǒng)RefineDet方法提高了5.0%。
圖8 P-R平均精確度曲線
表1是使用兩種不同的方法進行測試后所得到的AP值。從表1改進后的AP中可以看出,本文提出的方法對孔和污漬的分類效果較好,但對紗疵和線狀的分類情況稍差。造成紗疵平均精確度較低的主要原因是紗疵的特征比較復(fù)雜多樣,且有的紗疵缺口較大,與洞的特征類似,導(dǎo)致網(wǎng)絡(luò)對紗疵的識別精確度較低。造成線狀平均精確度較低的主要原因是線與織物圖像的背景比較相近時較難識別,模型無法區(qū)分是背景還是線,并且有的線顏色較淺,難以識別。
表1 測試方法改進前后的平均精確度
對比改進前后的平均精確度可以看出,孔和污漬的平均精確度分別提高了1.2%和1.3%,紗疵和線狀的平均精確度分別提高了11.6%和6.3%,出現(xiàn)這種結(jié)果的原因是,孔和污漬相較于背景而言,對比度較明顯,所以在改進前后的平均精確度只提高了一至兩個點,并沒有較大提升;而對于紗疵和線狀來說,這兩類疵點相比織物背景而言對比度較差,且疵點特征沒有孔和污漬明顯,在利用注意力機制和SE模塊改進后,這兩類疵點檢測的精確度得到顯著提升。
圖9顯示了疵點的定位效果。圖9中,第1列是織物疵點圖像;第2列是傳統(tǒng)RefineDet檢測結(jié)果;第3列是改進RefineDet檢測結(jié)果;第1行是孔;第2行是紗疵;第3、4行是線狀;第5行是污漬。
圖9 改進前后疵點定位效果對比
從圖9可以看出,4種類型的疵點分別在條紋、素色、格子、針織4種背景下,實現(xiàn)了良好的分類和定位效果。不僅如此,還可以發(fā)現(xiàn),改進之后的方法定位效果明顯優(yōu)于改進之前的方法。這主要體現(xiàn)在改進之后的方法可以定位較小疵點,例如條紋背景中的小孔和針織背景中的小污漬,以及改進后的方法可以定位織物圖像中的多疵點和與背景顏色相近的疵點,例如素色背景中紗疵和格子背景中的線狀。從這兩方面可以發(fā)現(xiàn),本文提出的方法在分類和定位方面明顯優(yōu)于傳統(tǒng)RefineDet方法。
針對織物疵點檢測和定位,本文提出了一種基于改進RefineDet的疵點檢測方法。該方法在ARM模塊中加入了注意力機制,著重關(guān)注疵點重要的特征并抑制不必要的特征,降低了非疵點區(qū)域在檢測過程中的干擾;為了加強模型的分類性能,在TCB模塊中加入SE模塊,計算其生成的特征圖,為了使其維度匹配,通過逆卷積來達到增強高級特征圖的目的,然后對高級特征圖對應(yīng)元素求和,對求和之后的結(jié)果添加卷積層來提高檢測結(jié)果的可辨性。最后ODM將結(jié)果回歸到準(zhǔn)確的目標(biāo)位置并預(yù)測多類別標(biāo)簽,對疵點區(qū)域進行定位。結(jié)果表明,本文算法不僅能夠?qū)崿F(xiàn)對織物圖像中不同類型疵點的定位,而且也可以定位一張圖像中的較小疵點和多個疵點,能夠有效檢測織物圖像中的單疵點和多疵點。
本文所提的算法也存在一定的不足,算法模型可以進一步優(yōu)化,以提高模型的精度和定位效果。