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