阮夢玉,李 敏,何儒漢,姚 迅
(武漢紡織大學計算機與人工智能學院,武漢 430200)
在紡織產品的生產過程中,質量控制貫穿著整個過程。有質量問題的織物會在很大程度上影響其價格,因此對織物進行疵點檢測,是成品布出廠的最后一道工序,也是控制成布質量的關鍵環節[1-2]。傳統的織物疵點檢測方法,主要是以人工檢測的方式為主。人工檢測需要大量勞動力,且容易受到檢測員主觀因素和外界環境等客觀因素的影響,出現誤檢和漏檢的問題,導致檢測效果差[3]。
為了提高織物疵點檢測的效率,從20世紀90年代開始,研究者們就提出了大量的基于圖像處理的織物疵點自動檢測方法[4]。不僅如此,自2015年開始,深度學習的方法被引入到織物疵點檢測領域,這些方法突破了傳統織物疵點檢測的局限性,算法性能得到了大大提升。Jun等[5]提出了一種利用深度卷積神經網絡,通過將局部缺陷預測和全局缺陷識別兩者結合起來進行疵點識別,使得模型的檢測準確率提高。周文明等[6]利用上下文視覺顯著性抑制織物紋理背景,突出疵點區域,該方法能夠對色織物中的疵點進行準確的定位,且適應性較好。景軍鋒等[7]提出了一種將卷積神經網絡應用于織物缺陷檢測和分類的算法,該算法在單色匹織物上檢測效果較好,縮短了檢測時間,能夠對疵點區域進行精準的定位。劉紀等[8]提出一種利用生成對抗網絡(Generative adversarial networks,GAN)和霍夫變換(Hough transform,HT)結合的方法,檢測點狀缺陷織物,其檢測的準確率達到了97.2%。李敏等[9]利用視覺顯著性模型對小提花織物圖像進行疵點檢測,正確率達到了93.5%。
相比傳統方法而言,以上基于深度學習的方法對織物疵點進行檢測,取得了良好的檢測結果,使檢測性能大幅提升,解決了傳統方法適應性差、檢測精度低的問題。但是,上文所提的部分方法只能實現對織物疵點的分類,不能定位織物疵點;盡管其中的一些方法能夠定位織物疵點,但只是檢測單色或者單一類型的織物。
為實現對多種類型的織物疵點的分類和定位,本文將RefineDet模型用于織物疵點檢測中,并針對傳統RefineDet模型分類性能不佳和定位結果不精確等問題,對其進行了改進。研究結果將為實現織物圖像中疵點的分類和定位提供技術指導。
RefineDet模型是由Zhang等[10]在2018年提出的,該模型使用VGG16或ResNet101作為特征提取網絡,主要由Anchor細化模塊(Anchor refinement module,ARM)和目標檢測模塊(Object detection module,ODM)組成,如圖1(a)所示。

圖1 RefineDet模型
在RefineDet中,ARM的目標是消除負樣本Anchors,以便減少分類器的搜索空間,同時粗略調整Anchors的大小和位置,為隨后的回歸器提供更好的初始化結果[11];ODM的目標是根據細化后的Anchors,把檢測的結果回歸到準確的目標位置并預測多類別標簽。
為了在ARM和ODM之間建立連接,Zhang等[10]引入了傳輸連接塊(Transfer connection block,TCB),如圖1(b)所示。TCB將ODM所需要的信息通過ARM來提供,從而達到ODM可以共享ARM的特征信息的目標,所以ODM是由TCB的輸出組成。同時,TCB傳輸Anchor細化模塊中的特征,它不僅可以在ODM中預測目標的位置、尺寸和類別標簽,還可以通過將ARM的高級特征添加到傳輸的特征來繼承大規模的上下文,以提高檢測的準確性[11]。不僅如此,為了讓它們之間的維度相匹配,TCB通過逆卷積來達到增強高級特征圖的目的,然后對高級特征圖進行對應元素求和操作,再通過對求和之后的結果添加卷積層來提高檢測結果的可辨性,最后由ODM對目標區域進行分類和定位。
本文使用RefineDet對不同類型的織物圖像進行大量實驗。圖2顯示的是用RefineDet對紗疵進行檢測的結果。

圖2 RefineDet對疵點的檢測結果
圖2(a)是原始織物圖像,圖2(b)藍色框標記了疵點的真實位置,圖2(c)顯示了用RefineDet進行疵點檢測的結果。從圖2(c)可以看出,RefineDet可以檢測出織物圖像中的較大疵點,但是當疵點較小或者與圖像背景色相近時,RefineDet無法檢測出這類疵點。造成這種現象的主要原因在于,RefineDet使用傳統的貪心算法,在很大概率上會出現漏檢的情況,導致RefineDet忽略疵點的細節信息,最后出現定位不精確的現象。
RefineDet模型具有較強的目標定位能力和良好的泛化能力,為更好的適用于織物疵點檢測,本文針對RefineDet模型不能有效解決小疵點的檢測問題,對RefineDet模型中的ARM和TCB進行了改進,包括:在ARM中引入了注意力機制,可以使模型關注疵點重要的特征并抑制不必要的特征,用于增強對疵點檢測的能力;在TCB中引入了SE模塊結構(Squeeze and excitation, SE)[12],用于提高網絡的分類性能。具體流程如下:
a)首先,在ARM中加入注意力機制,通過同時使用平均池化和最大池化來處理ARM之前的層,抑制非疵點區域,關注疵點區域。
b)其次,在連接ARM的TCB模塊后面加入4個SE模塊。
c)將TCB的結果作為SE模塊的輸入,在SE模塊中進行全局均值池化,將池化后的結果進行拼接并輸入到Softmax層進行全連接計算。記改進后的模型為改進的RefineDet。
d)使用改進后的RefineDet模型對數據集進行訓練后,根據4個SE模塊處理后得到4種尺寸的特征圖,為了使其維度匹配,通過逆卷積增強高級特征圖,然后把高級特征圖的對應元素求和。
e)最后,對求和之后的結果添加卷積層來提高檢測結果的可辨性,ODM將結果回歸到準確的疵點位置并預測疵點的多類別標簽。
算法的整體流程如圖3所示。

圖3 本文算法整體流程
2.2.1 特征提取網絡
為了得到織物疵點更多的特征信息,需要一個網絡結構簡單且網絡深度足夠的深度網絡,用來完成提取疵點多級特征的任務。本文在VGG16的基礎上,對網絡進行修改,將VGG16的最后兩個完全連接層和最后一個池化層去掉,將VGG16修改為完全卷積網絡,并對修改后的網絡重新進行訓練。這是因為全連接層所占參數量較大,將全連接層去掉,可以減少參數數量,且對性能沒有明顯影響。
2.2.2 AM-ARM
在第一步分類和回歸的Anchor細化模塊中加入注意力機制(Attention mechanism, AM),將改進后的模塊記為AM-ARM。注意力機制的原理是通過快速掃描圖像的全局,從而獲得需要重點關注的目標區域,也就是一般所說的注意力焦點,而后對這一區域投入更多注意力資源,以獲取更多所需要關注目標的細節信息,而抑制其他無用信息[13]。本文利用注意力機制這一優點,將注意力機制引入到織物疵點檢測中,可以使模型關注織物圖像的重要特征并抑制不必要的特征,從而將疵點凸顯出來,增強對疵點檢測的能力。
如圖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激活函數;?2是Relu激活函數;W、H、C分別代表卷積特征圖的寬、高和通道數;特征圖大小為W×H×C。
2.2.3 引入SE模塊
SE模塊思想簡單,易于實現,并且很容易可以加載到現有的網絡模型框架中,不僅如此,SE模塊能夠顯著改善網絡的分類能力,而且該模塊對網絡的負面影響也較小。SE模塊的結構如圖5所示,圖5 中:ReLu代表ReLu激活函數;Sigmoid代表Sigmoid激活函數;Scale代表通道權重相乘;W、H、C分別代表卷積特征圖的寬、高和通道數;特征圖大小為W×H×C。

圖5 SE模塊結構
本文將SE引入到織物疵點檢測分類中來,以提高疵點的分類性能。具體實現過程如下:
a)將AM-ARM輸出的特征圖作為TCB的輸入,此時得到了4種不同尺寸的特征。
b)將經TCB處理后的結果作為SE模塊的輸入,即在TCB后加入了4個SE模塊。SE模塊是由全連接層和非線性約束層構成的,它能夠很方便的加載到現有的網絡模型中。SE模塊通過對卷積特征的通道進行加權操作,對分類有效的通道特征進行增強操作,對分類無效的通道特征進行抑制。
c)根據4個SE模塊處理后得到4種不同尺寸的特征圖,為了使其維度匹配,通過逆卷積增強高級特征圖,然后把高級特征圖的對應元素求和,其中高級特征圖的大小分別為40×40×256,20×20×256,10×10×256,5×5×256,最后對求和之后的結果添加卷積層來提高檢測結果的可辨性。
d)ODM將結果回歸到準確的疵點位置并預測疵點的多類別標簽。
2.2.4 ODM
將從SE模塊輸出的特征圖作為ODM的輸入,ODM預測疵點的位置、尺寸和類別標簽。
ODM與ARM相似,由4個卷積層組成,通道數為K×(C+4),其中C代表疵點類別的數量,4代表預測框的4個坐標值(xmin,ymin,xmax,ymax),K為縱橫比,本文設置為3。在計算損失函數方面,主要包含AM-ARM和ODM兩方面,這兩部分的損失函數都是一起向前傳遞的。在網絡中選擇合適的激活函數可以降低損失,因此本文選擇Sigmoid、ReLu激活函數。另外在訓練時,訓練時間足夠,迭代105次以及合適的學習率0.0001。與原始RefineDet相同,在訓練階段,總的兩步損失計算見式(3):
L({pi},{xi},{ci},{ti})=

(3)
式中:i是訓練批次中標記框的索引;Narm和Nodm分別指的是ARM和ODM中正樣本Anchors的數目;pi指的是預測的anchori是一個目標的置信度;xi指的是ARM細化后預測的Anchori的坐標;ci是ODM中預測標記框的物體類別;ti是ODM中預測標記框的坐標;Lb表示二元分類損失,即目標與非目標的交叉熵損失;Lr表示回歸損失;Lm表示多類別分類損失;指數函數[l*i≥1]表示當框i屬于缺陷類時,輸出1,否則為0;l*i是anchori真實的類別標簽;g*i是Anchori真實的位置和大小。
a)數據集及實驗環境
本實驗操作系統為Ubuntu16.04LTS,顯卡為NVIDIA GeForce RTX 2080Ti,CPU為Intel Core i9-9900X,內存大小為125.6 GB,使用Python編程語言和Pytorch深度學習框架。網絡學習率為 0.0001,動量和權重衰減分別設為0.9和0.0005。
數據集使用TILDA織物數據庫,它是一個公開的紡織品紋理數據庫,共有8類,其中有4類無圖案的織物圖像,兩類規則圖案的織物圖像和兩類復雜圖案的織物圖像。TILDA數據集包含1600張分辨率為768×512的圖像,從中選取1200張圖像,輸入圖像大小為320×320,并按照3∶1的比例隨機生成訓練集和測試集,根據疵點類型,將數據集分為孔、污漬、紗疵、線狀4類比較常見的類別,如圖6所示,并對疵點類別進行標注。

圖6 TILDA數據集中4種常見類別的織物疵點
b)評價指標
實驗結果采用均值平均精度(mean Average precision,mAP)進行評價,mAP的具體計算公式如式(7)所示。其中AP(Average precision)為平均精度,如式(6)所示;式(6)中的P(Precision)為測試精度,R(Recall)為召回率;式(4)、式(5)中的TP(True positives)為預測框與標簽框正確的匹配;FP(False positives)為預測框將背景預測為目標;FN(False negatives)指需要模型檢測出的物體,沒有檢測出[14]。
(4)
(5)
(6)
(7)
在TILDA數據集上,使用相同的訓練集進行訓練,并對比傳統RefineDet模型與改進后的模型二者之間的損失。圖7顯示的是模型訓練階段的損失,其中圖7(a)顯示的是傳統RefineDet模型訓練階段的損失,圖7(b)為改進后模型的損失函數。從圖7(a)可以看出在訓練階段損失不斷減小,直到收斂。經過105次迭代,完成模型參數的訓練。對比圖7和圖7(b)可以發現,相比傳統RefineDet的疵點檢測方法而言,本文提出的方法各項損失較低且擬合效果較好。

圖7 模型訓練階段的損失
圖8顯示的是模型測試的P-R曲線。其中 圖8(a)和圖8(b)顯示的是使用兩種不同的方法對相同的織物圖像進行測試后所得到的mAP值。圖8(a)表示通過傳統RefineDet方法對4種類型的疵點進行檢測,其均值平均精度mAP達到了 74.7%,圖8(b)表示通過本文所提出的方法,其均值平均精度mAP達到了79.7%,相比于傳統RefineDet方法提高了5.0%。

圖8 P-R平均精確度曲線
表1是使用兩種不同的方法進行測試后所得到的AP值。從表1改進后的AP中可以看出,本文提出的方法對孔和污漬的分類效果較好,但對紗疵和線狀的分類情況稍差。造成紗疵平均精確度較低的主要原因是紗疵的特征比較復雜多樣,且有的紗疵缺口較大,與洞的特征類似,導致網絡對紗疵的識別精確度較低。造成線狀平均精確度較低的主要原因是線與織物圖像的背景比較相近時較難識別,模型無法區分是背景還是線,并且有的線顏色較淺,難以識別。

表1 測試方法改進前后的平均精確度
對比改進前后的平均精確度可以看出,孔和污漬的平均精確度分別提高了1.2%和1.3%,紗疵和線狀的平均精確度分別提高了11.6%和6.3%,出現這種結果的原因是,孔和污漬相較于背景而言,對比度較明顯,所以在改進前后的平均精確度只提高了一至兩個點,并沒有較大提升;而對于紗疵和線狀來說,這兩類疵點相比織物背景而言對比度較差,且疵點特征沒有孔和污漬明顯,在利用注意力機制和SE模塊改進后,這兩類疵點檢測的精確度得到顯著提升。
圖9顯示了疵點的定位效果。圖9中,第1列是織物疵點圖像;第2列是傳統RefineDet檢測結果;第3列是改進RefineDet檢測結果;第1行是孔;第2行是紗疵;第3、4行是線狀;第5行是污漬。

圖9 改進前后疵點定位效果對比
從圖9可以看出,4種類型的疵點分別在條紋、素色、格子、針織4種背景下,實現了良好的分類和定位效果。不僅如此,還可以發現,改進之后的方法定位效果明顯優于改進之前的方法。這主要體現在改進之后的方法可以定位較小疵點,例如條紋背景中的小孔和針織背景中的小污漬,以及改進后的方法可以定位織物圖像中的多疵點和與背景顏色相近的疵點,例如素色背景中紗疵和格子背景中的線狀。從這兩方面可以發現,本文提出的方法在分類和定位方面明顯優于傳統RefineDet方法。
針對織物疵點檢測和定位,本文提出了一種基于改進RefineDet的疵點檢測方法。該方法在ARM模塊中加入了注意力機制,著重關注疵點重要的特征并抑制不必要的特征,降低了非疵點區域在檢測過程中的干擾;為了加強模型的分類性能,在TCB模塊中加入SE模塊,計算其生成的特征圖,為了使其維度匹配,通過逆卷積來達到增強高級特征圖的目的,然后對高級特征圖對應元素求和,對求和之后的結果添加卷積層來提高檢測結果的可辨性。最后ODM將結果回歸到準確的目標位置并預測多類別標簽,對疵點區域進行定位。結果表明,本文算法不僅能夠實現對織物圖像中不同類型疵點的定位,而且也可以定位一張圖像中的較小疵點和多個疵點,能夠有效檢測織物圖像中的單疵點和多疵點。
本文所提的算法也存在一定的不足,算法模型可以進一步優化,以提高模型的精度和定位效果。