袁 野,譚曉陽
(1.南京航空航天大學計算機科學與技術學院,南京 211106;2.模式分析與機器智能工業和信息化部重點實驗室(南京航空航天大學),南京 211106;3.軟件新技術與產業化協同創新中心,南京 211106)
金屬制品是人類社會中重要的工具用品。在實際使用時,金屬制品表面常要求光滑無痕,一批產品的質量也會以表面缺陷占比來衡量。以冰箱為例,表面的缺陷一般表現為劃痕、凹痕、擦痕等,當冰箱表面出現缺陷時,該產品將被直接淘汰,當一條生產線中表面缺陷率過高時,也將極大地影響產品的整體質量。因此,冰箱表面的缺陷信息需要得到準確的檢測。
實際生產中如果采用人工檢測的方法,人力物力將被極大地浪費,所以需要用到自動化的檢測系統,應用機器視覺技術快速準確地獲得缺陷的位置。在早期的工作中,缺陷檢測常常應用到紅外、電磁、激光超聲等技術,對設備與環境的要求較高,且難以準確定位缺陷的位置,提取進一步的信息,所以在實際生產中實用價值不高。隨著深度學習的快速發展,缺陷檢測開始大范圍地使用深度學習技術,本次研究就是基于冰箱金屬表面的缺陷圖像進行缺陷識別。
然而,冰箱表面實際上是金屬面,有受光照影響大、缺陷特征不明顯、形狀多樣且密集的特點,且實際生產環境非常復雜,光照與拍攝設備的質量難以得到保證,所以檢測時難以定位以及分類,容易造成誤檢和漏檢,檢測難度較大。現有的主流目標檢測網絡都是效果非常好的網絡模型,但是在金屬表面缺陷的檢測中效果也不佳,所以基于金屬表面缺陷的特殊性質,需要對網絡做出針對性的改進。
針對金屬表面特點需要設計出針對性的網絡結構和數據處理算法,本文從已有的神經網絡模型中選取合適的模型,加以改進設計出了Metal-YOLOv3 模型。在YOLOv3(You Only Look Once version 3)算法原損失函數、先驗框(anchor)尺寸與非極大值抑制算法等方面進行改進,在保證了檢測速度的前提下大大提升了檢測精度。
該模型能對復雜情況下的冰箱金屬表面缺陷進行精確的檢測,提取出產品上的缺陷信息,同時也具有較快的檢測速度,而且對反光、灰暗的拍攝環境也具有良好的魯棒性,能在實際生產中應用。
本文的主要貢獻如下:
1)針對金屬表面檢測調整設計了Metal-YOLOv3 算法,算法高效簡單,準確性較高;
2)在與現有的檢測算法模型對比時,本文算法的準確性是最高的;
3)本文算法采用的基礎結構是YOLOv3,檢測與訓練速度比區域卷積神經網絡(Regional Convolutional Neural Network,R-CNN)[1-4]系列的模型快,抗干擾性強。
計算機視覺在生活與工業方面都有應用,其中目標檢測是非常熱門的應用領域。傳統的目標檢測是基于目標的紋理特征、顏色對比等光學特性設計對應的算法,但這樣的算法依賴的是人為總結的特征,在稍微復雜的應用場景中效果與檢測速度經常不盡人意,而且當使用的需求有變化時,需要時刻調整算法參數,非常浪費人力資源,所以目標檢測算法在設計之初并未受到重視。
隨著深度學習的迅速發展,基于深度學習的目標檢測算法在準確性、檢測速度等指標都已滿足應用需求,成功地替代了基于光學特性的傳統方法,成為了目標檢測算法的主流。在眾多基于深度學習的目標檢測算法中,以R-CNN 系列網絡為主要代表,此外還有單階段多邊框目標檢測算法(Single Shot multibox Detector,SSD)[5]、YOLO[6]、YOLOv3[7]等經典算法。
Faster R-CNN Faster R-CNN 模型分為兩個部分:第1 部分就是直接用普通分類網絡的卷積層來提取共享特征,后接一個感興趣區域池化層[2],在第1部分的最后一張特征圖上提取針對各個感興趣區域(Region of Interest,RoI)的特征圖,然后將所有RoI 的特征圖都交由第2 部分來處理。第2 部分是一個區域候選網絡(Region Proposal Network,RPN)[3],使用RPN 卷積網絡替代R-CNN 與Fast R-CNN 的選擇性搜索[8]模塊,將RPN 集成到檢測網絡中,得到一個統一的檢測網絡,用來對每一個RoI 進行分類和回歸。由此得到每個RoI 的類別和歸回結果。其中第1 部分的基礎分類網絡計算是所有RoI共享的,只需要進行一次前向計算即可得到所有RoI 所對應的特征圖。
YOLO 與R-CNN 系列的網絡模型不同,YOLO 訓練和檢測均是在一個單獨網絡中進行。R-CNN采用分離的模塊求取候選框,訓練過程因此也是分成多個模塊。在Faster R-CNN中,盡管RPN 與R-CNN 共享卷積層,但是R-CNN 將檢測過程分為兩部分:先得到候選框,再進行分類回歸,需要反復訓練RPN 和R-CNN。YOLO 將物體檢測分類問題與回歸問題作為同一個回歸問題進行求解,輸入圖像經過一次推斷,便能得到圖像中所有物體的位置和其所屬類別及相應的置信概率,大大提升了檢測的速度。
SSD SSD 算法結合了YOLO 與Faster R-CNN 的特點,在單獨的網絡中一次性回歸出物體的位置與類別,具有很快的檢測速度。與YOLO 不同的是SSD 提取了不同尺度的特征圖來做檢測,用較大尺寸的特征圖來識別小物體,小尺寸的特征圖則用來檢測大物體。此外,SSD 借鑒了Faster R-CNN,采用了不同尺度與長寬比的anchors,可以更大限度地匹配目標形狀,減少訓練難度。
YOLOv3 YOLOv3 算法是YOLO 系列的較新成果,相比YOLO,引入了多尺度融合的特征提取方式,采用類似FPN[9]的上采樣和融合方法,將不同尺度的特征圖融合起來,然后在不同尺度上劃分不同的anchors 尺寸,進行檢測分類。在網絡結構上,借鑒了殘差網絡(Residual Net,ResNet)[10]的思想,在網絡中加入了殘差模塊,用來代替池化層與全連接層。
目前針對金屬表面缺陷檢測的研究主要是基于激光超聲技術[11-14]、磁場技術[15-16]、紅外處理技術[17]、圖像處理技術[18-20]和神經網絡識別技術[21-22]。
文獻[11-13]將激光超聲技術應用在金屬表面缺陷檢測中;文獻[14]總結了激光超聲技術作用于缺陷檢測的機理;文獻[15]基于交變磁場研究了金屬表面缺陷的磁場特性;文獻[16]使用磁記憶方法進行金屬表面缺陷識別;文獻[17]將紅外技術引入缺陷識別中,取得了不錯的成果;文獻[18]結合多種光照條件與圖像處理技術,提供了金屬表面缺陷新的識別思路;文獻[19]使用了多種光照技術、3D 成像技術金屬表面的灰度變換,深度研究了鋼材表面缺陷的光學特征與內在規律;文獻[20]針對凹痕缺陷與擦傷缺陷采用灰度差分與小波變換算法,提取出了不同的特征信息;文獻[21]將陶瓷球表面的直方圖等特征提取出來,結合反向傳播(Back Propagation,BP)神經網絡進行了缺陷識別,能為金屬表面缺陷檢測提供新的切入點;文獻[22]將BP神經網絡引入到鋼材表面缺陷檢測中,取得了不錯的效果。
目前業內在金屬表面缺陷檢測中經常使用的是結合磁場、激光等技術實現的識別,對硬件與工作環境有著較高要求。本文使用的Metal-YOLOv3 網絡模型簡化了對檢測設備的要求,且能在復雜的環境下成功地識別出冰箱金屬表面缺陷,實現了對金屬表面缺陷的有效檢測。
本章對Metal-YOLOv3 在金屬表面缺陷檢測上的應用方法進行了詳細介紹,展示了Metal-YOLOv3 的網絡結構與實現細節。
實驗使用的數據集是車間中的冰箱表面劃痕圖像。在對劃痕圖像的觀察與標注過程中,本研究發現金屬表面缺陷特征多樣且不明顯,常有重疊或難以辨認的情況,會使得人工標注時出現標注的錯漏,所以首先需要剔除錯漏的標注。在檢測模型的訓練過程中,需要克服金屬表面缺陷特征不明顯、缺陷重疊以及金屬表面反光等影響檢測精度的情況;同時也需要保證模型的檢測速度、魯棒性能滿足實用要求。
基于數據集的特征及實用性需求,本文在YOLOv3 模型的基礎上,結合了最新提出的完整交并比(Complete-IoU,CIoU)損失函數[23]設計了Metal-YOLOv3算法。
如圖1,Metal-YOLOv3網絡結構分為兩個部分:
第一部分是Darknet-53 為主體的卷積層,用于提取圖像的特征。
第二部分是采樣與輸出結構,對圖像特征分3 次進行上采樣與輸出,在3 種尺寸的特征圖上按照置信度提取候選區域,與anchors 組成的預測值進行比較得出相應的檢測框與置信度,然后按照非極大值抑制(Non-Maximum Suppression,NMS)算法[24]剔除不符要求的候選框,最后按照CIoU 損失的計算方式來計算損失。

圖1 Metal-YOLOv3 模型結構Fig.1 Structure of Metal-YOLOv3 model
衡量檢測框精確度的指標一般是交并比(Intersectionover-Union,IoU),IoU 的定義如式(1),指檢測框與目標框的重疊面積與總面積的比值:

YOLOv3模型在不同尺度上的特征圖用anchors提取檢測框,然后與真實目標框計算損失,原損失函數如式(2),

其中:Lxy表示檢測框與目標框中心點距離的損失,Lwh表示檢測框與目標框高寬的損失,Lconf與Lclass表示置信度損失與類別損失。
可以看出,邊框的位置損失與尺寸損失是分開計算的,無法像IoU 那樣直接反映檢測框與目標框的重合度信息。金屬表面缺陷檢測對邊框的準確度要求很高,但對缺陷的分類沒有要求,而且檢測目標的尺寸、形狀與位置分布都非常復雜,所以原損失函數不適合本任務。
本文直接從IoU 信息中提取預測值和真實值的損失,但是直接用IoU 值計算損失有一定問題,當預測框和真實框沒有重合部分時,IoU 值簡單地等于0,無法反映出更多的信息。為了解決這一問題,文獻[23]提出了CIoU-Loss。在IoU 的基礎上加入了針對檢測框尺寸與位置兩個懲罰項,給出的損失函數設計如式(3):

其中:Mconf為每個檢測框的置信度,Ldis是基于檢測框與目標框位置差異計算的懲罰項,Lsize是基于檢測框與目標框尺寸差異計算的懲罰項,能幫助模型迅速收斂,直接反映出邊框的準確度。同時,CIoU 損失與置信度損失之間的權重也需要靈活調整,以充分適應金屬表面缺陷的特征,本文最終采用的損失函數如式(4):

在實驗中,可以發現引入的損失函數與權重調整能明顯提升模型檢測的精確度。
在YOLOv3 網絡結構中,卷積特征圖有3 個尺度的輸出,每個尺度下的圖像劃分為若干網格,在每個網格中用3 個anchors 來進行檢測。顯然,處于不同分布下的數據中,目標框的尺寸是滿足一定分布的,所以檢測過程中的anchors 的尺寸如果能更好地契合目標框尺寸的分布,對目標檢測的是非常有益的。本研究采用YOLOv2[25]中的方法,使用K-means 聚類算法來獲得合適的anchors值。
為了避免領域內邊界框重疊導致重復檢測的現象,YOLOv3 采取了NMS 算法來選取領域中分數較高的檢測框,能有效提升識別的精度。在可視對象類(Visual Object Classes,VOC)數據集與一般數據類(Common Objects in COntext,COCO)數據集上,采用的NMS 算法閾值為0.5;但與VOC 和COCO 數據集不同,金屬表面缺陷常有重疊連貫的現象,特征也更加不明顯,所以在目標附近產生的檢測框會較多,若算法閾值太大會有明顯的重疊率,所以在本模型中采用的算法閾值為0.35。經過實驗表明,該閾值設定明顯減少了檢測框重疊現象,有效地提升了檢測精度。
本文所用的數據是某冰箱制造企業提供的冰箱表面缺陷樣本,但人工采集缺陷樣本的成本較高,所以樣本數量較少。在深度卷積神經網絡的訓練過程中,若樣本數量不充足,便會影響模型的訓練效果,無法達到正常的訓練目標。針對本樣本集的圖像特征,本研究發現對圖像垂直翻轉、圖像水平翻轉、圖像旋轉、隨機填充與尺度變換等數據擴充方式并不會影響樣本特性,所以本文采用了上述的樣本擴充方式,將樣本集數倍擴充,提升了樣本的多樣性。通過這一操作,能有效地提升識別精度,也能避免過擬合現象的出現。
本實驗采用標記工具在各缺陷四周標記出目標框的四個頂點,轉換為4 個二維坐標并按格式記錄到文檔中,能用于模型訓練與邊框繪制中。
本次模型訓練過程中,原始數據共有750 張帶缺陷樣本與750張無缺陷樣本,樣本集按照8∶1∶1的比例被劃分為訓練集、驗證集與測試集。在整個訓練過程中,每次提取訓練樣本都以隨機參數進行數據擴充,將樣本數提升了約800 倍。因為本數據集與COCO 數據集的識別特征相似,所以本文選取了COCO 數據集訓練出的模型來進行遷移學習。訓練初期,設定初始學習率為0.001,將COCO 預訓練模型的最后兩層凍結訓練9 000輪。獲得充分訓練后解凍最后兩層,然后設置初始學習率為0.000 1,訓練30 000 輪。在整個訓練過程中,當損失連續3 000 輪未降低時,令學習率降低至原來的3/10,連續10 000輪未降低時,提前結束訓練。
Metal-YOLOv3網絡在3個卷積層輸出特征圖與對應的檢測框,與訓練數據比對計算相應的損失,負反饋調整網絡的參數,最終達到學習訓練的目的。
經過充分的訓練,用測試集對模型性能進行驗證,可以發現Metal-YOLOv3 能有效地識別冰箱金屬表面缺陷,驗證了該模型的有效性。
本章用冰箱金屬表面缺陷樣本集對Metal-YOLOv3 模型的性能進行了詳細的驗證分析。
本節使用同樣的樣本集,在當前主流的幾種目標檢測算法上進行相同的訓練,對比各模型所得到的效果。本文選取了Metal-YOLOv3 的基礎模型YOLOv3、SSD 模型和Faster RCNN 模型與本文的Metal-YOLOv3 模型進行實驗對比。基于相同的冰箱金屬表面缺陷樣本集,在3 種不同的模型上各自訓練至少30 000輪,然后在同樣的測試集上進行檢測,對比檢測效果。如圖2,可以發現Metal-YOLOv3 模型的檢測效果比YOLOv3、Faster R-CNN模型更好。

圖2 不同網絡模型的檢測結果Fig.2 Detection results of different network models
為了綜合評價模型性能,在檢測精度外,也要考慮到檢測速度,本文選取了業內用于目標檢測任務的主流網絡模型YOLOv3[7]、Faster R-CNN[3]及SSD[4],同本文的Metal-YOLOv3模型在相同的冰箱金屬表面缺陷樣本集對比檢測精度和檢測速度,并選取平均精確度(Average Precision,AP)和每秒幀數(Frame Per Second,FPS)衡量算法精度和速度。經過實驗,得到各檢測算法在金屬表面缺陷驗證數據集與測試數據集上的性能對比(如表1)。從表1中可以看出,Metal-YOLOv3的檢測精度略優于Faster R-CNN,是檢測精度最高的模型,而且檢測速度遠勝于Faster R-CNN,算法性能最優。

表1 不同檢測算法性能對比Tab.1 Performance comparison of different detection algorithms
Metal-YOLOv3 模型的損失函數主要由置信度損失和CIoU 損失兩部分組成,鑒于金屬表面檢測任務的特殊性,靈活地調整這兩部分的權重才能最有效地滿足實際檢測需求。本文將損失函數設置為式(4),調整兩部分權重的比值,對比訓練后模型的檢測結果。
從表2 可以看出,λ1/λ2為10 時模型的檢測精度最高,能顯著提升網絡模型的性能,可以證明損失權重的設置對Metal-YOLOv3網絡模型的檢測精度具有非常重要的作用。

表2 不同損失權重下檢測精度對比Tab.2 Accuracy comparison under different loss weights
金屬表面的光學特性非常多樣,所以在實際的缺陷檢測過程中,檢測圖像常有局部反光、明暗程度不一等特殊現象。
為了驗證本算法在實際檢測過程中的實用性,需要進行進一步的魯棒性實驗。本實驗選取了這類特殊的場景進行驗證,經過對檢測結果(如圖3)的對比,Metal-YOLOv3 網絡模型在強烈反光與光線過暗的情況下表現亦優于YOLOv3 與Faster R-CNN 模型,可以說明Metal-YOLOv3 網絡模型具有更好的魯棒性,實用價值與泛化性能優于YOLOv3 與Faster RCNN模型。

圖3 檢測模型的魯棒性對比Fig.3 Robust comparison of detection models
本文針對冰箱金屬表面的缺陷檢測問題設計了Metal-YOLOv3 網絡模型,有效便捷地實現了缺陷檢測功能。為了算法的實用性與便捷性,提升時間效率,本文采用了YOLOv3的基礎框架,保證了檢測速度;同時針對金屬表面紋理特征不明顯、光學特性多樣、缺陷特征模糊、形狀多樣且重疊度高的特點,本文采用了CIoU 損失函數并改進了非極大值抑制算法,彌補了YOLOv3模型anchors數量較少、二范數損失不準確的缺點。最終的實驗結果表明本文的模型不僅有較好的檢測速度,在檢測精度上也優于現有的主流目標檢測算法。鑒于本模型良好的泛化性能與實用性,可應用于實際的生產過程中。