徐 鏹,朱洪錦,范洪輝,周紅燕,余光輝
1.江蘇理工學院 機械工程學院,江蘇 常州 213001
2.江蘇理工學院 計算機工程學院,江蘇 常州 213001
隨著工業技術的發展,自動化缺陷檢測的研究越來越受到人們的重視。當鋼板或零件表面存在一些瑕疵和缺陷,如磨損、裂紋、碰傷、麻點、劃傷和變形等,將會導致機器使用過程中產生不正常的振動和噪聲,加快缺陷面與空氣接觸后進一步的氧化與磨損,嚴重時甚至會引起機器的損壞和一些事故性的人員傷亡情況。而傳統的人工裸眼檢測,存在勞動強度大、工作效率低、產品成本較高的問題,且容易受到檢測人員在員工素質、檢測經驗、肉眼分辨率和眼部易疲勞等諸多因素影響[1]。因此,許多人提出了各種檢測表面缺陷的方法,具體可以分為兩類:傳統機器視覺檢測法和深度學習檢測法。
傳統機器視覺檢測法是先利用工業相機采集圖像,經過傳統圖像方法處理后,再利用機器學習方法得到想要的結果。例如郭慧等人[2]提出了由計算機算法處理得到缺陷的特征樣本,再利用支持向量機(SVM)模型對鋼板表面缺陷進行類型識別。例如汪以歆等人[3]利用基于機器視覺的比對檢測算法,來檢測物體表面缺陷。這些方法的優點是速度快,對特定缺陷精度高,但受光照和人為影響較大,對圖片特征提取能力弱,應用面小。
近年來,國家鼓勵大力發展人工智能技術,深度學習的一系列方法也被引入到表面缺陷檢測中。深度學習能夠通過卷積神經網絡提取缺陷圖片的特征并進行學習,再將學習后的模型應用到相似缺陷的檢測中,精度高,速度快,且能夠適應不同類型的缺陷。比較流行的深度學習算法可以分為兩類:一類是Faster-RCNN[4]、Mask-RCNN[5]等基于區域的目標檢測算法,這類算法雖然精度高,但由于其將缺陷特征提取、缺陷區域建議網絡、缺陷邊界框回歸和缺陷分類整合在一個網絡中,導致速度很慢,實時性不能保證。另一類是SSD[6]、YOLO[7]等利用回歸思想直接標出目標所在圖片位置和類別的算法,這類算法很大程度上彌補了基于區域的算法,在速度上有很大的提升,精度上略微降低,有很大的應用前景。例如張廣世等人[8]采用密集連接網絡(DenseNet)結構代替原有的網絡結構,提高特征提取能力,取得了不錯的缺陷檢測能力。
本文也將使用深度學習的方法對鋼板表面缺陷進行檢測,對YOLOv3[9]整體網絡進行改進,使用輕量級MobileNet[10]網絡代替原有模型中的Darknet-53網絡,以減小網絡參數量;構建齒輪缺陷數據集并進行數據增強以防止過擬合;加入空洞卷積來提高對于小尺寸缺陷的檢測能力;利用Inceptionv3[11]結構增加網絡深度和寬度的同時減少參數。本文整體結構分為以下四大部分:網絡原理介紹,網絡結構改進,實驗結果分析和改進討論。
YOLOv3[9]是基于 YOLO[7]和 YOLOv2[12]算法 改 進而來。
YOLO網絡不同于Faster-RCNN[4]等網絡,而是將目標檢測問題轉化成邏輯回歸問題,將圖像分割成不同網格,每個網格負責相應的物體,使得支持多標簽對象在保持精度下,檢測速度更快。
YOLOv3 采用了Darknet-53 的網絡結構作為圖像特征提取主干網絡,它是借鑒殘差網絡ResNe(tResidual Network)[13]的做法,在層與層之間設置快捷鏈路,適當地跳過卷積,解決了在逐步加深網絡時出現模型難以優化的問題,這樣可以提取出更多圖像上的特征。YOLOv3摒棄了YOLOv2采用pass-through結構來檢測細粒度特征,而使用特征金字塔(FPN)的多尺度檢測方法,結合殘差網絡將圖片轉化成三個不同尺度的特征圖來檢測大中小三類物體。YOLOv3的網絡結構如圖1所示。

圖1 YOLOv3網絡結構圖
由于越卷積圖像表征信息丟失越多,YOLOv3吸取了YOLOv2采用K-means聚類得到先驗框的尺寸,為每種下采樣尺度設定3 種先驗框,總共聚類出9 種尺寸的先驗框,分別為(10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373×326)。在最小的13×13特征圖Scale1上應用(116×90),(156×198),(373×326)檢測較大的物體。在中等26×26特征圖Scale2 上應用中等的先驗框(30×61),(62×45),(59×119)來檢測中等大小的對象。而在最大的52×52特征圖Scale3上采用(10×13),(16×30),(33×23)檢測較小的物體位置。
為了使網絡在減小網絡參數的同時保持精度,并提升實時性,對原網絡做了以下調整,主要包括三點修改。
由于YOLOv3 仿照ResNet-53 結構提出Darknet-53網絡,雖然可以提取有效的特征信息,但該網絡結構復雜,導致參數過于復雜,從而在實用性上并不理想。因此利用MobileNet可以有效地減少參數的同時獲得一定的精度。
3.1.1 使用MobileNetv1作為主干網絡
MobileNetv1[10]由谷歌在2017 年提出,用于將CNN網絡輕量化,使之可以轉嫁于移動設備或者嵌入式設備中,其中亮點為提出了深度可分離卷積(Depthwise Separable Convolution)。深度可分離卷積是將傳統卷積分為Depthwise 卷積和Pointwise 卷積兩步。假設用DK×DK表示卷積核尺寸,用DF×DF表示輸入的特征圖尺寸,分別用M、N表示輸入和輸出的通道數,當步長為1且存在padding時,傳統卷積的計算總量是:

而深度可分離卷積計算量為:

兩者相互比較,計算量縮小為原來的:

MobileNetv1采用Relu6作為激活函數,圖2是傳統卷積,圖3是深度可分離卷積。使用更多的Relu6,既增加了模型的非線性變化,又提高了模型的泛化能力。改進YOLOv3網絡中Conv2D均采用Relu6函數。

圖2 傳統卷積

圖3 深度可分離卷積
參考Darknet-53將MobileNetv1網絡分割成三塊不同特征提取圖,第一個提取層提取出52×52×256特征圖用于檢測較小物體,第二個提取層提取出26×26×512特征圖用于檢測中等物體,第三個提取層提取出13×13×1 024特征圖用于檢測較大物體。保證精度的同時又提高了網絡的實時性。
3.1.2 使用MobileNetv2作為主干網絡
MobileNetv2[14]是在 MobileNetv1 上做的改進,是在2018 年提出來的,相對于MobileNetv1 主要做了兩點改進:
(1)雖然MobileNetv2和MobileNetv1都是采用DW(Depth-wise)卷積搭配PW(Point-wise)卷積的方式來提取特征,但為了避免Relu對特征的破壞,MobileNetv2在DW 卷積前面加入了一個PW 卷積并且去掉了第二個PW的卷積,即線性瓶頸(Linear Bottlenecks)結構。
(2)參考ResNet的結構設計出了逆殘差結構(Inverted residuals),在3×3網絡結構前利用1×1卷積升維,在3×3網絡結構后再利用1×1卷積降維。先進行擴張,再進行壓縮。
3.1.3 使用MobileNetv3作為主干網絡
MobileNetv3[15]是MobileNet 的最新版本,是在2019年提出來的,作為輕量級網絡它的參數量還是一如既往地小。作為第三版的它主要綜合了以下特點:
(1)吸收以前版本的優點,結合使用了Mobilenetv1的深度可分離卷積和Mobilenetv2的具有線性瓶頸的逆殘差結構。
(2)引入了MnasNet[16]中基于擠壓和激勵(Squeeze and Excitation)結構的輕量級注意力模型,可以更好地調整每個通道的權重。
(3)發現swish 激活函數能夠有效提高網絡的精度,表示如下:

然而,由于swish的計算量太大,提出了h-swish(hard version of swish)公式表示如下:

如圖4所示,這兩個函數從函數圖像上可以看出兩者之間很相似。

圖4 swish和h-swish曲線圖
空洞卷積是在標準的卷積核中注入空洞,以此來增加特征圖的感受野。圖5 是傳統卷積運算,圖6 是空洞卷積運算。可以明顯地看出空洞卷積既可以擴大感受野,也使卷積時捕獲了多尺度的上下文信息,更利于缺陷部位的檢測。在改進的YOLOv3 網絡中加入一個超參數稱之為dilation rate(膨脹率),在第一個特征提取圖上加入1 倍的rate,在第二個特征提取圖上加入2 倍的rate,在第三個特征提取圖上加入4 倍的rate,以此使圖片缺陷部位更加明顯。

圖5 傳統卷積運算

圖6 空洞卷積運算
Inceptionv3[11]模型是谷歌Inception 模型的第三代,其模型結構與Inceptionv2模型發表在同一篇論文里,兩者模型結構差距不大,相比其他神經網絡模型,Inception模型最大的特點在于將神經網絡層與層之間的卷積運算進行了拓展。Inception 網絡采用不同大小的卷積核卷積,使得網絡層存在不同大小的感受視野,最后拼接起來達到不同尺度的特征融合。結合Inceptionv3 中三種模型,將YOLOv3原網絡最后一層中Conv2D 3×3卷積改為Inception 3×3 卷積結構。主要利用1×3 的卷積和3×1 的卷積代替原有的3×3 卷積,再利用兩個1×1 卷積融合后得到Inception結構,相對于以前網絡的數據參數量有大幅度的減小。其結構如圖7所示。

圖7 修改Inceptionv3結構圖
結合以上特點得到三種修改的YOLOv3 網絡結構如圖8所示。
YOLOv3-mobileNetv2 結構和YOLOv3-MobileNetv3結構只需仿照YOLOv3-MobileNetv1 結構選取其中的三個尺度即可,圖9 和圖10 為 YOLOv3-MobileNetv2 網絡與YOLOv3-MobileNetv3網絡結構的簡略版本。

圖8 YOLOv3-MobileNetv1結構修改圖
本實驗在Windows10 操作系統下完成。計算機CPU 為i7 9700;內存為16 GB;GPU 為RTX2070s,其顯存為8 GB;運行軟件為Anaconda3.6 平臺下的VScode(Visual Studio Code);Python版本為3.6.4;安裝了Cuda10.0和Cudnn7.5.1 幫助GPU 進行加速運算,同時在軟件中安裝 Tensorflow1.13.1、Opencv4.1 和 Numpy1.14.2 等一系列的第三方的庫來支持代碼的運行。
4.2.1 數據選擇
本實驗選用德國DAGM 鋼板表面缺陷數據集,該數據集總共有10 大類缺陷,有訓練集和測試集。選取其中三類缺陷中的訓練集用于訓練,將碰傷命名為class1、麻點命名為class2,并將劃傷命名為class3,每類1 150張圖片(含缺陷150張),共計3 450張圖片。由于圖片為512×512 png格式,不利于訓練,用代碼將圖片分批次轉換成416×416 jpg 格式,用于神經網絡的訓練。所有圖片中3 000張完好,450張圖片存在缺陷,將其打亂順序放入同一個文件夾,再按照訓練集和測試集9∶1的比例,選出前3 105張作為訓練集,后345張作為測試集。

圖9 YOLOv3-MobileNetv2結構修改圖

圖10 YOLOv3-MobileNetv3(large)結構修改圖
4.2.2 數據標注
數據集的標注比較耗費時間和專注力,需要獲得數據集圖片的各種缺陷信息。可以利用labelImg 軟件對圖片進行人工標注,將圖片的長寬和深度,缺陷框的xmin、ymin、xmax和ymax等信息存入到.xml文件中,適用于神經網絡的訓練。將訓練集和測試集中存在缺陷的450 張圖片進行數據標注,生成.xml 文件,最后利用格式轉換程序得到包含圖片路徑、名稱、缺陷框標簽和位置的.txt訓練文件。
按照修改部分改進網絡,從而完成網絡搭建,實驗一共訓練4個網絡模型:YOLOv3,YOLOv3-MobileNetv1,YOLOv3-MobileNetv2,YOLOv3-MobileNetv3。每個網絡訓練800 epochs(輪次),共計約22小時。每個網絡使用如下方法訓練:先將網絡的最初學習率調為0.01,batch_size(一次訓練所選取的樣本量,其大小影響模型優化和速度,根據網絡參數和GPU內存大小進行調整)調為8,讓loss(損失值)大范圍下降訓練300 epochs,得到初始loss值。再將學習率調低至0.001,讓loss適當范圍浮動訓練300 epochs,最后將學習率調至0.000 1,讓loss 小范圍浮動訓練200 epochs 得到最終的訓練集損失值。圖11 為YOLOv3-MobileNetv3 訓練集的每輪epochs下loss下降圖,橫坐標為epochs值,縱坐標為loss值;圖中的(1)和(2)為截取部分epochs放大圖。

圖11 YOLOv3-MobileNetv3的網絡訓練損失函數變化圖
由圖11(1)和(2)可以看出網絡YOLOv3-MobileNetv3在50 epochs到200 epochs時下降很快,在400 epochs到600 epochs時趨于穩定,loss值在4.0到3.0之間,說明神經網絡訓練是有一定效果的,再調低學習率對訓練效果影響不大,網絡最終收斂在3.1左右。
重復使用以上方法訓練的YOLOv3-MobileNetv1最終 loss 為 3.2,YOLOv3-MobileNetv2 最終 loss 為 3.4。由于YOLOv3 采用Darknet-53 結構,導致參數量較大,顯存容量不夠,只能將三次的batch_size縮小,都調整成4,訓練得到的loss為4.1。得到的權重文件大小與訓練時間如表1所示。

表1 網絡權重文件和訓練時間對比表
由表1 可知,在加入了MobileNet 類的結構作為主干網絡,并用Inceptionv3 減小參數總量后,使權重文件比原先縮小了約88%,訓練時間也縮短了一大半。更小的權重文件意味著更簡單精巧的網絡結構可以移植到性能差一點的移動端平臺上,在不丟失精度的情況下也可以完美地運行得到想要的結果。
調用訓練好的YOLOv3-MobileNetv3 權重檢測測試集的缺陷圖片,得到的檢測圖片如圖12~圖14所示。

圖12 第一類缺陷圖

圖13 第二類缺陷圖

圖14 第三類缺陷圖
從圖12~圖14的幾組圖片可以看出,訓練好的模型對缺陷圖片有較好的檢測結果。
文章采用平均檢測準確率(mAP)和幀率(FPS)對檢測算法進行對比。
4.5.1 mAP對比
在目標檢測中,利用某類模型準確率P(Precision)、召回率R(Recall)計算出平均準確率AP(Average Precision),最后把均值平均精度mAP(mean Average Precision)作為目標檢測模型的性能評估標準。利用以下公式:

本文設置一個IOU(交并比)。IOU 是模型所預測的檢測框和真實框的交集和并集之間的比例,設置IOU閾值為0.5。
TP:檢測框中正確,且IOU大于閾值的。
FP:檢測框中錯誤,且IOU小于閾值的。
FN:真實正確的框,卻沒有被模型檢測到的。
參考以上公式,本文選取德國DAGM 鋼板表面缺陷數據集中三類測試集缺陷圖,每類缺陷各100 張,共計300 張缺陷測試圖,打亂順序,然后將圖片由.png 格式轉換成.jpg 格式,利用labelImg 軟件標注出缺陷位置。先利用訓練好的.h5格式的權值文件加載到模型中測試圖片,再與標注后的圖片進行對比,如圖15所示。

圖15 標注圖片與檢測圖片對比圖
運用上述方法得到四種網絡結構各類缺陷的AP圖,平均準確率AP 即圖中陰影部分的面積占比。其中橫坐標是召回率,縱坐標是某類模型準確率。例如YOLOv3中class1缺陷AP圖如圖16所示。

圖16 YOLOv3中class1缺陷的AP圖
具體每類網絡中各類缺陷的AP數值如表2所示。

表2 網絡各類缺陷AP對比表
再由式(8)可得到四種網絡模型各自的mAP值:

其中YOLOv3-MobileNetv3模型的mAP圖如圖17所示。

圖17 YOLOv3-MobileNetv3的mAP圖
具體各類網絡mAP數值如表3所示。

表3 網絡mAP對比表
由表3 可知,由于 YOLOv3 采用 Darknet-53 作為特征提取層,參數量較大,在該數據集上并沒有較好的表現,mAP 值僅為 78.49%。YOLOv3-MobileNetv1 網絡mAP 為95.39%,較于 YOLOv3 提升 21.5%,YOLOv3-MobileNetv2 網絡 mAP 為 96.5%,較 于 YOLOv3 提升22.9%。YOLOv3-MobileNetv3 由于它的特征提取主干網絡MobileNetv3 吸收了MobileNetv1 和MobileNetv2的優點,加入孔空洞卷積并采用Inceptionv3 優化結構,mAP 為96.75%,相比于YOLOv3 提升了23.3%,具有較好的精度值。
4.5.2 FPS對比
FPS 是圖像里的定義,是指畫面每秒傳輸幀數,即視頻中的畫面數。本文使用的顯卡為RTX2070s,其四種網絡處理圖片速度的對比結果如表4所示。

表4 網絡處理速度對比表
由表4可以明顯看出YOLOv3修改后的網絡在處理圖片速度上有著較為明顯的提升,YOLOv3-MobileNetv2性能在改進的網絡中最差為每秒40幀,YOLOv3-MobileNetv3性能為每秒43幀,雖不如YOLOv3-MobileNetv1的每秒47.6幀,但相比于YOLOv3每秒提高了21幀,可以滿足流暢的視頻處理,對于性能差一點的平臺有更好的移植性。
綜合以上實驗結果,YOLOv3-MobileNetv3 在mAP和FPS上均有不錯的效果,不但比YOLOv3網絡提取特征模型參數量大大減小,訓練時間也大幅度縮短,比YOLOv3更具有在工業上應用的前景。
利用MobileNet系列網絡作為YOLOv3特征提取網絡,上述實驗已證明其可行性。
由圖18 可以看出圖片送入MobileNet 網絡中卷積出的圖片輸送到FPN(特征金字塔)中,通過三個檢測層分別檢測出大目標、中目標和小目標缺陷。在保持精度的同時提高了幀數,有一定運行效率,在工業上有應用前景。

圖18 MobileNet卷積網絡作用圖
以分類為class3的劃痕缺陷為例,捕獲部分網絡提取層中信息,以驗證空洞卷積效果。如圖19所示,圖(a)為缺陷原圖,圖(b)為加入空洞卷積后截取一個通道的圖片,可以明顯看出適當加入空洞可以擴大感受野,圖(c)所示該通道網絡最后卷積圖,可以看出缺陷部位信息明顯,易于網絡的訓練與檢測。

圖19 空洞卷積效果圖
Inception在網絡中采用非對稱卷積進行修改,即將在原有YOLOv3網絡最后一層中3×3卷積分解為3×1和1×3 卷積,這樣做可節省33%([(9-6)/9])的計算量,再利用兩個1×1 卷積疊加構成Inception 結構。利用此結構既加深了網絡深度,也減少了參數總的計算量。以分類為class1的碰傷缺陷為例,驗證該結構下不同大小感受視野下不同尺度的特征融合部分仿真結果,如圖20所示。

圖20 Inception結構卷積效果圖
最后檢測效果如圖21所示。

圖21 最終檢測效果圖
結合圖20 和圖21 可以看出,經過Inception 結構卷積后左上角的缺陷特征明顯,證明了Inception結構對缺陷部位檢測有促進作用,具有可行性。
本文使用一種改進后的YOLOv3 網絡對工業上鋼板表面進行缺陷檢測,修改了德國DAGM 鋼板表面缺陷數據集,使之適應網絡的訓練;使用輕量級MobileNet網絡來代替YOLOv3原有網絡中的Darknet-53網絡,適當減少參數量的提取;加入空洞卷積,提高網絡對小目標缺陷的檢測能力;在網絡結構最后一層卷積中加入了Inception 結構,可以進一步減少參數總量并加深網絡。從實驗結果可以知道,修改后的YOLOv3在精度和速度上都有明顯的提升。下一步工作是優化模型算法,將網絡移植到性能更差的移動端設備上。