夏軍勇 王康宇 周宏娣
(湖北工業(yè)大學(xué)機械工程學(xué)院,湖北 武漢 430068)
食品在生產(chǎn)過程中,外包裝不可避免會出現(xiàn)部分缺陷[1],如撕裂、破損或破洞,這些缺陷會使包裝喪失完整性,進(jìn)而導(dǎo)致食品在運輸和存儲過程中被擠壓、碰撞或摔落。傳統(tǒng)的人工檢測方法不僅效率低,還會出現(xiàn)漏檢的情況[2]。近年來,深度學(xué)習(xí)在工業(yè)中的應(yīng)用越來越廣泛,陳雪純等[3]提出了一種改進(jìn)MobilenetV2的輕量化包裝缺陷檢測方法;李志誠等[4]基于改進(jìn)的YOLOv3算法,提高了卷紙包裝缺陷檢測的準(zhǔn)確率和速率;暴泰焚等[5]采用一種基于深度學(xué)習(xí)中語義分割任務(wù)的表面缺陷檢測方法,實現(xiàn)了對紙質(zhì)包裝表面缺陷進(jìn)行檢測。目前,深度學(xué)習(xí)在缺陷檢測方面應(yīng)用較廣,但也存在一些不足,如對包裝盒缺陷進(jìn)行分割檢測的精度較低[5],無法滿足工業(yè)使用要求;對中小目標(biāo)檢測效果較差[6],容易產(chǎn)生漏檢等;一階段目標(biāo)檢測模型[7]檢測速度快,但檢測精度受限;二階段目標(biāo)檢測模型精度較一階段目標(biāo)檢測模型高[8],但檢測速度較慢。
為實現(xiàn)對紙質(zhì)包裝盒缺陷進(jìn)行準(zhǔn)確的識別與定位,研究擬在檢測精度較高的二階段目標(biāo)檢測模型Faster R-CNN[9]上進(jìn)行改進(jìn),提出一種能夠?qū)堎|(zhì)包裝盒缺陷進(jìn)行識別的模型。通過3個方面(ResNet50網(wǎng)絡(luò)[10]融合特征金字塔結(jié)構(gòu)、雙線性插值法和聚類)的改進(jìn)提高模型的檢測準(zhǔn)確性,以期對食品紙質(zhì)包裝缺陷的檢測研究提供參考。
圖片數(shù)據(jù)采集于某紙板生產(chǎn)廠,共包含1 000張包裝盒缺陷圖片,圖片格式為jpg,大小包括1 080像素×1 440像素和1 440像素×1 080像素兩種,比例約為1∶1,使用labelImg軟件進(jìn)行標(biāo)注,標(biāo)注的標(biāo)簽為VOC格式。將數(shù)據(jù)集中的圖片按照8∶2的比例隨機劃分,得到800張用于網(wǎng)絡(luò)模型訓(xùn)練的圖片和200張用于模型效果驗證的圖片,訓(xùn)練集圖片與驗證集圖片沒有交集。由于數(shù)據(jù)集較小,為了得到更好的訓(xùn)練效果,采用隨機水平翻轉(zhuǎn)以及垂直翻轉(zhuǎn)對訓(xùn)練集圖片進(jìn)行數(shù)據(jù)增強處理[11]。此外,為了增強模型的魯棒性,對訓(xùn)練集圖片隨機添加高斯噪聲[12]。經(jīng)過數(shù)據(jù)增強后的訓(xùn)練集圖片為4 000張,預(yù)處理后的圖片如圖1所示。
圖1 預(yù)處理后圖片
1.2.1 原始網(wǎng)絡(luò)模型Faster R-CNN Fast R-CNN是二階段目標(biāo)檢測模型中的經(jīng)典,而Faster R-CNN是其改進(jìn)版。Faster R-CNN模型分為4個主要部分:特征提取網(wǎng)絡(luò)(卷積)、區(qū)域候選網(wǎng)絡(luò)(region proposal network)、興趣域池化層(RoI pooling)及分類與回歸,其中RPN網(wǎng)絡(luò)預(yù)先產(chǎn)生大量候選框,使得Faster R-CNN相比于SSD[13]、YOLOv3[14]和YOLOv4[15]等一階目標(biāo)檢測算法能夠?qū)崿F(xiàn)更好的檢測精度[16-17]。其工作原理:利用特征提取網(wǎng)絡(luò)提取圖像特征,將特征輸入RPN網(wǎng)絡(luò),RPN網(wǎng)絡(luò)根據(jù)預(yù)先設(shè)定的錨框尺度和比例,在特征圖上生成一系列的建議框,經(jīng)過NMS極大值抑制后獲取最終建議區(qū)域。將建議區(qū)域與圖像特征融合后輸入到RoI pooling對建議區(qū)域進(jìn)行池化,以便將尺寸不固定的特征圖轉(zhuǎn)變?yōu)楣潭ǖ某叽鏪18],用于后續(xù)的全連接層進(jìn)行目標(biāo)分類和邊界框回歸。Faster R-CNN模型結(jié)構(gòu)如圖2所示。
圖2 Faster R-CNN模型結(jié)構(gòu)
1.2.2 改進(jìn)Faster R-CNN后的模型 圖像特征圖層次越淺,細(xì)節(jié)信息越豐富,語義信息越弱;圖像特征圖層次越深,細(xì)節(jié)信息越少,語義信息越強。為了更好地提取包裝盒缺陷的特征,提高模型的泛化能力,選擇使用更加深層次的特征提取網(wǎng)絡(luò),但是深層次的網(wǎng)絡(luò)可能會造成梯度消失或梯度爆炸,并且產(chǎn)生網(wǎng)絡(luò)退化。在ResNet50網(wǎng)絡(luò)中,引入BN層(batch normalization)解決梯度消失或梯度爆炸的問題,并且引入殘差(residual)解決網(wǎng)絡(luò)退化的問題。故采用層次較深且性能較好的ResNet50替換Faster R-CNN中的特征提取網(wǎng)絡(luò),ResNet50網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 ResNet50網(wǎng)絡(luò)結(jié)構(gòu)
數(shù)據(jù)集中部分缺陷尺度較小,采用深層次的特征提取網(wǎng)絡(luò)可能會造成信息丟失,影響模型的精度,FPN(feature pyramid networks)網(wǎng)絡(luò)中采用自下而上和自上而下的結(jié)構(gòu)對圖片特征進(jìn)行處理[19],使得包含小目標(biāo)特征的尺度較大的特征層參與后續(xù)的預(yù)測與回歸,提高模型的精度,FPN網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。為了進(jìn)一步提高模型的性能,引入FPN結(jié)構(gòu),將ResNet50與FPN進(jìn)行融合,在提取更強語義信息的同時減少信息的丟失,圖5為融合后的網(wǎng)絡(luò)結(jié)構(gòu)。
圖4 FPN (feature pyramid networks)網(wǎng)絡(luò)結(jié)構(gòu)
圖5 ResNet50+FPN網(wǎng)絡(luò)結(jié)構(gòu)
使用ResNet50+FPN網(wǎng)絡(luò)進(jìn)行特征提取時,特征圖尺寸對比原圖縮小32倍, RoI pooling經(jīng)過兩次浮點數(shù)取整量化,會造成后續(xù)回歸精確度下降。為了解決這一問題,Mask R-CNN中使用了RoI Align[20](圖6),通過雙線性插值法,保留浮點數(shù),避免取整對精度帶來的不良影響。在模型中引入RoI Align結(jié)構(gòu),避免其精度下降。
圖6 RoI Align
Faster R-CNN中的錨框尺度與數(shù)據(jù)集不同,原始錨框比例為0.5,1.0,2.0,但數(shù)據(jù)集中標(biāo)注框的尺度不一定與原始錨框相同,不合適的錨框尺度可能需要更多的訓(xùn)練迭代才能收斂,這樣會增加訓(xùn)練時間和計算成本,而且錨框的尺度設(shè)置可能會影響模型對目標(biāo)的敏感性,如果錨框的尺度過大或過小,可能會導(dǎo)致目標(biāo)的漏檢或誤檢。為了得到更加接近真實標(biāo)注框的錨框尺度,選擇使用K-means++對數(shù)據(jù)集中的標(biāo)注框進(jìn)行聚類,聚類后結(jié)果如圖7所示,得到3個聚類中心(552,1 113)、(352,337)、(1 126,426),故將錨框比例由原始的0.5,1.0,2.0修改為0.49,1.0,2.6。
圖7 K-means++聚類結(jié)果
改進(jìn)后的網(wǎng)絡(luò)模型如圖8所示。
圖8 改進(jìn)后的網(wǎng)絡(luò)模型
1.2.3 損失函數(shù) 在模型訓(xùn)練過程中損失函數(shù)用來對模型進(jìn)行評估和對參數(shù)進(jìn)行優(yōu)化,Faster R-CNN網(wǎng)絡(luò)結(jié)構(gòu)中包含分類損失和回歸損失,損失函數(shù)公式定義為:
(1)
式中:
pi——第i個錨框預(yù)測為真實標(biāo)簽的概率;
ti——第i個錨框的邊界框回歸參數(shù);
Nc——分類樣本數(shù);
Nr——回歸樣本數(shù);
Lc——分類層損失;
Lr——回歸層損失;
λ——權(quán)重系數(shù)。
分類損失公式定義為:
(2)
回歸損失公式定義為:
(3)
(4)
1.3.1 試驗?zāi)P蛯Ρ?為驗證網(wǎng)絡(luò)模型的有效性,將其與不同的目標(biāo)檢測網(wǎng)絡(luò)進(jìn)行對比。選取一階段目標(biāo)檢測模型中的YOLOv3和YOLOv4作為對比對象,YOLOv3由于其速度快,適合在實時檢測場景中使用,檢測精度較高,對小目標(biāo)也具有一定的檢測能力,但是在復(fù)雜場景中檢測精度可能會降低;YOLOv4在YOLOv3的基礎(chǔ)上進(jìn)行了改進(jìn),在復(fù)雜場景中的表現(xiàn)優(yōu)于YOLOv3。研究所選二階段目標(biāo)檢測模型Faster R-CNN在檢測精度上有優(yōu)勢,但是檢測速度較一階段目標(biāo)檢測模型慢,對比使用VGG16和ResNet50作為特征提取網(wǎng)絡(luò)的Faster R-CNN模型,由于ResNet50網(wǎng)絡(luò)層次較深,所以提取深層次特征信息能力較強,但檢測速度稍慢;在ResNet50網(wǎng)絡(luò)中融入特征金字塔網(wǎng)絡(luò)可以進(jìn)一步提升其提取特征的能力,防止小目標(biāo)特征信息丟失,提高模型的檢測精度;使用K-means++對模型候選框尺度進(jìn)行優(yōu)化后,可以使建議框的尺度更加接近真實的區(qū)域,減少訓(xùn)練時間,并提高檢測精度。
1.3.2 試驗方法及參數(shù)設(shè)置 對不同網(wǎng)絡(luò)模型使用相同訓(xùn)練集與測試集,對比在測試集上的表現(xiàn)。所有模型訓(xùn)練環(huán)境為Linux系統(tǒng),訓(xùn)練框架為Pytorch,版本為1.11.0,CUDA版本為11.4。所有試驗?zāi)P途褂眠w移學(xué)習(xí)的方法進(jìn)行訓(xùn)練,訓(xùn)練時batch size設(shè)為4,訓(xùn)練30個epoch,初始學(xué)習(xí)率設(shè)置為0.01,對學(xué)習(xí)率使用SGD優(yōu)化器進(jìn)行優(yōu)化(每經(jīng)過3個epoch學(xué)習(xí)率衰減為原來的0.33倍),其中動量(momentum)設(shè)置為0.9, 權(quán)重衰退(weight_decay)參數(shù)設(shè)置為0.000 1。經(jīng)過多次試驗后發(fā)現(xiàn),Faster R-CNN系列模型RPN中進(jìn)行NMS處理時使用的IoU(預(yù)測框與真實框重疊部分占兩者集合區(qū)域的比例)閾值設(shè)置為0.7時能取得較好的效果。試驗?zāi)P鸵姳?。
表1 試驗?zāi)P?/p>
1.3.3 模型評估方法 目標(biāo)檢測算法的檢測結(jié)果共4類:TP(正樣本預(yù)測為正)、TN(負(fù)樣本預(yù)測為負(fù))、FP(負(fù)樣本預(yù)測為正)、FN(正樣本預(yù)測為負(fù))。為對比所提算法模型與其他算法模型的性能,采用精確率P(precision)、分類召回率R(recall)、平均精度AP(average precision)對模型性能進(jìn)行評估[21]。
精確率計算公式如式(5),用于評估模型檢測缺陷的準(zhǔn)確性。
(5)
式中:
P——精確率,%。
召回率計算公式如式(6),用于評估模型找到缺陷正樣本的能力。
(6)
式中:
R——精確率,%。
平均精度計算:
(7)
式中:
AP——平均精度,%;
P——準(zhǔn)確率,%;
R——召回率,%。
如表2所示,一階段網(wǎng)絡(luò)模型YOLOv3和YOLOv4在IoU為0.5時的AP值明顯低于二階段網(wǎng)絡(luò)模型Faster R-CNN。分別使用VGG16和ResNet50作為Faster R-CNN特征提取網(wǎng)絡(luò)時,AP值無明顯差別,但是使用ResNet50融合特征金字塔作為特征提取網(wǎng)絡(luò)時,精度和召回率有明顯的提升。進(jìn)一步使用RoI Align后,IoU為0.5時的AP值對比只使用ResNet50作為特征提取網(wǎng)絡(luò)的模型提升了3.3個百分點,而IoU為0.75時的AP值提升了16.9個百分點,IoU為0.5/0.95(預(yù)測框與真實框重疊部分占兩者集合區(qū)域的比例從0.5以0.05的增量到0.95)的召回率提升了6.8個百分點。使用K-means++對錨框尺度進(jìn)行修改后IoU為0.5和IoU為0.5/0.95時的AP值進(jìn)一步提高了0.5個百分點,IoU為0.5/0.95的召回率提高了0.4個百分點,但是在IoU為0.75時的AP值反而下降了1.5個百分點。由結(jié)果分析可知,二階段檢測模型在檢測精度上的表現(xiàn)更加出色,明顯高于一階段檢測模型;使用ResNet50+FPN作為特征提取網(wǎng)絡(luò)時模型精度和召回率均有明顯提升,證明特征金字塔網(wǎng)絡(luò)對小目標(biāo)檢測的有效性。
表2 缺陷AP和召回率
圖9為模型G與模型F訓(xùn)練時損失結(jié)果對比,可以看出,在同樣的學(xué)習(xí)率下,初始訓(xùn)練時模型G損失低于模型F,證明使用K-means++對數(shù)據(jù)集進(jìn)行聚類后得到的錨框尺度與真實標(biāo)注框更加接近,對加快網(wǎng)絡(luò)訓(xùn)練起到了積極的作用。
圖9 訓(xùn)練損失結(jié)果
如表3所示,模型G檢測速度為8.65幀/s,由于Faster R-CNN檢測模型在進(jìn)行目標(biāo)預(yù)測時需要經(jīng)歷區(qū)分前景與背景和提取對應(yīng)特征圖上特征這兩個階段,而YOLO系列模型只需要一次性產(chǎn)生預(yù)測結(jié)果,所以YOLO系列的檢測速度明顯比Faster R-CNN系列模型高。
表3 檢測速度對比
利用訓(xùn)練好的網(wǎng)絡(luò)模型對缺陷圖片進(jìn)行預(yù)測,預(yù)測結(jié)果包含預(yù)測框和置信度,分別表現(xiàn)模型的回歸準(zhǔn)確性和分類準(zhǔn)確性。模型A和模型B預(yù)測結(jié)果見圖10。
圖10 模型A和B預(yù)測結(jié)果
使用VGG16和使用Resnet50作為Faster R-CNN模型的特征提取網(wǎng)絡(luò)時,相比較于YOLOv3和YOLOv4,漏檢情況有很大的提升,每個缺陷的置信度比較接近,均能夠準(zhǔn)確識別出缺陷。但是定位不夠準(zhǔn)確,某些框圖尺度過大,與實際缺陷位置差別較大。模型C和模型D預(yù)測結(jié)果見圖11。
圖11 模型C和D預(yù)測結(jié)果
使用特征金字塔結(jié)構(gòu)后,缺陷檢測的定位準(zhǔn)確率對比模型D有所提升,證明特征金字塔結(jié)構(gòu)能夠提升網(wǎng)絡(luò)對包裝盒缺陷的檢測能力。模型E預(yù)測結(jié)果見圖12。
圖12 模型E預(yù)測結(jié)果
對比模型F和模型G的預(yù)測結(jié)果可以看出,是否使用K-means++在檢測精度上無明顯的差別,但是使用K-means++的模型G在某些缺陷上生成的標(biāo)注框比模型F更加接近真實缺陷范圍,由此可見,對數(shù)據(jù)集進(jìn)行聚類對提升模型的回歸精度有一定的幫助。模型F和模型G的預(yù)測結(jié)果見圖13。
圖13 模型F和G預(yù)測結(jié)果
使用改進(jìn)的Faster R-CNN網(wǎng)絡(luò)模型對包裝盒缺陷進(jìn)行檢測,改進(jìn)后的模型在驗證集上的平均準(zhǔn)確率達(dá)到了93.9%,檢測速度達(dá)到了8.65幀/s,滿足工業(yè)使用的需求。使用特征金字塔網(wǎng)絡(luò)后的模型在精度和召回率上都有明顯的提升,證明特征金字塔網(wǎng)絡(luò)在小目標(biāo)檢測中的有效性,對數(shù)據(jù)集使用聚類之后,模型的訓(xùn)練速度以及回歸精度都有所提升。雖然研究使用的模型在精度上的表現(xiàn)比較出色,但是在檢測速度上還有提升的空間,一階段目標(biāo)檢測模型的速度基本能夠滿足實時檢測的需求,但是精度不高。因此,下一步需要研究的是如何在保證檢測精度的同時提升檢測速度。