劉露露,李波 *,何征,姚為
(1 中南民族大學 計算機科學學院,武漢 430074;2 武漢捷普瑞科技有限公司,武漢 430074)
在當前的紡織企業(yè)中,織物的檢驗仍以傳統(tǒng)的人工視覺檢驗方式為主,檢測速度一般在 15-20 m/min[1],無法滿足在線檢測的要求.紡織廠中的織物若出現瑕疵,將嚴重影響其經濟收益.因此,以機器視覺和深度學習為依托的檢測方法成為近幾年研究的熱點.
一般基于傳統(tǒng)的機器視覺處理方法大致可分為統(tǒng)計法(數學形態(tài)學法[2]、直方圖統(tǒng)計法[3]、遺傳算法[4]、貝葉斯統(tǒng)計法[5]),模型法(總變差模型[6]),光譜法(快速傅里葉變換[7]、小波變換[8]、Gabor變換[9]),且由于一種算法很難取得理想的瑕疵輪廓,于是很多學者將多種算法融合應用.但這些傳統(tǒng)算法過于依賴圖像本身的淺層特征,圖像的低對比度、光照不均等因素都會干擾檢測結果,使得檢測精度較低.
近些年深度學習在目標檢測方面發(fā)展迅猛,采用經過驗證的兩級管道,例如Fast R-CNN[10]、Faster R-CNN[11]、Mask R-CNN[12]等框架已成為一種流行范式.首先需生成一些候選框(Proposal),然后對它們進行分類,能實現較好的檢測效果,但由于步驟繁瑣,檢測速度較慢.另一些框架如SSD[13]、YOLO[14]省去候選框的生成過程,輸入整張圖像后直接在輸出層回歸出目標位置和類別,從而得到較快的檢測速度.吳桐等人[15]基于YOLO網絡研究了一種數據集預處理的方法進行焊縫瑕疵的檢測,以流水線作業(yè)的方式提升網絡檢測速度.由于錨框選取的好壞直接影響檢測精度的高低,故本文在YOLOv3網絡的基礎上進行改進,提出一種棉布瑕疵目標檢測算法FS-YOLOv3(Four Scales YOLOv3),在保證速度的同時,從先驗框的選取、尺度的選擇、目標框濾除三個角度進行優(yōu)化,進一步提高檢測精度.
YOLOv3在輸入圖像后,用Darknet-53網絡[16]提取圖像特征,并將網絡分為5個階段,每個階段通過設定步長為2的卷積完成.在預測目標類別時,用多個獨立的邏輯輸出預測,使其可以支持多標簽對象.經典的YOLOv3網絡結構如圖1所示.
圖1 經典YOLOv3網絡結構Fig.1 The classic YOLOv3 network structure
運用K-Means[17]對n個已標注的數據根據距離劃分為k個簇,當兩個對象的距離越接近時,就認為其相似度越大,從而得到盡可能匹配瑕疵對象的邊框尺寸.若數據集中有n個樣本點xi,k個簇中心uj,定義指標變量rij,聚類優(yōu)化目標可由式(1)表示.但樣本在某個維度的數值特別大時,聚簇中心會偏向異常點,導致聚類效果不佳.
(1)
采用非極大值抑制(NMS)[18]算法找到最佳的目標檢測位置,檢測框分數計算如下:
(2)
其中,Si表示檢測框i的得分,M表示當前得分最高的檢測框,IOU(M,bi)為檢測框bi與M的交并比,Nt表示NMS設定的閾值.當交并比大于設定的閾值時,檢測框的得分將設為0,即相當于刪除.但樣本中目標出現較為密集時,本身屬于兩個目標的邊框,得分較低的會被抑制,從而降低模型的召回率.一般的目標檢測流程如圖2所示.
圖3是基于YOLOv3網絡提出的FS-YOLOv3網絡流程.輸入圖像后,將樣本進行隨機剪裁、旋轉等預處理工作,以增強模型的魯棒性.假設輸出特征圖的高度、寬度分別為H、W,相當于將圖像劃分為H×W個網格,圖像的每個網格對應輸出特征圖平面上的一個表征點.在每個網格上都放上這些錨框,每個網格上每個錨框都對應一個預測框.在過濾預測框階段,設置分類置信度閾值為threshold1,定位置信度閾值為threshold2.用紅色框凸顯先驗框的選取、尺度的選擇以及目標框的濾除部分.
圖3 FS-YOLOv3瑕疵檢測方法流程圖Fig.3 Flowchart of FS-YOLOv3 defect detection method
在先驗框的選取上,利用錨點機制預測瑕疵邊界框,降低模型訓練的復雜度.隨著對樣本特征的不斷學習,根據真實框對初始候選框逐步修正,得到逐漸接近真實框的參數.為減少隨機初始化對結果的影響、得到更好的IOU得分,用K-Means++算法取代K-Means算法,將候選框和真實框的交并比(IOU)作為位置相似性度量,計算公式如下:
d(box,centre)=1-IOU(box,centre),
(3)
其中,box為目標的真實框,centre為樣本聚類中心,IOU(box,centre)表示目標真實框和聚類得到的錨框的交并比,隨著IOU的增大,函數值d(box,centre)越小,聚類得到的錨框與真實框越接近,效果也越好.
在預測階段,對于輸入的瑕疵圖像,預測一個三維張量,包括對棉布瑕疵每個預測框的坐標信息x、y、w、h,可以根據式(4)、(5)將錨框的中心點偏移到與真實框一致,根據式(6)、(7)對預測框的寬度和高度做拉伸處理,使得預測框與真實框保持一致.
bx=σ(x)+cx,
(4)
by=σ(y)+cy,
(5)
bw=pwew,
(6)
bh=pheh,
(7)
其中,cx、cy表示在特征圖上每個預測單元格的左上角坐標,σ(x)、σ(y)表示對網絡輸出的坐標通過Sigmoid函數處理后的結果.通過聚類得到錨框的尺寸pw、ph,對標注信息w、h取ew、eh,使得預測框寬度和高度恒為正.最終得到的邊界框相對于特征圖的坐標即bx、by、bw、bh.
對棉布中的瑕疵目標,神經網絡分別為每種尺寸各預測了3個邊界框,并用二元交叉熵損失來進行瑕疵類別的預測,二元交叉熵損失(LMSE)的定義如下:
(8)
用深度殘差網絡提取圖像特征,隨著網絡層數的加深,提取到的特征也越豐富.初始卷積層用32個3×3的卷積核過濾416×416大小的棉布瑕疵圖像;隨后將之前卷積層的輸出作為下一層的輸入,并使用64個3×3的卷積核,用兩個像素的步長對它們?yōu)V波實現下采樣操作,此時得到的特征圖尺寸為208×208;執(zhí)行包含1×,2×,8×,8×,4×殘差塊的5組網絡,分別獲得208×208,104×104,52×52,26×26,13×13分辨率的特征圖.FS-YOLOv3網絡結構如圖4所示.
在主干網絡后新增加1個卷積層,對13×13的特征圖進行下采樣獲取淺層的圖像信息,對26×26,52×52,104×104的特征圖以2倍大小執(zhí)行上采樣獲取復雜圖像信息.為了獲得更有意義的語義信息,增強特征金字塔的表征能力,將深度殘差網絡中相對應尺寸的特征圖和預測網絡中的特征圖進行級聯(lián),利用上下文語義信息進行棉布瑕疵檢測.4個檢測分支共享從殘差網絡中提取特征.同時,在所有卷積層上均添加批量標準化層以幫助規(guī)范網絡.使用Leaky Relu激活函數讓梯度更為有效地傳播,既不會引起過多的額外計算成本,也能提高對神經網絡的自歸一化.
在低對比度的樣本圖像中,噪聲往往會被當成目標,得分低的邊框又被強制去除,造成檢測精度下降.對此引入Softer NMS算法,使得高分類置信度的邊框變得更加準確.Softer NMS提出了一種基于KL散度的邊框回歸損失函數KL loss,是最小化預測邊框的高斯分布與真實目標的迪克拉分布之間的KL散度,也就是說預測邊框分布越接近真實目標分布,損失越小.Softer NMS分別對IOU大于重疊度閾值的預測作加權平均計算,得到新的4個坐標點,第i個邊框的x1計算公式如下:
(9)
其中,j表示所求IOU大于重疊閾值的邊框,對IOU大于設定閾值的邊框坐標進行了加權平均,希望分類得分高的邊框能夠利用到周圍邊框信息,從而提升準確度.
圖4 FS-YOLOv3網絡結構Fig.4 FS-YOLOv3 network structure
以下驗證FS-YOLOv3網絡的有效性.實驗硬件環(huán)境主要包括:CPU為Intel(R) Core(TM) i5-4210U,內存為12GB,軟件環(huán)境主要包括64位的Windows操作系統(tǒng)以及TensorFlow深度學習編程平臺.
數據集質量的高低直接影響最終檢測效果的好壞,為了充分學習待檢測目標的特征,從企業(yè)現場采集了4360張實際樣本,對樣本統(tǒng)一裁剪成416×416大小的圖片.根據企業(yè)提供的瑕疵坐標,本文對80%的圖片使用Labeling工具手工標注瑕疵位置后作為訓練集,20%作為測試集,將有瑕疵的圖片作為正樣本,無瑕疵的圖片作為負樣本.棉布瑕疵樣可大致分為點狀瑕疵、復雜背景下瑕疵、弱目標瑕疵、低對比度帶狀瑕疵和大尺度瑕疵5類,部分棉布瑕疵樣本如圖5所示.
圖5 棉布瑕疵圖像Fig.5 Cotton defect image
圖6分別展示了圖像處理法、Faster R-CNN、YOLOv3、FS-YOLOv3對棉布樣本瑕疵的檢測結果,其中深色的線條即為棉布瑕疵區(qū)域.
(a)點狀瑕疵 (b)復雜背景下瑕疵 (c)弱目標瑕疵 (d)低對比度帶狀瑕疵(e)大尺度瑕疵 圖6 棉布瑕疵檢測結果Fig.6 Cotton fabric defect detection results
用圖像處理法進行瑕疵檢測,設置放大倍數為1.2,偏置為10,根據線性變換調節(jié)圖像的亮度和拉伸度,用限制對比度自適應直方圖均衡化來抑制噪聲區(qū)域,自適應閾值分割后運用形態(tài)學處理方法去噪,利用Sobel算子對圖像做卷積,獲取圖像橫向和縱向的亮度差分近似值,計算梯度的估計值,通過確定邊界值提取圖像特征,填充輪廓顏色,找到所有瑕疵區(qū)域并標記.
用Faster R-CNN網絡進行瑕疵檢測,以ResNet50為骨干網絡提取特征獲得共享特征層,利用共享特征層獲取anchors,可以得到anchors的左上角和右下角坐標為[[-8 -40 99 55][-176 -88 191 90][-330 180 374 190][-56 -56 60 60][-98 -98 110 110][-240 -240 230 230][-33 -80 50 91][-79 -110 90 169][-155 -312 130 320]],對anchor解碼以獲取需要截取的位置,對共享特征層進行截取并resize后進行下一步卷積,獲取最終預測結果并解碼.
用YOLOv3網絡進行瑕疵檢測,基于K-Means算法聚類9個錨框,得到的anchors為[[10 19][26 30][33 23][36 67][68 43][58 138][126 90][144 142][334 311]],在(13×13),(26×26),(52×52)三個尺度上進行預測.
用FS-YOLOv3網絡進行瑕疵檢測,基于K-Means++算法聚類12個錨框,得到的anchors為[[19 27][22 22][28 29][30 57][215 411][219 310][244 183][298 320][317 414][322 409][350 412][387 412]].候選框數量對應平均交并比如圖7所示,最終在(13×13),(26×26),(52×52),(104×104)四個尺度上進行預測.
對輸入圖片的角度、曝光度、飽和度、色調、尺寸進行調整以增強模型的魯棒性.設置網絡參數:學習率為0.001,動量為0.9,權重衰減正則化為0.0005,IOU閾值為0.5,分類置信度閾值threshold1為0.5,定位置信度閾值threshold2為0.4,迭代500次.
從圖6可見對于對比度較高的點狀瑕疵用圖像法檢測效果較為明顯,對于復雜背景或弱目標瑕疵,深度學習的方法更為適用.但對于低對比度的帶狀瑕疵,Faster R-CNN網絡未能檢測出來,且YOLOv3網絡將噪聲區(qū)域檢測為目標區(qū)域,改進后的FS-YOLOv3網絡可有效檢測出瑕疵區(qū)域,接近標準.
圖7 候選框數量對應平均交并比Fig.7 The number of candidate boxes corresponds to the average intersection ratio
本文采用召回率(recall)、準確率(accuracy)、精確度(precision)、時間四種評估方法來衡量檢測結果.召回率計算如式(10)所示,反映了被正確判定的正例占總的正例的比重;準確率計算如式(11)所示,其值越大表示分類效果越好;精確度計算如式(12)所示,反映了被分類器判定為正例中真正的正例樣本的比重.
(10)
(11)
(12)
其中TP表示預測樣本有瑕疵,實際樣本有瑕疵;TN表示預測樣本無瑕疵,實際樣本無瑕疵;FP表示預測樣本有瑕疵,實際樣本無瑕疵;FN表示預測樣本無瑕疵,實際樣本有瑕疵.
結合表1的結果可見,在相同的實現環(huán)境中,傳統(tǒng)圖像分析法因實現較為簡單,檢測較快,但計算機往往將噪聲當做瑕疵進行檢測,對低對比度的圖像誤檢、漏檢較多,只有76.85%的準確率,精準度很低.而Faster R-CNN網絡、YOLOv3網絡因為學習了圖像深層特征,對大多數對比度較強的樣本效果較好,但對于條紋狀瑕疵檢測不敏感,漏檢較多,且Faster R-CNN網絡時間開銷過大.改進后的FS-YOLOv3網絡,對規(guī)范整齊的棉布瑕疵檢測效果較好,但對于帶狀瑕疵標注大小較為敏感,隨著標注的精準,準確率可達89.66%,精確度明顯優(yōu)于其他方法.
由于棉布瑕疵種類繁多,加上機器振動、光照等原因造成的噪聲過大,圖像的低對比度使得識別難度增大,為解決此問題,本文提出一種基于FS-YOLOv3的棉布瑕疵檢測方法.通過基于IOU的K-Means++聚類算法獲得初始錨框,提升錨框分布的準確率.通過增加卷積層,多尺度訓練樣本,使得小目標瑕疵檢測更為精準.通過Softer-NMS過濾重疊檢測框,將分類置信度和定位置信度作為衡量標準,降低誤檢率.實驗結果表明:本文提出的算法檢測結果較好(準確率較YOLOv3網絡提升了6%,召回率提高8%,精確率提高17%,檢測速度比Faster R-CNN網絡快一倍),大大減少人力、物力的同時,還可以通過自動識別技術反饋瑕疵情況,可有效提高棉布生產中瑕疵檢測的精度和速度.