羅俊麗,路 凱,張 洋,杜超超,陳仁凱,肖玉麟
(1. 許昌學院信息工程學院,許昌 461000;2. 河南省偏振感知與智能信號處理國際聯(lián)合實驗室,許昌 461000)
在織物加工生產(chǎn)的過程中,不可避免會產(chǎn)生各種各樣的布匹損傷以及破損等,這些缺陷通常被稱疵點,目前很多企業(yè)仍主要采用人工識別疵點,但人工的方法存在許多的不足,如長時間的檢測會使得工人產(chǎn)生疲勞,進而導致檢測效率降低,同時也會影響到檢測的準確性與穩(wěn)定性。此外,有些疵點非常細小,即使經(jīng)驗豐富的工人也很難檢測出來。
針對人工檢測織物疵點的不足,人們提出了很多織物疵點檢測方法,這些方法可以分為基于空域方法、基于頻域方法、基于模型的方法,以及基于字典學習方法[1]?;诳沼虻姆椒ㄊ抢每椢锖写命c區(qū)域與正常紋理的區(qū)域中灰度值統(tǒng)計特性存在的差異來檢測疵點[2]。基于頻域分析的方法就是把要檢測的圖像從空間轉換到頻域中,然后在頻域中對織物圖像進行分析,將頻域中出現(xiàn)異常的地方判定為疵點[3]?;谀P偷姆椒ㄖ饕峭ㄟ^構建模型和參數(shù)估計來提取織物圖像中的紋理特征,將樣本圖像中不符合織物紋理模型分布的區(qū)域辨別為疵點[4]?;谧值鋵W習方法是首先對正常的圖像區(qū)域進行學習,再使用稀疏矩陣重構正??椢锏募y理區(qū)域,然后計算重構后的圖像與測試圖像之間的殘差圖,再利用預設閾值進行分割,最后得到測試圖像中的疵點區(qū)域[5]。
近年來隨著計算機視覺技術的快速發(fā)展,特別是各種深度學習模型的提出,基于卷積神經(jīng)網(wǎng)絡模型的織物疵點檢測方法成為該領域的研究熱點。Zheng 等[6]提出一種基于YOLOv5 的檢測方法,能夠進行快速的織物疵點檢測。郭波等[7]使用YOLOv5 進行織物檢測,能夠實現(xiàn)織物疵點的快速檢測。盡管人們提出了很多種疵點檢測方法,而對于具有各種花紋和圖像背景的織物疵點檢測仍是該領域的難題,本文提出一種基于改進YOLOv5模型的疵點檢測方法,該方法對具有復雜背景織物疵點有較好的檢測效果。
在目標檢測領域,常見的模型可以分為單階段模型和兩階段模型。單階段模型不用提前生成候選框,模型直接產(chǎn)生物體在圖像中的中心坐標值和類別置信度,然后經(jīng)過一次檢測即可得到最后的檢測結果,因此在實時檢測速度上要明顯優(yōu)于兩階段模型,本文對單階段模型YOLOv5進行改進,用于檢測具有復雜背景的織物疵點。
YOLOv5是一種單階段的目標檢測模型,包含YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x 等一系列模型,其中YOLOv5s 是復雜度最小的輕量級模型,更方便在織物檢測的實際環(huán)境中部署,下面簡要分析YOLOv5s的網(wǎng)絡結構。YOLOv5的網(wǎng)絡結構可以劃分為輸入端、Backbone、Neck、Prediction等四個部分,如圖1所示。
圖1 YOLOv5s網(wǎng)絡結構
輸入端:主要包括Mosaic數(shù)據(jù)增強、自適應圖片縮放和自適應錨框三部分。Mosaic 數(shù)據(jù)增強是對4張樣本圖像采用隨機縮放、裁剪、排布的方式進行拼接,讓背景圖片變得多樣化,更加豐富一些[8]。自適應圖片縮放是對尺寸不同的圖像邊緣進行填充,縮放為相同的尺寸以方便計算。自適應錨框,是指在初始錨框的基礎上,通過遺傳算法與K-means聚類算法迭代出最大可能召回率的錨框組合,以提高模型精度。
Backbone 是模型的主干網(wǎng)絡,主要使用了Conv、CSP 和SPPF 等結構。Conv 結構主要功能是進行特征提取,其結構包含有卷積結構、BatchNormal 結構和激活函數(shù);CSP 結構主要功能是優(yōu)化網(wǎng)絡結構,減少網(wǎng)絡反向傳播梯度信息的重復,降低網(wǎng)絡中的計算量;SPPF 結構主要功能是提高網(wǎng)絡中特征圖的表達能力。
Neck 模塊通常采用特征金字塔網(wǎng)絡(feature pyramid network,F(xiàn)PN)和像素聚合網(wǎng)絡(pixel aggregation network,PAN)兩種結構,用于增強模型的特征融合能力[9]。
Prediction 部分也被稱為Head 部分,其有三個輸出,分別對應不同步長(stride)的輸出預測不同尺寸的目標。Prediction 部分采用BCEWith-Logits_Loss 函數(shù)計算分類和置信度損失,采用CIoU_Loss 函數(shù)計算位置損失,這兩個函數(shù)的計算公式如式(1)和式(2)所示。
其中:n表示樣本總量;xn和yn分別表示樣本的預測和標注值;σ表示Sigmoid 函數(shù);wn作為系數(shù)用于調節(jié)權重。
其中:a和v表示系數(shù)和衡量長寬比的相似度;b和bgt是與預測框與目標的中心,這兩個框的歐式距離用ρ表示,這兩個框的最小包含框的斜距用c表示。
為了更有效地提高目標檢測模型的性能,人們使用多尺度特征表示方法來挖掘更多的特征信息,其中特征金字塔就是一種經(jīng)典的網(wǎng)絡結構。在本研究中,樣本的背景復雜,疵點的種類繁多、形狀各異、尺寸相差大,為了提高模型檢測疵點的能力,實驗中使用雙向特征金字塔(bidirectional feature pyramid networks,BiFPN)結構對模型進行改進。為了更好地說明BiFPN 結構,這里列出FPN、PAN 和BiFPN3 種結構的示意圖,如圖2所示。
圖2 三種不同的特征融合網(wǎng)絡結構
從圖2可以看出,F(xiàn)PN 結構引入了一條自頂向下的通道,對輸入圖像或特征圖進行下采樣,這種方式可以傳遞抽象語義信息。PAN 比FPN增加了一條自底向上的通道進行上采樣,能夠提高底層信息的傳遞能力,提高了網(wǎng)絡定位的性能。與FPN 和PAN 相比,BiFPN 刪除了對特征融合貢獻小的單輸入節(jié)點以簡化網(wǎng)絡,在同一尺度的輸入輸出節(jié)點間增加了一個跳躍連接,用于融合更多特征,還將雙向的路徑看成一個整體模塊,通過重復來實現(xiàn)更高層次的特征融合,這樣BiFPN 能夠比FPN 和PAN 兩種結構融合更多特征。
實驗中使用的CPU為Inteli5 10400f@2.90 GHz,內(nèi)存大小為16 G,所用顯卡為NVIDIA 3060,顯存12 G,深度學習框架使用的是PyTorch。
實驗數(shù)據(jù)集來自阿里天池織物疵點圖像集,從中選用了包含7 類疵點的1600 幅織物圖像作為數(shù)據(jù)集,這些織物圖像有不同的花紋背景,其中7種織物疵點分別是污漬、色差、褶子、漏印、錯花、縫頭、破洞。將數(shù)據(jù)集中的樣本按照8∶1∶1的比例劃分為訓練集、驗證集和測試集,實驗中將樣本圖像的尺寸縮小至640 × 640像素,如圖3所示。
圖3 樣本示例
該數(shù)據(jù)集中存在數(shù)據(jù)不平衡問題,其中污漬類別的樣本數(shù)量較多,其他類別的疵點樣本數(shù)量較少,因此實驗中首先對樣本進行數(shù)據(jù)增強,主要是對樣本進行水平和垂直翻轉、隨機旋轉、隨機裁剪、亮度調節(jié)、色彩變化等操作,這樣可以緩解數(shù)據(jù)不平衡帶來的問題,提高模型泛化能力。
實驗中使用平均精度均值(mean average precision,mAP)、精確率(precision,P)和召回率(recall,R)來評估模型的性能。在定義這幾個概念之前,首先定義真正類、假正類等概念。
TP 是真正類(true positive),表示當樣本的真實類別是正類時,模型預測的結果也是正類;FP 是假正類(false positive),表示樣本真實的類別為負類,而模型預測的結果為正類;FN 是假負類(false negative),表示樣本真實類別為正類,而模型預測的結果為負類。精確率和召回率的定義如式(3)和式(4)所示
PR 曲線(precision recall curve)是用精確率和召回率來表示的,將模型檢測到的精確率和召回率分別作為坐標的縱坐標和橫坐標,就可以得到PR 曲線,曲線下的面積就是平均精度(average precision,AP)。AP只表示1 個類別的預測,多個類別的預測通常使用mAP對模型進行評估,AP和mAP定義如式(5)和式(6)所示。
其中:APi表示對數(shù)據(jù)集中第i類疵點預測的模型平均精度;N是數(shù)據(jù)中疵點類別的總個數(shù),mAP的值越高,表示模型的預測效果越好。實驗中使用mAP@0.5 作為模型的評估指標之一,即IoU閾值設為0.5。
下面對實驗中使用的訓練參數(shù)進行簡要說明:①box_loss 是邊界框預測損失,模型中使用CIoU_loss 來表示邊框的損失,其值越小,表示模型預測得越準確;②obj_loss 是物體存在預測損失,表示模型對目標框中是否存在物體判斷的誤差損失,這是一個二分類的判斷,使用BCE_Loss 方法進行計算,其值越小,表示檢測結果越準確;③cls_loss 是類別預測損失,表示模型對檢測出來的疵點類別判定的誤差損失,模型中使用BCEWithLogitsLoss 方法來計算,其值越小,表示分類結果越準確。
實驗中需要設置學習率(learning rate)和動量(momentum)等超參數(shù)的值,學習率是模型訓練中重要的超參數(shù),其控制著模型的訓練速度,學習率設置的太小或太大都會導致目標函數(shù)無法正常收斂。實驗中首先設置學習率為0.03,訓練每一輪時記錄精度和損失值,當損失趨于穩(wěn)定時將學習率調小,繼續(xù)訓練并觀察損失,并循環(huán)上述操作。當發(fā)現(xiàn)損失不再下降時停止更改學習率,通過對比發(fā)現(xiàn)適合該模型的最優(yōu)學習率在0.0001~0.005 之間。實驗中動量先設置為0.99,每次更新學習率之后同樣減小動量,經(jīng)測試動量設置的范圍應為0.92~0.97之間。
實驗中最終設置初始化學習率為0.005,動量值為0.92,設置權重衰減為0.005,采用SGD隨機梯度下降的優(yōu)化方法,每次送入模型訓練的樣本數(shù)量(batchsize)大小為32。設置好超參數(shù)后,模型進行了400 輪(epoch)的訓練,訓練集和驗證集上各項損失的變化曲線如圖4所示。
圖4 訓練集和測試集的損失變化曲線
從圖4 可以看出實驗中邊界框損失box_loss、物體存在損失obj_loss、類別損失cls_loss這3 項損失在訓練集和驗證集上變化曲線。6 幅子圖中縱坐標均表示損失值,橫坐標表示實驗中的epoch 值。上下各3 幅子圖分別表示訓練集和測試集上3項損失的變化曲線,總體來看曲線光滑,震蕩較小。從圖4 可以看到訓練集上的3項損失整體呈下降趨勢;而測試集上3項損失在模型訓練到300 epoch 左右的位置之前呈明顯的下降趨勢,這個位置之后box_loss 和cls_loss 趨向平穩(wěn),而obj_loss 還有上升的趨勢,說明有過擬合的傾向,因此模型訓練到300 epoch 即可。實驗中保存模型訓練300 epoch 時的參數(shù),并在測試集上比較了改進前后YOLOv5 模型的性能,如表1所示。
表1 模型的檢測指標值 單位:%
從表1 可以看到,改進后的YOLOv5 在測試集上的檢測效果有了明顯的提升,mAP增加了2個百分點,說明BiFPN 結構對織物樣本中的疵點特征有更好的融合能力,能夠較好地從復雜背景織物中檢測到疵點。
本文提出一種改進的YOLOv5模型用于檢測復雜背景織物圖像中的疵點,將雙向特征金字塔網(wǎng)絡模塊加入到YOLOv5模型中,用于提高模型的檢測能力。討論了學習率和動量等超參數(shù)的初始值,實驗結果表明,改進后的模型對樣本中的疵點檢測精度有明顯的提升。