丁 瓊,祝雙武,田 樂,王 茹
(西安工程大學紡織科學與工程學院,陜西 西安 710048)
紡織生產中,面料在生產過程中會出現各類疵點,影響產品質量。這些疵點會導致紡織品價格降低45%~65%[1],所以織物疵點的檢測在紡織品生產過程中至關重要。隨著深度學習技術的發展,在工業疵點檢測領域,深度神經網絡的應用受到越來越多關注。與傳統的特征提取學習方法相比,深度學習能夠從訓練樣本中學習更豐富的層次特征,并表現出卓越的性能[2-4],卷積神經網絡(CNN)在這一高性能的成功中發揮了主導作用[5]。Peng等[6]提出了一種先驗錨框卷積神經網絡(PRAN-Net)來檢測織物疵點,基于織物缺陷真值盒生成稀疏先驗錨的方法,以代替固定錨,從而更準確、有效地定位極端缺陷,試驗結果表明,該方法顯著提高了織物疵點檢測的準確性和效率。Li等[7]實現了多方向長短期記憶網絡以從連續缺陷中提取上下文特征,研究中還加入了空間和通道注意力模塊,用來考慮紋理圖像的整體信息,雖然試驗驗證了長短時記憶網絡(LSTM)檢測疵點的有效性,但該模型的計算成本較高。史甜甜[8]提出基于Fisher準則的深層卷積神經網絡織物疵點檢測算法。利用深度可分離卷積設計小型的深層卷積神經網絡(DCNN),并對DCNN網絡的Softmax增加Fisher準則約束,在TILDA 和彩色格子數據集上分類率分別為98.14%和98.55%。Sabeenian等[9]對VGG 網絡進行了改進,將VGG 輸出類別數由1000改為5,同時加入遷移學習以更快訓練網絡,改進后的模型參數量比VGG 網絡減少了57%,大大提高了檢測效率。
盡管卷積神經網絡在許多任務中表現出色,但它們的池化過程存在一個潛在問題,可能會導致關鍵圖像信息的丟失,從而降低檢測的精度。在這一背景下,膠囊網絡作為深度學習領域的一種新興技術,提供了一個有前景的解決方案。不同于傳統的卷積神經網絡,膠囊網絡在膠囊中編碼特征并建立局部和整體關系[10],具有獨特的優勢。這種網絡以矢量形式表示輸入和輸出,有助于解決卷積神經網絡中的信息丟失問題。膠囊網絡自2017年首次提出以來,已經在多個領域取得了顯著進展,包括醫學疾病檢測、動作識別、語音處理及計算機視覺等。Nú?ez-Fernández等[11]利用Caps Net對無鏡片顯微鏡圖像進行分類預測結核病,試驗結果表明Caps Net架構比傳統的CNN 網絡性能更好。文獻[12]利用膠囊網絡進行動作識別的光流估計,設計出Flow Caps模型,與使用CNN 相比,利用更少的真實數據,獲得了更好的檢測結果。在人工聲音事件檢測中,Vesperini等[13]采用CapsNet來處理復音任務,利用膠囊單元代表每個聲音事件的一組獨特屬性,結果顯示基于Caps Net的算法不僅優于標準的CNN,而且相對于最新算法,也表現出更佳的結果。Ayush Jaiswal等[14]提出了一種生成對抗膠囊網絡CapsuleGAN,將生成對抗網絡中的鑒別器卷積神經網絡用膠囊網絡替換,該框架在公共數據集上進行圖像數據建模和半監督分類的結果都優于CNN,同時生成的圖像數據也更真實。Wei Zhang等[15]結合CNN 和Caps Net 2種模型的優點,將CNN 提取的特征圖輸入新設計的CapsNet中獲得分類結果,試驗表明模型在3個公共基準遙感圖像數據集中都表現出了比深度卷積神經網絡好的分類精度。在文本分類任務中,膠囊網絡在將單標簽文本分類轉換為多標簽文本分類時表現出顯著的提升效果[16]。
基于以上分析可知,膠囊網絡已成功應用于各種領域任務中,但作為一種相對新穎的分類網絡,還需要進一步研究和改進,其在計算機視覺中的應用,特別是在織物疵點的檢測中需要進一步探索。針對卷積神經網絡在織物疵點檢測中特征提取不足所導致的低精度問題,提出了一種基于膠囊網絡的織物疵點檢測與識別方法。膠囊網絡被廣泛用于分類任務,但在織物疵點檢測中,無法滿足目標定位的需求。為了克服這一挑戰,將膠囊網絡與滑動窗口技術相結合,通過滑動窗口截取可能包含疵點的子圖像,并將這些截取的疵點圖像用于模型訓練。通過對各種參數進行詳細分析,以確定最佳模型配置。此外,引入非極大值抑制算法,能夠有效地去除冗余的目標框,從而實現對不同疵點的準確定位和分類識別。通過實驗驗證了所提出模型的有效性和準確性。
CapsNet不同于卷積神經網絡(CNN),它具有CNN 所缺乏的平移等變性,CNN 是將圖像信息以特定的分層形式存儲在隨機結構中,這樣使圖像的相關組件必須存儲在一起,導致當網絡錯誤地將輸入分配給不同的類別標簽時,就會出現假陰性[17-18]。相比之下,Caps Net采用一種類似樹的結構來映射對象組件的層次結構關系,使所有部件都與整體相連。這種結構實現了對空間信息的編碼,并同時計算物體的存在概率。此外,CNN 中常使用池化操作,但池化過程會導致信息損失。因此,CNN 通常需要大量的訓練數據來彌補這種信息損失,而CapsNet使用較少的訓練數據就能夠實現泛化能力。
CapsNet的結構如圖1 所示,完整的網絡結構分為編碼器和解碼器,編碼器包括一個卷積層(256個通道,每個通道由6×6濾波器組成,步幅為1,Re Lu激活函數應用于32×32×3的織物圖像),PrimaryCaps層(卷積膠囊層,6×6×32個膠囊,每個膠囊有8個卷積單元,使用3×3的內核操作)和DigitCaps層(該層是一個全連接層,通過應用Squashing擠壓函數創建了4個16D 的膠囊,每個數字膠囊將下一層所有膠囊的輸入包裝成膠囊,按4 類進行分類);解碼器是由3層全連接層組成的輸入重構,將數字膠囊中模長最長的向量取出,輸入解碼器中進行重構,其中重構損失就是把最終輸出和最初輸入的3072個單元上的像素值相減并平方求和。網絡的總體損失就是間隔損失和重構損失,其中,間隔損失占主導地位。

圖1 膠囊網絡結構
該網絡基于卷積神經網絡(CNN)的基礎上引入了“膠囊”的概念。這些“膠囊”是一組神經元,不僅包括特定物體存在的概率,還涵蓋了與實例化參數相關的各種信息,如旋轉、姿態、位置、方向和比例等[19]。與傳統的CNN 中的池化和卷積等組件不同,膠囊具有更高的信息容納能力。CapsNet通過動態協議路由算法實現主膠囊層與數字膠囊層之間的信息傳遞,在主膠囊層中,膠囊被分組形成父膠囊,每個父膠囊都與數字膠囊層中的對應膠囊建立連接。這些父膠囊計算并輸出與數字膠囊層相關的信息。每個膠囊都試圖估計其所連接的父膠囊的輸出結果。當膠囊的估計輸出與父膠囊的實際輸出相匹配時,它們之間的耦合系數將增加。將u i作為膠囊i的輸出,其對母體膠囊j的預測計算為:
式中:^μj|i為下一層膠囊i計算的更高一層第j個膠囊輸出的預測向量;W ij為后一層需要學習的權重矩陣。
根據下一層膠囊與母膠囊之間的確認程度,耦合系數c ij使用以下softmax函數計算:
式中:b ij是膠囊i是否應該與膠囊j耦合并在協議路由過程開始時初始設置為零的對數概率。
因此,父膠囊j的輸入向量計算如下:
為了防止膠囊的輸出向量超過1,使用如下非線性擠壓函數,根據式(3)給出的初始向量值,形成每個膠囊的最終輸出。
Caps Net與傳統CNN 的不同之處在于它使用向量代替標量值,動態路由算法代替了池化操作,使用膠囊特有的激活函數Squash,膠囊參數的前饋訓練不同于CNN 的反向傳播。膠囊神經元與傳統神經元對比見表1。

表1 膠囊神經元對比傳統神經元

表2 聚類目標框尺寸

表3 滑窗切分尺寸
Caps Net由多層膠囊組成,而每層膠囊又是由神經元組成。然而,與神經元不同的是,膠囊處理的輸入與輸出都是矢量。每個向量的方向表示該實體的某一特征(例如位置、紋理等),而向量的長度則表示該實體存在的概率。這些向量之間可以通過仿射變換和加權等計算進行處理,而膠囊間的信息傳遞則是通過動態路由協議來實現的。
在實際生產過程中,紡織品種類豐富,造成疵點的原因也各有不同??紤]到這些疵點的紋理多變、類型多樣及尺度各異的特點,采用神經網絡來存儲完整的代表性信息可以顯著提高缺陷類型檢測的輸出性能。與傳統的卷積神經網絡相比,膠囊網絡具有更強大的信息存儲能力,因此能夠更全面地捕捉圖像的層次關系和等變性。這使得膠囊網絡在提高疵點檢測精度方面具有一定的優勢。研究的疵點檢測流程如圖2 所示。

圖2 織物疵點檢測流程
應用滑動窗口和膠囊網絡的織物疵點檢測過程主要包括幾個步驟:
(1)將采集到的疵點圖像進行預處理,并將數據分為訓練樣本和測試樣本集;
(2)利用K-means算法對標注的4種疵點目標框進行聚類,得到滑窗截圖尺寸;
(3)滑動窗口對織物疵點圖像進行截圖,得到不同尺寸的疵點候選圖;
(4)膠囊網絡提取疵點特征,將疵點的不同特征封裝在膠囊向量中,Softmax分類器將特征進行識別分類;
(5)NMS算法將冗余目標框去除。
由于織物圖像數據集中包含尺寸、形狀各不相同的疵點類型,為了獲取更精準的疵點定位結果,需要對所有的疵點標注框進行聚類分析,獲得最優的滑動窗口切分尺寸。選用傳統的聚類算法K-means,該算法具有較易實現和在中等規模數據上較快收斂的特點。其算法思想大致為:從樣本集中隨機選取k個樣本作為簇中心,然后計算所有樣本與這k個“簇中心”的距離。接下來,對于每一個樣本,將其劃分到與其距離最近的“簇中心”所在的簇中。最后,針對新的簇,計算各個簇的新的“簇中心”。這種方法的優勢在于其相對簡單而高效,特別適用于中等規模的數據集。
K-means算法對初始化敏感,不同的初始質心k可能導致不同的聚類結果。因此,基于數據集中各種疵點的特征設定了不同的k值,并比較了產生的定位結果,以選擇適當的初始質心k。此外,將對象點分配到距離聚類中心最近的簇需要使用最近鄰的度量策略。在不同情況下,需要采用不同的度量公式,包括歐式距離、曼哈頓距離和余弦相似度。在研究的目標框聚類中,通過計算目標框之間的歐氏距離來衡量它們之間的相似性或差異性,從而將相似的目標框歸為同一簇。這有助于將目標框分組,形成用于膠囊網絡檢測算法的聚類錨框。
式中:x=(x1,x2,…,x n)和y=(y1,y2,…,y n)表示n維空間中2個點的坐標。
在織物疵點檢測任務中,膠囊網絡作為一種分類網絡,存在一定的局限性,難以實現對疵點的準確定位。為了克服這一問題,采用滑動窗口的方法,用于檢測圖像中可能存在織物疵點的區域。隨后,利用膠囊網絡對這些區域進行分類,從而實現對織物疵點的定位和分類。
具體而言,設定指定大小的窗口,對高分辨率圖像進行滑動切分,即沿著從左到右、從上到下的方向在圖片上滑動,以達到提取出圖片中每一個區域的目的,同時由于切分可能導致目標圖像被分割,因此需要設置重疊率overlap使相鄰切分子圖之間具有重疊部分,這樣可以較好解決目標被分割的情況。對于窗口的大小,指定為上一節聚類分析得到的幾種窗口尺寸,圖3是滑窗截取的疵點候選子圖示例,其中左圖是640像素×640像素的原跳花疵點圖像,右圖是經過滑窗截取的可能含有疵點的4種尺寸子圖。

圖3 織物疵點截取圖像示例
以實驗室拍攝的真實場景中的織物疵點圖像[20-25]和部分阿里天池紡織品缺陷圖像為數據集。圖像尺寸不一,經過預處理將所有圖像調整為640像素×640像素,且對圖像進行隨機旋轉變化、亮度調節、色彩變換及自適應對比增強等處理。經預處理后的數據集共5453張圖像,其中包含跳花、破洞、污漬和長條狀的紗線缺陷4類疵點,分別命名為float、hole、stain、line,如圖4所示。然后利用Labelme標記工具對圖4中的各種疵點進行標記,得到研究方法所需的疵點目標框標注文件。

圖4 織物疵點圖像示例
另一個數據集是常用的公共數據庫TILDA,這是一個著名的織物紋理數據庫,包含8種具有代表性的織物類別。根據紡織品圖譜分析,定義了7個錯誤類別和1個正確類別。選擇了250個織物圖像,將其分為孔洞、污漬、劃痕、攜帶和結頭5類,并依次分別標記為e1~e5。其中每個類由50個織物圖像組成,將每個圖像的大小調整為256像素×256像素,在試驗中,將整個數據庫的80%作為訓練集,剩下的20%作為測試集。圖5展示了幾個樣本及其標簽。

圖5 TILDA 織物疵點圖像示例
通過K-maens算法對4類疵點目標框進行聚類分析,由于每種疵點形狀、大小不一,所以針對每個類型的疵點都需設置不同的初始質心。設定當聚類結果目標框與所有目標框的匹配程度達到60%以上的k值為初始質心,以下分別是各類疵點聚類得到的候選框尺寸。
根據聚類分析得到的候選框尺寸,以各類別候選框比例分別選擇適當的切分尺寸。對于跳花疵點,聚類目標框包含了6種尺寸,其中(63,70)的目標框能夠容納(55,38)尺寸的目標框,(263,302)的目標框則適用于(132,115)尺寸的目標框。然而,(37,442)和(327,32)的目標框由于具有不同的長寬比例,無法相互包含。因此選擇了4種尺寸進行滑動窗口切分,分別是(63,70)、(263,302)、(37,442)和(327,32)。其他3種疵點的處理方法類似。對訓練集和測試集分別進行滑動窗口切分,得到包含疵點的20134張訓練集和5628張測試集切分子圖。
以Python語言基于Pytorch 框架構建Caps Net模型。該模型試圖檢測并分類4種缺陷,模型框架設計與原始Hinton模型不相同。Primary Caps層有9×9×32個膠囊,每個膠囊輸出一個1D 向量,步幅為2,每個主膠囊有8個卷積單元,以9×9內核運行;Digit-Caps層應用Squashing擠壓函數創建了4個4D 膠囊,每個數字膠囊對來自下一層的所有膠囊的接收輸入進行編碼,以便根據4個類別進行分類;解碼器即結構的最后一部分,確定前一層中每個膠囊的長度,以獲得該實體存在的概率。以間隔損失和Adam 分別作為損失函數和優化器,以織物疵點數據集(訓練集20134張,測試集5628張)對模型的學習率和囊間路由次數進行研究,從而完成織物疵點檢測與識別。
3.4.1 學習率對模型損失值的影響
為了得到學習率對織物疵點檢測模型性能的影響,設定模型訓練學習率為0.1、0.01、0.001 和0.0001,訓練周期為5次,對模型進行訓練,結果如圖6所示??芍?學習率為0.001和0.0001時,損失值下降最快且模型在訓練2個周期內達到最小并保持穩定,但學習率為0.001比0.0001達到的訓練損失值更小,因此選用0.001為Caps Net模型的訓練學習率。

圖6 學習率對模型損失值的影響
3.4.2 囊間路由次數對模型準確率的影響
為研究膠囊神經元間動態路由次數對網絡模型性能的影響,設定路由次數為1、2、3 次,訓練周期為5次,對模型進行訓練,結果如圖7所示。可知,模型的準確率與囊間路由次數呈負相關關系。路由次數越少,模型訓練準確率提升越快,在路由次數為1時,模型準確率的提升速率是最快的。因此,設定CapsNet網絡的膠囊間動態路由次數為1。

圖7 囊間路由次數對模型準確率的影響
由于研究數據集不同于MNIST,具有3通道且圖片尺寸較大,所以網絡結構與超參數設定有所不同。訓練數據集的Caps Net體系結構見表4,網絡超參數設置見表5。

表4 模型結構

表5 超參數設置
為評估該算法的有效性,采用不同類型疵點的織物圖像進行檢測。試驗結果表明,利用滑動窗口結合Caps Net模型的方法對織物疵點具有較好的檢測效果,可以檢測到不同類型、不同尺寸的織物疵點,進一步說明了該方法的有效性。
根據表6試驗結果且結合檢測效果圖8 可以得出:該模型對于織物的跳花、破洞、污漬及長條狀紗線疵點具有較好的檢測結果,平均精度均值達到90.78%,驗證了該方法對織物疵點檢測具有一定的準確性和有效性。

表6 數據集疵點檢測統計結果

圖8 織物疵點檢測結果
根據表7試驗結果可以得出:該模型對于TILDA數據集中的孔洞、劃痕及攜帶疵點具有較好的檢測結果,但對于污漬和結頭的檢測結果較差,可能的原因是該數據集中這2類疵點的大小形狀變化太多,導致滑動窗口方法無法精確切分疵點子圖。

表7 TILDA 疵點檢測統計結果
為驗證上述提出的疵點檢測方法對織物疵點檢測的優越性,將該算法與目前主流的目標檢測算法SSD、Faster R-CNN、YOLOv4 和YOLOv5 在織物疵點檢測上的網絡性能進行了對比,根據表8中列出的5種算法檢測出的4種疵點的精度均值(AP)與平均精度均值(m AP),可以得出該算法對于跳花疵點的檢測精度較Faster RCNN 和YOLOv5低,但另外3種疵點的檢測精度都較其他算法高,綜合平均均值精度來看,該算法的檢測精度是最高的。

表8 各算法的檢測能力對比
提出了一種基于膠囊網絡(CapsNet)和滑動窗口的織物疵點檢測方法,該方法通過使用滑動窗口來截取潛在的疵點子圖,隨后利用Caps Net來提取織物疵點的特征,并通過Softmax分類器對這些織物疵點進行分類,最終,采用非極大值抑制(NMS)算法來篩選出與真實值最接近的目標框,從而實現了對織物疵點的定位與分類。利用織物疵點數據集對模型中的參數進行分析,當模型的學習率為0.001,膠囊間路由次數為1時,模型檢測性能最佳。與其他算法相比,該方法在織物疵點檢測方面取得了更高的精度。通過上機試驗對織物疵點圖像數據集和TILDA 數據集進行測試,結果表明該算法可準確檢測并識別出不同類型的疵點,平均精度均值(m AP)分別達到了90.78% 和84.75%,證明了該方法在織物疵點檢測方面的有效性和先進性。