李 宇,劉孔玲,黃湳菥
(1.武漢紡織大學 湖北省數(shù)字化紡織裝備重點實驗室 湖北 武漢 430200; 2.武漢紡織大學 湖北省功能纖維加工及檢測工程技術(shù)研究中心 湖北 武漢 430200; 3.武漢紡織大學 電子與電氣工程學院,湖北 武漢 430200)
在紡織品生產(chǎn)中,布匹質(zhì)量成為影響紡織生產(chǎn)效益的重要因素。目前我國紡織行業(yè)依然使用人工視覺的方法進行檢測。由于工人長時間檢查后會出現(xiàn)視覺疲勞,導致檢測精度、一致性、效率等方面大幅度降低,而且會對眼睛造成嚴重的傷害。因此,使用疵點自動檢測技術(shù)成為提高布匹質(zhì)量、減少人力成本的必然趨勢[1]。
目前應(yīng)用頻次較高的布匹疵點檢測方式分別是以結(jié)構(gòu)為基礎(chǔ)展開分析和以模型為基礎(chǔ)展開分析,還包括以頻譜為基礎(chǔ)展開分析[2]。KarleKar等[3]提出了一種小波變換和形態(tài)學結(jié)合的方法,通過檢測布匹紋理信息來提取疵點特征,獲得了較好的成果;Jia等[4]通過形態(tài)學處理對圖案重復的網(wǎng)格花紋布匹自動分割,再通過Gabor濾波器檢測疵點信息;鄧超等[5]提出一種基于邊緣檢測的方法,利用形態(tài)學處理和離散余弦變換自動檢測布匹疵點。
近年來深度神經(jīng)網(wǎng)絡(luò)迅速發(fā)展,接連涌現(xiàn)了VGG-NET[6]、Resnet[7]、Densenet[8]等優(yōu)秀的分類網(wǎng)絡(luò),還有Fast R-CNN[9],SSD[10],YOLOv3[11]等目標檢測分類方法,使得檢測精度、檢測速率越來越高,并應(yīng)用于各個領(lǐng)域。各種目標檢測優(yōu)化方法也運用于疵點檢測,如陳康等[12]使用深度殘差網(wǎng)絡(luò)修改Fast R-CNN中的原始特征提取網(wǎng)絡(luò),獲得了更高的疵點特征精度;曹振軍等[13]使用Inception-v3模型并且優(yōu)化圖像處理算法, 疵點平均準確率達94%,實現(xiàn)了布匹疵點自動檢測和準確分類。
針對目前布匹背景紋理復雜,瑕疵類別多,識別率精度低,速率慢的特點,本文提出一種基于深度學習物體檢測框架You Only Look Once[14](YOLOv4)的布匹疵點檢測的方法。該算法結(jié)合跨級部分(Cross Stage Partial,CSP)與Darknet53模塊作為主干網(wǎng)絡(luò)(Backbone)提取特征,空間金字塔池化(Spatial Pyramid Pooling,SPP)模塊、特征金字塔網(wǎng)絡(luò)(Feature Pyramid Networks,F(xiàn)PN)+路徑聚合網(wǎng)絡(luò)(Path Aggregation Network,PAN)的方式作為特征增強模塊(Neck)進行深層次特征提取,最后采用3種不同尺度的預測方式作為預測層,實現(xiàn)高精度的檢測。
本文基于YOLOv4算法進行布匹疵點檢測。YOLOv4的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。首先在輸入端輸入圖像并對圖像進行Mosaic數(shù)據(jù)增強:隨機使用4張圖像隨機縮放,再隨機分布進行拼接,豐富了檢測數(shù)據(jù)集,特別是隨機縮放增加了很多小目標疵點,讓網(wǎng)絡(luò)的魯棒性更好;經(jīng)過處理后的圖像進入Backbone,其中Backbone采用CSPDarknet53網(wǎng)絡(luò)結(jié)構(gòu),可以增強卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)對疵點圖像的學習能力,使得在輕量化的同時保持準確性。為了更好地提取融合特征,在主干網(wǎng)絡(luò)與輸出層之間插入Neck層。Neck層采用SPP模塊和FPN+PAN的方式進行深層特征提取,最后提取的信息輸入到預測層,預測層中采用3種不同尺度進行預測。
YOLOv4有步長為2的下采樣總計5次,因此網(wǎng)絡(luò)的步幅上限是25=32。這里步幅所代表的是圖像輸入尺寸與圖像輸出尺寸的比值。所以網(wǎng)絡(luò)相對應(yīng)的輸入圖像尺寸必須是32的整數(shù)倍。圖1中輸入圖像的尺寸為608×608像素。由于在疵點數(shù)據(jù)集中包含大量的小目標疵點,而且小目標檢測更難,因此在輸入端采用Mosaic數(shù)據(jù)增強,通過隨機縮放、隨機裁剪、隨機排布的方式將圖像進行拼接,可以豐富數(shù)據(jù)量,尤其增加了小目標的圖像數(shù)量,讓網(wǎng)絡(luò)的魯棒性更好。
圖1 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)
Backbone采用的是CSPDarknet53網(wǎng)絡(luò)結(jié)構(gòu),如圖2所示,位于0到104層。該結(jié)構(gòu)是在YOLOv3使用的Darknet53模型上包含了5個CSP模塊。輸入疵點圖像大小為608×608×3像素,首先經(jīng)過一個3×3、步長為2、32層卷積核(Conv+Bn+Mish,CBM)進行卷積操作,圖像大小成為608×608×32像素。接著經(jīng)過5個CSPRes模塊。CSPRes模塊是由圖1中的CSP模塊和CBM模塊組成。圖中的1、2、4、8代表殘差單元(Resunit)模塊重復的次數(shù)。每個CSPRes模塊首層相對應(yīng)的卷積核的大小都是3×3,步長均為2,該層的作用是進行下采樣操作。在第3個模塊CSPRes8中54層有一個分支用于后續(xù)上采樣的特征:76×76×256像素;第4個模塊CSPRes8中85層有一個分支用于后續(xù)上采樣的特征:38×38×512像素。最后得到19×19×1 024像素的特征圖。
圖2 CSPDarknet53結(jié)構(gòu)圖
Neck層位于主干網(wǎng)絡(luò)與預測層之間,達到深層次提取融合特征的效果。Neck結(jié)構(gòu)如圖3所示,Neck層主要采用SPP模塊、FPN+PAN的方式。SPP網(wǎng)絡(luò)用在YOLOv4中的目的是增加網(wǎng)絡(luò)的感受野,對應(yīng)于108層到113層。實現(xiàn)對107層進行 5×5、9×9、13×13的最大池化,分別得到108、110和112層(109、111層為路由層)。完成池化后,將107層到112層在113層進行張量拼接,連接成一個特征圖114層并通過1×1降維到512個通道。與使用k×k最大池化的方式相比較,采用SPP模塊的方式,可以更有效地增大主干特征的接收范圍,顯著分離了最重要的上下文特征。除此之外,Neck層采用FPN+PAN的方式,對應(yīng)于105到128層。FPN采用自頂向下將高層的特征信息通過上采樣的方式進行傳遞融合,得到預測的特征圖。另外,F(xiàn)PN層的后面還添加了一個自底向上的特征金字塔,其中包含2個PAN結(jié)構(gòu)。FPN層自頂向下傳達強語義特征,而特征金字塔則自底向上傳達強定位特征,二者結(jié)合,從不同的主干層對不同的檢測層聚合參數(shù)。
圖3 Neck結(jié)構(gòu)
YOLOv4依然延續(xù)YOLOv3的預測方式,實現(xiàn)3種尺度的預測。預測層如圖4所示,分別是在32、16、8倍降采樣,最終輸出對應(yīng)的特征圖依次為19×19、38×38、76×76像素。106層和147層的特征拼接用于檢測大小為19×19像素的特征圖。由于32倍下采樣倍數(shù)高,這里特征圖的感受野比較大,因此19×19像素大小的特征圖適合檢測圖像中尺寸比較大的對象。116層的特征圖通過上采樣及特征融合操作,得到126層的特征圖,然后與136層進行張量拼接用于檢測大小為38×38像素的特征圖。這里感受野屬于中等尺度,所以38×38像素適合對中等尺度進行檢測。最后,126層特征圖繼續(xù)上采樣,與54層的特征圖融合,用來實現(xiàn)對特征圖尺寸為76×76像素的待檢測圖的有效檢測。因為8倍下采樣倍數(shù)相對偏低,而且感受野也最小,所以76×76像素的尺寸非常適合對小尺寸進行檢測。通過上采樣操作能夠使得越深的網(wǎng)絡(luò)具有更好的特征表達效果。比如16倍降采樣的過程當中,假設(shè)所選擇的方式是直接通過下采樣的特征來實現(xiàn)檢測,這樣無法使用深層次的信息,檢測效果會不好。最后根據(jù)輸出的特征圖的數(shù)量和尺度的變化,使用 k-means 聚類算法來實現(xiàn)邊界框相對應(yīng)先驗信息的有效獲取。將3種先驗框設(shè)定在所有的下采樣尺度當中,可以聚類得到的先驗框尺寸類型總計9種。最終的所有尺度圖當中都能夠獲取到結(jié)果數(shù)量為N×N×[3×(4+1+3)]個。表示N×N個網(wǎng)格,3種尺度的錨點,邊界框的4+1個值,3種類別。通過選擇9個聚類均分到3種尺度上。
圖4 預測層
布匹疵點圖像目前還沒有統(tǒng)一公開的數(shù)據(jù)集,因此,本次從網(wǎng)上挑選了1 000張疵點圖像,包括百腳、破洞、吊經(jīng)、污漬和結(jié)點5種疵點類型,并將圖像裁剪成608×608像素大小。5種疵點類別如圖5所示。
圖5 5種疵點類別
為了進一步增加疵點數(shù)據(jù)量,本文采用如圖6所示的圖像平移,圖像對比度增強以及圖像旋轉(zhuǎn)180°的方式進行數(shù)據(jù)擴增,將疵點數(shù)據(jù)集擴增到3 000張。
圖6 圖像擴增
目前有很多可供選擇的深度學習環(huán)境,如caffe、Pytorch、Tensorflow等。本文采用具有良好可視化效果的Tensorflow框架實現(xiàn)疵點檢測。本文實驗任意選取80%疵點數(shù)據(jù)集作為訓練集,剩余的數(shù)據(jù)作為測試集。實驗環(huán)境參數(shù)如下表1所示。
表1 環(huán)境實驗參數(shù)
在一幅布匹圖像中可能含有多個疵點目標,因此屬于多標簽圖像分類任務(wù),因此,本文采用平均準確率(Mean Average Precision,mAP)作為評判標準判定方法的優(yōu)劣程度。
本文YOLOv4的檢測結(jié)果將與YOLOv3、SSD以及Faster R-CNN方法在相同的50 000次迭代,學習率為0.001的情況下進行分類性能對比。各種方法的實驗結(jié)果如表2所示。
表2 分類性能對比(AP)
從表2可以看出,SSD方法對于各類織物疵點的分類效果差,并且效果差別也很大,其中對百腳的檢測效果在這5種疵點中是最好的,達到0.62,而對吊經(jīng)和結(jié)點的檢測效果差,分別只有0.23和0.34,使得mAP值只有0.52;YOLOv3比SSD方法有較好的效果,每一類疵點的準確率都提高了很多;使用Faster R-CNN方法在每類疵點上的檢測上具有較好的穩(wěn)定性,這一點在布匹的工業(yè)檢測上是非常重要的。另外對于污漬這類疵點,mAP值達到了0.93,整體mAP值達到了0.83;使用YOLOv4方法對于每類的疵點都有較好的效果,檢測污漬疵點的mAP值達到了1.00。由于吊經(jīng)疵點不明顯,邊緣模糊,因此mAP值只有0.88。本文方法在各類疵點上的檢測效果如圖7所示。
圖7 布匹疵點檢測結(jié)果
為了進一步評估YOLOv4和其他網(wǎng)絡(luò)的性能,表3給出了各類網(wǎng)絡(luò)方法在檢測608×608像素大小的布匹疵點圖像的平均時間。
表3 分辨率為608×608像素的布匹圖像平均檢測用時 ms
從表3可以看出:擁有相對比較高mAP值的Faster R-CNN和YOLOv4方法,單張圖像平均檢測用時相差較大。YOLOv4方法檢測單張圖像平均用時比Faster R-CNN檢測單張圖像用時短了23 ms,達到了準確率高并且快速的要求。
由于卷積神經(jīng)網(wǎng)絡(luò)等深度學習的快速發(fā)展,布匹疵點檢測領(lǐng)域進入了一個新階段。YOLOv4采用Darknet53+CSP作為主干網(wǎng)絡(luò),可以提升CNN對疵點圖像學習的能力,并且具有降低內(nèi)存成本的優(yōu)勢;在Neck層采用SPP模塊,F(xiàn)PN+PAN結(jié)構(gòu)可以進一步提取深層網(wǎng)絡(luò)信息,該方法對布匹疵點平均檢測準確率達到了95%,單張疵點圖像檢測速率為33 ms,顯著超越了人工的檢測精度以及檢測速度。此外,本次研究為純色布匹疵點檢測,今后將研究有圖案的布匹疵點檢測,并實現(xiàn)更多種類疵點的檢測。