雷承霖 李 敏,2,3 王 斌
(1.武漢紡織大學,湖北武漢, 430200;2.湖北省服裝信息化工程技術研究中心,湖北武漢, 430200;3.紡織服裝智能化湖北省工程研究中心,湖北武漢, 430200)
在織物生產過程中,因設備、原料、工藝或者外部原因,織物表面會出現疵點。疵點的出現不僅會影響織物的質量,還會影響到企業的經濟效益。傳統的疵點檢測方法以人工檢測為主,這種方式不但效率低、精度差,而且長時間的工作會對紡織工人的眼睛造成影響。為了提高生產效率,降低人工成本,使用自動檢測設備來替代人眼進行疵點檢測成了現代紡織企業的追求目標。
近年來,隨著深度學習的發展,采用深度學習技術對織物疵點進行檢測的方法不斷地被提出。安萌等[1]提出了一種改進的Faster RCNN織物疵點檢測方法,通過對Softmax分類器進行正則化來減小類內間距、增大類間間距,不斷更新網絡參數提高網絡收斂能力,在一個簡單背景的數據集上有比較高的準確率。JUN X等[2]將二階段目標檢測算法拆解開來,將待檢測的織物圖片切分成規則的小塊,對每個小塊使用Inception-V1[3]模型來判斷是否存在疵點,然后再對缺陷的圖片使用LeNet-5模型進行疵點類型的判斷,在TILDA數據集上取得了不錯的結果;然而由于將圖片切分導致計算量倍增,即使是最輕量級的模型也需要1.6 s/張的檢測速度,達不到實時在線檢測的需求。葉舒婷等[4]在最新的目標檢測框架Cascade RCNN的基礎上,采用二步聚類算法確定適用于極端形狀疵點檢測的預定義框最佳尺寸,改進后的疵點識別準確率最高可達98.4%。上述基于深度學習的疵點檢測方法需要大量圖像數據對模型進行訓練,并且檢測精度嚴重依賴于模型的表達能力。
鑒 于Swin Transformer[5]在 計 算 機 視 覺 領 域的優秀表現,本研究提出了一種用Swin Transformer作為主干網絡的織物疵點檢測新模型。首先,在基礎目標檢測網絡Cascade RCNN[6]的基礎上,引入Swin Transformer架構來進行特征提取;為了在一個可擴展空間中尋找一個更好的特征金字塔結構來融合特征,摒棄了手動設計的FPN模塊,引用NAS-FPN[7]進行神經架構搜索;與此同時,還結合多尺度訓練、提高預設錨框的數量、Soft-NMS[8]等技術來進一步提高疵點檢測精度。試驗結果表明:在20類疵點的檢測結果中,該方法相比通用目標檢測算法的mAP@0.5提高了38.1%。
基于Swin Transformer的兩階段織物疵點檢測算法框架如圖1所示。首先,利用Swin Transformer模塊來提取輸入圖像的特征;然后,使用NAS-FPN模塊來搜索最佳特征融合方式,以適應不同大小的疵點,并根據疵點的長寬比進行kmeans聚類來調整錨點;最后,使用級聯區域建議網絡,從特征圖中得到可能為疵點的建議框,對疵點進行類別判斷與位置修正。

圖1 基于Swin Transformer的兩階段織物疵點檢測框架
通過分析疵點圖像發現,在提花織物或者復雜背景中的疵點更加難以識別,這是由于通常卷積網絡無法學習到背景與疵點之間的關聯,而Transformer[9]引入注意力機制,將學習到整體與部分特征之間的關聯與突出疵點特征,能有更好的效果。而將Transformer從自然語言處理領域引入圖像處理,要解決兩個問題。一是數據規模。在自然語言處理中,單詞是基本元素,單詞會通過詞嵌入算法轉換成相同尺度;在圖像處理中,待檢測目標的尺寸變換范圍很大。二是計算量。圖像中像素的分辨率遠遠大于文本段落中單詞量,Transformer計算自注意力的復雜度為圖像大小的二次方,這會增加疵點檢測的計算復雜度。
為了解決這兩個問題,Swin Transformer構建了層次化的特征映射,將自注意力計算限制為不重疊的局部窗口,以降低計算復雜度;同時,Swin Transformer允許跨窗口連接,移位窗口可以解決疵點形狀和尺寸變化的問題。Swin Transformer架構圖如圖2所示。圖2中,輸入的RGB圖像先被劃分為不重疊的小塊,每個小塊的大小為4×4。它們的特征被設置為RGB三通道的連接,每個小塊的特征維度為H/4,W/4。
階段1由一個線性嵌入層與2個連續的Swin Transformer塊組成,長度為48的小塊經過線性嵌入層可以投射到任意維度(這里以C表示)。Swin Transformer塊是一個經過修改的自注意力模塊,通過將Transformer中的標準多頭自注意力(MSA)模塊替換為基于移動窗口的模塊(WMSA),其他層保持不變,如圖2(b)所示。在每個MSA模塊和每個MLP之前應用一個LayerNorm(LN)層。通過階段1得到H/4×W/4個特征塊,每個特征塊的通道為C。為了產生分層表示,通過合并相鄰的分塊來減少特征塊的數量,patch merge層將相鄰2×2的每一組補丁的特征塊拼接起來,這樣得到H/8×W/8個特征塊,通道為4C。經過階段2的Swin Transformer塊,輸出通道設置為2C,得到H/8×W/8×2C的輸出,特征塊的數量變成了上階段的1/4。階段3、階段4與階段2類似,分別得到H/16×W/16×4C與H/32×W/32×8C的輸出。這樣層次化的輸出特征圖與經典的卷積神經網絡具有相同的分辨率,可以直接取代現有目標檢測的骨干網絡。

圖2 Swin Transformer架構圖
特征金字塔網絡(FPN)[10]可以解決多尺度目標特征表示問題。如圖3所示,在FPN中,不同層次的特征融合方式是手動指定的,不同階段產生的特征圖通過上采樣的方式融合到一起。FPN通過將下采樣與底層特征融合,可以生成高分辨率和強語義的特征表示。

圖3 FPN的特征融合方式
盡管FPN簡單而有效,但FPN的融合方式是固定不變的,很難找到不同層級之間最好的連接方式。為此,借鑒神經架構搜索算法[11]的優勢,采用NAS-FPN來提高小疵點的檢測精度。
NAS-FPN由多個merging cells構成,它是NAS-FPN的基本模塊,表示為任意兩個不同尺度特征的融合,輸出為一個給定通道的特征。構建merging cells的方式如圖4所示。

圖4 構建merging cells的4個步驟
如何構建合并單元的決定由控制器RNN進行。RNN控制器選擇任意兩個候選特征層和二進制操作以將它們組合到新的特征層中,其中所有特征層可能具有不同的分辨率。每個合并單元具有不同的Softmax。分類器控制的4個預測步驟。步驟1,選擇一個候選特征層hi;步驟2,選擇另一個特征層hj;步驟3,選擇輸出層的分辨率;步驟4,對hi與hj進行融合操作,并使用步驟3選取的分辨率進行輸出。
通過Swin Transformer提取特征與NASFPN進行特征融合之后,將通過候選區域生成網絡(RPN)生成可能存在疵點的候選框,默認的候選框有3種長寬比(1∶1,1∶2,2∶1)。然而與通用目標檢測不同的是,疵點存在極端的長寬分布,需要根據疵點的特性來進行調整,一般是根據經驗人工調整長寬比,然而經過試驗發現,利用kmeans對疵點數據集長寬比進行聚類分析有更好的效果。
目前統計的疵點有結頭、破洞、三絲、粗維、百腳等20種類型,圖5顯示了疵點的長寬分布情況。

圖5 疵點長寬比分布圖
通過對疵點的長寬比進行統計,采用kmeans的方式對預設框的長寬比進行計算。圖6顯示了使用k-means方法計算之后的長寬比檢測情況。可以看到,使用手動設置的預設框,置信度較低且發生了漏檢,而使用k-means聚類分析得到的預設框對于疵點的范圍判斷更加準確且置信度更好,沒有發生漏檢。

圖6 長寬比檢測情況
試驗織物疵點圖片數據集采用了阿里天池2019廣東工業智造創新大賽布匹瑕疵檢測初賽數據集,有6 899張織物圖像,疵點總數有9 523個,疵點類型為20個類別,圖像尺寸為2 446 pixel×1 000 pixel,疵點具體情況見表1。

表1 各類疵點數量
所有試驗均在兩個GTX 2080Ti GPU進行訓練和測試。訓練時,將圖片按比例縮放到1 434 pixel×593 pixel,初始學習率為0.001,在第27輪次和第33輪次進行衰減。共訓練36個輪次。基準模型Cascade RCNN使用Resnet50作為backbone,使用標準FPN作為特征融合網絡,Cascade頭設置閾值為0.5、0.6和0.7;使用的Swin Transformer每個階段的swin Transformer塊堆疊層數分別為2,2,6,2,經過階段1映射后的維度C=96;在NAS-FPN,堆疊次數設置為7,anchor的初始設置取[0.5,1.0,2.0]。
選擇平均精度均值mAP@0.5∶0.95作為織物疵點數據集的評估標準,mAP@0.5∶0.95通常用于目標檢測,計算IoU閾值從0.5到0.95,步長為0.05的mAP,計算公式如式(1)所示。

式中:n為檢測的類別數量;APi為第i類的AP,即平均精度,AP為PR曲線的面積,其計算公式如式(2)所示。

式中:N為PR曲線的取值點數;P(k)為對應點的精準率,其計算公式如式(3)所示;R(k)為對應點的估計召回率,其計算公式如式(4)所示。

式中:TP為檢測正確的數量;FP為檢測錯誤的數量;FN為未被檢測出的正確樣本數量。但考慮到有時織物疵點位置的精確性沒有那么極端,可以參考IoU為0.5時的平均精度均值,即mAP@0.5。
表2是與多種檢測模型的對比試驗。從表2可以看出,基于Swin Transformer的兩階段檢測模型擁有最高的mAP@0.5∶0.95,但由于計算復雜度原因,檢測速度有所下降,這將是下一步需要研究的目標。

表2 檢測模型試驗對比結果
表3詳細對比了各類織物疵點檢測效果的提升。可以看出,尺寸通常較小的疵點與極端長寬比疵點AP值提升明顯。例如星跳、跳花的AP值從0.139提升到0.433,粗經的AP值從0.067提升到0.571,死皺、云織、雙緯等的AP值從0.024提升到0.304。這歸功于更好的主干網絡和anchor的合理設置。其余還有磨痕、松經、色差檔等疵點的檢測效果都有較大的提升。

表3 各類疵點檢測AP值的對比結果
為得出使用k-means聚類進行預設框分析的具體效果,試驗則單獨分析了不同k-means參數對檢測效果的影響,其中k值表示將長寬比分為k類,利用距離作為相似性評價指標進行聚類,預設長寬比是指在檢測階段設置的檢測框的長度/寬度,通過對數據集預先進行分析處理,加入先驗的檢測框長寬比。試驗結果顯示,人工指定的3類預設長寬比(0.5,1.0,2.0)和9類(0.02,0.05,0.1,0.5,1.0,2.0,10,20,50)預 設 長 寬 比,mAP@0.5∶0.95分別是0.223和0.267;而通過k-means聚類得到的4類(23.564 607 95,0.585 341 62,12.111 156 76,5.435 642 73)長寬比 和9類(0.244 938 91,11.857 211 75,5.361 932 15,22.469 742 56,16.412 395 48,2.935 330 51,36.670 708 05,8.372 126 77,1.040 044 59)長寬比,mAP@0.5∶0.95分別是0.293和0.304。可以看出,當使用k-means聚類且k=9時候效果最好。
表4設計了針對改進的消融試驗。可以看到,使用標準的Cascade RCNN時,mAP@0.5∶0.95為0.220,當將特征提取網絡切換成Swin Transformer之后,mAP@0.5∶0.95提升到0.231;然后再將標準的FPN網絡替換成NAS-FPN,mAP@0.5∶0.95提升到0.237,最后在訓練時添加更多的anchor預設比,來提高極端長寬比疵點的檢測精度,最終將mAP@0.5∶0.95提升到0.304。結果表明本研究模型是有效的。

表4 消融試驗
圖7是本研究模型對織物圖像進行疵點檢測的結果。可以看出,在疵點較大的情況下,如色差檔和水漬,Cascade RCNN因為使用的卷積神經網絡受限于感受野大小而產生了漏檢,采用基于Swin Transformer的兩階段檢測模型卻可以很好地檢測到;還有松經和軋痕,因為呈細長條狀,利用初始的預設長寬比無法很好地檢測到,而利用k-means方法計算得到的預設長寬比卻可以檢測到。但是兩種方法對于極小的目標,如三絲,則都產生了漏檢和錯檢。

圖7 部分疵點檢測結果對比
為解決人工疵點檢測效率低、精度差的問題,本研究基于Cascade RCNN進行改進,針對小疵點、長寬比極端疵點和大疵點引入了Swin Transformer代替卷積神經網絡,并通過NAS-FPN得到最佳的特征融合方式,加上使用k-means計算得到的預設長寬比,最終得到的mAP@0.5比Cascade RCNN模型結果提高了31.8%。結果證明,本研究提出的算法能更好地識別各類疵點。
不過由于計算量的增加,本研究模型相較于Cascade RCNN模型,檢測速度降低了18.5%,如何提高計算速度是下一步關注的目標。另外,本研究模型總體上的精度仍然有很大的提升空間,我們會繼續探索深度學習在織物疵點檢測上的應用,以促進織物疵點檢測的進一步發展。