王憲倫 孫宇軒 王 棟
(青島科技大學機電工程學院 青島 266100)
在經濟高速發(fā)展的今天,我國的機械行業(yè)市場空前擴大。但是由于技術水平和加工設備的限制,零件表面加工質量仍難以出現(xiàn)質的飛躍[1]。傳統(tǒng)的檢測方式是由人眼進行檢測,檢測效率低,長時間的工作也會導致檢測結果出現(xiàn)紕漏。
近年來,深度學習憑借特征提取與模式識別方面的獨特方式和優(yōu)勢在眾多領域發(fā)揮了獨到的作用。在目標檢測方面,隨著圖像采集設備的不斷發(fā)展,圖像采集的質量不斷提高,基于計算機視覺的目標檢測逐漸流行起來[2]。早期的目標檢測是基于圖像的顏色、紋理等特征進行特征提取,進而實現(xiàn)目標檢測[3~4]。隨著卷積神經網絡[5](CNN)的提出,以及硬件性能的提升,基于深度學習的目標檢測算法成為主流,并且取得優(yōu)秀的成果。目前。基于深度學習的目標檢測算法主要分兩種。一種是基于區(qū)域建議的目標檢測算法,代表算法是RCNN、Fast-RCNN、Faster-RCNN 等[6~8],其原理是利用啟發(fā)式方法或者CNN 網絡提取區(qū)域塊,再對區(qū)域中的對象進行識別。另外一種是基于回歸方法的檢測算法,代表算法為YOLO、SSD 等[9~10]。其原理是僅使用CNN 網絡來預測目標的種類和位置。
深度學習在應對復雜工業(yè)環(huán)境下的缺陷檢測有著獨到的優(yōu)勢[11]?;谏疃葘W習的缺陷檢測已經應用各種工業(yè)環(huán)境下。文生平等采用變形卷積技術和密集連接技術改進YOLOv3 框架,將其應用到鋁型材的表面缺陷檢測,取得了良好的成果[12]。劉亞男利用機器視覺的相關方法對鋼材表面進行缺陷檢測,通過灰度化、圖像增強、邊緣提取的方法提取出缺陷區(qū)域,再進行缺陷識別,達到了較好的效果[13]。張秦瑋等建立了利用粒子群算法進行參數(shù)尋優(yōu)的PSO-SVM 分類識別模型來檢測焊盤表面缺陷。首先采用OTSU 算法將焊盤從背景中提取出來,再利用PSO-SVM 分類識別模型進行缺陷識別分類。將該模型和傳統(tǒng)的B-P神經網絡對比,體現(xiàn)了該算法的優(yōu)越性[14]。
目前,對于零件表面缺陷的檢測仍存在一定的問題。復雜的表面缺陷種類,表面缺陷的隱蔽性,加工環(huán)境復雜性等等,這都是影響檢測結果的因素。某些方法雖然檢測結果準確,但是實時性較差,無法實現(xiàn)實時檢測的功能。為了解決上述問題,本文提出了基于YOLOv4 改進算法的零件表面缺陷檢測算法,利用稠密網絡結構代替部分殘差網絡結構,使網絡參數(shù)更少,從而提升算法的運算速度,并且保證了檢測結果的準確性。
本文中采用的訓練集為德國DAGM2007 數(shù)據集,以其中8 種缺陷圖像為檢測目標。由于該數(shù)據集包括的缺陷圖片較少,因此采用圖片增強的方式進行擴充,使訓練集的數(shù)量達到6800張。
通過實驗對比了原算法和改進算法的檢測精度和每張圖片的檢測時間,證明了改進的檢測算法在保證檢測精度的同時,可以明顯減少圖片檢測時間,提高了檢測效率。
2.1.1 YOLOv1
與RCNN 算法有所不同,YOLOv1 采用了端到端的檢測框架,將目標檢測作為回歸問題來處理。其核心思想是將整張圖片作為輸入,直接在輸出層回歸預測框和預測類別。實現(xiàn)方法為將一張圖片分成s×s的網格,如果某個物體落在某個網格中,則由這個網格預測這個物體。每個網格要預測B個預測框,每個預測框要負責預測物體中心的位置和置信度一共5 個變量。置信度包括了預測框中是否存在物體和物體檢測準確度兩種信息,其計算公式如式(1)所示。
其中,如果物體中心在網格內,則Pr(Object)取1,否則取0。IOU代表了預測框和實際框的重合度。
在檢測時,通過式(2)來計算每個框預測目標的得分。
其中Pr(Classi|Object)是每個網格的預測信息。通過設定閾值,過濾掉低分的預測框,在通過非極大值抑制算法進行處理,便可以得到需要的預測結果。
2.1.2 YOLOv2
為了實現(xiàn)更快的檢測速度和更高的準確率,在YOLOv1 的基礎上,Redmon J 等提出了YOLOv2[15]。YOLOv2 采用了多種方法來提升準確率和檢測速度。首先,YOLOv2 提出了基于CNN 網絡的Darknet-19,并使用416×416的輸入格式,這樣的圖片在經過5 次下采樣后生成13×13 的特征圖,奇數(shù)的特征圖會使獲得的中心點特征更加準確。YOLOv2還采用了大量的小技巧來提升準確率,包括批量正則化,基于K-means算法生成錨點,遷移學習等。
2.1.3 YOLOv3
YOLOv3[16]是在YOLO 之前的基礎上,借鑒了一些優(yōu)秀的方案,從而實現(xiàn)更高的準確率。主要的改進方案為:網絡結構調整;多尺度預測;logistic代替Softmax進行分類。
在網絡結構上,YOLOv3 提出了Darknet-53 網絡結構,該結構借鑒了殘差網絡結構,在一些層之間設置了快捷鏈路,從而加深網絡結構,可以獲得更好的結果。與YOLOv2 不同,YOLOv3 提出了多尺度預測的方案。該方案有利于產生不同尺寸的特征圖,從而獲得不同大小的感受野,這有利于檢測不同尺寸的對象。logistic 代替Softmax 進行分類,這能夠支持多標簽對象。
YOLOv4 目標檢測算法是以YOLOv3 算法為基礎,在數(shù)據處理、特征提取框架、激活函數(shù),損失函數(shù)等方面進行優(yōu)化,從而獲得速度和準確度上最優(yōu)匹配[17]。YOLOv4 算法主體框架包括以下幾個方面:CSPDarknet53 特征提取網絡,空間池化網絡SPP[18],特征金字塔PAnet[19],YOLO Head 預測模型。在CSPDarknet53特征提取網絡上進行修改,將部分殘差網絡模型替換為稠密網絡模型,從而減少網絡參數(shù)量,在保證檢測精度的情況下,提高運算速度,進而提高識別效率。改進后的網絡模型如圖1所示。
圖1 YoLov4改進算法框架
2.2.1 稠密網絡模型
為了加快運算速度,減少模型參數(shù)是重要的一步。同時,為了保證檢測結果的準確性,需要加強模型對于小特征的特征提取能力,充分利用每個卷積層的輸出信息,采用稠密網絡模型對部分殘差網絡模型進行代替。
稠密網絡模型的基本思想和殘差網絡模型基本一致,都是建立前層和后層的短路連接。由于稠密網絡充分利用了每個卷積層的特征信息從而可以充分利用前層的特征信息,防止出現(xiàn)梯度消失,可以訓練出更深的網絡模型[20]。稠密網絡模型如圖2所示。
圖2 稠密網絡
與殘差網絡模型有所不同,稠密網絡模型建立了與前面所有層與后面層的密集連接,從而實現(xiàn)了特征重用,在使用更少參數(shù)和計算成本的情況下獲得更優(yōu)異的性能。在稠密網絡模型中,會連接前面所有的層作為輸入,其表達式如式(3)所示:
式(3)中,[]代表了拼接操作,指在將x0層至xi-1層按維度方向進行拼接,并將其作為輸入。Hi(·)代表了一些非線性轉化函數(shù),目的是將輸入進行非線性操作。
2.2.2 YOLOv4目標檢測改進算法流程
如圖1 所示,改進后的YOLOv4 算法主要由以下幾部分組成:M-CSPDarknet53 模型,PAnet 特征金字塔,SPP空間池化結構,YOLO Head預測模型。
訓練圖片首先經過M-CSPDarknet53 模型進行特征提取,原特征提取結構是由殘差網絡結構進行特征提取和加深網絡,在M-CSPDarknet53 模型中,將最后兩層的殘差網絡層替換為稠密網絡層,從而減少訓練參數(shù),提高訓練和預測速度,并且可以保證預測結果的準確性。
在M-CSPDarknet53 最后一個特征層之后,增加了一個空間池化金字塔(SPP)結構。由于在實際操作時,不可能一直輸入固定尺寸的圖片,通常情況下,為了滿足神經網絡的輸入尺寸要求,需要對輸入圖片進行處理。大部分的處理方式是裁剪或者拉伸,這樣會導致圖像的橫縱比發(fā)生改變,甚至丟失部分特征。使用SPP 結構可以處理不同尺寸的圖像,一定程度上保證了尺寸不變性。由于訓練圖像尺寸的多樣性高,有利于網絡收斂,在一定程度上降低過過擬合。
圖像經過M-CSPDarknet53 結構和SPP 結構后,會生成尺寸分別為(76,76,256)、(38,38,512)、(19,19,1024)的特征層,特征層會經過PANet特征金字塔結構,最后通過YoLo Head 進行預測。特征金字塔采用上采樣的方式利用了底層特征的高分辨信息和高層的語義特征信息,從而保證了圖像信息的完整性,有利于圖像的識別定位。
經過特征金字塔處理后的特征層輸入到YOLO Head,YOLO Head 對輸入的3 個不同尺寸的特征層進行預測,從而得出預測結果。
一般來說,比較成功的神經網絡需要大量的參數(shù),而使這些參數(shù)能夠正常工作則需要大量的數(shù)據,但是在實際情況中,數(shù)據的數(shù)量并沒有想象的那么多。因此,需要采用數(shù)據增強的方法來對原數(shù)據進行擴充,從而獲得更多的樣本。本文中采用的數(shù)據增強的方法為通用數(shù)據增強方法和Mosaic 增強方法。
通用的數(shù)據增強方法包括對圖片進行平移、隨機剪裁、加噪聲、鏡像等。增強效果如圖3所示。
圖3 數(shù)據增強
Mosaic 數(shù)據增強方法是在YOLOv4 算法提出的圖像增強方法,借鑒于CutMix[21]數(shù)據增強方法。不同于CutMix,Mosaic 增強方法一次性讀取4 張圖片進行拼接,該方法首先讀取四張圖片,然后分別對四張圖片進行翻轉、縮放、色域變化等,并且安四個方向位置擺好,最后對圖片進行拼接。示意圖如圖4所示。
圖4 Mosaic數(shù)據增強
論文中采用的數(shù)據集為德國DAGM2007 數(shù)據集,選用了其中8 種類型的缺陷作為檢測樣本。由于數(shù)據集中缺陷樣本較少,因此采用數(shù)據增強的方式增加缺陷樣本數(shù)量。采用的數(shù)據增強方法為旋轉,加噪聲以及Mosaic 數(shù)據增強方法,共計生成6800張缺陷圖片。
在本論文實驗中,將處理每張圖片的時間作為效率指標,采用mAP和AP來衡量改進算法的檢測性能。計算mAP和AP首先要計算準確率和召回率,準確率和召回率的計算公式如下:
其中,pr代表準確率,re代表召回率。TP是檢測缺陷種類正確的數(shù)量,F(xiàn)P是檢測錯誤的數(shù)量,F(xiàn)N是沒有檢測出缺陷的數(shù)量。針對每個種類的缺陷,計算出pr和re,畫出PR曲線。計算PR的面積即為AP,所有缺陷的平均精度為mAP。公式如下。
數(shù)據增強后的缺陷樣本總共6800 張,選取其中80%作為訓練集,用于訓練神經網絡,10%作為驗證集,10%作為測試集。
實驗所用GPU 為Gtx1070Ti,顯存8G。軟件部分采用Ubuntu18.04 系統(tǒng)。使用Python3.0 作為編程語言,采用Keras 作為深度學習框架。對于數(shù)據集的標注則采用Labelimg。
訓練結果如圖5所示。
圖5 改進算法Loss值
將改進后的YOLOv4 算法和原算法進行對比,對比結果如圖6 所示。同時對比了兩者的檢測時間和mAP,結果如表1所示。
表1 改進前后算法對比
圖6 各個缺陷檢測AP 值
本研究提出了基于改進的YOLOv4 的目標檢測算法,以德國DAGM2007 缺陷數(shù)據集為檢測樣本,通過數(shù)據增強的方式對缺陷樣本的數(shù)量進行擴充。通過實驗,對比了改進算法和原算法的檢測精度和速度,改進算法可以達到97%,每張圖片的檢測時間為49.57ms。改進之后的算法在保證檢測精度的同時,可以明顯提升檢測速度,從而提升檢測效率。