于子金,李樂榕,阮龍
(上海寶山鋼鐵股份有限公司設備部,上海 201900)
由于原材料、焊接工藝、焊接過程控制等因素的影響,寶鋼UOE焊管區域在鋼管焊接過程中會產生諸如搭焊、夾珠、未融合、夾渣、氣孔、咬邊、焊瘤、燒穿、密氣、焊偏等一系列缺陷,這些缺陷不僅影響鋼管的外觀,還會損害成品,管的質量和機械性能。因此,有效的檢測出鋼管焊縫位置缺陷對提高鋼管產品質量具有重要意義。然而,有很多因素使得基于射線探傷圖像的鋼管焊縫缺陷實時檢測特別困難,如射線探傷圖像噪音大、圖像存在拖影現象、缺陷種類多、位置隨機不固定、高速生產節奏等。
現有的基于射線探傷圖像的鋼管焊縫缺陷檢測方法主要采用經典的機器學習算法,大致分為三個主要階段:圖像預處理、特征提取和分類。然而,這些算法需要手工設計特征提取模型,然而手工制作的特征嚴重依賴現場工藝專家的知識,需要消耗大量的人力。文獻[1]提出了一種自適應分割算法,根據射線探傷圖像的灰度特征,自適應分割缺陷區域,但無法區分缺陷類型。文獻[2]提出了在提取表面缺陷在不同尺度和方向上的特征后,采用支持向量機分類器對不同類型的表面缺陷進行分類。然而,在測試過程中,從單一缺陷圖像中提取特征的時間為1.1044秒,太長,無法滿足實時檢測的要求。
多層次的卷積神經網絡架構能夠提取的信息量更全面,相比于手工制作的特征更有效,所有的特征都是通過使用自適應回歸算法,從訓練數據中自動提取的多層次卷積網絡,提供了從原始缺陷圖像到預測結果的端到端的解決方案,從而減輕了手動提取特征的需求。此外,通過卷積檢測網絡可以在毫秒內檢測到目標,并獲得目標的種類、準確位置以及大小等信息。
YOLO的CNN網絡將輸入圖片分割成S×S網格,通過設計的卷積層來提取缺陷特征。對于每個網格,模型判斷是否有缺陷的中心點落在了格子內,并根據提取的缺陷特征識別缺陷類別,如圖1所示,可以看到搭焊這個缺陷的中心落在了單元格內,那么這個單元格負責預測這個搭焊缺陷。

圖1 YOLO網絡檢測流程圖
YOLO檢測網絡模型可以被分解為回歸和分類兩部分,回歸用于確定目標對象的位置和尺寸,分類用于確定目標所屬類別。YOLO網絡中的每個單元格將預測B個邊界框(bounding box)和每個邊界框的置信度(confidence)。邊界框的準確度可以用預測框與實際框(ground truth)的IOU(intersection over union,交并比)來表征,記為IOU,IOU表示預測框與真實框的重疊率,采用非極大值抑制NMS(Non-Maximum Suppression)方法去除冗余邊界框。網絡為每個邊界框預測5個值:(x,y,w,h,c)。(x,y)坐標表示缺陷中心,(w,h)表示每個框的高度和寬度,c表示置信度。在測試時,改進了置信度的計算方式,我們將類別置信度與邊界框置信度相乘,具體如定公式(1)所示,為每個框提供類別特有的置信值。
我們構建了一個包含29個卷積層的全卷積YOLO網絡。前27個卷積層用于提取焊縫缺陷特征,后2個卷積層用于預測缺陷類別和尺寸。我們的網絡使用連續的3×3卷積層,然后是1×1池化層。連續的3×3卷積層從輸入圖像中提取缺陷特征,使用1×1核來減少前一個特征映射的特征空間。在幾個圖像識別基準上,最大池化層可以被步幅為2的卷積層取代,而不會損失精度。此外,卷積層允許網絡學習自己的空間下采樣,而不是確定性的空間下采樣。在本文中,我們用3×3(stride=2)卷積函數替換了原網絡的max-pooling函數,精度略有提高0.6%。
本課題共收集了近2萬張X射線探傷圖像,從中篩選出有缺陷的圖像2000多張作為分析對象,將缺陷分為16類,缺陷如下圖所示,對焊縫圖片有無缺陷以及缺陷類型進行標識。數據集共計打標了5067個缺陷,根據缺陷數量越多,越不重要的原則,為每個缺陷類型分配權重,后續將缺陷類型權重和數據集劃分以及模型Loss計算相結合。

圖2 UOE鋼管焊縫缺陷圖
為了便于優化,YOLO檢測網絡在損耗函數中使用了和平方誤差。然而,和平誤差將定位誤差和分類誤差同等權重,并不能完全符合平均精度最大化的目標。在每個圖像中,許多網格單元不包含任何缺陷。這使得無缺陷單元格的置信度分數接近于零,通常會壓倒那些有缺陷網格單元的梯度,這會導致模型不穩定。為了彌補這一點,YOLO網絡增加了邊界框坐標預測的損失,并減少了無缺陷框的置信度預測的損失。為了提高對小尺度缺陷的檢測效果,YOLO網絡通過增加損失函數中bounding box寬度和高度的方差信息,來增加小尺度缺陷bounding box中誤差的比例。優化后的損失函數如下:

表示是否有任意一種缺陷出現在i中, 表示第j個預測框。
為了提高缺陷檢測的準確性和速度,在訓練過程中采用了一些訓練策略。
多尺度的輸入:在低分辨率圖像上訓練的網絡測試速度快但精度低,而在高分辨率圖像上訓練的網絡測試精度高但速度不滿足要求。在訓練我們的網絡時,我們將固定的416 × 416輸入分辨率改為可變的輸入分辨率。我們設置了一組可選擇的輸入分辨率{224,256 416, 448},網絡每10次迭代改變輸入大小。
數據增強:當訓練數據不夠充分時,數據增強可以擴展數據集,增加訓練數據的多樣性。數據增強也可以減少過擬合。在對網絡進行訓練之前,我們對部分缺陷圖像進行了銳度增強和對比度增強。在訓練過程中,我們隨機縮放和裁剪缺陷圖像。
我們在16種類型的缺陷圖像上訓練改進的YOLO網絡,迭代次數設為50000。在整個訓練過程中,我們使用批大小為16、動量為0.9、衰減為0.0005的隨機梯度下降法。初始學習率為0.01,每重復12000次,學習率下降10倍,設置有EarlyStop條件。在1個NVIDIA GTX 1080Ti gpu上訓練花費了40多小時。
對訓練過程數據進行處理,得到損失衰減曲線和召回曲線,如圖3和圖4所示。

圖3 損失函數曲線

圖4 recal衰減曲線
利用訓練好的網絡對測試缺陷圖像進行檢測,在26秒內完成2000幅圖像的檢測,達到97.55%的mAP和95.86%的召回率。檢測結果見圖5。傳統算法主要集中在缺陷分類問題上,通常不能解決缺陷定位和預測缺陷大小的問題。改進后的YOLO檢測網絡不僅能對缺陷圖像進行分類,還能準確獲取缺陷的位置和大小信息。

圖5 6種射線探傷圖像中焊縫缺陷檢測結果
在只需要檢測缺陷而不進行類別分類的情況下,我們的網絡達到99%的檢測率,僅遺漏1%的缺陷。同時,根據在線實驗測試,我們的網絡可以檢測出1毫米大小的缺陷。
深度學習是一種數據驅動的學習方法,數據集的數量直接影響學習結果[3]。如果有更多數量和種類的缺陷圖像來訓練網絡,該網絡將有更好的性能和更高的精度。同時,對缺陷的位置和尺寸的識別也會更加準確。
文中建立了包含16種焊管射線探傷圖像中焊縫缺陷數據庫。我們通過構建全卷積YOLO檢測網絡來檢測焊縫缺陷。結果表明,該網絡的mAP達到97.55%,召回率達到95.86%,檢出率達到99%。該網絡提供了端到端的焊管射線探傷圖像中焊縫缺陷檢測解決方案,并實現了76FPS的檢測速度,使在線鋼管焊縫射線探傷缺陷圖像的實時檢測更加有效。