王恩芝,張團善,劉 亞
(西安工程大學 機電工程學院,陜西 西安 710613)
織物表面缺陷檢測是織物質(zhì)量控制過程中一項關鍵步驟。由于織物樣式不一、種類繁多,給織物檢測算法研究帶來困難。長期以來,紡織廠中織物表面存在的缺陷都是通過工人手工檢測。據(jù)統(tǒng)計人工驗布速度約為12 m/min,由于各種干擾因素,驗布員能專心驗布時間一般只能達到20~30 min[1]。為提高工廠生產(chǎn)效率,降低勞動成本,自動表面缺陷檢測已經(jīng)變得越來越普遍。隨著計算機計算力提高和軟件技術的迅速發(fā)展,卷積神經(jīng)網(wǎng)絡[2]也卷起了一陣熱潮,計算機視覺中的深度學習的方法在近幾年也達到了非常先進的水平,成為許多難以解決問題的一個端到端的解決方案。
針對紡織行業(yè)織物表面出現(xiàn)缺陷的問題,大量學者提出不同的織物缺陷檢測算法,主要分為基于傳統(tǒng)的圖像處理與機器學習相結合的方法、深度學習的方法?;趥鹘y(tǒng)的圖像處理與機器學習結合的方法又可分為:基于頻譜、模型和統(tǒng)計等方法[3]。傳統(tǒng)缺陷檢測的方法首先對圖像進行預處理提高圖像質(zhì)量,再通過傅里葉變換或小波變換等方法人為設計特征或提取特征,最后利用機器學習的方法對提取出的特征進行分類、識別。朱浩等[4]提出了一種多紋理分級融合的方法,通過計算缺陷區(qū)域與正常圖像塊特征的相似度,得到2者相似圖,將初步定位的缺陷區(qū)域的經(jīng)緯向特征圖與相似度特征圖進行融合,檢測缺陷存在區(qū)域。該方法只對具有較強周期性紋理的織物有效,當算法面對紋理差異性大、缺陷形態(tài)復雜、種類多樣的情況,傳統(tǒng)的機器學習檢測算法容易出現(xiàn)漏檢或錯檢等情況。張團善等[5]設計了一種較多噪聲干擾的情況下的防羽布疵點檢測算法,通過設計基矩陣并計算其差異矩陣,與疵點因子進行比較獲得缺陷二值圖,但此方法只適用無色差且密度較高的純色防羽布,具有復雜圖案的織物難以檢測?;谏疃葘W習的方法通常使用卷積神經(jīng)網(wǎng)絡進行特征提取,在應用分類器或者檢測頭對缺陷區(qū)域進行檢測。安萌等[6]基于Faster R-CNN設計了一種新的網(wǎng)絡框架,通過在候選框提取網(wǎng)絡(region proposal network,RPN)中引入不同尺度的特征金字塔結構,增強網(wǎng)絡提取細節(jié)特征的能力,但Faster R-CNN是一個二階段檢測網(wǎng)絡,速度無法達到實時檢測缺陷的效果,無法滿足工業(yè)檢測速度。針對織物缺陷檢測過程速度慢的問題,周君等[7]提出了一種基于S-YOLO v3模型的織物實時缺陷檢測算法,通過利用批歸一化(BN)層的縮放因子評估每個卷積核對于神經(jīng)網(wǎng)絡的權重,對神經(jīng)網(wǎng)絡進行剪枝,設計一種輕量級的模型實現(xiàn)織物的實時檢測,但該方法精度只能達到94%,對于工廠該精度仍需提高。
針對以上算法存在的問題,課題組設計了基于改進Yolo v5的織物表面缺陷檢測方法,可以在滿足工廠檢測精度要求的同時滿足檢測實時性要求,實現(xiàn)紡織行業(yè)檢測自動化。
目標檢測算法分為2種框架:一種是一階段檢測算法(one-stage)直接設計一個端到端的提取特征、目標檢測的框架,例如Yolo[8-11]系列和SSD[12]網(wǎng)絡等;另一種是二階段檢測算法(two-stage),在進行目標識別過程中,需要首先對區(qū)域框進行檢測,例如R-CNN[13-15]系列網(wǎng)絡等。Yolo系列網(wǎng)絡是目前最主流且效果最好的基于錨框(anchor)的目標檢測算法之一。最新的Yolo v5[16]項目應用多種多樣,也證明了Yolo v5算法的有效性。為提高Yolo v5網(wǎng)絡的性能,課題組在網(wǎng)絡的骨干網(wǎng)絡(backbone)階段引入卷積注意力機制(concolutional block attention module,CBAM)[17]通過對像素從語義和空間信息分別進行評分,抑制對檢測不重要的特征。在金字塔注意力結構(pyramid attention network,PANet)之后引入自適應空間融合(adaptive spatial feature fusion, ASFF)[18]的方法,抑制梯度反傳過程的不一致,增強網(wǎng)絡檢測精度。
Yolo v5是目前YOLO系列算法的SOTA(state-of-the-art),與其他的目標檢測算法一樣由輸入、骨干網(wǎng)絡(backbone)、特征融合(neck)、預測(prediction)結構組成。Yolo v5包含4種不同寬度和深度的模型,分別為Yolov5s,Yolov5m,Yolov5l和Yolov5x。借鑒EfficientNet[19]的方法,通過一個常數(shù)平衡網(wǎng)絡所有維度的寬度和深度。本研究的任務是織物缺陷檢測,為滿足工業(yè)上準確率的要求,在網(wǎng)絡結構盡可能小的情況下,實現(xiàn)更高的精度和更快的檢測速度,課題組以Yolov5l為研究對象。Yolo v5網(wǎng)絡結構如圖1所示。
Yolo v5為增強網(wǎng)絡模型的魯棒性和泛化性能:在輸入端引入Mosaic數(shù)據(jù)增強,自適應錨框計算,自適應圖像縮放和可適用于各種尺寸的圖像輸入;在backbone階段引入一種新的Focus結構。Focus結構對圖像進行切片,并在通道方向進行拼接,有效減少了信息丟失。Neck部分使用特征金字塔網(wǎng)絡(feature pyramid networks,F(xiàn)PN)+PANet,F(xiàn)PN通過上采樣將高層特征信息與底層特征進行融合,傳遞更強的語義特征,增強網(wǎng)絡模型學習圖像特征的能力,但可能丟失一些定位信息。PAN對FPN獲得的圖像通過自下向上傳遞強的定位信息,將兩者同時使用達到互補效果,增強模型的特征融合能力,提高了模型的魯棒性。
1.2.1 主干網(wǎng)絡改進
為提高主干網(wǎng)絡對目標的特征提取能力,課題組在backbone階段引入軟注意力機制(soft-attention)中的卷積注意力機制模板(convolution block attention module, CBAM),該模塊可以在空間維和通道維分別推斷出注意力的權重,使網(wǎng)絡能夠關注到圖像中關于目標的重點信息。如圖2所示,新的主干網(wǎng)絡在每一個跨階段連接網(wǎng)絡(cross stage partial,CSP)結構之后引入一個CBAM模塊。
圖2 改進backbone的Yolo v5結構
CBAM分為空間注意力機制(spatial attention)和通道注意力機制(channel attention),分別從空間維和通道維增強對目標的關注程度。通道注意力模塊對輸入特征圖分別進行全局最大池化和全局平均池化聚合圖像的空間信息,經(jīng)過2個多層感知機結構構建模型之間的相關性,最后經(jīng)過Sigmoid激活函數(shù)獲得每一個通道的權重,通道注意力機制如圖3所示,表示形式:
圖3 通道注意力機制模塊
空間注意力模塊將通道注意力模塊中的輸出作為本模塊的輸入特征圖。首先對輸入特征圖做一個基于通道的全局最大池化和全局平均池化;然后將2個單通道特征圖進行通道間拼接,而后通過一個分辨率為7×7的卷積對特征圖進行降維獲得一個單通道特征圖,便于最后特征融合;最后經(jīng)過Sigmoid激活函數(shù)獲得圖像空間位置的每一個特征權重。空間注意力機制如圖4所示,表示形式為:
圖4 空間注意力機制
1.2.2 特征融合階段改進
為了更加充分利用網(wǎng)絡中高層特征的語義信息和底層特征的空間信息,課題組在Yolo v5的Neck階段引入自適應空間特征融合(adaptive spatial feature fusion,ASFF),分別對PANet輸出的3個水平特征圖進行加權融合,通過增加可學習的參數(shù)抑制了梯度反傳過程的不一致,充分利用不同尺度的特征。修改后的自適應空間特征融合的Neck如圖5所示。
圖5 自適應空間特征融合Neck
改進后的Yolo v5模型如圖6所示,輸入圖像首先經(jīng)過由CBAM增強的backbone提取特征,然后對特征圖應用FPN+PANet+ASFF進行特征融合,充分利用特征圖中高層語義信息和底層空間信息,最大限度獲得目標信息,而后將獲得的特征圖送入檢測頭中,檢測頭分別輸出3個尺度8×8,16×16和32×32的輸出檢測層,分別用于檢測大、中和小3種目標。
圖6 改進后的Yolo v5模型
實驗中采用的硬件配置:CPU為Intel(R)Core(TM)i9-9900K,主頻為3.60 GHz,內(nèi)存為32 GiB,顯卡為NVIDIA;軟件配置為Win10操作系統(tǒng),顯卡驅(qū)動為NVIDIA GeForce RTX 2080Ti和CUDA10.1,深度學習框架采用PyTorch-1.7.1,使用LableMe作為標注工具,編程語言為Python3.7。
本算法的驗證數(shù)據(jù)集使用工業(yè)CCD相機獲取,手動采集3 000 張圖片,圖像包含復雜紋理的織物和簡單紋理的織物,且樣本表面至少存在一種缺陷,手動裁剪為尺寸256像素×256像素,部分具有缺陷的織物樣本如圖7所示。深度學習網(wǎng)絡模型的訓練數(shù)據(jù)都是基于大量數(shù)據(jù)驅(qū)動,為增強模型的魯棒性和泛化能力,對采集到的圖像隨機進行旋轉(zhuǎn)、縮放,及改變樣本的亮度、色度和飽和度,將原來的3 000張圖像擴充為10 000張圖像,隨機選取7 000張圖像作為訓練集,2 000張圖像作為驗證集,1 000張圖像作為測試集。數(shù)據(jù)集中分別包含毛邊、孔洞(包括擦洞和破洞)、黃漬、斷經(jīng)緯、滴墨和破損6種缺陷。
圖7 部分含有缺陷的織物樣本
經(jīng)過多次實驗,初始學習率設為0.001,迭代300代之后學習率調(diào)為0.000 1,批大小為16,權重衰減系數(shù)為0.000 5,動量為0.937,優(yōu)化器使用隨機梯度下降,總訓練次數(shù)為1 000。
考慮到工廠中的實際應用,課題組采用準確率(precision)和均值平均精度(mean average precision, mAP)作為模型的評價指標。Precision能夠準確、合理地評價算法的定位和目標檢測能力;使用PmA來衡量網(wǎng)絡的算法性能,適用于本研究的多標簽缺陷圖像分類任務,并將改進后的網(wǎng)絡與常用的SSD網(wǎng)絡進行結果比較,公式如下:
式中:TP表示本該是正樣本的樣本被算法認為是正樣本,預測正確;FN表示本該是正樣本的樣本被算法認為是負樣本,預測錯誤;N為測試集中樣本總數(shù);P(n)是在同時識別n個樣本時的大??;ΔP(n)表示召回率在檢測樣本的個數(shù)從n-1變?yōu)閚時的變化情況;C為多分類任務中類別個數(shù)。
算法改進前后結果如表1所示。
表1 算法改進前后結果比較
圖8所示為改進之后的網(wǎng)絡模型檢測結果,從效果圖看,改進的算法對毛邊、孔洞、黃漬、斷經(jīng)緯、滴墨、破損6種缺陷檢測精度較高,經(jīng)測算達98.8%。
圖8 改進模型檢測結果
課題組針對織物表面存在缺陷,傳統(tǒng)方法檢測率低、泛化性能差且實時性低的問題提出一種基于改進Yolo v5算法的織物缺陷檢測算法。實驗結果表明:在Yolo v5基礎網(wǎng)絡中增加卷積注意力機制和自適應空間特征融合可以提高模型對缺陷目標的關注程度,并增強語義信息與空間信息的融合程度,在檢測速度僅降低17 幀/s的情況下將疵點檢測的準確率提高至98.8%。課題組設計的織物缺陷檢測算法實時性高、且準確率高,能夠滿足實際工廠要求。該算法仍然嚴重依賴大量具有多樣性的樣本,設計一種基于小樣本的織物表面缺陷檢測算法是下一步的研究重點。