晏 琳 景軍鋒 李鵬飛
(西安工程大學,陜西西安,710048)
坯布疵點的產(chǎn)生有多種原因,如織機性能不良、人為操作不當或布匹在運輸中被意外污染等[1]。目前,坯布疵點的檢測仍基本依靠人工完成,但人工檢測方法存在效率低、誤檢率高、漏檢率高等缺點。傳統(tǒng)的織物檢測算法僅針對特定的疵點檢測效果較好,但檢測疵點的種類有限,無法滿足織物疵點種類較多的情況[2]。
2012年,深度卷積神經(jīng)網(wǎng)絡首次出現(xiàn),由Hinton提出的AlexNet[3]取得當年ImageNet[4]圖像分類競賽冠軍。隨后,深度神經(jīng)網(wǎng)絡得到長足發(fā)展,提出如GooleNet[5]、VGG[6]、深度殘差網(wǎng)絡(ResNet)[7-8]等經(jīng)典神經(jīng)網(wǎng)絡。其中VGG采用3×3的濾波器,增加了網(wǎng)絡結(jié)構(gòu)的深度,促進了卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)研究進程;ResNet利用殘差學習,解決了傳統(tǒng)神經(jīng)網(wǎng)絡結(jié)構(gòu)梯度消失的問題,真正意義上實現(xiàn)了深度神經(jīng)網(wǎng)絡的訓練。隨著深度學習算法的不斷發(fā)展,近年來在目標檢測領域,提出了基于區(qū)域建議的目標檢測與識別算法。2014年發(fā)表的RCNN算法[9],首次采用目標候選區(qū)域和深度學習相結(jié)合的方法,將檢測任務轉(zhuǎn)化為分類任務。此后,陸續(xù)提出了優(yōu)化后的Fast RCNN算法和Faster RCNN算法[10],在該領域進行了廣泛的應用。本文對Faster RCNN算法在坯布疵點檢測中的應用進行了研究。
基于區(qū)域選擇的目標檢測算法是現(xiàn)階段較成熟的目標檢測與識別框架,它將檢測過程簡化為分類任務,并利用深度學習方法提升檢測精度,其中具有代表性的算法為RCNN、Fast RCNN以及Faster RCNN。RCNN利用Selective Search提取目標候選區(qū)域,在候選區(qū)域中通過CNN網(wǎng)絡提取特征,并訓練SVM分類器,對特征分類[11]。其改進模型Fast RCNN提出了ROI池化(Region of Interest Pooling)層并采用Softmax預測區(qū)域類別,提高了模型的檢測精度及效率。為了進一步提高檢測速率,在Fast RCNN基礎上提出了Faster RCNN算法。
Faster RCNN算法包含兩個卷積神經(jīng)網(wǎng)絡,其結(jié)構(gòu)如圖1所示。Faster RCNN由區(qū)域生成網(wǎng)絡(Region Proposal Networks,RPN)和Fast RCNN兩部分構(gòu)成,RPN用于生成目標可能存在的候選區(qū)域;Fast RCNN實現(xiàn)對候選區(qū)域的分類,并且進行邊界回歸。這兩部分共享一個提取特征的卷積神經(jīng)網(wǎng)絡,使得目標候選區(qū)域的檢測時間幾乎為零,大幅提高了目標檢測的速度。
圖1 Faster RCNN結(jié)構(gòu)示意圖
RPN是一個全卷積神經(jīng)網(wǎng)絡(Fully Convolutional Network, FCN)[12],其以原始圖像所提取的任意大小特征圖作為輸入,輸出目標候選框的集合。RPN采用一個n×n的滑動窗口在共享卷積網(wǎng)絡的輸出特征圖上進行滑窗選擇,針對每個窗口,同時預測k個目標候選區(qū),即有k個相對應的被稱為錨(Anchor)的初始區(qū)域。對于一張大小為w×h的卷積特征圖,則可得到w×h×k個錨。每個窗口被映射為一個低維向量,該特征向量輸出給邊框分類網(wǎng)絡和邊框回歸網(wǎng)絡[13]。使用分類網(wǎng)絡得到錨屬于前景或背景的概率,并使用邊框回歸網(wǎng)絡修正錨的邊界框。RPN的訓練過程采用端到端(End-to-end)的方式,其損失函數(shù)通過平衡因子將分類損失和回歸損失聯(lián)合,利用該損失函數(shù)訓練好的RPN能夠得到目標候選區(qū)域,這些候選區(qū)域再在Fast RCNN部分進一步檢測。
Fast RCNN檢測網(wǎng)絡。目標候選區(qū)域的特征經(jīng)過Fast RCNN中的ROI池化層后,輸出固定長度的特征向量。這些特征向量通過全連接層分別輸入Softmax分類器和邊框回歸網(wǎng)絡中以預測區(qū)域類別并修正邊框。為了精調(diào)整個網(wǎng)絡,F(xiàn)aster RCNN采用文獻[11]中提出的交替訓練法訓練網(wǎng)絡。RPN與Fast RCNN共享相同的特征提取層,構(gòu)成統(tǒng)一的網(wǎng)絡。
試驗使用的坯布疵點數(shù)據(jù)來自于現(xiàn)場采集,整個數(shù)據(jù)集共包含2 000張圖片。圖片尺寸均為256 pixel×256 pixel,選擇其中的1 320張圖片作為訓練集及驗證集,剩余的680張圖片作為測試集。在人工標注疵點的邊框后,將數(shù)據(jù)集轉(zhuǎn)化為VOC2007的格式進行訓練。
試驗硬件平臺操作系統(tǒng)Ubuntu 16.04 LTS 64位,CPU Intel(R) Core(TM) i5-8400 2.80GHz,GPU NVIDIA GeForce GTX 1080 Ti,內(nèi)存16 G,硬盤1 TB,整個試驗均基于深度學習框架TensorFlow進行,編程語言為Python,通過多次試驗優(yōu)選得到結(jié)果。
為評估Faster RCNN在坯布疵點檢測中的有效性,采用平均準確率均值(mean Average Precison,mAP)來作為衡量模型性能的指標。mAP是指所有類別目標的平均準確率(Average Precision,AP)的均值,它可以作為目標檢測的實際度量標準。
由于ImageNet數(shù)據(jù)集的訓練圖像種類眾多,用其訓練的模型具有較好的特征表達能力及泛化能力,所以在試驗中,將ImageNet分類預訓練后得到的VGG16、ResNet101模型分別用于進行Faster RCNN共享卷積層的初始化以得到初始參數(shù)及權(quán)重。將坯布疵點數(shù)據(jù)集放入整個模型中進行訓練。在不同的特征提取網(wǎng)絡下,隨著迭代次數(shù)的變化,其mAP值見表1。
表1不同特征提取網(wǎng)絡下的檢測效果
迭代次數(shù)/次mAP/%Faster RCNN+VGG16Faster RCNN+ResNet10110 00030 00050 00070 00091.7294.9197.1597.2693.9996.9999.4999.44
由表1得出,ResNet101在測試集中,相較于原始的VGG16網(wǎng)絡,mAP值提高了2.3%左右,從而證明ResNet101在坯布疵點檢測中的性能優(yōu)于VGG16。這是由于ResNet101引入了殘差學習模塊,殘差學習將神經(jīng)網(wǎng)絡的輸出由H(x)變?yōu)镕(x)=H(x)-x,減弱了因為卷積層數(shù)過多而造成的梯度消失現(xiàn)象,提高了檢測的準確率。因此在坯布疵點檢測的過程中,選擇采用Faster RCNN與 ResNet101相結(jié)合的方法。
試驗過程中的一些參數(shù),例如非極大值抑制(Non-maximum Suppression,nms)前后區(qū)域保留個數(shù)、批處理尺寸、最大交并比(Intersection over Union,IoU),這些參數(shù)對試驗結(jié)果均有影響,因此,進行了多次對比試驗以確定最優(yōu)參數(shù)配置。
nms在Faster RCNN+ResNet101模型中的作用是去除具有較大重疊區(qū)域的錨。令迭代次數(shù)為50 000次,測試不同的nms前后候選區(qū)域個數(shù)對mAP值的影響,結(jié)果見表2。由表2得出,隨著數(shù)量的減少,模型保留的錨數(shù)也隨之減少,導致檢測結(jié)果的mAP值下降。因此,選擇相對較高的nms候選區(qū)域個數(shù)能夠得到較好的檢測結(jié)果。
表2不同nms個數(shù)對mAP影響
迭代次數(shù)/次nms前候選區(qū)域/個nms后候選區(qū)域/個mAP/%50 00050 00050 00050 00012 0009 0006 0003 0002 0001 7001 4001 10099.4999.3198.8797.10
在實踐中,批尺寸的個數(shù)決定了單次訓練樣本的數(shù)目,其數(shù)值的選取會對訓練過程中的梯度下降產(chǎn)生影響。試驗分別測試了采用不同批尺寸時,模型的mAP值,結(jié)果見表3。通過分析表3得出,在合理的范圍內(nèi),批尺寸越大,相應的mAP值會提高,同時每20次迭代所需要的訓練時間也會增加。考慮到小的批尺寸需要小的學習速率以保持穩(wěn)定性,所以,在此選擇較大的批尺寸來進行模型訓練。
表3不同批尺寸對mAP影響
迭代次數(shù)/次區(qū)域提議階段批尺寸/個檢測階段批尺寸/個mAP/%訓練時間/ms50 00050 00050 00050 000256128643225664321699.5898.4797.1294.71366227202185
在RPN部分的訓練過程中,得到的錨根據(jù)IoU被分為兩類,在初始模型中,當IoU值大于等于0.7時被分為前景;當IoU值小于0.3時被分為背景。IoU取值對loss曲線的影響如圖2所示。由圖2得出,調(diào)整IoU的值可以改變loss曲線的收斂效果,其中當IoU值分別取0.9和0.1時效果最好。這是由于白坯布的背景簡單,適當?shù)卦黾忧熬暗腎oU值并降低背景IoU值可以選擇留下較優(yōu)的錨。
(a)前0.7,后0.3
(b)前0.7,后0.1
(c)前0.9,后0.1
圖2IoU取值對loss曲線的影響
試驗中,采用調(diào)優(yōu)的參數(shù)配置后,F(xiàn)aster RCNN+ResNet101模型得到的部分檢測結(jié)果如圖3所示。在圖3中,包圍框區(qū)域代表坯布疵點存在的位置,包圍框的左上方顯示了該模型對于方框區(qū)域目標的分類類別及其類別概率值。圖3(a)中污漬的概率值為1.000,圖3(b)中長斷緯的概率值為0.988,短斷緯的概率值為0.987;圖3(c)中線條的概率值為1.000,圖3(d)中褶皺的概率值為0.993。
(a)污漬
(b)斷緯
(c)線條
(d)褶皺
圖3 Faster RCNN+ResNet101模型的部分檢測結(jié)果圖
研究采用Faster RCNN分別與不同特征提取網(wǎng)絡相結(jié)合的方法進行坯布疵點檢測,可檢測多種不同類型的坯布疵點。通過試驗驗證,ResNet101相較于VGG16能夠取得更好的檢測效果。試驗表明,F(xiàn)aster RCNN與ResNet101相結(jié)合的方法可以應用于檢測坯布的疵點,該方法能夠自動提取疵點特征,經(jīng)過多次合理的模型參數(shù)優(yōu)化后,檢測準確率高達99.6%。但是,由于ResNet101的層數(shù)較深,導致對一張圖像的檢測時間穩(wěn)定在130 ms左右,其實時性還有待提高。在未來的研究中,會通過優(yōu)化特征提取層的卷積神經(jīng)網(wǎng)絡以進一步提升模型的實時性,在保證檢測效果的前提下,更快速地進行檢測。