劉鴻瑜,袁國武
(云南大學(xué) 信息學(xué)院,云南 昆明 650504)
中國煙草產(chǎn)業(yè)產(chǎn)量一直位居世界第一,2020年,中國煙草行業(yè)利稅總額達(dá)到了1.28萬億,上繳財政總額達(dá)到了1.2萬億,可以說,煙草是中國的支柱產(chǎn)業(yè)之一。而云南煙草占據(jù)全國煙草總量的一半左右,煙草產(chǎn)業(yè)對于云南的發(fā)展起著至關(guān)重要的作用。卷煙是煙草公司生產(chǎn)的最主要產(chǎn)品,在卷煙自動化生產(chǎn)過程中,難免會產(chǎn)生一些煙支外觀缺陷。在以前的生產(chǎn)流水線上,僅靠人工去分辨缺陷。而目前的自動生產(chǎn)流水線上煙支的生產(chǎn)速度達(dá)到了200支/秒,靠人工去分辨缺陷已經(jīng)不太現(xiàn)實,因此,迫切需要自動化的煙支外觀檢測和分類技術(shù)。
外觀缺陷檢測有傳統(tǒng)的圖像處理檢測和機(jī)器學(xué)習(xí)檢測兩大類,近年來快速發(fā)展的深度學(xué)習(xí)方法是機(jī)器學(xué)習(xí)中的一類。在深度學(xué)習(xí)中,外觀缺陷檢測屬于目標(biāo)檢測的范疇,目標(biāo)檢測算法主要有R-CNN[1-3]、SSD[4]、YOLO[5-8]等,這些方法在很多目標(biāo)檢測領(lǐng)域都有著廣泛的應(yīng)用,取得了大量科研成果。Wang W等[9]將數(shù)據(jù)增強(qiáng)技術(shù)應(yīng)用于Faster R-CNN網(wǎng)絡(luò),在道路表面損壞圖像檢測中精準(zhǔn)率和召回率的調(diào)和平均值達(dá)到了62.55%。吳則舉等[10]在Faster R-CNN里面引入在線難例挖掘(OHEM)算法,在輪胎外觀缺陷檢測中的準(zhǔn)確率達(dá)到了95.7%。Li Y等[11]在SSD的基礎(chǔ)上提出了一種基于MobileNet-SSD的表面缺陷檢測方法,用來檢測罐裝密封容器表面缺陷,召回率達(dá)到了89.42%。Tian Y等[12]將YOLOv3網(wǎng)絡(luò)和Dense-Net網(wǎng)絡(luò)有效地結(jié)合起來,應(yīng)用于果實外觀形狀檢測,以此來監(jiān)測作物生長和營養(yǎng)狀況,實驗的精準(zhǔn)率和召回率的調(diào)和平均值達(dá)到了81.7%。張廣世等[13]在YOLOv3網(wǎng)絡(luò)中增加了網(wǎng)絡(luò)預(yù)測尺度的種數(shù),提高了對于小尺寸缺陷的檢測能力,在齒輪外觀缺陷檢測中召回率達(dá)到了95.63%。何國忠等[14]將注意力機(jī)制加入到Y(jié)OLOv4網(wǎng)絡(luò),用來對電路板外觀缺陷進(jìn)行檢測,平均檢測精度達(dá)到了91.40%。
目前,還沒有看到深度學(xué)習(xí)方法用于煙支外觀缺陷檢測和分類方面的研究。在自動化高速煙支生產(chǎn)流水線上,由于對高檢測精度和高分類精確率的需求,基于最新提出的YOLOv5s網(wǎng)絡(luò),該文提出以下改進(jìn)用來更好地對煙支外觀缺陷進(jìn)行檢測和分類:
(1)對于煙支外觀缺陷數(shù)據(jù)集,除了應(yīng)用YOLOv5s的數(shù)據(jù)增強(qiáng)(Mosaic)方法,還采用了隨機(jī)中心旋轉(zhuǎn)(Rand Center Rotation)、合成新樣本[15](SMOTE)和高斯噪聲(Gaussian Noise)的數(shù)據(jù)增強(qiáng)技術(shù),使數(shù)據(jù)從原始的2 000張圖片有效擴(kuò)增到8 000張;
(2)在YOLOv5s網(wǎng)絡(luò)的骨干網(wǎng)絡(luò)層(Backbone)引入通道注意力機(jī)制(SE-Net),提升了特征圖不同通道之間目標(biāo)信息的相關(guān)性表述;
(3)優(yōu)化激活函數(shù),用Swish[16]函數(shù)替代Leaky ReLU。Swish函數(shù)具有平滑、非單調(diào)的特性,這有利于提升網(wǎng)絡(luò)的分類能力;
(4)優(yōu)化損失函數(shù),將原網(wǎng)絡(luò)的GIoU[17]改用DIoU[18],DIoU彌補(bǔ)了GIoU的模型收斂速度問題,而相較于將真實框和預(yù)測框的形狀不一致考慮進(jìn)來的CIoU[18],DIoU更關(guān)注預(yù)測框和真實框中心點的位置,這能夠更好地對小目標(biāo)進(jìn)行檢測,更適合于文中煙支外觀缺陷數(shù)據(jù)集。
煙支主要分兩個部分:如圖1(a),左部白色部分為煙棒,右部深色部分為濾嘴。在煙支生產(chǎn)工藝上,根據(jù)生產(chǎn)流水線的外觀缺陷形成原因,云南中煙工業(yè)有限責(zé)任公司將煙支外觀缺陷分為以下四類:斑點(Dotted)、褶皺(Folds)、錯牙(unTooth)、無濾嘴(unFilter)。其中,斑點指在煙支外表上有大小不一的黑點、污點等,主要由煙棒紙印刷不合格或者后期受到染色形成;褶皺主要指煙支上有一些皺紋樣的形狀,主要由生產(chǎn)機(jī)器用濾嘴紙卷過濾嘴或用煙棒紙卷煙絲造成;錯牙指煙支的包裝紙在卷煙絲的過程中沒有對齊,主要由生產(chǎn)機(jī)器造成;無濾嘴主要由生產(chǎn)機(jī)器出現(xiàn)問題無法包裝過濾紙造成。具體煙支外觀缺陷圖像見圖1(b)-(e)。
圖1 煙支外觀類型
YOLOv5系列包括YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四種模型[19],其中YOLOv5s體積最小,速度最快,最適合應(yīng)用到自動化煙支外觀缺陷檢測中。YOLOv5s網(wǎng)絡(luò)大致可以分為四個模塊:Input、Backbone、Neck、Head。
(1)Mosaic數(shù)據(jù)增強(qiáng)。把四張圖片通過隨機(jī)縮放、隨機(jī)裁剪、隨機(jī)排布的方式拼接成一張圖片。
(2)自適應(yīng)圖片縮放。即對原始圖像自適應(yīng)地添加最少的黑邊,這樣可以提升推理速度。
(1)Focus。原始608*608*3的圖像輸入之后,采用切片操作,先變成304*304*12的特征圖,再經(jīng)過一次32個卷積核的卷積操作,變成304*304*32的特征圖,保證了在下采樣的同時不丟失圖像信息,同時減少了每秒浮點運(yùn)算次數(shù),加快了計算速度。
(2)CSPNet[20]。CSPNet從圖像中提取豐富的信息特征,將梯度變化集成到特征圖,解決了網(wǎng)絡(luò)優(yōu)化中梯度信息重復(fù)的問題,大幅減少了計算量,提升了精確率。
(3)Leaky ReLU激活函數(shù)。該函數(shù)在訓(xùn)練過程中使所有神經(jīng)元都被激活,從而使所有的參數(shù)進(jìn)行更新,提升了網(wǎng)絡(luò)的表達(dá)能力。
采用了FPN+PAN[21-22]結(jié)構(gòu),深層的特征圖攜帶有更強(qiáng)的語義特征,淺層的特征圖攜帶有較強(qiáng)的位置信息。FPN就是把深層的語義特征傳到淺層,而PAN則是把淺層的定位信息傳導(dǎo)到深層,兩者相結(jié)合,增強(qiáng)了網(wǎng)絡(luò)特征融合能力。
采用GIoU_Loss做Bounding box的損失函數(shù),GIoU不僅關(guān)注重疊區(qū)域,還關(guān)注其他的非重疊區(qū)域,反應(yīng)預(yù)測框與真實框之間的重合度。
從云南中煙工業(yè)有限責(zé)任公司獲取的總煙支外觀數(shù)據(jù)集有2 854張圖片,經(jīng)篩選和灰度處理,僅有2 000張有效圖片。對原圖像進(jìn)行適當(dāng)?shù)臄?shù)據(jù)增強(qiáng),擴(kuò)增后得到的圖片數(shù)量為8 000張。
(1)隨機(jī)中心旋轉(zhuǎn)。將原始圖像隨機(jī)選取一半的圖片按照中心點不變的原則,隨機(jī)旋轉(zhuǎn)一個角度。圖像中心點坐標(biāo)的公式為:
(1)
其中,圖像的左上角坐標(biāo)為(left,top),右下角坐標(biāo)為(right,bottom),圖像中心點為(xcenter,ycenter)。圖像上任意一點繞中心逆時針旋轉(zhuǎn)任意角度后,新的坐標(biāo)位置的計算公式為:
(2)
其中,(X0,Y0)為圖像上某一點旋轉(zhuǎn)前的坐標(biāo),θ為旋轉(zhuǎn)的角度,(X1,Y1)為圖像上某一點旋轉(zhuǎn)后的坐標(biāo)。
(2)合成新樣本。在煙支外觀數(shù)據(jù)集中,有一些樣本較之其他樣本較少,樣本數(shù)據(jù)極不平衡,影響分類器效果。因此采取SMOTE[21]方法來平衡樣本數(shù)量。SMOTE是基于插值的方法,能為小樣本類合成新樣本,步驟為:(a)將每個樣本對應(yīng)到特征空間,根據(jù)樣本不平衡比例確定好一個采樣倍率N,這樣可以確定采樣的趟數(shù)。(b)對每一個小樣本(x,y),根據(jù)歐氏距離找出K個最鄰近樣本,從中隨機(jī)選取樣本點(Xn,Yn)。在特征空間中樣本點與最鄰近樣本點的連線段上隨機(jī)選取一點滿足式(3),得到新樣本點(Xnew,Ynew)。(c)重復(fù)以上步驟,直到大、小樣本數(shù)量平衡。
(Xnew,Ynew)=(x,y)+rand(0,1)×
((Xn-x),(Yn-y))
(3)
(3)高斯噪聲。對原始圖像和進(jìn)行過上述數(shù)據(jù)增強(qiáng)的圖像,隨機(jī)選取部分圖片復(fù)制一份來加高斯噪聲。高斯噪聲對圖像的每一個像素都有一個符合同一高斯分布的加性噪聲,具體加性高斯公式如式(4)。
G(x,y)=f(x,y)+n(x,y)
(4)
其中,G(x,y)是被添加高斯噪聲后的圖像,f(x,y)是原圖像,n(x,y)是高斯加性噪聲。
Hu J等[23]最早提出通道注意力機(jī)制,根據(jù)重要程度給各個通道分配不同的權(quán)重。為了進(jìn)一步提高網(wǎng)絡(luò)的表達(dá)能力,也為了更好地獲取煙支外觀缺陷特征,在網(wǎng)絡(luò)的CSP模塊嵌入SE-Net[24],研究特征圖的各個通道之間的相關(guān)性,增強(qiáng)對通道信息的敏感程度。SE-Net結(jié)構(gòu)主要包含全局平均池化層、全連接層、激活函數(shù)層,結(jié)構(gòu)見圖2。
圖2 SE-Net網(wǎng)絡(luò)結(jié)構(gòu)
首先,對輸入大小為w*h*n的特征圖進(jìn)行全局平均池化操作,得到1*1*n大小的特征圖;其次,在全連接層對1*1*n大小的特征圖做非線性變換得到權(quán)重;scale層則將權(quán)重分別乘到輸入特征圖的對應(yīng)通道特征上再輸出,得到包含通道注意力的特征圖。該文將SE-Net加在Backbone模塊的三個CSP結(jié)構(gòu)后面,從而保證不同特征經(jīng)過SE-Layer層之后讓更重要的特征能夠有更高的權(quán)重,使模型有更好的檢測和特征提取能力。
Swish激活函數(shù)的提出,使得在一些環(huán)境下ReLU函數(shù)被替換成為了可能。通過實驗,驗證了Swish函數(shù)在文中數(shù)據(jù)集上面的有效性。原始YOLOv5s網(wǎng)絡(luò)中采用的是Leaky ReLU函數(shù),該文用Swish函數(shù)進(jìn)行改進(jìn)。一方面,由于采用的模型較深,Swish函數(shù)非常適合于深層次網(wǎng)絡(luò),且其具有的無上界有下界、平滑、非單調(diào)的特性,在文中模型性能提升中發(fā)揮了重要作用。另一方面,煙支外觀缺陷數(shù)據(jù)集有很多不規(guī)則的缺陷,使用Swish函數(shù),能夠更好地對這些不規(guī)則的缺陷特征進(jìn)行類別區(qū)分。
Swish函數(shù)的公式如下:
(5)
損失函數(shù)的選擇對模型收斂效果有著很大的影響,在改進(jìn)的YOLOv5s模型中采用DIoU作為損失函數(shù)。DIoU將目標(biāo)框與預(yù)測框中心點之間的距離、重疊率以及尺度都考慮進(jìn)去,使得目標(biāo)框的回歸變得更加穩(wěn)定。在實驗中,相比于GIoU和CIoU,DIoU更關(guān)注預(yù)測框和真實框中心點的位置,更適合于煙支外觀缺陷數(shù)據(jù)集。DIoU函數(shù)見式(6):
(6)
其中,b、bgt分別代表預(yù)測框和真實框的中心點,ρ代表兩個中心點之間的歐氏距離,c代表能夠同時包含預(yù)測框和真實框的最小閉包區(qū)域的對角線距離,IoU函數(shù)的計算公式如下:
(7)
其中,Bgt代表真實框,B代表預(yù)測框。
改進(jìn)的YOLOv5s算法將目標(biāo)檢測任務(wù)重新定義為一個單一的回歸預(yù)測問題。首先對輸入圖像進(jìn)行自適應(yīng)縮放和數(shù)據(jù)增強(qiáng),使圖像標(biāo)準(zhǔn)化,豐富數(shù)據(jù)集。然后采用Focus對圖像進(jìn)行切片,經(jīng)過CSP Darknet53和SE-Net來提取圖像多尺度的特征進(jìn)行學(xué)習(xí)和對不同特征相應(yīng)地賦值權(quán)重,再經(jīng)SPP池化模塊對圖像進(jìn)行特征分離,用FPN+PAN結(jié)構(gòu)從不同的主干層對不同的檢測層進(jìn)行特征融合。最后通過處理網(wǎng)絡(luò)預(yù)測結(jié)果并對圖像特征進(jìn)行預(yù)測,生成目標(biāo)邊界框和預(yù)測類別概率。
該文用于煙支外觀缺陷檢測的YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)見圖3。在Input端,首先進(jìn)行數(shù)據(jù)增強(qiáng),有效擴(kuò)增煙支數(shù)據(jù)集,使各種缺陷數(shù)據(jù)集間達(dá)到平衡;然后在Backbone模塊添加注意力機(jī)制,使得煙支外觀圖像中重要的特征有了更高的權(quán)重;然后用Swish函數(shù)替換Leaky-ReLU,增強(qiáng)了網(wǎng)絡(luò)對某一缺陷類別中特殊形狀缺陷的煙支的識別分類能力;再使用DIoU作為損失函數(shù),讓網(wǎng)絡(luò)更加關(guān)注煙支外觀缺陷這種占比很小的缺陷,從而能夠更好地對模型進(jìn)行優(yōu)化,使實驗效果提升。
圖3 用于煙支外觀缺陷檢測的YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)
煙支外觀缺陷數(shù)據(jù)集已在第2部分中做了相關(guān)介紹,在實驗部分,對正常、斑點、褶皺、錯牙、無濾嘴五種類別的煙支外觀數(shù)據(jù)集使用labelImg工具進(jìn)行了標(biāo)注,生成對應(yīng)的xml文件。
標(biāo)注示例見圖4。
圖4 煙支標(biāo)注示例圖
將增擴(kuò)得到的數(shù)據(jù)集按6∶2∶2的比例劃分為訓(xùn)練集、測試集、驗證集,采取按類別隨機(jī)劃分的方式。最終,訓(xùn)練集五種類別各960張,共4 800張,驗證集、測試集五種類別各320張,共3 200張。
實驗采用PyTorch框架,在Windows 10上運(yùn)行。實驗電腦配置如下:CPU為 Intel Core i7-10700k,GPU為RTX 2080Ti,內(nèi)存為32G。
實驗評價指標(biāo)采用Precision(精確率)、Recall(召回率)、mAP(平均檢測精度)和mSpeed(平均檢測時間),Precision(P)和Recall(R)的計算公式為:
(8)
(9)
其中,TP為預(yù)測為某一類別實際也為這一類別的數(shù)量,F(xiàn)N為預(yù)測不為某一類別實際為這一類別的數(shù)量,F(xiàn)P為預(yù)測為某一類別實際卻不為這一類別的數(shù)量。
由P值和R值可以得到一條精確率-召回率(P-R)曲線,曲線與坐標(biāo)軸圍成的面積即AP值,計算公式為:
(10)
mAP即將所有類別的AP值求平均,計算公式為:
(11)
其中,n是類別數(shù),APi是第i類類別的AP值。平均檢測時間mSpeed是檢測出所有圖片所需的時間的平均,包括圖像預(yù)處理、PyTorch FP16推理、后處理和非極大值抑制(NMS)處理時間。
首先對網(wǎng)絡(luò)進(jìn)行參數(shù)的初始化,用訓(xùn)練集和驗證集來對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,期間通過對學(xué)習(xí)率、權(quán)重大小及訓(xùn)練輪次等參數(shù)進(jìn)行相應(yīng)的調(diào)整,使實驗效果達(dá)到最好。最終的參數(shù)設(shè)置如下:批處理大小(batch size)設(shè)置為32,學(xué)習(xí)率(lr)設(shè)為0.01,訓(xùn)練次數(shù)(epoch)設(shè)置為200。實驗訓(xùn)練結(jié)果見圖5。
圖5 實驗訓(xùn)練結(jié)果
圖5中,Box指DIoU損失函數(shù)均值,Objectness指目標(biāo)檢測loss均值,Classification指分類loss均值,這三個值越小表示效果越好。訓(xùn)練過程這三個值幾乎接近0,且在測試過程中這三個值也很低且收斂。另外,Precision值和Recall值穩(wěn)定在0.9左右。而mAP@0.5指IoU為0.5時所有類別的平均AP。mAP@0.5:0.95指在不同IoU(0.5-0.95,步長0.05)上所有類別的平均AP。最后,mAP@0.5穩(wěn)定在0.9左右,mAP@0.5:0.95穩(wěn)定在0.6左右,上述所有指標(biāo)表明模型效果較好。
改進(jìn)的YOLOv5s網(wǎng)絡(luò)在訓(xùn)練過程中,隨著epoch數(shù)的增加,與其他方法相比,能夠更快地收斂,且收斂之后損失函數(shù)值最小,驗證了改進(jìn)模型損失函數(shù)的有效性,也說明了改進(jìn)的YOLOv5s網(wǎng)絡(luò)訓(xùn)練效果優(yōu)于其他網(wǎng)絡(luò)。改進(jìn)的YOLOv5s與Faster R-CNN、SSD及yolov5s的訓(xùn)練次數(shù)-損失函數(shù)值(E-L)對比見圖6。
圖6 不同模型訓(xùn)練過程損失函數(shù)曲線
圖7展示了改進(jìn)YOLOv5模型可視化的部分結(jié)果。
圖7 改進(jìn)的YOLOv5s網(wǎng)絡(luò)實驗結(jié)果
為了進(jìn)一步驗證模型的有效性,與其他一些常用的目標(biāo)檢測網(wǎng)絡(luò)進(jìn)行實驗對比,實驗結(jié)果見表1。
表1 不同網(wǎng)絡(luò)實驗結(jié)果對比
表1數(shù)據(jù)表明,改進(jìn)的YOLOv5s相比于原先的YOLOv5s,精確率高出了4.1%,召回率高出了4.5%,平均檢測精度(mAP@0.5)高出了3.3%,平均檢測精度(mAP@0.5:0.95)高出了3.8%,而平均檢測速度只增加了0.1 ms/支。應(yīng)該指出,改進(jìn)的YOLOv5s網(wǎng)絡(luò)取得了較大的提升。另一方面,采用的YOLOv5s方法是YOLOv5系列中最輕量的,經(jīng)改進(jìn)后,檢測精度已與最好的YOLOv5x相差不大,而且由于YOLOv5s架構(gòu)檢測時間非???,能更好滿足未來工業(yè)上生產(chǎn)上200支/秒的檢測要求,在實際的煙支生產(chǎn)應(yīng)用場景中,也能更加適合于自動化煙支外觀缺陷檢測。
圖8為不同算法的檢測結(jié)果,其中,(a)表示原數(shù)據(jù),(b)表示標(biāo)注的數(shù)據(jù),(c)-(f)表示采用Faster R-CNN、SSD、YOLOv5s和改進(jìn)的YOLOv5s方法的結(jié)果??梢?,該算法在煙支外觀數(shù)據(jù)集上的檢測置信度高,漏檢少,分類效果好,在不同缺陷下的表現(xiàn)比較穩(wěn)定,達(dá)到了預(yù)期。
(a)原數(shù)據(jù) (b)標(biāo)注數(shù)據(jù) (c)Faster R-CNN (d)SSD (e)YOLOv5s (f)改進(jìn)的YOLOv5s
針對煙支自動化生產(chǎn)過程中生產(chǎn)速度快、要求檢測精度和分類精確率高等現(xiàn)狀,提出了一種改進(jìn)YOLOv5s的網(wǎng)絡(luò)模型,將其用于煙支外觀缺陷檢測與分類。主要創(chuàng)新點在于:在YOLOv5s框架的數(shù)據(jù)增強(qiáng)模塊基礎(chǔ)上增加了多種更適合文中數(shù)據(jù)集的數(shù)據(jù)增強(qiáng)方法;在YOLOv5s骨干網(wǎng)絡(luò)引入了通道注意力機(jī)制;優(yōu)化激活函數(shù)改用Swish函數(shù);優(yōu)化損失函數(shù)改用DIoU。實驗證明,該改進(jìn)模型在5種常見的煙支外觀類型數(shù)據(jù)集上,精確率、召回率及平均檢測精度均有所提升,平均檢測速度也能夠滿足目前煙支生產(chǎn)流水線的檢測要求。