王海航,韓文花,王 坤
(上海電力大學 自動化工程學院,上海 200090)
近年來,隨著計算機視覺技術的發展,在面對大量金屬缺陷數據時,傳統的漏磁檢測[1]、渦流檢測[2]、邊緣檢測[3]等檢測方法,容易出現漏檢、誤檢情況,檢測效率較低,而基于深度學習的計算機目標檢測技術[4]能夠準確地檢測金屬表面缺陷。其中兩步(two-stage)檢測算法有Fast R-CNN[5]、Faster R-CNN[6]、Mask R-CNN[7]、AM-R-CNN[8]等,此類算法首先通過候選網絡(region proposal network,RPN)確定候選框,然后使用網絡對候選框內物體進行識別,檢測精度雖然較高,但檢測速度較慢。通過在快速區域卷積網絡(faster region-based convolutional network,Faster R-CNN)中引入多級感興趣區域(regions of interst,ROI)池化結構,對零件表面缺陷進行檢測[9],可將3種零件的mAP值達到97%左右,但檢測速度FPS僅有4.9,檢測速度較慢;使用多重特征融合網絡(multilevel feature fusion network,MFN)檢測缺陷目標詳細位置[10],在NEU-DET金屬數據集上的mAP達到82.3%,檢測速度FPS為20;將特征融合和級聯網絡結合的Faster R-CNN檢測金屬表面缺陷[11],檢測精度可達90%以上,FPS僅有12.26。以YOLO系列[12-14]、SSD[15]為主的單步(one-stage)檢測算法,直接使用先驗框對目標物體進行檢測,速度較快,精度會略微下降。在Yolov3主干網絡淺層增加一組先驗框[16],對金屬表面缺陷檢測的mAP達到80%,FPS達到50;通過注意力級聯網絡對金屬表面缺陷進行檢測[17],mAP值達到81.8%;在SSD網絡中引入注意力機制[18],對紡織物表面缺陷檢測,mAP值達到79.8%,FPS為19.2。以上的方法雖然檢測效果尚可,但是依舊存在漏檢、檢測速度慢的情況。
為了進一步提高深度神經網絡檢測缺陷表面的精度與速度問題,結合YOLOX算法對金屬表面缺陷檢測。在YOLOv4主干網絡CSPDarknet中加入Focus網絡,避免了下采樣過程中特征信息丟失問題;加強特征融合層采用PANet結構,增強網絡的表征能力;通過消融實驗驗證Anchor-Free機制、SimOTA動態正樣本匹配方法對檢測速度影響;通過解耦頭與耦合頭實驗,驗證解耦頭對算法收斂速度影響;并在金屬表面缺陷數據集上進行了實驗測試,結果表明,YOLOX算法對金屬表面缺陷具有不錯的檢測效果。
圖1是YOLOX的全部網絡框架,由主干網絡CSPDarknet、加強特征提取網絡、YOLO Head預測頭組成。
主干網絡是由CSPNet和Darknet框架組合而成的CSPDarknet網絡,主干網絡由1個Focus層、1個基本卷積塊、4個殘差塊串聯組成,具有5個主要特點:殘差網絡Residual、CSPnet網絡結構、Focus網絡結構、SiLU激活函數、SPP結構。
殘差網絡Residual主干部分是一次1×1的卷積和一次3×3的卷積;殘差邊部分不做任何處理,直接將主干的輸入與輸出相結合,其特點是容易優化,能夠通過增加相當的深度來提高準確率,殘差塊的跳躍連接,在提高網絡收斂速度同時,緩解了在深度神經網絡中增加深度帶來的梯度消失問題。
CSPNet網絡結構如圖2所示,圖2(a)、圖2(b)分別為ResNe(X)t結構、 CSPResNe(X)t網絡,CSPNet將原來殘差塊的堆疊進行了一個拆分,主干邊由一個基本卷積塊和殘差塊的堆疊組成,副邊僅經過一個基本卷積塊連接到最后。將CSPNte應用到YOLOX主干提取網絡中,不僅增強了圖片特征提取能力,而且降低了內存成本,使模型在保持輕量化同時,而不失準確性。

圖2 CSPNet網絡結構
Focus網絡結構如圖3所示,在一張三通道的圖片中每隔一個像素拿到一個值,這時獲得了圖中的4個獨立的特征層,對4個獨立特征層進行堆疊,將寬高信息集中到通道信息,拼接后的特征通道相對于原來三通道變成十二通道。將3個通道中的一個通道做了下采樣,能夠減少圖片信息的丟失,提升模型運行速度。

圖3 Focus網絡結構
將激活函數改進為SiLU激活函數,其函數關系式、函數圖像分別如式(1)、圖4所示,函數圖像是平滑的ReLU激活函數,結合Sigmoid函數和ReLU的優點,SiLU具備無上界有下界、平滑、非單調的特性,SiLU在深層模型上的效果優于ReLU

圖4 SiLU函數圖像
(1)
SPP結構(圖1中SPPBottleneck部分)應用在主干網絡的最后一個殘差塊,經過一個基本卷積塊后,將每個特征圖分割成4種不同網格分別進行池化操作。在不同尺寸特征圖上提取特征,提高了特征提取的精度,訓練圖像尺寸的多樣性比單一尺寸的訓練圖像更容易使得網絡收斂,增加網絡感受野。
特征金字塔網絡(feature pyramid networks,FPN)選擇雙向PANet結構,該結構主要特點是自底向上和自頂向下的雙向融合網絡結構,將“short-cut”引入到最底層和最高層之間,減短了層與層之間的距離,加快了模型運行時間。從主干網絡的第二、第三、第四個殘差塊提取特征信息,將提取底層特征信息經過卷積、上采樣分別與其它特征層屬性進行特征融合,經過下采樣、卷積的自頂向下的結構,將融合后特征信息與下采樣同尺寸特征進行再融合,獲取圖片的一些更深的語義特征。在預測頭部分,根據獲取的3個不同尺寸特征圖片,依次對大、中、小目標進行目標檢測,根據置信度對錨框進行篩選,確定目標物體的最佳位置。
YOLOX預測頭結構如圖5所示,與傳統YOLO Head的耦合預測頭相比,YOLOX預測頭采用輕量解耦形式,對每一特征圖使用1×1卷積調整特征圖通道數,將物體類別判斷、錨框坐標回歸和特征點是否具有物體劃分為兩個分支。每個分支經兩個3×3卷積、一個1×1卷積進行特征提取、通道整合,單獨對類別、錨框坐標、特征點是否具有物體進行預測,將3部分預測結果組合到一起,解耦檢測頭機制提升了YOLOX的性能和收斂速度,為檢測一體化帶來可能。錨框、類別損失函數分別使用IOU損失函數、二分類交叉熵損失函數(binary cross entropy loss,BCELoss),計算公式如式(2)、式(3)所示

圖5 YOLOX預測頭結構
Lreg=-log(IOU(Bgt,Bpred))
(2)
(3)
其中,Bgt、Bpred分別為真實框位置、預測框位置;ti為真實在每幅圖像中的one-hot向量,pi為預測類別的分數。
基于Anchors目標檢測器為獲得良好的性能,需要在訓練前通過聚類分析獲得一組最優先驗框。聚類得到的先驗框一般不能通用,而且錨框會增加預測頭的計算復雜度以及生成結果的大小,Anchor Free機制可以很好地改善這些問題。Anchor Free機制將每個位置的預測個數從原來的3個減少到1個,直接預測錨框的4個值,即網格左上角偏移量、預測框的寬和高。Anchor Free機制能夠降低檢測器參數量,提升模型檢測速度。
對于一個CNN目標檢測器,一個好的樣本匹配方法對模型的性能具有很大的提升,在YOLOX中,使用了SimOTA這種高級動態正樣本分配方法。對于每個真實框需獲取空間位置與所有特征點,保證特征點落在物體真實框內、特征點距離物體中心較近。通過Cost代價矩陣表示每個真實框和特征點之間的代價關系,主要由3部分構成:真實框與特征點預測框重合程度、真實框與當前特征點預測框種類預測準確度、真實框與特征點距離較近。
Cost代價矩陣中元素可由式(4)計算獲得,Cost代價矩陣的目的是自適應找到當前特征點應該去擬合的真實框,重合度越高越需要擬合,分類越準越需要擬合,在一定半徑內越需要擬合,在SimOTA中,不同目標設定不同的正樣本數量(dynamick)
(4)

SimOTA具體流程如下所示:
(1)計算每個真實框與當前特征點預測框的重合程度;
(2)獲取重合度最高的10個預測框與真實框的IOU和,得到每個真實框的k;
(3)計算每個真實框和當前特征點預測框的種類準確度;
(4)判斷真實框的中心是否落在特征點的一定半徑內;
(5)計算Cost代價矩陣;
(6)將Cost最低的k個點作為該真實框的正樣本。
實驗環境是在windows10系統下運行,CPU是Core(TM)i7-10700,內存大小為32 G,顯卡為NVIDIA GeForce RTX 2070 SUPER,顯存大小為8 G,使用Python語言在Pycharm軟件上進行編程,使用的框架為pytorch。


圖6 6種缺陷類型圖片
在目標檢測中,為了對模型的檢測性能進行評估對比,一般使用平均準確率(average precision,AP)和平均準確率均值(mean average precision,mAP)兩個指標評價模型精度,使用網絡每秒檢測圖片數量(frames per second,FPS)評價模型檢測速度。平均準確率由精確率(P)、召回率(R)計算獲得,式(5)~式(7)分別為精確率、召回率、平均準確率計算公式
(5)
(6)

(7)
其中,TP為預測對的正樣本個數,FP為預測為正樣本但實際為負樣本個數,FN為預測對的負樣本個數。
針對解耦檢測頭對模型收斂速度影響問題,使用YOLOv3模型分別在解耦、耦合預測頭下測試收斂速度,圖7為兩種檢測頭平滑后的模型損失隨迭代次數變化的曲線。從曲線明顯看出,在主干模型相同的前提下,耦合檢測頭在迭代次數達到130次左右,驗證損失大約為6.68時,基本保持不變;解耦頭卻在迭代次數100次左右時,驗證損失達到6.60左右后不再下降,從而驗證解耦頭能夠加快模型收斂速度。

圖7 不同檢測頭下驗證損失隨迭代次數變化曲線
YOLOX模型訓練時,引入遷移學習思想,設置預訓練次數為400次,學習率設定為0.001,Batch_size大小為8,預訓練后解凍主干網絡再進行50次的全訓練,學習率為0.0001,Batch_size大小為2。圖8為模型訓練的損失曲線,從圖8中可以明顯看出,對凍結主干網絡的模型預訓練400次,訓練損失降至6附近后開始波動,驗證損失降至5.80左右,預訓練模型基本趨于穩定。解凍主干網絡進行50次全參數訓練對模型進行微調,訓練、驗證損失進一步減少,降至4.64、4.58后基本不變,模型訓練達到飽和。

圖8 訓練損失函數曲線
使用YOLOX算法訓練后,6種缺陷類型的平均準確率均值(mAP)如圖9所示,平均準確率越大,代表對某類目標識別越準確,效果較好。mAP是評價模型整體性能的一項指標,mAP越大,表明模型對數據集各類別綜合性能較好。從圖9中可以看出裂紋缺陷圖片的平均準確率63.63%為最低,劃痕、斑塊、夾雜圖片的平均準確率均超過90%,最高的劃痕平均準確率達到98.37%,檢測準確率接近百分之百。模型對整體類別檢測的平均準確率均值(mAP)高達83.78%,表明模型的整體準確率較高。

圖9 6種金屬缺陷平均準確率均值
為了驗證YOLOX檢測的效果,分別使用YOLOv4、YOLOX對6種缺陷圖片進行檢測對比,如圖10所示。其中左側圖、右側圖分別為YOLOv4、YOLOX檢測效果圖。從圖中可以看出,YOLOv4檢測的裂紋、斑塊、劃痕、夾雜相較于YOLOX檢測結果,存在明顯的漏檢情況,壓入氧化鐵皮和麻點兩類缺陷雖檢測框大致相同,但是,在置信度方面,YOLOX大致可達到0.9以上,YOLOv4有部分檢測框低于0.8。在一定要求的置信度情況下,YOLOX能夠準確地對各類金屬表面缺陷進行定位,具有更好的檢測效果。

圖10 YOOLOv4和YOLOX檢測效果對比
表1為各不同算法對此金屬缺陷數據集檢測效果性能對比,從表1中可以看出,Faster R-CNN雖然檢測精度可達81.78%,但檢測速度FPS只有7,檢測速度遠低于YOLOX;SSD和YOLOv4檢測精度均能達到76%左右,檢測速度FPS只有46,明顯慢于YOLO系列檢測算法;相比于原始YOLOv3、YOLOv4算法,YOLOX算法在各種類型金屬缺陷上檢測精度均有較大地提升,mAP值分別提升13.20%、7.51%,速度上也有進一步地提升;根據數據集使用聚類獲得先驗框的改進YOLOv3算法,mAP值達到73.77%,比原始YOLOv3精度提高3%左右,YOLOX算法相比于Kmean加權YOLOv3算法精度提升了10.01%;在YOLOv3淺層增加提取層后,將先驗框從3組增至4組,裂紋、壓入氧化鐵皮類別檢測精度略高于YOLOX算法,其它4種金屬表面缺陷遠低于YOLOX算法,YOLOX總體精度較前者提升了3.68%左右。FPS達到65,檢測速度相較于其它幾種檢測算法具有較大地提升。幾種算法綜合比較下來,YOLOX算法對各類金屬表面缺陷檢測具有較好的效果。

表1 不同算法檢測性能對比
為了驗證所提方法的有效性,對Focus網絡、雙向PANet、解耦頭等模塊進行消融實驗,主干網絡選用去除相應模塊的CSPDarknet,通過檢測精度和檢測速度對比子模塊性能。如表2所示,從表2可以看出,Focus網絡、雙向PANet比表1中的YOLOv3、Kmean加權Yolov3檢測精度、速度均有提升。YoloX主干網絡和加強特征網絡選定后,單獨對解耦頭、Anchor-Free、SimOTA這3個tricks進行驗證,單獨加入3個tricks,檢測精度比Yolov4分別提升2.41%、2.50%、2.90%;檢測速度方面,解耦頭FPS與YOLOv4均為59,Anchor-Free、SimOTA的FPS為60。將3個tricks兩兩相組合,可以明顯看出Anchor-Free、SimOTA兩者組合對模型性能提升最大,mAP達到80.73%,檢測速度FPS為63。3個tricks都加入模型后,檢測精度進一步提升,達到83.78%,檢測速度FPS達到65。

表2 消融實驗
針對金屬鋼材表面缺陷,結合YOLOX的目標檢測算法,在主干網絡中引入Focus結構加強圖片特征提取,預測端采用解耦頭、Anchor Free機制以及SimOTA動態正樣本匹配等方法提高了模型的收斂、檢測速度。通過解耦頭和耦合頭實驗對比,驗證解耦頭能夠加快模型收斂速度;通過幾種模塊的消融測試,驗證不同模塊對模型的性能影響。在圖片目標檢測精度方面,比YOLOv3、YOLOv4分別提高13.20%、7.51%;在檢測速度方面,FPS達到65,每秒比YOLOv3、YOLOv4多檢測圖片10張、6張,表明YOLOX算法對表面缺陷具有不錯的檢測效果,可以推廣到檢測業的各種場景,推動檢測產業的智能化升級。下一步準備對需檢測數據集進行圖片預處理,通過一些深度學習的知識,對數據集圖片進行超清分辨率處理,獲取更清晰的數據集圖片,進一步提高算法的檢測精度。