張開生 關(guān)凱凱
(陜西科技大學(xué)電氣與控制工程學(xué)院,陜西西安,710021)
在造紙過程中,受造紙工藝流程、纖維原料、人工操作、設(shè)備狀態(tài)等因素的影響,紙張會出現(xiàn)褶皺、孔洞、劃痕等表面缺陷問題,這些缺陷不僅影響紙張外觀,還會降低印刷的成品率和經(jīng)濟(jì)效益。因此,紙張缺陷檢測是造紙過程尤為重要的一環(huán)。
傳統(tǒng)的紙張缺陷檢測是依靠人工完成,存在檢測效率低下、漏檢率高、人力成本昂貴等問題。隨著計算機技術(shù)的不斷提高,人工檢測已經(jīng)逐漸被基于機器視覺的檢測方法所替代[1]。張學(xué)蘭等人[2]利用紙張圖像的形態(tài)特征、灰度級統(tǒng)計、紋理特征、形態(tài)學(xué)、模糊邏輯及神經(jīng)網(wǎng)絡(luò)對紙病圖像進(jìn)行分割和識別,但是由于該算法過于復(fù)雜,所以實時檢測速度難以滿足造紙工廠對于紙病檢測的要求。高樂樂等人[3]利用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)自動提取紙病圖像的深層次特征,解決了紙病特征難確定的問題,最后結(jié)合Softmax實現(xiàn)對紙病的辨識。曲蘊慧等人[4]使用Gabor及Gaussian濾波器去除紙張紋理干擾,然后使用Laplasian算法進(jìn)行邊緣檢測,最后使用形態(tài)學(xué)閉運算得到紙病邊緣圖像,提高了紙病檢測算法的抗干擾性??簼嵉热薣5]利用魯棒主成分分析法,將紙病圖像對應(yīng)的矩陣分解為稀疏矩陣和低秩矩陣,進(jìn)而在檢測過程中只需選擇稀疏矩陣對應(yīng)的圖像進(jìn)行檢測,提高了檢測效率。王思琦等人[6]通過主成分分析(PCA)紙病特征提取算法來構(gòu)建紙病的特征空間,降低了紙病原特征的維數(shù),改善了對相似紙病的檢測精度。趙曉等人[7]利用紙病區(qū)域為簡單連通圖像的特點,對紙病區(qū)域進(jìn)行連通區(qū)域標(biāo)記和形狀特征值提取,提高了紙病檢測的準(zhǔn)確率和效率。針對傳統(tǒng)紙病識別方法大多采用分類算法,且特征提取困難、對光源依賴較高和實時性差等問題,本課題提出一種基于改進(jìn)YOLOv5的紙病檢測方法,通過在批量歸一化模塊(Batch Normalization,BN)的首尾部分添加居中和縮放校準(zhǔn)以增強紙張缺陷的有效特征,并在骨干網(wǎng)絡(luò)中引入坐標(biāo)注意力機制(Coordinate Attention,CA)提升模型的特征提取能力,最后選用CIoU_loss作為邊框回歸的損失函數(shù),以實現(xiàn)更高精度的定位。
YOLOv5為單階段目標(biāo)檢測網(wǎng)絡(luò),在學(xué)習(xí)了以前版本及其他網(wǎng)絡(luò)的優(yōu)點后,對之前YOLO系列[8-11]目標(biāo)檢測算法檢測速度快但準(zhǔn)確率不高的問題進(jìn)行了改善,既能滿足實時圖像檢測的需要,又具有較小的結(jié)構(gòu)。因此,本課題使用YOLOv5作為檢測模型,其網(wǎng)絡(luò)模型如圖1所示,分為輸入端、骨干網(wǎng)絡(luò)、頸部網(wǎng)絡(luò)和輸出端4個部分。
圖1 YOLOv5網(wǎng)絡(luò)模型Fig.1 YOLOv5 network model
1.1 輸入端
YOLOv5的輸入端采用Mosaic數(shù)據(jù)增強、自適應(yīng)錨框計算和圖片尺寸處理等方式。Mosaic數(shù)據(jù)增強是對4張圖片按照隨機縮放、隨機裁剪、隨機排布的方式進(jìn)行拼接,豐富了數(shù)據(jù)集樣本,使網(wǎng)絡(luò)具有更好的魯棒性。YOLOv5的初始錨框參數(shù)為[116,90,156,198,373,326][30,61,62,45,59119][10,13,16,30,33,23],自適應(yīng)錨框計算是在初始錨框的基礎(chǔ)上,將輸出預(yù)測框與真實框做差值,再通過不斷地迭代,獲取最佳的錨框值。圖片尺寸處理采用自適應(yīng)縮放圖片將圖片縮放到統(tǒng)一尺寸。
1.2 骨干網(wǎng)絡(luò)
YOLOv5的骨干網(wǎng)絡(luò)即特征提取網(wǎng)絡(luò),主要包括切片結(jié)構(gòu)(Focus)、卷積模塊(CBL)、瓶頸層(CSP)以及SPP[12]4種模塊。Focus模塊流程如圖2所示,640×640×3的圖像經(jīng)過切片得到320×320×12的特征圖,再經(jīng)過包含36個卷積核的卷積操作得到了320×320×36的特征圖。一個基本的CBL模塊由Conv2d+Batch Normalization+Leaky relu共同組成。CSP[13]的殘差結(jié)構(gòu)能優(yōu)化梯度信息,可以減少網(wǎng)絡(luò)優(yōu)化過程中的梯度信息重復(fù),加快推理的速度。SPP模塊采用3個多尺度的最大池化進(jìn)行多尺度融合,提高了模型的感受野,同時解決了錨框與特征層的對齊問題。
圖2 Fcous模塊流程圖Fig.2 Focus module flow chart
1.3 頸部網(wǎng)絡(luò)
YOLOv5繼承了YOLOv4的優(yōu)點,在頸部網(wǎng)絡(luò)采用FPN[14]+PAN[15]結(jié)構(gòu),區(qū)別于YOLOv4的普通卷積操作,YOLOv5采用的CSP結(jié)構(gòu),進(jìn)一步提高了網(wǎng)絡(luò)特征融合的能力。
圖3 頸部網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Neck network structure
1.4 輸出端
輸出端以GIoU_loss作為目標(biāo)邊界框回歸的損失函數(shù),采用非極大值抑制(Non Maximum Suppression,NMS)提高對多目標(biāo)框重疊現(xiàn)象的檢測能力,并輸出1個包含預(yù)測圖像中的缺陷位置和分類信息向量。
2.1 改進(jìn)BN
BN已經(jīng)成為神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程的常見組件,在BN中,居中和縮放操作及均值和方差統(tǒng)計用于批量維度上的特征歸一化,使神經(jīng)網(wǎng)絡(luò)有著更穩(wěn)定的訓(xùn)練過程和更優(yōu)秀的性能。然而BN不可避免地忽略了不同實例之間的差異,為了在BN中進(jìn)行特征校正[16],本課題分別在BN的原始?xì)w一化層的開頭和結(jié)尾添加居中和縮放校準(zhǔn)。給定輸入特征X∈RN×C×H×W,式中N、C、H、W分別表示批次大小、輸入特征的通道數(shù)、高度、寬度,特征的居中校準(zhǔn)如式(1)所示。
式中,wm∈R1×C×1×1是可學(xué)習(xí)的權(quán)重向量,其值隨網(wǎng)絡(luò)層數(shù)的變化如圖4(a)所示。大多層的值接近于零,但是隨著網(wǎng)絡(luò)層數(shù)的不斷疊加,其絕對值也不斷增加,網(wǎng)絡(luò)有了更多特定于實例的功能。Xcm表示特征的居中校準(zhǔn),⊙表示對特征的點乘操作,經(jīng)過居中校準(zhǔn)的居中特征如式(2)所示。
圖4 可學(xué)習(xí)權(quán)重變量的折線圖Fig.4 Line chart of learnable weight variables
式中,E(Xcm)表示Xcm的平均值,通過像BN一樣縮放Xm,能夠推得式(3)。
式中,Var(Xcm)為Xcm的方差,ε用來避免出現(xiàn)零方差,再通過縮放校準(zhǔn)操作到原來的縮放操作,可得式(4)。
其中wv,wb∈R1×C×1×1是可學(xué)習(xí)的權(quán)重向量,隨網(wǎng)絡(luò)層數(shù)的變化如圖4(b)所示。本課題選用Tanh函數(shù)作為R()的限制函數(shù)來抑制極值。Ks表示實例特征XS的統(tǒng)計量,能夠設(shè)置為多個值。式(4)中的限制函數(shù)R()與wv、wb能夠抑制分布外的特征使整個分布更加穩(wěn)定。最終,訓(xùn)練的可學(xué)習(xí)比例因子γ和偏差因子β進(jìn)行線性變換以獲得最終具有代表性的批量歸一化結(jié)果Y,如式(5)所示。
為了形成更穩(wěn)定的紙病有效特征分布,本課題在BN的原始?xì)w一化層的開頭和結(jié)尾添加居中和縮放校準(zhǔn)。優(yōu)化結(jié)果如圖5所示,經(jīng)過居中和縮放校準(zhǔn)的中間特征圖比未校準(zhǔn)之前的中間特征圖形成的特征分布更穩(wěn)定。
圖5 居中和縮放校準(zhǔn)效果圖Fig.5 Centering and scaling calibration renderings
2.2 引入CA
在紙病圖像當(dāng)中,亮斑、褶皺等類型紙病所占像素少且容易受到背景因素影響,原有算法在深層卷積采樣時容易丟失上述兩類紙病的特征信息,故本課題在骨干特征提取網(wǎng)絡(luò)當(dāng)中引入了CA[17]來進(jìn)一步提高模型的特征提取能力,CA模塊的流程如圖6所示。輸入給定的任意中間張量X=[x1,x2,…,xn]∈RC×H×W,都能輸出一個增強表示能力的有相同尺寸的輸出Y=[y1,y2,…,yn],式中C為通道數(shù),H和W分別為輸入圖像的高和寬。
圖6 CA模塊結(jié)構(gòu)圖Fig.6 CA module structure
輸入端給定一個特征圖,其維度為C×H×W,首先通過全局平均池化沿水平方向和垂直方向?qū)γ總€通道c進(jìn)行編碼,得到2個一維特征編碼向量如式(6)和式(7)所示。
為了利用上述操作產(chǎn)生的信息特征,再使用Concat級聯(lián)之前生成的特征圖zw、zh,然后使用卷積核大小為1的卷積變換函數(shù)F1進(jìn)行變換操作,如式(8)所示。
式中,δ表示非線性激活函數(shù);f表示在水平方向和垂直方向的的空間信息進(jìn)行編碼時的中間特征映射。沿空間維度可將f分解為f h∈RC/r×H和f w∈RC/r×W,其中r表示下采樣比例。利用兩個卷積核大小為1的卷積運算Fh和Fw對f h和f w進(jìn)行變換,得到具有相同通道數(shù)的張量,變換方式如式(9)和式(10)所示。
式中,σ表示Sigmoid激活函數(shù),為降低計算開銷,通常使用恰當(dāng)?shù)目s減比r來減少f的通道數(shù)。最后再對gh和gw進(jìn)行擴展,分別作為注意力權(quán)重,可得最終式(11)。
CA是一種較為新穎的注意力機制,可以在不給網(wǎng)絡(luò)模型帶來計算負(fù)擔(dān)的情況下提升模型的檢測精度。本課題將其放置在骨干網(wǎng)絡(luò)當(dāng)中用以提升骨干網(wǎng)絡(luò)的特征提取能力,檢測結(jié)果對比如圖7所示。圖7(a)中存在一個漏檢黑斑,而圖7(b)正確檢測出所有的黑斑,可見加入CA能夠在一定程度上提高網(wǎng)絡(luò)的檢測能力。
圖7 添加注意力機制效果圖Fig.7 CA renderings
2.3 改進(jìn)損失函數(shù)
YOLOv5的損失函數(shù)Loss,由置信度損失lobj、分類損失lcls及目標(biāo)框和預(yù)測框的位置損失lbox3部分所組成,如式(12)所示。
其中目標(biāo)置信度誤差lobj定義如式(13)所示。
目標(biāo)分類誤差損失lcls如式(14)所示。
目標(biāo)框位置誤差損失lbox如式(15)所示。
YOLOv5網(wǎng)絡(luò)模型的原始邊界框損失函數(shù)為GIoU_loss。其中,B={x,y,w,h}為預(yù)測框的大小,Bgt={xgt,ygt,wgt,hgt}為真實框大小,C為B和Bgt的最小面積(真實框與預(yù)測框之間的距離越遠(yuǎn),C值越大并趨近于1)。
盡管GIoU_loss解決當(dāng)預(yù)測框和目標(biāo)框不相交,即IoU為0時,損失函數(shù)不可導(dǎo)的問題,但GIoU_loss并不穩(wěn)定而且收斂的速度較慢,所以本課題選擇使用CIoU_loss作為邊界框的損失函數(shù),CIoU_loss如式(16)所示。
其中,ρ表示預(yù)測框與真實框2個中心點之間的歐式距離;c表示相交的預(yù)測框與目標(biāo)框之間所構(gòu)成外界最小矩形的對角線距離;b和bgt表示B和Bgt的中心點;α表示權(quán)重參數(shù);?表示代表長寬比一致性的參數(shù)。α和?的計算如式(17)~式(18)所示。
通過CIoU_loss解決了原始模型中預(yù)測框與目標(biāo)框在不同位置時損失值一樣的問題,使預(yù)測框的回歸更加精準(zhǔn),提升網(wǎng)絡(luò)模型的檢測性能。
2.4 算法描述
以YOLOv5網(wǎng)絡(luò)模型作為基準(zhǔn)網(wǎng)絡(luò),通過在BN的原始?xì)w一化層的開頭和結(jié)尾添加居中和縮放校準(zhǔn),形成更穩(wěn)定的特征分布,再在骨干網(wǎng)絡(luò)添加CA模塊提升網(wǎng)絡(luò)的特征提取能力,最后用CIoU_loss最為邊界框回歸的損失函數(shù)使得模型定位更加精準(zhǔn),進(jìn)而實現(xiàn)紙張缺陷檢測。
改進(jìn)后的算法具體步驟如下,算法流程圖如圖8所示。
圖8 算法流程圖Fig.8 Flow chart of the algorithm
(1)準(zhǔn)備紙病圖像數(shù)據(jù),采用增強亮度、翻轉(zhuǎn)、隨機裁剪、隨機位移、隨機添加Gaussian噪聲等操作進(jìn)行數(shù)據(jù)擴充。
(2)將擴充后的數(shù)據(jù)隨機劃分為訓(xùn)練集和驗證集。
(3)加載模型配置文件以及初始化參數(shù),對輸入數(shù)據(jù)預(yù)處理。
(4)加載網(wǎng)絡(luò)模型,對輸入圖片進(jìn)行特征提取與物體定位分類。
(5)訓(xùn)練時使用SGD網(wǎng)絡(luò)參數(shù)的更新迭代。
(6)在驗證集上計算模型的mAP,并在每輪訓(xùn)練結(jié)束后判斷模型是否為最佳,最佳則進(jìn)行保存。
(7)訓(xùn)練輪次完成后,保存訓(xùn)練過程當(dāng)中的最佳模型及最后一次訓(xùn)練模型。
3.1 實驗數(shù)據(jù)準(zhǔn)備
實驗通過在LabelImage軟件上進(jìn)行標(biāo)注與分類實際紙病圖像數(shù)據(jù)集來驗證本課題算法的可行性。實驗選擇的各類紙病及其數(shù)量如表1所示。
表1 實驗選擇的紙病類別及其數(shù)量Table 1 Type and quantity of paper defects selected in the experiment
該數(shù)據(jù)集樣本較少,在模型訓(xùn)練過程中容易過擬合。為了克服該問題,本課題采用增強亮度、隨機翻轉(zhuǎn)、隨機裁剪、隨機位移、添加Gaussian噪聲等手段對數(shù)據(jù)樣本進(jìn)行增強。增強后的訓(xùn)練集和驗證集按照9∶1的比例分為訓(xùn)練集(6920張圖像)和驗證集(769張圖像)。
3.2 模型評估
在本實驗中,選擇的模型評估指標(biāo)是:查準(zhǔn)率(Precision,P)、召回率(Recall,R)、平均精度(Average Precision,AP)、mAP(mean Average Precision)。
式中,TP(True positives)表示正確分配的正樣本;FP(False positives)表示錯誤分配的正樣本;TN(True Negatives)表示正確分配的負(fù)樣本;FN(False Negatives)表示漏檢目標(biāo)個數(shù);AP表示Precision-Recall曲線下面的面積;mAP表示該圖片每一類的平均精度求均值。
3.3 實驗條件
實驗環(huán)境使用Windows 10操作系統(tǒng),16 GB內(nèi)存,NVIDIA GeForce RTX 3070顯卡,Intel Core i5 10600KF 4.1 Ghz處理器,在pytorch 1.10.0和cuda11.5軟件中實現(xiàn)模型的搭建及訓(xùn)練工作。
3.4 測試與分析
對模型進(jìn)行訓(xùn)練時,通過在COCO數(shù)據(jù)集上的預(yù)訓(xùn)練模型權(quán)重進(jìn)行初始化,采用SGD優(yōu)化器來進(jìn)行參數(shù)更新,詳細(xì)參數(shù)設(shè)置如表2所示。
表2 參數(shù)設(shè)置Table 2 Parameter settings
圖9為模型性能評估結(jié)果。由圖9(a)可以看出訓(xùn)練過程的損失變化情況,即前期的損失值下降較快,但隨著訓(xùn)練輪次的增加,Loss曲線逐漸降低并趨于平穩(wěn);可根據(jù)圖9(b)訓(xùn)練結(jié)果中的訓(xùn)練數(shù)據(jù)信息進(jìn)行可視化繪圖,即平均精度均值(mAP@0.5)、查準(zhǔn)率(P)、召回率(R)。
圖9 模型性能評估Fig.9 Model performance evaluation
為了方便比較,本課題設(shè)計消融實驗以驗證改進(jìn)效果,結(jié)果如表3所示。由表3可知,改進(jìn)BN單元、添加CA和修改損失函數(shù)都提高了檢測性能。改進(jìn)后的BN模塊能夠保留目標(biāo)更多的淺層特征信息,形成更穩(wěn)定的特征分布,使模型在原基礎(chǔ)上mAP提升1.2%,傳輸幀數(shù)有較大提升;通過加入CA,使得模型將空間信息嵌入到通道注意力當(dāng)中,模型有了更好的檢測性能;最后將CIoU_loss作為目標(biāo)邊界框回歸的損失函數(shù),解決原損失函數(shù)目標(biāo)框與預(yù)測框重合時GIoU退化為IoU的問題,使得模型的定位更加精準(zhǔn)。結(jié)合3種改進(jìn)方式改進(jìn)后的模型mAP為99.0%,相較于原YOLOv5的mAP提升了1.5%,檢測速度提高了2.12幀/s。
表3 消融實驗結(jié)果Table 3 Ablation experiment results
3.4.1 不同方法結(jié)果對比
為了更好地驗證本課題所提出的改進(jìn)算法的檢測性能,采用檢測準(zhǔn)確率與檢測時間2項指標(biāo),將本課題的算法同現(xiàn)有基于CNN的紙病分類算法以其余主流目標(biāo)檢測網(wǎng)絡(luò)模型Faster R-CNN、SSD、YOLOv4、YOLOv5在自建數(shù)據(jù)集上的訓(xùn)練結(jié)果進(jìn)行評估與對比,對比實驗的結(jié)果如表4所示。可以看出本課題所提出的改進(jìn)算法相較于基于CNN的紙病類算法的檢測精度更高,檢測速度快了31.18幀/s,相較于雙階段目標(biāo)檢測網(wǎng)絡(luò)模型Faster R-CNN,檢測準(zhǔn)確率提高了4.9%,檢測速度提高了28.5幀/s。對于單階段目標(biāo)檢測網(wǎng)絡(luò)模型的SSD、YOLOv4、YOLOv5來說,本課題提出的改進(jìn)算法在檢測準(zhǔn)確率和檢測時間上都有所提高。
表4 與傳統(tǒng)算法檢測性能對比Table 4 Compared with traditional algorithm detection performance
圖10展示了本課題提出的改進(jìn)算法應(yīng)用于常見的各類紙病的檢測效果,能夠看到本課題提出的改進(jìn)算法在光照強度不充足,圖像具有噪聲時仍然能對各類紙病保持較高的檢測精度及精準(zhǔn)的定位。
圖10 各類紙病檢測效果圖Fig.10 Various paper disease detection renderings
針對傳統(tǒng)紙病檢測算法中紙病特征提取困難、實時性差的問題,本課題提出了一種基于改進(jìn)YOLOv5的紙病檢測方法。該方法以YOLOv5網(wǎng)絡(luò)模型作為基準(zhǔn)網(wǎng)絡(luò),通過修改批量歸一化模塊單元使模型形成更穩(wěn)定的特征分布,再添加注意力機制提升模型的特征提取能力,最后以CIoU_loss作為目標(biāo)邊界框回歸的損失函數(shù)以實現(xiàn)更高精度的定位。本課題提出的改進(jìn)算法的平均精度在驗證集上達(dá)到了99.0%,傳輸幀數(shù)達(dá)到了41.58幀/s,檢測時間相較于現(xiàn)有的基于CNN的紙病分類算法得到大幅減少,相較于其余主流目標(biāo)檢測網(wǎng)絡(luò)模型,在檢測準(zhǔn)確率和檢測時間上都有所提升。改進(jìn)后的算法對于光源的依賴程度更低,并且具有較好的魯棒性與模型泛化能力。