包曉安,林德守,張 娜
(浙江理工大學(xué) 信息學(xué)院,杭州 310018)
在紡織品的質(zhì)量控制階段,織物疵點檢測是其中的一個重要環(huán)節(jié)[1].由于織物疵點種類多,形態(tài)變化大,觀察識別難等,導(dǎo)致織物疵點智能檢測是困擾行業(yè)多年的技術(shù)瓶頸.目前大部分的紡織企業(yè)仍采用人工方法檢測織物瑕疵[2],它易受主觀因素影響,缺乏一致性;且檢測人員在強光下長時間工作對視力影響較大; 還存在人工成本較高、漏檢率和誤檢率較高、效率不高等問題.
隨著計算機視覺技術(shù)的發(fā)展提高,自動瑕疵檢測技術(shù)逐漸成為新的研究熱點.目前,國內(nèi)外對織物疵點檢測算法的研究主要是針對素色織物進行的[3].相較于素色織物,色織物由于顏色等特征的加入,導(dǎo)致檢測難度較大,所以目前對色織物疵點檢測方法的研究較少,且檢測效果都不理想[3].其中,紀(jì)旋等人[4]提出結(jié)合模板校正與低秩分解的紡織品瑕疵檢測方法,解決周期性織物存在拉伸變形問題; 蘭瑜潔等人[5]提出基于頻域濾波和區(qū)域生長法的瑕疵區(qū)域自適應(yīng)分割方法,提高瑕疵的檢測精度; 張波等人[6]提出基于結(jié)構(gòu)-紋理模型與自適應(yīng)數(shù)學(xué)形態(tài)學(xué)的織物瑕疵加成算法,解決織物紋理多樣性和瑕疵形狀尺寸不確定性造成的檢測效果差的問題.
上述方法主要使用傳統(tǒng)圖像算法,存在檢測算法設(shè)計只能針對特定場景,泛化能力弱等問題.隨著深度學(xué)習(xí)算法的不斷改進,在泛化能力、精度等方面都超越了傳統(tǒng)圖像算法.Wang等人[7]提出了基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)檢測算法,在更少先驗知識的情況下,達(dá)到快速,精確的對織物瑕疵進行檢測; Zhao等人[8]提出了基于正樣本訓(xùn)練的缺陷檢測框架,結(jié)合GAN和自動編碼進行缺陷圖像重建,解決缺陷樣本或陰性樣本少的情況下檢測的問題; Tabernik等人[9]提出了基于語義分割的織物瑕疵區(qū)域的定位方法,可以在少量樣本的訓(xùn)練數(shù)據(jù)中,達(dá)到較好的檢測效果等.
但是,基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)解決方案,還存在著兩個問題:(1)實際場景中,存在部分織物花色未在訓(xùn)練數(shù)據(jù)集中出現(xiàn),此類織物檢測效果會有較大程度退化;(2)織物花色種類繁多,大量無標(biāo)注正常織物樣本沒有得到很好地利用.基于此,本文通過使用特征殘差改進Cascade RCNN算法[10],提高對未知花色織物的檢測能力; 使用瑕疵殘差增強方案,有效利用無標(biāo)注正常織物樣本,提高算法泛化能力.
Cascade RCNN算法是基于Faster RCNN算法[11]的兩階段目標(biāo)檢測算法.Faster RCNN算法首先在第一階段,通過特征提取網(wǎng)絡(luò)對圖像提取特征,使用不同比例和大小的預(yù)定義框在特征圖中進行滑動窗口操作,生成若干anchors,再使用區(qū)域推薦網(wǎng)絡(luò),將這些anchors分為前景和背景,對前景進行回歸,得到邊界框,作為推薦區(qū)域; 第二階段將第一階段生成的推薦區(qū)域進行第二次分類,細(xì)分瑕疵類別,并進行第二次回歸,得到更加精確的邊界框,作為算法的檢測結(jié)果.由于在第一階段使用區(qū)域推薦網(wǎng)絡(luò)進行了前景和背景的分類,雙階段的檢測算法很好地處理了正負(fù)樣本比例失衡問題,算法的檢測精度較高.Cascade RCNN算法在第二階段,級聯(lián)3個大小遞增的IOU頭部,每個頭部對上一個頭部得到的結(jié)果再次進行回歸和分類,使得到的邊界框更加精確.


圖1 邊框回歸

Cascade RCNN訓(xùn)練損失函數(shù)由目標(biāo)框和預(yù)測框的邊框誤差和分類的置信度誤差加權(quán)求和得到.損失函數(shù)如式(2)所示.



置信度損失Lcls是預(yù)測類別置信度與目標(biāo)類別的誤差,損失函數(shù)采用交叉熵?fù)p失函數(shù),計算公式如式(4)所示.

FR-Cascade RCNN算法對Cascade RCNN算法進行改進,算法整體結(jié)構(gòu)為,首先使用共享權(quán)值的特征提取網(wǎng)絡(luò)對模板和瑕疵圖像分別提取特征,將兩個特征圖相減得到特征殘差圖,并增加一條支路,對瑕疵特征圖使用ROIAlign[12]將特征圖縮放到7×7大小作為全局特征信息; 通過使用FPN[13]網(wǎng)絡(luò),增加特征的多尺度信息,將FPN網(wǎng)絡(luò)的輸出結(jié)果使用RPN區(qū)域推薦網(wǎng)絡(luò)生成ROI區(qū)域,此時將7×7大小的全局特征信息疊加到ROI區(qū)域,通過Cascade的級聯(lián)方式,對ROI區(qū)域進行分類和回歸,得到檢測結(jié)果.算法框架如圖2所示.

圖2 算法整體框架
常規(guī)數(shù)據(jù)增強操作只能通過對原有瑕疵樣本進行變化得到新的訓(xùn)練樣本,不能將瑕疵特征擴展到其他樣本數(shù)據(jù)中,無法有效利用無標(biāo)注的正常樣本,存在較大的局限性.在實際應(yīng)用中,織物花色的種類較多,存在部分花色未在訓(xùn)練樣本中出現(xiàn),而訓(xùn)練樣本中存在的瑕疵可能只在一些花色中存在,導(dǎo)致使用原始數(shù)據(jù)或常規(guī)數(shù)據(jù)增強得到的數(shù)據(jù)訓(xùn)練得到的模型泛化性能必然較差.針對此問題,提出一種殘差增強方法,解決瑕疵特征不能擴展到其他訓(xùn)練樣本中的問題.該方法通過使用瑕疵樣本和模板樣本逐像素相減求取瑕疵殘差圖,將殘差圖的瑕疵區(qū)域與其他花色的正常無標(biāo)注圖像進行融合,得到新的訓(xùn)練樣本.此數(shù)據(jù)增強方式在不破壞新花色背景特征的同時將不同瑕疵與不同花色織物相互組合,有效的利用了正常無標(biāo)注織物樣本,生成特征豐富的訓(xùn)練數(shù)據(jù).使用瑕疵殘差增強后,mAP指標(biāo)得到了較高的提升.增強計算方法如式(5)所示.

式中,D為待增強織物圖像,F為瑕疵的織物圖像,T為F的模板圖像,下標(biāo)r為瑕疵區(qū)域編號.圖像增強效果圖如圖3,圖4所示.

圖3 瑕疵樣本和模板樣本逐像素相減得到殘差圖

圖4 正常樣本與殘差圖相加得到目標(biāo)樣本
數(shù)據(jù)增強流程首先從數(shù)據(jù)集中隨機選擇一張織物圖像,如果織物含有瑕疵,直接將圖像輸入到算法模型進行訓(xùn)練; 如果織物不包含瑕疵,隨機抽取瑕疵圖像,提取瑕疵區(qū)域和該織物進行瑕疵殘差增強,將生成圖像輸入算法模型進行訓(xùn)練,算法中數(shù)據(jù)增強流程如圖5所示.

圖5 殘差增強流程
針對實際場景中,存在未經(jīng)訓(xùn)練的織物花色,此類樣本中存在的瑕疵通過常規(guī)的檢測模型較難被檢出,提出了FR-Cascade RCNN算法,解決此問題.FR-Cascade RCNN模型通過改進Cascade RCNN算法,在特征提取層加入特征殘差結(jié)構(gòu),消除樣本背景的干擾,提高模型對復(fù)雜或未訓(xùn)練花色樣本瑕疵的檢出能力.FR-Cascade RCNN中特征提取網(wǎng)絡(luò)特征輸出函數(shù)如式(6)所示.

其中,O為輸出特征向量,D為瑕疵特征向量,T為模板特征向量,i為特征提取網(wǎng)絡(luò)中的第i階段.FR-Cascade RCNN中特征提取網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示.
圖6中,特征提取網(wǎng)絡(luò)采用ResNext50[14]+DCN[15]模型結(jié)構(gòu),模型結(jié)構(gòu)如表1所示.

表1 特征提取網(wǎng)絡(luò)模型結(jié)構(gòu)

圖6 特征殘差計算方法
織物瑕疵圖像和模板圖像經(jīng)過共享權(quán)值的特征提取網(wǎng)絡(luò),提取特征后,取特征差值,再通過FPN,增加瑕疵特征的多尺度信息,再通過RPN區(qū)域推薦網(wǎng)絡(luò),得到ROI區(qū)域,最后通過Cascade head,對ROI區(qū)域進行分類和回歸,得到最終瑕疵的區(qū)域和類別.
在實際場景中需要對未知花色的圖像進行檢測,容易想到消除背景干擾對檢測結(jié)果會有較大幫助.可以通過采取瑕疵圖像和模板圖像做差后進行檢測,但是由于瑕疵圖像和模板圖像并不是完全對齊,可能存在幾個像素至幾十個像素之間的偏移,所以此種方法并不能提高模型的檢測能力,反而會降低模型的檢測精度.由于卷積操作本身具備平滑局部特征的能力,所以通過使用共享權(quán)值的特征提取網(wǎng)絡(luò)提取特征后,對特征差值進行檢測,在較大程度上消除了圖像背景的干擾,解決了此問題,較大地提高了對未知花色的瑕疵檢出能力.
由于上一步的特征殘差網(wǎng)絡(luò)對背景特征進行了極大的過濾,在RPN階段,可以更好地提取得到前景框,但是輸出的候選框失去了目標(biāo)周圍的上下文信息,而在檢測網(wǎng)絡(luò)中,目標(biāo)周圍特征對于目標(biāo)的定位也有一定幫助,所以網(wǎng)絡(luò)需要一個全局特征信息去輔助局部瑕疵區(qū)域的分類和定位.把全局特征當(dāng)作一個ROI疊加到每一個候選框中去可以為局部瑕疵提供全局特征,網(wǎng)絡(luò)根據(jù)上下文周圍信息進行更加精確的定位.在模型中添加全局上下文信息流程圖如圖7所示.

圖7 全局上下文信息添加過程
由于全局特征圖的維度和候選框特征圖的維度不相同,需要將全局特征圖的維度使用ROIAlign的方法降低到和候選框特征圖相同的維度.
數(shù)據(jù)集由瑕疵樣本和無瑕疵樣本組成,其中瑕疵樣本圖片有4202張,無瑕疵樣本圖片有894張,共68種花色,分辨率為4096×1800.訓(xùn)練集由3523張瑕疵樣本和572張無瑕疵樣本組成,樣本總計4095張,共63種花色; 測試集由679張瑕疵樣本和321張無瑕疵樣本組成,樣本總計1000張,共68種花色,其中,未在訓(xùn)練集中出現(xiàn)的花色有5種,共279張.其中包含沾污、錯花、水印、花毛、縫頭、縫頭印、蟲粘、破洞、褶子、織疵、漏印、蠟斑、色差、網(wǎng)折和其他等15類瑕疵,共約17 500個瑕疵區(qū)域.數(shù)據(jù)如表2所示.

表2 數(shù)據(jù)集樣本數(shù)量
瑕疵類別部分樣本中瑕疵區(qū)域如圖8所示.

圖8 瑕疵類別
將測試集分為測試集A和測試集B,其中測試集A中不包含未知花色樣本,共400張圖像,測試集B中包含所有圖像,共679張圖像(測試集B由測試集A和未知花色圖像組成).實驗數(shù)據(jù)部分織物如圖9所示.

圖9 部分織物數(shù)據(jù)
實驗基于Ubuntu 16.0.4操作系統(tǒng),使用GPU版PyTorch深度學(xué)習(xí)框架,GPU型號為Tesla T4,顯存為15 GB.由于數(shù)據(jù)集規(guī)模不大,模型采用經(jīng)過COCO數(shù)據(jù)集預(yù)訓(xùn)練過的參數(shù)進行初始化,做遷移學(xué)習(xí).由于圖像較大,batchsize設(shè)置為1.訓(xùn)練時增加了多尺度訓(xùn)練,增加模型對不同尺度瑕疵的適應(yīng)能力,訓(xùn)練設(shè)置長邊尺寸為4096,短邊尺寸為1024-1440.由于瑕疵長寬比變化范圍較大,采用K-means方法聚類得到anchor比例為[0.04,0.15,0.5,1.0,2.0,5.0,25.0].學(xué)習(xí)率初始設(shè)置為0.001 25,模型訓(xùn)練初始損失值為0.9514,經(jīng)過12輪訓(xùn)練,損失值收斂到0.1941,此時降低學(xué)習(xí)率到0.000 125,訓(xùn)練到15輪,最終損失值收斂到0.1423.損失值和mAP收斂曲線如圖10,圖11所示.

圖10 損失值收斂圖

圖11 mAP收斂圖
部分瑕疵檢測實驗效果圖如圖12所示.

圖12 瑕疵檢測效果圖
實際環(huán)境中,算法模型除了要有較高的瑕疵檢測能力,織物是否含有瑕疵的準(zhǔn)確率也是一個重要指標(biāo),故評價指標(biāo)設(shè)置為score=0.8×mAP+0.2×Acc,使用mAP[16]衡量算法的瑕疵檢測能力,Acc衡量織物是否含有瑕疵的準(zhǔn)確率.mAP和Acc權(quán)值系數(shù)可根據(jù)算法著重點進行調(diào)整.
實驗結(jié)果如表3所示,RA為瑕疵殘差增強(Residual Augment),Cascade+RA指在Cascade RCNN基礎(chǔ)上,加入RA模塊; FR為特征殘差(Feature Residual),FR-Cascade指在Cascade RCNN基礎(chǔ)上增加了FR模塊; FR+RA指在FR-Cascade基礎(chǔ)上加入RA模塊; GC為全局上下文信息(Global Context),FR+RA+GC指在Cascade RCNN模塊上同時加入這3個模塊; AAcc 為測試集A的 Acc 指標(biāo),B-Acc 為測試集B的 Acc指標(biāo),其他同理.最終各個瑕疵在測試集B中的檢測結(jié)果如表4所示.
改進后的模型實驗結(jié)果如表3所示,其中瑕疵殘差增強相比于增強前,Acc和mAP指標(biāo),都有較大的提高,在測試集A和測試B中分別提高了5.6%和2.4%;改進的FR-Cascade RCNN算法,在Acc和mAP指標(biāo)上都得到了較大的提高,Acc在測試集A和測試集B中分別提高了19.2%和20%,mAP分別提高了11.1%和11.8%.在FR-Cascade RCNN基礎(chǔ)上增加RA和GC,得到的最終結(jié)果,在測試集A和測試集B中,Acc分別提高了19.7%和20.5%,mAP分別提高了14.3%和15.2%.實驗結(jié)果表明,改進后的FR-Cascade RCNN算法,不僅對已知花色有較強的檢測能力,在未知花色中,依然保持了較高的精度.

表3 各算法實驗結(jié)果
模型對不同瑕疵的檢測結(jié)果如表4所示,改進后的模型雖然在檢測精度上得到了較高的提升,但是部分類別由于存在大量小目標(biāo)、瑕疵不明顯、極端長寬比、長尾分布等情況,檢測精度還存在一些不足,這些將是算法后序的優(yōu)化方向.

表4 最終實驗結(jié)果
基于織物含有模板的前提下,通過特征殘差改進的FR-Cascade RCNN算法,降低模型對織物背景花色的敏感度,不僅提高了對已知花色織物瑕疵的檢測能力,同時,較大程度上解決了對未知花色織物檢測困難的問題.在此基礎(chǔ)上,通過對ROI區(qū)域添加全局上下信息,提高瑕疵的定位能力,對最終的檢測結(jié)果也有一定的提升.同時提出了瑕疵殘差數(shù)據(jù)增強方案,有效利用正常無標(biāo)注樣本,使模型的泛化能力得到一定的提升.但是,算法對小瑕疵、不明顯瑕疵等的檢測上依然存在一些不足,這將是算法后序的優(yōu)化方向.