楊 萌,張愛軍,潘文松
(1.南京理工大學(xué)機(jī)械工程學(xué)院,南京 210094;2.杭州康代思銳生物科技有限公司,杭州 311199)
消費購物是人們?nèi)粘I钪谐R姷男袨榛顒?而商品包裝是消費購物中重要的一部分。紙袋是一種常見的商品包裝方式,廣泛應(yīng)用于衣服、食品、禮品等領(lǐng)域。紙袋的質(zhì)量影響消費者的使用體驗,影響紙袋質(zhì)量的缺陷通常出現(xiàn)在手把和底部。在紙袋的生產(chǎn)過程當(dāng)中,由于機(jī)器誤差、物料誤差等原因會出現(xiàn)手把錯位、貼歪、單手把、無手把以及底部臟污、褶皺、脫膠、翻折等問題。目前,許多紙袋生產(chǎn)企業(yè)對紙袋手把和底部的缺陷檢測仍以人工檢測為主,由操作工人在檢測工位進(jìn)行檢測,這種檢測方法人工成本高,并且會受操作工人主觀影響導(dǎo)致結(jié)果不穩(wěn)定、精度低,因此,紙袋生產(chǎn)企業(yè)存在著穩(wěn)定高效的自動化缺陷檢測需求。
近年來,隨著機(jī)器視覺技術(shù)的發(fā)展,研究人員將機(jī)器視覺逐步應(yīng)用于檢測領(lǐng)域中,國際上歐洲與日本最先開始了機(jī)器視覺的發(fā)展,而我國的機(jī)器視覺的發(fā)展開始于上世紀(jì)90年代[1]。傳統(tǒng)的機(jī)器視覺流程一般為圖像預(yù)處理、手工設(shè)計特征進(jìn)行特征提取、利用分類器進(jìn)行分類。鐘飛等[2]提出了一種改進(jìn)遺傳算法,利用該算法和二維最大熵值法對經(jīng)過預(yù)處理的圖像進(jìn)行分割,再結(jié)合形態(tài)學(xué)方法,對特征進(jìn)行提取分類,并且基于該算法提出了一種編織袋表面缺陷檢測系統(tǒng)。吳世燃等[3]利用Sobel邊緣檢測算子和形態(tài)學(xué)處理以及自適應(yīng)生長算法對圖像進(jìn)行1~2次的分割,實現(xiàn)紙塑復(fù)合袋缺陷圖像的檢測分割。然而,傳統(tǒng)方法檢測精度低、準(zhǔn)確率差,于是,隨著深度學(xué)習(xí)的發(fā)展,神經(jīng)網(wǎng)絡(luò)被越來越多的研究人員應(yīng)用于檢測技術(shù)當(dāng)中。王富豪等[4]將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用到包裝盒缺陷檢測中,獲得了較好的檢測效果。
近年來,越來越多的神經(jīng)網(wǎng)絡(luò)被提出,其中,YOLO(you only look once)系列的網(wǎng)絡(luò)表現(xiàn)較為突出,YOLO系列的網(wǎng)絡(luò)較其他網(wǎng)絡(luò)而言能夠更好地在精度和速度方面保持平衡[5],目前性能更高、穩(wěn)定性較好、應(yīng)用較為廣泛的網(wǎng)絡(luò)結(jié)構(gòu)為YOLOv5,但原始YOLOv5網(wǎng)絡(luò)在特征提取部分不能關(guān)注到更為關(guān)鍵的特征信息,且預(yù)測框與真實框的相似性仍可以優(yōu)化,檢測精度仍可以提升。
因此,為了提高企業(yè)的缺陷檢測精度,本文提出了一種基于YOLOv5模型的改進(jìn)算法,改進(jìn)算法為了提高網(wǎng)絡(luò)對所關(guān)注缺陷特征的檢測能力,引入坐標(biāo)注意力CA(coordinate attention)模塊,以此來增強(qiáng)網(wǎng)絡(luò)特征學(xué)習(xí)表達(dá)力,提高網(wǎng)絡(luò)模型的定位能力,并且為了提升回歸精度,引入EIoU(efficient intersection over union)損失函數(shù),代替YOLOv5原始模型中的CIoU(complete intersection over union)損失函數(shù),并對原始網(wǎng)絡(luò)模型中的空間金字塔池化結(jié)構(gòu)SPPF(spatial pyramid pooling-fast)進(jìn)行改進(jìn),經(jīng)過實驗驗證可以得出,改進(jìn)后的算法與原始算法相比檢測精度有所提升。
YOLO算法是一種典型的單階段檢測方法,這種檢測方法的檢測速度更快。正如YOLO的名字所示,它意味著神經(jīng)網(wǎng)絡(luò)看圖片只需要看一次就可以得出預(yù)測結(jié)果。YOLOv5網(wǎng)絡(luò)模型與YOLOv4相比較,其大小減小了近90%,且其具有精度高、速度快等特點[6]。YOLOv5網(wǎng)絡(luò)模型結(jié)構(gòu)主要由輸入、主干、頸部特征融合和檢測頭部組成[7],網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,其中,主干Backbone實現(xiàn)特征提取功能,頸部Neck對特征進(jìn)行融合并傳遞給預(yù)測層,檢測頭部實現(xiàn)最終預(yù)測與輸出。
圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)
其中,Conv、C3、SPPF模塊結(jié)構(gòu)分別如圖2所示。
圖2 YOLOv5網(wǎng)絡(luò)中模塊結(jié)構(gòu)
YOLOv5主要有s、m、l和x四種不同大小的模型,其中s的模型大小最小,x的模型大小最大,4種模型網(wǎng)絡(luò)結(jié)構(gòu)相同,不同點在于模型的深度和寬度。
本文基于YOLOv5s提出一種改進(jìn)算法,通過引入坐標(biāo)注意力CA來增強(qiáng)網(wǎng)絡(luò)特征學(xué)習(xí)表達(dá)力,將CA融合到C3模塊中得到C3CA模塊,利用C3CA模塊代替C3模塊,以此來提高網(wǎng)絡(luò)的特征提取能力,并且為了改善YOLOv5原模型中的CIoU損失函數(shù)的縱橫比合理性,提升回歸精度,引入了EIoU損失函數(shù),接著,改變原始空間金字塔池化結(jié)構(gòu)SPPF,結(jié)合改進(jìn)的空間金字塔池化結(jié)構(gòu)SimCSPSPPF,提升檢測性能。改進(jìn)后的網(wǎng)絡(luò)模型結(jié)構(gòu)如圖3所示。
圖3 改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)
神經(jīng)網(wǎng)絡(luò)通常是利用卷積操作來實現(xiàn)特征的提取,YOLOv5中的C3模塊是一種常見的卷積模塊,但一般的卷積操作不能關(guān)注到更為關(guān)鍵的感興趣特征,而紙袋缺陷如臟污或褶皺等有時會以微小的形態(tài)出現(xiàn),因此,為了提高網(wǎng)絡(luò)對所關(guān)注缺陷的檢測能力,提出引入注意力的方法。
針對神經(jīng)網(wǎng)絡(luò)模型,注意力可以通過增強(qiáng)網(wǎng)絡(luò)特征學(xué)習(xí)表達(dá)力從而提升網(wǎng)絡(luò)的性能,能夠讓網(wǎng)絡(luò)模型更好地學(xué)習(xí)到該特征。CA注意力不同于只關(guān)注通道信息或只能局部提取位置信息的注意力機(jī)制,其將垂直方向和水平方向的位置信息嵌入到通道當(dāng)中,從而能夠使網(wǎng)絡(luò)關(guān)注到較大的位置信息[8]。
CA注意力機(jī)制通過一維垂直全局池化和一維水平全局池化將輸入特征沿垂直與水平兩個方向集合到兩個獨立的特征圖中,這兩個特征圖具有方向感知性,接著,特征圖被處理成兩個注意力圖,每個注意力圖獲取輸入特征圖沿一個方向上的長范圍關(guān)系,生成的注意力圖保存著位置信息,然后兩個注意力圖通過乘法運算被應(yīng)用到輸入特征圖,以此來增強(qiáng)所感興趣部分特征的表達(dá)力。CA注意力結(jié)構(gòu)如圖4所示。
圖4 CA注意力結(jié)構(gòu)
全局池化一般會將信息擠壓到通道描述信息塊中,對空間信息進(jìn)行全局編碼處理,但位置信息未能被保存下來,因此將全局池化轉(zhuǎn)變成一對一維特征編碼處理,沿水平和垂直坐標(biāo)針對給定的輸入,利用兩個空間池化核(H,1)和(1,W)進(jìn)行編碼處理,第c個通道在高度h處的輸出為:
(1)
第c個通道在寬度w處的輸出為:
(2)
沿兩個方向分別進(jìn)行特征的集合,可以得到一對能夠感知方向的特征圖,并且注意力可以獲取到沿一個方向的長范圍關(guān)系,以及沿另一個方向可以保存精準(zhǔn)的位置信息,以此可以改善網(wǎng)絡(luò),使之可以更好地定位感興趣對象的位置。
為了增強(qiáng)網(wǎng)絡(luò)的特征學(xué)習(xí)表達(dá)力,將CA坐標(biāo)注意力引入到Bottleneck模塊中得到Bottleneck_CA模塊,并用Bottleneck_CA模塊代替原始C3模塊中的Bottleneck模塊得到C3CA模塊,其結(jié)構(gòu)如圖5所示,使用C3CA模塊代替原始模型中的C3模塊,提高網(wǎng)絡(luò)對目標(biāo)的檢測定位能力。
圖5 改進(jìn)C3CA模塊
YOLOv5原始模型中所使用的CIoU損失函數(shù)通過增加縱橫比這一考量來提升預(yù)測框的精確性,但縱橫比是一個相對比值,而不是一個真實差異,所以預(yù)測框與真實框的相似性有時并不能得到很好的優(yōu)化,因此縱橫比的合理性有待提升,為了改善CIoU損失函數(shù)縱橫比合理性的問題,提升回歸精度,提出了引入EIoU損失函數(shù)的方法來進(jìn)行改進(jìn),分別計算寬高的差異值以此來取代縱橫比。
損失函數(shù)是用來表征模型預(yù)測結(jié)果與實際的差距程度的,它可以幫助我們對模型預(yù)測的好壞進(jìn)行衡量。目標(biāo)檢測中的損失函數(shù)一般由分類損失函數(shù)和邊界框回歸損失函數(shù)組成,IoU(intersection over union)即為交并比,計算預(yù)測邊框與實際邊框的交疊比值。其表達(dá)式為:
(3)
LIoU=1-IoU
(4)
YOLOv5原始模型使用的損失函數(shù)是CIoU,CIoU提出了增加縱橫比的考量,考慮了交疊面積、中心點距離和縱橫比3種影響因素,CIoU損失函數(shù)表達(dá)式為:
(5)
(6)
(7)
式中:b為預(yù)測框中心點,bgt為真實框中心點,ρ為兩中心點的歐氏距離,αv為考慮縱橫比的影響因子,c為預(yù)測框真實框最小封閉區(qū)域的對角線距離。
EIoU損失函數(shù)與CIoU損失函數(shù)相比能夠更精確回歸損失[9],EIoU在CIoU的基礎(chǔ)上,考慮了交疊面積、中心點和寬高在回歸損失中的差值,分別計算預(yù)測框?qū)捀吲c最小外接框的差值來代替CIoU中的縱橫比,提高了回歸精度,其表達(dá)式為:
(8)
式中:cw和ch是兩個框的最小外接框的寬和高。
為了進(jìn)一步提升原始模型中的SPPF結(jié)構(gòu)的表征性能,減少網(wǎng)絡(luò)冗余信息的處理,使用SimCSPSPPF結(jié)構(gòu)進(jìn)行改進(jìn)。
結(jié)合SPPF和跨階段局部網(wǎng)絡(luò)CSP(cross stage partial)結(jié)構(gòu)得到一種簡化的空間金字塔池化結(jié)構(gòu)SimCSPSPPF,通過卷積和池化操作進(jìn)行特征提取,提高網(wǎng)絡(luò)的特征表征能力,并且SimCSPSPPF在SPPF結(jié)構(gòu)的基礎(chǔ)上,使之具有類似于CSP的結(jié)構(gòu),以此來減少冗余信息的處理,SimCSPSPPF與SPPF相比有了性能上的提升[10],結(jié)構(gòu)如圖6所示。
圖6 SimCSPSPPF結(jié)構(gòu)
采用相機(jī)拍攝獲取紙袋缺陷圖片來組成實驗數(shù)據(jù)集,數(shù)據(jù)集總共2486張圖片,按8∶2的比例分為訓(xùn)練集和驗證集,其中訓(xùn)練集共1989張圖片,驗證集共497張圖片,對數(shù)據(jù)集進(jìn)行標(biāo)注,缺陷總共分為8個類別,分別為手把錯位、手把貼歪、單手把、無手把、臟污、褶皺、脫膠、翻折。部分缺陷特征示例如圖7所示。
(a) 手把錯位 (b) 手把貼歪 (c)單手把 (d) 無手把
采用平均精度平均值mAP(mean average precision)、精確度P(precision)、召回率R(recall)作為實驗評價指標(biāo)。
mAP是指平均精度平均值,是評估模型好壞的綜合指標(biāo)。mAP@.5和mAP@.5∶.95分別指當(dāng)IoU為0.5以及從0.5~0.95時的平均精度平均值。
精確度P是指在模型預(yù)測的所有目標(biāo)中,預(yù)測正確的比例,即預(yù)測的所有是正例的樣本中,預(yù)測正確的正例所占比例,也稱查準(zhǔn)率,如式(9)所示。召回率R是指所有真實目標(biāo)中,模型預(yù)測正確的目標(biāo)比例,即所有正例樣本中,預(yù)測的正例所占比例,如式(10)所示,也稱查全率。
(9)
(10)
式中:TP是指預(yù)測結(jié)果與真實結(jié)果相同且預(yù)測值為正例,FP是指預(yù)測結(jié)果與真實結(jié)果不同且預(yù)測值為正例,但真實值為反例;FN是指預(yù)測結(jié)果與真實結(jié)果不同且預(yù)測值為反例,但真實結(jié)果為正例。
為了方便對比,以下實驗數(shù)據(jù)表格中分別采用v5s、v3-tiny、v3、v7-tiny簡稱YOLOv5s、YOLOv3-tiny、YOLOv3、YOLOv7-tiny。
為了提高網(wǎng)絡(luò)對目標(biāo)的檢測定位能力,改進(jìn)算法在模型中引入了CA注意力機(jī)制。
為了對比不同的注意力機(jī)制對網(wǎng)絡(luò)模型的感興趣特征的檢測能力,在模型中分別引入SE注意力[11]、ECA注意力[12]和CA注意力機(jī)制進(jìn)行對比實驗,實驗結(jié)果如表1所示。
表1 注意力機(jī)制對比實驗 (%)
由實驗結(jié)果可知,引入CA注意力機(jī)制和引入ECA注意力機(jī)制mAP漲值較好,且引入CA的精確度比引入ECA的精確度更好,實驗對比可得,本文提出的引入CA注意力機(jī)制是更為合適的引入模塊,提升了網(wǎng)絡(luò)的檢測能力。
為了評估本文提出的改進(jìn)方法的效果,利用消融實驗來進(jìn)行評估,分別進(jìn)行引入CA注意力機(jī)制、損失函數(shù)EIoU和空間金字塔池化結(jié)構(gòu)SimCSPSPPF的實驗,實驗結(jié)果如表2所示。表格中打√表示引入該模塊,空白表示未引入該模塊。
表2 消融實驗 (%)
由表2可得,分別引入CA注意力、損失函數(shù)EIoU及空間金字塔池化SimCSPSPPF對于改進(jìn)YOLOv5都有一定效果,并且依次加入模塊能實現(xiàn)效果疊加,對比原始YOLOv5模型mAP、P、R各指標(biāo)均有改進(jìn),mAP@.5提升了1.6%,mAP@.5∶.95提升了0.9%,精確度P提升了0.3%,召回率R提升了0.5%。
選擇YOLOv3-tiny模型、YOLOv3模型、原始YOLOv5s模型以及YOLOv7-tiny模型與本文提出的改進(jìn)算法進(jìn)行實驗對比,結(jié)果如表3所示。
表3 對比實驗 (%)
由表3可知,本文所提出的改進(jìn)算法與YOLOv3-tiny、YOLOv3、原始YOLOv5s模型以及YOLOv7-tiny模型相比較,mAP@.5分別提升了6.6%、3.5%、1.6%及0.9%,mAP@.5∶.95分別提升了9.4%、1.2%、0.9%及1.0%,召回率R分別提升了9.1%、2.4%、0.5%及0.4%,與YOLOv3-tiny、YOLOv3、原始YOLOv5s模型相比精確度P分別提升了3.5%、0.2%、0.3%,由實驗指標(biāo)綜合對比可得本文改進(jìn)算法的檢測性能最優(yōu)。
綜上所述,本文所提出的改進(jìn)YOLOv5算法性能優(yōu)于YOLOv5s原始模型,具有較好的檢測性能。
本文提出了一種基于YOLOv5模型的改進(jìn)算法,通過引入坐標(biāo)注意力CA模塊增強(qiáng)網(wǎng)絡(luò)學(xué)習(xí)特征的表達(dá)力,引入EIoU損失函數(shù)代替YOLOv5原始模型中的CIoU損失函數(shù),并進(jìn)行空間金字塔池化的改進(jìn),將原始模型中的SPPF用改進(jìn)的空間金字塔池化SimCSPSPPF代替,改進(jìn)模型相比于YOLOv5原始模型,精度有所提升,有著較好的檢測能力,能夠滿足生產(chǎn)企業(yè)對紙袋缺陷的檢測需求。