費利斌,徐 洋,余智祺,孫以澤,季誠昌
(東華大學 機械工程學院,上海 201620)
目前國內大多數紡織企業采取人工進行布匹瑕疵檢測的方式。但近幾年來,部分紡織企業開始開發基于機器視覺的布匹瑕疵自動檢測系統。國內紡織行業中多數布匹瑕疵檢測系統存在檢測精度低、普適性差的問題,同時受限于傳統圖像處理技術的局限,算法依賴于對人工設計的特征進行提取,只適用于在較為簡單的素色布上進行瑕疵檢測[1]。國外已有較為成熟的自動檢測設備[2],但造價較為昂貴,且只適合素色布的檢測。但在工廠實際生產中,大多數布匹為具有復雜背景圖案的花色布,受限于傳統圖像處理技術,現有布匹瑕疵檢測系統難以取得很好的檢測效果。
新網絡結構[3]和損失函數等深度學習理論的發展,給花色布瑕疵檢測帶來了新的突破。Jing等[4]通過將紋理織物圖像分解為局部補丁,并對標記的補丁進行網絡訓練,最后利用訓練模型在圖像上滑動來檢測瑕疵。另外,Jing等[5]采用YOLOv3模型加入K-means聚類預選框尺寸和特征融合的方法進行瑕疵檢測。上述兩種方法都可以用來檢測較為規則的條紋和格子等布匹,但構造的網絡較為簡單,并不適用于圖案復雜的花色布。Han等[6]使用無監督學習方法,利用堆疊卷積自動編碼器來進行瑕疵檢測,可以緩解工業領域樣本不足的影響,但其檢測準確率不高。Xie等[7]使用改進的RefineDet網絡,并加入常用的優化方法以提高模型的檢測準確率,但不可避免因瑕疵形狀和顏色與布匹背景的相似而出現誤判。
為解決花色布瑕疵檢測的問題,本文提出基于改進Faster R-CNN[8](faster region with convolutional neural networks)的花色布瑕疵檢測算法。首先在二階模型Faster R-CNN的基礎上,使用Resnet-50[9]作為主干網絡,并嵌入可變形卷積[10]來提高瑕疵特征的學習能力。設計多尺度模型來提高小瑕疵的檢測能力,并通過級聯網絡不斷提高瑕疵定位的準確度和對瑕疵的識別能力。然后使用改進的損失函數減弱難易樣本和正負樣本不均衡問題的影響。最后,通過對瑕疵圖片進行測試并與基礎模型進行對比以驗證模型的效果。
花色布瑕疵檢測系統主要由線陣相機、條形光源、計算機、編碼器、檢測平臺組成,如圖1所示。

圖1 花色布瑕疵檢測系統Fig.1 The defect detection system for patterned fabrics
其中線陣相機為DALSA彩色線掃相機,圖像分辨率為4 096像素×1像素。編碼器的安裝位置需和布匹表面接觸,布匹移動時帶動編碼器轉動,從而發出脈沖信號控制相機采集卡進行采集。相機高度可以根據布匹的幅寬進行調整,當前實驗室檢測平臺幅寬為1 m。條形光源的亮度可以通過輸出電壓進行調節,設置為40V。計算機配置為Intel(R)Xeon(R)CPU E5-2650 v2和NVIDIA GeForce GTX 1080Ti GPU。瑕疵檢測算法使用python 3.6語言,開發框架為Pytorch框架。
本文以Faster R-CNN為網絡框架,采用融合可變形卷積的Resnet-50作為主干網絡對輸入圖像進行特征提取,然后經過多尺度模型進行特征融合操作得到多個不同尺度的特征圖,通過區域建議網絡(region proposal network,RPN)模塊獲得較好的感興趣區域(regions of interest,RoI),并將RoI對應到相應的特征圖進行池化,最后通過級聯網絡對池化得到的特征進行分類和位置的回歸。花色布瑕疵檢測改進算法整體結構如圖2所示。其中,H表示R-CNN部分網絡,C和B分別表示分類和回歸部分網絡。

圖2 花色布瑕疵檢測改進算法整體結構Fig.2 The whole structure of defect detection improved algorithm for patterned fabrics
在卷積神經網絡中,卷積具有特征提取的功能。普通的卷積是按照固定的矩形形狀對輸入的特征圖進行采樣,以3×3的卷積為例,其卷積操作和采樣位置為
(1)
S={(x,y)|(-1,-1),(-1,0),…,(1,1)}
(2)
式中:F為輸出特征圖;d0為中心位置;di為采樣位置與中心位置的固定偏移量;ω為卷積核的權重;f為輸入特征圖;S為偏移量的取值范圍,在3×3卷積中偏移量共有9個。
在花色布瑕疵檢測中,部分瑕疵為不規則的形狀,普通的卷積核無法根據瑕疵的形狀自適應地調整采樣的位置,限制了對瑕疵特征的學習能力。
可變形卷積網絡(deformable convolution network,DCN)通過引入采樣位置的偏移量來自適應地調整采樣位置,提高網絡對瑕疵特征的提取能力,其原理如圖3所示,其卷積操作為

圖3 可變形卷積網絡原理Fig.3 Principle of deformable convolution network
(3)
式中:Δdi為可變形卷積網絡訓練得到的偏移量。
Faster R-CNN使用VGG-16來進行特征提取,但VGG-16網絡結構簡單,特征提取的能力較低,在花色布瑕疵檢測問題上并不能取得很好的效果。Resnet-50有著較深的網絡結構,具有很好的特征提取的能力,且通過殘差模塊來消除網絡退化的影響,可以有效提取瑕疵特征。為提高主干網絡的瑕疵特征提取能力,在Resnet-50的后面4個階段的最后一個殘差模塊中分別融入可變形卷積網絡,殘差模塊結構如圖4所示。

圖4 殘差網絡Fig.4 Residual network
Faster R-CNN只在特征提取網絡的最后一個特征圖上進行后續的檢測,因為特征圖是經過原圖多次下采樣得到的,所以在特征圖上的花色布瑕疵,尤其是小瑕疵會丟失很多有效信息,因此需要設計多尺度模型(見圖5)來提高瑕疵的檢測效果。特征金字塔網絡 (feature pyramid network,FPN)[11]通過自底向上和自頂向下兩種方式對特征圖進行特征融合,將深層的語義信息結合到具有較多位置信息的淺層,提高了小目標的檢測。由圖5可知,在Resnet-50后面4個階段會得到4個特征圖,分別為C2、C3、C4和C5,另外對C5進行2倍下采樣得到C6。先對每個特征圖通過1×1卷積統一通道數為256,再對深層的特征圖通過2倍上采樣得到和前一層相同尺度的特征圖,并和前一層的特征圖相加,最后通過3×3卷積以減少上采樣過程的混疊效應,得到5個特征圖F2、F3、F4、F5和F6。因為Resnet-50在特征提取的同時會對瑕疵周圍的語義信息有一定的破壞,而原圖中包含的全局信息可以為瑕疵特征提供周圍的語義信息,對分類和定位具有指導意義,因此將全局信息作為一個RoI進行特征提取,將提取的特征加入到RoI在不同特征圖上池化得到的特征中。

圖5 多尺度模型Fig.5 Multi-scale model
通過多尺度模型可以得到5個不同尺度的特征圖,后續根據RPN網絡得到的RoI大小選擇尺度合適的特征層分別進行預測。面積較小的RoI選擇淺層特征圖如F2,面積較大的RoI選擇深層的特征圖如F5。
在二階檢測器中,當得到RoI后,通過選擇RoI和標簽框之間合適的交并比(intersection over union,IoU)閾值來判斷RoI屬于正樣本還是負樣本。在Faster R-CNN網絡中,如果閾值過高,雖然選出的RoI更接近真實物體,但由于符合該閾值條件的RoI會變少,使得正負樣本更加不均衡,導致訓練過擬合;如果閾值過低,雖然使得正樣本變多,但相應的誤檢會增加,導致分類誤差會增大。
在閾值問題上遵循兩個原理:一是當輸入的RoI與標簽的IoU在設置閾值附近時,檢測效果會比基于其他閾值時好;二是通過回歸后候選框的IoU會有所提高。基于這兩個原理,通過設置級聯網絡來優化檢測器的效果。級聯網絡通過級聯3個檢測器,因為在通過檢測器回歸后檢測框的準確度會得到提高,所以將上一個檢測器的回歸結果輸入到下一個檢測器中后,其檢測框的定位會更加準確,從而使級聯的3個檢測器的檢測結果不斷提高,其中3個檢測器的IoU閾值應逐步提高,本文模型閾值分別設置為0.5、0.6和0.7,級聯網絡結構如圖2所示。
神經網絡訓練過程中參數優化的穩定性在一定程度上取決于損失函數的選擇。在Faster R-CNN中分類損失使用交叉熵損失函數,其計算式為

(4)
式中:p為置信度;y為標簽值,取值為0或1。
在花色布瑕疵檢測問題上,因為實際的花色布瑕疵數量往往較少,因此在訓練過程中存在正樣本數量遠少于負樣本數量的情況,產生類別間不均衡的問題。Focal Loss[12](見式(5))函數通過參數來調節權重,可以同時緩解正負樣本和難易樣本不均衡的問題。
(5)
式中:α和γ分別為調節正負樣本和難易樣本的權重參數,常取α=0.25,γ=2。
因為Focal Loss過多關注難分樣本,從置信度p的角度衰減損失值,導致模型整體的準確度下降。梯度均衡機制[13](gradient harmonized mechanism,GHM)通過一定范圍置信度p的樣本數量的角度衰減損失值。首先定義一個梯度模長,如式(6)所示。

(6)
式中:g為梯度模長。
梯度模長g正比于檢測的難易程度。其次定義一個變量梯度密度(G(g))用來衡量一定梯度范圍內的樣本數量,如式(7)所示。
(7)
式中:δε(gk,g)為樣本中g分布在(g-ε/2,g+ε/2)內的樣本個數;lε(g)為(g-ε/2,g+ε/2)區間的長度。
分類損失函數LGHM為
(8)
但GHM在正負樣本不均衡的問題上并沒有很好處理,因此本文模型采用融合損失函數,如式(9)所示。
(9)
式中:μ0和μ1分別為兩個損失函數的權重參數,本文模型中取μ0=0.5,μ1=0.5。
為驗證算法改進后的檢測效果,對花色布瑕疵圖片進行檢測試驗。取常見花色布瑕疵5種,分別為破洞、臟污、縫頭、花毛、縫頭印,輸入圖像大小為1 024像素×1 024像素,其中訓練集圖片共1 901張,用于檢測的測試集圖片共297張,數據集樣本分布如表1所示。

表1 數據集樣本分布Table 1 Sample distribution of the data set
訓練過程使用隨機梯度下降,動量取0.9,初始學習率為0.02,Batch size為48,epoch為20,學習率采用常數衰減方式,分別在第3、8、13、18個epoch時減小10倍。
將訓練好的神經網絡模型在花色布測試集上進行瑕疵檢測試驗,使用Faster R-CNN+Resnet-50作為對比模型。兩種模型的檢測效果對比如圖6所示,其中瑕疵檢測框上面分別是預測瑕疵標簽以及瑕疵的置信度,其中,標簽1、2、3、4、5分別代表臟污、縫頭、破洞、縫頭印、花毛,置信度越高代表模型對瑕疵的識別能力越強,瑕疵分類愈加準確。由圖6可知,相較于對比模型,本文模型對瑕疵的識別和定位更加準確,能夠準確地框選出完整的瑕疵。部分破洞和臟污顏色形狀較為相似,對比模型易出現誤判。同時,本文模型可以檢測出對比模型中漏檢的部分瑕疵,主要是面積較小的瑕疵。

圖6 兩種模型的瑕疵檢測效果對比Fig.6 Comparison of defect detection effect between the two models
將兩種模型在測試集上的檢測結果進行統計,結果如表2所示。

表2 兩種模型的瑕疵檢測結果統計對比Table 2 Statistical comparison of defect detection results between the two models %
由表2可知,本文模型瑕疵檢測的平均準確率相較于對比模型提高了8.52個百分點,小瑕疵的檢測準確率提高了15.39個百分點,平均精確率也有8.91個百分點的提升。由此表明,本文模型的瑕疵識別準確率更高,定位更加準確。另外,在模型改進的同時,瑕疵檢測的平均時間并沒有增加太多。在實驗室檢測平臺下,對幅寬1 m的花色布進行在線檢測,布匹傳送的速度可以設置為0.5~0.8 m/s,滿足工廠檢測實際需求。
本文采用基于卷積神經網絡的花色布瑕疵檢測算法,在試驗的花色布瑕疵數據集上取得94.97%的平均準確率,具有較好的檢測效果,可以代替人工檢測,具體結論如下:
(1)通過使用基于卷積神經網絡的檢測算法,突破傳統機器視覺算法的檢測范圍的限制,可以有效對具有復雜背景的花色布進行瑕疵檢測。
(2)通過在檢測算法中加入多尺度模型,提高了對小瑕疵的檢測效果。
(3)通過使用融合可變形卷積的Resnet-50,引入級聯網絡結構進行分類和回歸,對損失函數進行優化,提高了檢測算法的準確度。