程國建,卞晨亮
(西安石油大學 計算機學院,陜西 西安 710065)
隨著工業智能化時代到來,市場需求不斷進化,傳統的鋼鐵制造業也難以幸免于難,受到強烈的沖擊。為適應這種變化,國內企業開始研究布局鋼材生產線的表面質量檢測與自動處理。將深度學習技術應用到機器視覺領域如安全監控、自動駕駛[1]已經成為生產企業及科研人員重點關注的方向。東北大學宋老師團隊提出融合多層級特征的弱監督鋼板表面缺陷檢測算法[2],其中引入殘差網絡提高了檢測的效果。文獻[3,4]使用Faster R-CNN檢測鋼材缺陷,對比傳統的方法有一定的提升。文獻[5]基于SVM算法實現缺陷識別系統,具有一定的局限性。文獻[6]提出基于機器視覺的產品表面檢測算法,結合傳統算法和深度學習進行了描述。文獻[7]利用深度學習實現鋼板表面檢測與字符識別。文獻[8]使用YOLOv3算法,并優化了損失函數,提升了檢測的速度。本文中采用深度學習方法對鋼材缺陷檢測[9]采用YOLOv5作為基礎骨架,改進其網絡架構,并引入注意力機制降低了算法的誤差,進而提高算法的精度。
YOLO的含義是“你只需看一次(you only look once)”,其版本已從V1到目前的V5版。YOLO模型為單階段的網絡結構,計算出候選區域的同時進行分類任務和位置的優化,提高了檢測速度和資源利用率。YOLOv5模型的第一特點是提供了4種不同深度的網絡結構,可以根據任務的需求不同進行選擇。使用了CSPDarknet53作為基本網絡,主要由Focus模塊、CSP模塊、CBL模塊構成,Focus模塊構成,主要包括切片操作和卷積層(Conv),其中CBL模塊由卷積層(Conv)、批歸一化層(BN)和Leaky Relu激活函數組成。YOLOv5中設計了兩種CSP模塊,一種CSP1_X結構使用于Backbone主干網絡,另一種CSP2_X結構嵌入到Neck模塊中,通過跨級拼接與通道整合增強CNN的學習能力。在邊界框的預測方式進行學習自動錨定框,在不斷訓練過程中優化邊界框,并在不同層次的特征圖上進行預測,采用PANet的思想對不同層次的特征進行融合。
YOLO系列模型檢測的基礎是在輸入圖像上獲取一系列w和h固定的初始候選框,候選框選用對模型的性能至關重要。YOLOv5模型每次訓練時自適應的計算不同訓練集中的最佳錨框值,一定程度上增加訓練的時間,增加了網絡中的參數。本文使用K-means++聚類方法對鋼材缺陷數據集進行聚類得到合適的候選框大小,K-means++優化了初始聚類中心的選取,其具體流程為,開始隨機選取一個中心點,其次選取離中心點最遠的點作為第二個中心點,第三個中心點是離其前兩個類中心點間距最大的一個點,根據這個選取方式,直到選取k個原始類簇中心點。選擇好初始的中心點之后,再采用原K-means算法進行聚類。
聚類效果用輪廓系數來評估,計算公式如式(1)所示
(1)
式中:bi為樣本i到其它各個族群的所有樣本距離的平均值中的最小值,ai為樣本i到本身簇的距離平均值。
經過優化和計算,最終獲得候選區域參數分別為(61,122),(75,238),(155,156),(194,273),(99,543),(419,131),(431,239),(226,509),(541,569)。
EfficientNet[10]是谷歌2019最新的神經網絡,介紹了如何利用復合系數統一縮放模型的所有維度,達到精度最高效率最高,符合系數包括w,d,r,其中,w表示卷積核大小,決定了感受野大小;d表示神經網絡的深度;r表示分辨率大小。
本實驗中采用遷移學習,使用EfficientNet-B7在鋼材數據集上訓練一個二分類網絡,雖然目標檢測模型在7個不同的類(6個不同類型的鋼材缺陷和一個無缺陷的類)上訓練,但我們只在兩個類(有缺陷的鋼材和無缺陷的鋼材)上訓練分類網絡。類似于一種建模方法,簡化了分類問題,因為2分類網絡比7分類網絡容易得多。雖然YOLOv5的分類預測非常好,如果將它與另一個更強大的網絡的分類混合在一起,即我們融合YOLOv5和EfficientNet-B7這兩個網絡時,性能可以進一步提高。設置一個高閾值和一個低閾值。然后我們要檢查每個分類預測。如果概率小于低閾值,我們將預測設置為“無缺陷”。如果分類預測在低閾值和高閾值之間,我們得到一個“Better Confidence”的預測,該預測具有EfficientNet-B7的置信度。如果分類預測高于高閾值,意味著網絡是高度自信的,不需要做什么操作,具體算法如算法1所示。
算法1:輔助分類算法偽代碼
輸入: low_thr,high_thr,Result
輸出: Result
(1) If result[target] Result[‘prediction’]=‘7 1 0 0 1 1’ (2) Else if low_thr Result[‘prediction’]+=‘7 {result[target]} 0 0 1 1’ (3) Else if result[target]>high_thr: Result[‘prediction’]=Result[‘prediction’] (4) Else: ValueError (‘Prediction must be from[0-1]’) 大多數輕量級的神經網絡模型[12]一般都采用組卷積或深度可分離卷積來減少卷積過程中產生的計算量,但是1×1卷積的應用也會在卷積過程中占用較多的計算資源,Shuffle Net提出了通道混洗方法用于緩解這一問題。經過組卷積之后,采用通道混洗能實現組間信息的流動,有助于提高模型特征的表達能力。通道混洗的本質在于不增加計算復雜度的情況下,可以使組卷積通道之間信息流通。基于這些方面考慮,對普通卷積為3×3和1×1的模塊做出調整,更換為組卷積和通道混洗模塊,進而對模型壓縮。 針對YOLOv5中的跳層連接加入自注意力機制(self-attention,SA),可以保持信息的有效性,在一定程度上減少梯度消失的問題。SA機制是獲得長距離依賴的一種方式,可以動態地生成不同連接的權重。將前一層的輸出稱為g,以及來自于擴展路徑連接稱為x。x和g經過1×1的卷積,將兩者都變成相同數量的通道數,并不改變其特征圖的大小,經過逐像素相加并通過激活函數(ReLU),之后通過另一1×1的卷積和激活函數(Sigmoid),得到一個0到1的重要度分數,分配給特征圖的每個部分,最后用這個注意力圖乘以x,產生注意力塊的最終結果。 將池化注意力模塊(PBAM)[13]添加到YOLOv5 網絡的主干網絡中,用來提取到更多的特征信息。PBAM 模塊先采用兩個并列的池化操作進行特征圖的壓縮獲取到特征圖的關鍵點,然后對其進行擴張操作,PBAM引入了殘差結構用來融合前后的特征信息,并可以有效保證網絡較深情況下梯度不會消失或者過大,最后將兩個分支的結果進行逐像素相加并與輸入特征圖融合傳入下一層。該模塊輸入特征圖和輸出特征圖大小一致,PBAM模塊可以嵌入到任意網絡結構中,圖1為YOLOv5-MD的算法框架。 圖像檢測任務中模型的預測包括邊界框矩形的坐標,對象的類別標簽以及反映模型在此預測中的信心程度的置信度得分(概率從0到1)。其中有一個非常重要的階段,需要生成區域建議(可能的邊界框),以及過濾一些建議區域。經常使用的算法有非極大值抑制(NMS),Soft-NMS。NMS指如果框與框的交并比(intersection over union,IoU)高于指定的閾值參數,則這些框會被過濾為一個框。Soft-NMS不會完全移除IoU高于閾值的框,而是根據IoU的值降低它們的置信度分數,相比于NMS,可以過濾掉較少的邊界框。 NMS和soft-NMS都排除某些框,而WBF[14]使用所有的框,可以有效解決模型無法正確預測所有框的情況。如圖2所示,細黑色線條表示不同的預測框,粗黑色線條表示真實的標注位置。NMS/soft-NMS保留一個不準確的框,而WBF使用所有的預測框進行融合。 輸入圖像經過YOLOv5網絡中的骨干網絡提取特征信息后預測輸出結果。為了提高模型性能,YOLOv5采用PANet[15]結構進行路徑增強和聚合,增加了自底向上的路徑,從而縮短了低層與頂層特征之間的信息路徑,使低層信息更容易傳播。 針對高層特征語義豐富但是空間信息較弱,低層特征語義較弱但空間信息豐富的特點,引入改進的PANet結構,如圖3所示,這種結構能夠在較少計算量的前提下融合高層和低層的特征信息。該模塊去除掉 PANet結構中一些邊,并使用殘差的方式添加一條額外的邊,對粗分辨率的特征圖,對特征層的較高層特征執行2倍上采樣操作,使特征圖的大小增加一倍;較低層特征采用橫向連接,通過1×1卷積改變通道數,最后將上采樣和卷積后的特征圖的對應元素相加,重復該過程,直到生成最精細的分辨率特征圖。輸入圖像經過骨干網絡得到各層級的特征圖后,采用多尺度特征融合獲得特征圖大小分別為152、76、38和19的特征圖,并根據得到的4個特征圖繼續進行預測。 YOLOv5-MD模型訓練包括訓練6類的目標檢測模型和2分類的EfficientNet-B7網絡模型,具體實驗流程如圖4所示。首先是對鋼材缺陷圖像進行篩選和標注,制作數據集并隨機劃分為訓練集、驗證集和測試集,其次對數據訓練樣本進行預處理(其中包括處理圖像為模型輸入圖像的尺寸,以及封裝樣本和標簽等);然后利用設計的算法提取圖像的特征、計算損失函數以及反向傳播優化,隨后在驗證集上測試本次迭代結果的平均準確率,如果準確率大于之前保存模型的準確率,使用本次迭代結果保存的參數信息替換之前保存的模型參數信息;之后判斷迭代次數是否大于實驗設置的最大迭代次數,如果小于最大迭代次數,模型則繼續訓練,反之,模型訓練完成;最后,模型訓練完成后使用測試集對模型效果進行測試,以及在測試圖像上畫出最終的識別結果,即鋼材缺陷的位置和所屬的類別。 本次實驗所使用的數據集是東北大學宋克臣老師團隊制作的鋼材表面缺陷數據集和經過網絡爬蟲得到的數據,共有5800張多類的鋼材圖像。模型訓練過程中將數據集分為3個部分:訓練集(4200個采樣)、驗證集(1000個采樣)和測試集(600個采樣)。經過labelme標注工具對未標注的數據注釋完成后,數據集共有crazing(裂紋)、inclusion(夾雜)、patches(斑塊)、scratches(劃痕)、pitted_surface(麻點)、rolled-in_scale(氧化鐵皮壓入)6類缺陷類型。為了使每類樣本數量均衡,采用數據增強[16]方式將較少類別的目標區域精準增強。以“patches”為例數據增強前后對比如圖5所示。 對數據集進行預處理后。每類樣本數目見表1。 表1 數據增強后每類樣本的數量 采用處理后的數據集分別對YOLOv5算法和YOLOv5-MD算法進行訓練,本次采用Pytorch框架和OpenCV庫函數,CPU為Inteli7-9750H,GPU為NVIDIA GTX 1080,顯存16 G,采用CUDA 10.0與CUDNN V7.5并結合Python語言實現了算法內容。訓練參數設置迭代次數為300,批處量大小為8,基礎學習率初始為0.001,其中動量和權重衰減分別配置0.9和0.0005,訓練過程中優化器為Adam,YOLOv5算法和YOLOv5-MD算法的損失函數值的變化曲線如圖6所示。 從圖6可以觀察到訓練迭代到280次左右損失曲線逐漸處于平穩且無明顯震蕩,YOLOv5-MD模型最終損失值明顯低于YOLOv5,基本穩定在0.03左右,模型收斂。 對比消融實驗分為6個組別,分別為融合EfficientNet網絡、Shuffle Conv、PBAM(pooling block attention module)、改進的PANet結構以及K-means++這5個方向進行對比實驗,結果見表2。Lab1、Lab2、Lab3表明,通過采用融合Efficient網絡、改進PAnet方法以及增加池化注意力機制在不同程度上提高了鋼材缺陷分類的準確率,其中加入注意力機制的實驗準確率明顯提高了7%左右。Lab1、Lab5表明,通過使用Shuffle Conv卷積方法減少了模型的復雜度,縮短了單幀圖像的處理時間,進而提高了檢測的實時性;Lab2、Lab3、Lab4、Lab5、Lab6表明將4處方向融合,可以在保證召回率的前提下,提高檢測的準確率。 表2 不同改進模塊的對比實驗 模型訓練結束后,將Faster RCNN、SSD、YOLOv4、YOLOv5作為對比模型,在測試集上采用精確率(Precision)和召回率(Recall)分別對4個模型進行測試,表3為4種算法分別對鋼材缺陷數據進行檢測的結果。 表3 5種模型進行鋼材缺陷檢測的綜合性能對比 分析表3可知,改進的YOLOv5-MD算法復雜度沒有明顯提高,模型的單幀檢測速度與YOLOv5,YOLOv4基本一致,但比SSD和Faster RCNN分別快了1.7倍和7.1倍,其精確率比其它4個算法都高,比Faster RCNN提高了10%左右。 依據Precision和Recall可以對每類目標的平均精準度(AP)和整體的平均檢測精度(mAP)進行計算。如表4所示,優化后的模型YOLOv5-MD整體的mAP比YOLOv5提升了3.3%,模型的魯棒性有了一定的提升。分析表4中每種類別的AP值,經過數據增強和改進模型每種類別的AP值都有一定的提升。 表4 YOLOv5與YOLOv5-MD的mAP對比 YOLOv5-MD置信度分數和F1分數、精確率、召回率的關系如圖7所示,從圖中可以看出,當置信度分數為0.4左右時,所有類的平均F1分數、精確率和召回率都可以達到85%以上,可以達到比較好的效果。 鋼材缺陷圖像的實際檢測結果如圖8所示,鋼材缺陷檢測位置信息和類別信息在圖中都有標示。 本文對于目標檢測算法YOLOv5進行改進,提出了一種鋼材表面缺陷檢測的算法YOLOv5-MD。 (1)針對YOLOv5自適應的計算不同訓練集中的最佳錨框值,在一定程度上增加訓練的時間,增加了網絡中的參數,本文利用Kmeans++聚類算法得到相應的錨框值。 (2)YOLOv5-MD通過替換大小為3×3和1×1的卷積模塊為組卷積和通道混洗模塊以及融合EfficientNet-B7輔助網絡,并對YOLOv5的PANet結構進行修改,利用跨級連接和同級跳躍連接這樣高效的多尺度特征融合方式,可以在降低圖像的特征損失,增加了檢測的準確性。 (3)引入自注意機制SA和PBAM使算法收斂速度加快,并使用加權邊界框融合可以過濾掉較少的邊界框,使用一個公式來調整坐標和置信度分數,在一定程度上增加了鋼材缺陷檢測的準確性。 運用本文提出的YOLOv5-MD檢測方法,能夠有效地檢測和正確識別鋼材缺陷類型,該模型的mAP(平均檢測精度)可以達到97.2%。后續將進一步研究超輕快的模型,使算法需要更小的內存。2.3 Shuffle卷積與注意力模塊
2.4 加權邊界框融合(WBF)
2.5 改進的PANet結構
3 實驗流程與數據分析
3.1 實驗流程
3.2 實驗數據集及其預處理

3.3 模型結果對比分析



4 結束語