丁 瓊,祝雙武,田 樂,王 茹,余靈婕
(西安工程大學紡織科學與工程學院,西安 710048)
在紡織工業中,織物缺陷是產品外觀質量的主要考慮因素之一。織物缺陷可能導致產品降低價值,對企業造成嚴重經濟損失。因此,實現自動檢測織物疵點已成為該領域的重要研究方向。
傳統疵點檢測方法通常涉及圖像分割、邊緣提取、特征提取等步驟,適用于單一背景、平整布面和明顯疵點的情況。然而,在實際生產中,對各種織物進行準確和快速的疵點檢測依然具有挑戰性。隨著科技的進步,各行各業越來越傾向于智能化和無人化。在過去二十年中,研究領域提出了多種基于計算機視覺和深度學習的解決方案,以克服傳統方法的缺陷。近年來深度學習的方法已經成為研究人員的主要研究關注點[1-2]。一些研究者設計了關于自編碼器[3]、長短期記憶網絡[4]、深層卷積神經網絡[5]、UNet[6]、弱監督淺層網絡[7]等深度學習方法,采用不同策略和技術,具有各自的優點和適用性。文獻[8-10]提出了改進RCNN 的不同算法,其中陳夢琦等[11]將卷積塊注意力(CBAM)引入Faster R-CNN,將疵點檢測精度提高至78.81%。文獻[11-14]分別改進了YOLOv3、YOLOv4、YOLOv5,獲得了不同程度的性能提升。Yue等[15]在YOLOv4 中引入注意力模塊,并提出CEIoU 損失,增強了小疵點檢測的準確性。Transformer[10]利用四叉樹注意力機制,更好地捕捉全局特征,優化了織物圖像重構。這種方法減輕了缺陷樣本采集和手動標記的困難。
綜上所述,許多研究人員已經提出了各種深度學習算法,相較于傳統方法有了巨大的進步。然而,由于織物缺陷的多樣性,差異和分布不均勻性,如何實現檢測速度和準確性之間的平衡仍然是疵點檢測領域的主要挑戰。而本文提出的模型在實時性和準確性方面表現出色,能夠迅速識別多種織物缺陷。為了提高特征提取能力,引入了一種LSKBlock(large selective kernal block)選擇性注意力機制。相較于其他注意力機制,LSKBlock 更具自適應性,具有更廣泛的感受野,同時能夠保持較高的計算效率。此外,引入可變形卷積,增強變換建模能力。最后,采用了輕量型網絡設計范式Slimneck,以降低網絡參數數量。在TILDA數據庫上對這一方法進行了評估,結果表明它在檢測和識別織物缺陷方面表現出了出色的能力。同時,我們還在收集的織物缺陷圖像上進行了測試,充分證明了該算法的泛化能力,取得了良好的效果。
YOLO 系列算法是單階段檢測算法,其優勢是把定位和分類兩個步驟合并在一起,相比雙階段大大減少了計算量、提高了檢測效率,最新的YOLOv8模型檢測速度非常快,但其精度略有降低。因此本文采用融合注意力機制、引入可變形卷積和輕量化結構的方法,以期達到小幅度降低速度、提升精度,滿足實際生產中疵點檢測任務的高精度和實時性要求。
LSKBlock[16]結構如圖1 所示,由兩個殘差子塊組成:大核選擇(LK Selection)子塊和前饋網絡(FFN)子塊。LK 選擇子塊根據需要動態地調整網絡的感受野,前饋網絡子塊則用于通道混合和特征細化。

圖1 LSK塊結構圖
為了使模型更關注空間中的重點背景信息,選擇性地用多尺度大型卷積核提取空間特征。首先,將來自于不同感受野卷積核的特征進行通道拼接(channel concatenation):
然后進行空間適應池化,平均池化Pavg( )· 和最大池化Pmax( )· 保留重要空間信息,得到SAavg和SAmax特征:
交互不同空間池化特征SAavg和SAmax的信息,經過卷積層F2→N(·),將兩通道的池化特征映射為N個空間注意力特征:
之后,再用Sigmoid 激活每一個,得到解耦的大卷積核所對應的獨立空間選擇掩膜:
最后將輸入特征X與注意力特征S進行逐元素點乘,獲得LSK module的最終輸出,即:
現有的卷積神經網絡所能應對的幾何變換是有限的,為了增強變換建模能力,如圖2 所示,通過引入少量參數用于位移學習,可以容易地替換掉現有CNNs中對應的模塊,并且可通過標準的反向傳播輕松進行網絡的端到端學習,最終所得網絡具有內在的轉換參數,這些參數是直接從數據中學到的。

圖2 3*3可變形卷積
本文引入了Slimneck 設計范式,用于在降低網絡計算復雜度和推理時間的同時,保持模型準確性。Slimneck 中的GSConv 降低了深度可分離卷積對模型性能的負面影響,首先對輸入特征圖進行下采樣,然后深度卷積對其進行處理,并Concat 兩個Conv 的結果;最后shuffle 操作重洗數據,增強網絡泛化能力。同時,本文在GSConv 的基礎上繼續引入跨級網絡模塊VoV-GSCSP,使用該模塊代替Neck 中的CSP 模塊,在降低網絡結構和計算復雜性的同時,保持足夠的精度。如圖3所示。

圖3 VoV-GSCSP模塊
圖4是改進后的YOLOv8 模型。所作改進如下,在主干特征提取的尾部即SPPF 層前后第9層和第11 層融合了選擇性注意力機制LSKBlock,該機制可以使網絡更關注小目標的細節信息,通過自適應地學習這些細節特征,并與其他特征進行有效融合,從而改善織物中小疵點檢測難的問題,提高網絡整體的檢測準確率;其次將部分卷積層替換為可變形卷積,將C2f結構與DCN 結合得到C2f_DCN 卷積層,使網絡更容易按照疵點目標形狀提取特征,提升網絡性能;最后,在模型頸部引入輕量化范式Slimneck,原始的C2f 模塊由VoV-GSCSP 代替,同時將主干部分中第5 層和第7 層的普通Conv 改進為提取特征更高效的GSConv,使Concat 后的特征更豐富,這種設計方式能最大程度地提高精度,并且在保持網絡精度的同時適量減少網絡的參數量。

圖4 改進后的YOLOv8n
本文采用兩個織物疵點圖像數據集。一個是常用的公共數據庫TILDA,該數據庫包含八種具有代表性的織物類別。根據紡織品圖譜分析,定義了七個錯誤類別和一個正確類別。與文獻[17]類似,選擇了300張織物圖像,將其分為正常、孔洞、污漬、劃痕、攜帶和結頭六類,并依次分別標記為e0~e5。其中每個類由50 個織物圖像組成,將每個圖像的大小調整為256×256像素,在實驗中,將整個數據庫的70%作為訓練集,剩下的30%作為測試集。圖5 展示了六類樣本及其標簽。

圖5 TILDA數據庫中的樣本
另一個數據集中包含有阿里天池紡織品缺陷圖像和實驗室內拍攝的疵點圖像[18-23],原始圖像尺寸不一,經過處理后將所有圖像調整為640×640像素,且對圖像進行隨機旋轉變化、色彩變換、亮度調節及自適應對比增強等圖像處理,以此增強數據集,提高網絡的泛化能力。
經過預處理后的圖片共5453張,包括破洞、跳花、污漬及長條狀的紗線缺陷四種疵點類型,其中將斷經、斷緯、缺經、缺緯和并緯五種長條狀的紗線缺陷劃分為一類疵點。將四種疵點分別標記為e1~e4,圖6展示了四種類型的疵點圖像。

圖6 疵點數據集中的部分樣本
數據集中包含有6163 個疵點目標,其中包含跳花類疵點1688 個、破洞類疵點1532 個、污漬疵點1366 個和長條狀的紗線缺陷疵點1577個。圖7(a)顯示了四種疵點目標框的中心位置分布,揭示了這些疵點目標框主要分布在圖像的上下中心區域,呈現相對均勻的分布特征。圖7(b)則呈現了疵點目標的各種形狀和尺寸分布,表明數據集中包含許多小型目標以及極端長寬比的目標。

圖7 疵點分布狀況

圖8 TILDA檢測效果圖
本文算法主要采用精度(Precision,P)、召回率(Recall,R)和平均精度均值(mean Average Precision,mAP)作為評估標準,具體計算公式如下:
式中:TP表示成功預測為正類的部分,FP表示誤報為正類的部分,FN代表了被錯誤預測為負類的部分,即漏檢的情況。mAP代表平均精度的均值,它是一種衡量算法多類別檢測的綜合性能度量。AP由精確率-召回率曲線下的面積計算得到,mAP則是各個類別AP值的平均。
式中:k表示類別的數量。
網絡運行基于PyTorch 1.11.0 的深度學習平臺,使用NVIDIA GeForce RTX 3090 加速計算,顯存為24 GB,CUDA 版本為11.3,編譯語言Python3.8。同時使用AdamW 優化器和指定的學習率來訓練模型,初始學習率為0.001,訓練批次設置為16,測試批次設置為1,按比例將數據集劃分為訓練集(70%)和測試集(30%),兩個數據集分別訓練300、100 epochs。
本文設計了三組實驗,首先對LSKBlock、MHSA 和Biformer 這三種注意力機制進行對比分析,以選擇最適合融入YOLOv8 的注意力機制。其次在公共數據集TILDA 上進行消融實驗,以驗證不同方法的改進效果。最后在織物疵點數據集上進行不同算法的性能比較,驗證本文算法的有效性與先進性。
2.4.1 注意力機制對比
在YOLOv8n 模型的相同位置分別引入三種注意力機制LSKBlock、MHSA 和Biformer,進行了網絡訓練,并在相同配置下使用測試集進行性能評估。表1 展示了測試結果,明顯可見,LSKBlock 注意力機制在提升網絡性能方面表現出色,這進一步證實了它的高效性和先進性。

表1 不同注意力機制的表現對比(%)
2.4.2 消融實驗
在公共數據集TILDA 上進行消融實驗,以驗證不同方法的改進效果,包括融和注意力機制、可變形卷積的引入以及模型輕量化。如表2所示,改進1 引入了LSKBlock,雖然精確率有所下降,但召回率提高至70.3%,mAP 提高至84.9%,說明模型能夠識別更多的正例。由于在原模型中直接加入了兩層注意力層導致模型深度增加,所以參數量較原模型略微增加;改進2只引入了Slimneck,可以看到模型的參數量有很大幅度減少,相對較輕,而且性能上也有所提高,召回率提高了7.1個百分點,mAP 提升到85.9%,同時保持了與原模型相同的檢測速度:2.3 ms;改進3和4比較了在卷積層C2f_DCN提取特征的情況下分別引入Slimneck與LSKBlock的模型性能,兩者檢測性能都有提升,其中改進4的檢測精度更高,但檢測速度也更慢,而改進3中引入Slimneck模塊降低了計算復雜度和參數量,進而節省了計算資源;改進5同時引入了LSKBlock、Slimneck和C2f_DCN,此時模型性能最優,精確率與召回率均有提升,mAP 較原模型提高了4.1個百分點。同時參數量比改進4 中沒有Slimneck結構的模型也有所降低。

表2 不同改進方法的實驗效果
綜上所述,不同的改進方法在性能和模型復雜度之間存在權衡。改進5 在性能上表現最佳,參數量較原模型增加不多,檢測精度提升最大,雖然檢測速度略微變慢,但由于YOLOv8模型速度非常快,所以這種幅度的減速并不影響實際生產中的檢測速度。
2.4.3 不同織物疵點檢測算法比較
在織物疵點數據集上驗證本文算法的有效性與先進性。從表3 可以看出,改進的YOLOv8n,即本文算法可以準確檢測數據集中的四種疵點,其中跳花檢測精度可達97.6%、破洞檢測精度為95.2%、污漬及長條狀的紗線缺陷檢測精度為88.5%和89.4%,而且相比原YOLOV8n 算法,跳花、污漬、紗線缺陷的AP 值均有提高。平均精度均值的提高說明模型識別正樣本的能力總體得到提升。此外,跳花、破洞、污漬、紗線缺陷的識別準確率分別提高了1.2、1.6、2.6 和2.0個百分點。

表3 算法在織物疵點數據集上的改進效果(%)
為證明改進算法的先進性,本文將改進的YOLOv8n 算法與一些主流目標檢測算法及改進的織物疵點檢測網絡模型[10]進行了mAP、權重以及檢測效率方面的對比,結果見表4。經過改進的YOLOv8n的mAP值達到了92.7%,且2.5 ms就可以檢測一張疵點圖像(640×640),對比其它主流網絡有很大提升,較原模型的mAP值增加了4個百分點。整體而言,本文改進的YOLOv8n 網絡相比主流的目標檢測模性更有優越性。

表4 織物疵點數據集中不同織物疵點檢測算法的比較
鑒于織物缺陷檢測在紡織工業中的重要作用,提出了一種基于YOLOv8的織物缺陷自動檢測方法。該方法通過引入注意力機制、可變形卷積以及輕量化設計范式提高模型精度以獲得更好的檢測性能。在公共數據庫和收集的織物圖像上進行算法性能評估。幾種改進方法在公共數據集和織物疵點數據集上都有不同程度的提升效果,在NVIDIA RTX 3090上測試,TILDA數據集中平均單張疵點圖像檢測速度可達2.8 ms,mAP 從84.5%提升到88.6%;織物疵點數據集中平均單張疵點圖像檢測速度可達2.5 ms,mAP從88.7%提升到92.7%。同時與其他主流方法的比較表明,該方法的檢測精度和速度都明顯高于常見目標檢測網絡,滿足實際生產中紡織品缺陷的自動檢測任務。