肖文凱,南水魚,張琳琳
(1.上海萬物智允工業科技有限責任公司,上海 201612; 2.申能(集團)有限公司,上海 201103)
在金屬構件的焊接過程中,由于物理環境或人為失誤等原因,焊接接頭會在焊縫處形成缺陷,導致安全隱患。為了確保焊接工件的質量以及安全性、防止意外情況產生,對焊接工件進行缺陷檢測就變得至關重要。目前,工業界常用的無損檢測方法包括X射線檢測、超聲檢測、磁粉檢測、渦流檢測等。焊接缺陷根據其成像特點,通常分為裂紋、未焊透、未熔合、氣孔缺陷等。使用的檢測標準不同,缺陷的分類會有部分差異,如國標NBT 47013.2—2015[1]中的條形、圓形缺陷涵蓋了歐標EN ISO5817[2]中的氣孔和夾渣。在目前的實際生產過程中,主要采用的檢測方式是人工分析焊縫圖像,即憑經驗確定有無缺陷及缺陷的類型、位置、尺寸等,由此評定焊接質量并給出相應的評級。人工評定方式受評判者的水平、經驗、疲勞度、情緒等人為因素及外界條件的影響,效率低、不可靠、一致性差。
近年來,隨著網絡技術的發展和圖形處理器(graphics processing unit,GPU)硬件的不斷更新,基于深度學習的計算機視覺技術發展迅速,逐漸成為圖像處理及模式識別的主流方法。基于計算機視覺的工業自動化缺陷檢測方法也呈現爆發式的增長。計算機視覺領域的分類、目標檢測、分割等方法都可用于工業缺陷檢測[3-6]。由于分割算法的數據標注較昂貴,難以獲取足夠的標注數據,因此通常采用目標檢測算法來進行焊縫缺陷檢測。綜上分析,為了解決人工評定的痛點問題,本文在對焊縫缺陷數據集進行統計分析并對目標檢測方法進行大量研究之后,提出了一種基于卷積神經網絡(convolutional neural network,CNN)的X射線焊縫缺陷自動檢測算法(DRepDet)。
常見的幾種焊縫缺陷圖像示例如圖1所示。由圖1可知,有些缺陷和背景之間的分界線較模糊,如圖 1(d)中未焊透的示例。這種情況下,缺陷識別相對比較困難。

圖1 焊縫缺陷示例
通常,目標檢測算法大多以微軟提供的常規圖像(common objects in context,COCO)數據集為目標數據集,針對COCO數據集進行優化。與COCO數據集相比,工業領域焊縫圖像的情況更為復雜,無論是圖像分辨率還是缺陷的尺度變化,都和COCO數據集有較大的差異。
本文以液化天然氣(liquefied natural gas,LNG)焊縫圖像數據集為研究重點。LNG焊縫圖像的分辨率通常比較高,大部分為300~570 dpi。這就導致了LNG焊縫圖像尺寸較大。LNG焊縫圖像數據集和COCO數據集對比如表 1所示。

表1 LNG焊縫圖像數據集和COCO數據集對比
表1分別從圖像尺寸以及缺陷尺寸兩個維度進行了對比。由表1可知,LNG焊縫圖像數據集的寬高范圍比COCO數據集大得多,缺陷的尺度差異也很大,最小的缺陷可能小于10×10像素,最大的缺陷在7 000×300像素左右。這些差異導致許多原始的目標檢測算法在LNG焊縫缺陷檢測數據集上的性能明顯下降。
LNG焊縫缺陷不同寬高比對應缺陷數量統計如表2所示。由表2可知,LNG焊縫缺陷不同寬高比對應的缺陷數量差異很大,但1∶1、2∶1和3∶1的缺陷占多數。

表2 LNG焊縫缺陷不同寬高比對應缺陷數量統計
計算機視覺中的目標檢測任務需要在一張圖片中定位出待檢測的目標,并給出目標的尺寸和類別。當前的目標檢測算法一般分為骨干網絡(backbone)、頸部網絡(neck)和頭部網絡(head)三個部分;按過程可分為一階段檢測算法和兩階段檢測算法。
骨干網絡部分用于提取圖像特征,以CNN為主。單發多樞檢測器(single shot multiBox detector,SSD)和快速區域卷積神經網絡(faster region converlational renral network,Faster R-CNN)以超分辨率測試序列(visual geometry group,VGG)網絡模型作為骨干網絡。而單階段檢測算法“你只需要看一次”(you only look once,YOLO)以Darknet作為骨干網絡。事實上,分類網絡都可以作為目標檢測的骨干網絡來提取特征。深度殘差網絡(deep residual network,ResNet)[7]被提出后,ResNet及其變體被大量用于目標檢測的骨干網絡。
頸部網絡用于進行特征融合,解決目標的多尺度問題。在早期的目標檢測中,大多使用分類網絡最后一個卷積層的輸出結果作為后續邊界框回歸和分類的特征。由于最后一個卷積層輸出的特征進行了較多的下采樣,對小目標的識別能力較差。為了提升小目標的識別能力,SSD使用不同卷積階段輸出的不同分辨率的特征圖。特征圖金字塔網絡(feature pyramid networks,FPN)則在此基礎上添加了自上而下的通道,將頂層更高級別的語義信息融合到低分辨率的特征圖上,以豐富低分辨率特征圖的語義信息。路徑聚合網絡(path aggregation network,PANet[8])在FPN的基礎上增加了自底向上的通道作進一步特征融合。
頭部網絡一階段檢測算法直接在提取到的特征上進行邊界框回歸和分類。兩階段檢測算法先在提取到的特征上生成候選邊界框,然后在候選邊界框上進行二次回歸和分類。按是否使用錨框,目標檢測算法可以分為基于錨框的算法和無錨框算法。基于錨框的算法需要根據實際檢測目標的統計信息進行錨框大小和寬高比的預設。當目標的尺度范圍變化較大時,有些算法不能很好地適應目標,如RetinaNet[9]、Faster R-CNN、Cascade R-CNN[10]均為此類算法。無錨框算法從特征點直接回歸出用于計算邊界框的中心點、角點、邊界點等,然后用聚類或轉換算法計算出邊界框。基于對角線關鍵點的檢測算法CornerNet[11]首先預測左上角和右下角的角點,然后使用1個特殊的聚類方法獲取目標的邊界框。基于4個極點的檢測算法ExtremeNet[12]使用分割監督定位目標在x-y方向的極值點。基于采集的檢測算法RepPoints[13]從每個特征圖點預測出1組點,由這組點表示生成偽邊界框,然后使用真值框進行半監督學習。
在工業缺陷檢測方面,隨著深度學習和計算機視覺技術的快速發展,許多先進的算法被提出。文獻[14]提出了1種基于圖像分類網絡的鋁導體復合芯自動化缺陷檢測框架。該框架以盜夢空間-殘差網絡(inception and residual network,Inception-Resnet)為骨干網絡。文獻[15]使用1種基于迭代算法Adaboost的3階段的系統(缺陷提取、缺陷檢測、缺陷識別)來識別5種焊縫缺陷(裂紋、未焊透、未熔合、圓形和條形)。
針對LNG焊縫缺陷數據集的特點和目標檢測算法的最新進展,焊縫缺陷檢測算法DRepDet被提出。該算法主要針對X射線成像檢測。基于該算法的檢測器可以識別7種缺陷,包括氣孔、夾渣、裂紋、未焊透、未熔合、密集和鏈狀。而其他大部分檢測器只能檢測到不超過5種缺陷。
本小節中,首先介紹新型目標表示方法RepPoints的網絡架構,然后介紹DRepDet算法的感受野和詳細設計。
RepPoints是一個無錨框的檢測框架。它將目標表示為1組點來進行定位和識別。而大部分目標檢測器依賴于矩形邊界框來進行檢測和識別。
RepPoints架構如圖2所示。

圖2 RepPoints架構圖
邊界框表示僅考慮了目標的矩形空間區域,而不考慮形狀、姿態以及語義上較重要的局部區域的位置。為了克服上述缺陷,RepPoints建模了1組自適應的采樣點。這組采樣點會自動調整到目標的邊界位置。在訓練過程中,用這組采樣點生成偽框,與真值框進行對比來計算損失。
RepPoints的骨干網絡采用RetinaNet的骨干網絡,從階段3(下采樣率為8倍)到階段7(下采樣率為128倍)生成5個金字塔層級。RepPoints的點表示和可變形卷積的結合,使檢測目標的尺度可以在更大范圍內變動。
3.2.1 感受野
在典型神經網絡結構中:全連接(fully connected,FC)層每個輸出節點的值都依賴FC層所有輸入;卷積層每個輸出節點的值僅依賴卷積層輸入的1個區域。這個區域之外的其他輸入值都不會影響輸出值。該區域就是感受野。感受野之外圖像區域的像素不會影響特征圖上的特征向量,所以不太可能讓神經網絡僅依賴某個特征向量找到其對應輸入感受野之外的目標。
一般任務要求感受野越大越好,如圖像分類中最后卷積層的感受野要大于輸入圖像。網絡深度越深,則感受野越大、性能越好。密集預測任務要求輸出像素的感受野足夠大,以確保作出決策時沒有忽略重要信息,一般也是越深越好。目標檢測任務中設置錨框要嚴格對應感受野,錨框太大或偏離感受野都會嚴重影響檢測性能。
感受野的計算公式如下:
jout=jin×s
(1)
式中:jout為輸出特征圖的整體跨度;s為卷積層的步長;jin為輸入特征圖的跨度。
rout=rin+[k+(k-1)×(d-1)-1]×jin
(2)
式中:rout為輸出特征圖的感受野;rin為輸入特征圖的感受野;k為卷積核的尺寸;d為卷積核的空洞率。
表3從缺陷面積和寬高的最大值這2個維度,對不同感受野所包含的缺陷個數進行了統計。

表3 感受野統計表
從表3可以看出,大部分缺陷的感受野在291×291以下,大尺寸的缺陷以危害性缺陷居多。在工業缺陷檢測領域,危害性缺陷的檢出更為重要。如檢出這部分缺陷,就表示產品或者工程施工不合格。
在很多情況下,感受野區域內像素的影響分布服從高斯分布,有效感受野僅占理論感受野的一部分,且高斯分布從中心到邊緣快速衰減。為了提高大尺寸缺陷的檢出率,需要使輸出特征圖具有更大的感受野。
3.2.2 DRepDet設計
針對焊縫缺陷數據集中缺陷尺度及感受野的問題,對骨干網絡進行了調整,提出了DRepDet。以下對DRepDet進行詳細的描述。
擴大感受野的方法主要有以下幾種。
①使用更多的卷積層,如3個卷積核為3×3的卷積層堆疊后的感受野為7×7。這種方法會增加模型的參數和計算復雜度。
②卷積層使用更大的步長,如一個卷積核為3×3、步長為2的卷積層的感受野為5。這種方法會增加模型的下采樣率。
③使用空洞卷積,如一個卷積核為3×3、空洞率為2的卷積層的感受野為5。這種方法在增加感受野的同時既不會增加模型的參數和計算復雜度,又不會增加下采樣率。
基于3.2.1節中對于焊縫數據集感受野的統計分析,大尺度危害型缺陷的感受野大多位于選取的基線骨干網絡ResNeXt的最后一個卷積階段之后。因此,可以僅對最后一個階段的卷積模塊使用空洞卷積,以擴大感受野,提升對大尺度缺陷的識別性能。
DRepDet架構如圖3所示。

圖3 DRepDet架構圖
DRepDet架構整體上依從ResNeXt架構,有一個頸部(stem)模塊,4個卷積階段。每個階段分別由3個、4個、6個、3個瓶頸卷積塊組成。從第二個卷積階段開始,3×3的卷積層使用可變形卷積。最后一個階段的3×3卷積層使用4個不同空洞率可變形的空洞卷積進行特征融合,得到輸出特征。FPN的輸出從第二個卷積階段開始,最后添加2個額外的FPN輸出層。FPN共5個輸出層。FPN輸出的5個不同尺度的特征圖進入RepPoints檢測頭,輸出最終的分類和邊界框回歸結果。
本文在自建的焊縫缺陷數據集上進行了大量的試驗,以驗證所提出的算法的有效性。焊縫缺陷數據集主要是LNG的焊縫影像,分辨率為8 000×2 000左右,共含標注數據5 400張。標注數據中:80%用于訓練;20%用于驗證。由于圖像尺寸較大,在訓練集上進行了4 000×1 000的切分,重疊率為50%,推理時不進行切分。
使用隨機梯度下降(stochastic gradient descent,SGD)優化器進行訓練,批大小為8,GPU為4個(每個GPU 2張圖片)。使用COCO數據集上的預訓練模型進行微調,學習率初始值為0.002 5,學習率調度依從“1x”設置。訓練時的數據增強僅使用概率為0.5的水平隨機翻轉,推理過程不使用數據增強。
①空洞卷積試驗對比。
本文對不同空洞率下的小缺陷和大缺陷的精度和召回率進行統計。不同空洞率的對比如表4所示。使用空洞卷積后,小缺陷的性能幾乎不受影響,而大缺陷的性能有較大幅度的提升。由于大缺陷多屬于危害型缺陷,樣本量較少,因此整體性能較小缺陷相差較多。危害型缺陷中長條形缺陷較多,因此設計了寬高不同的空洞率。由于橫向和豎向都有長條形缺陷,而同一類型的空洞卷積僅對相應形狀的缺陷性能有提升,因此可以對不同空洞率的特征進行融合。融合的特征進一步提升了整體檢測性能。

表4 不同空洞率的對比
②多種網絡架構的比較。
本文在研究過程中對無錨框網絡、基于錨框的網絡,以及提出的網絡DRepDet分別進行了試驗。不同網絡架構對比如表 5所示。由表5可知,無錨框網絡的性能高于基于錨框的網絡。其原因在于焊縫缺陷數據集的缺陷尺度及寬高比的變化較大,預設的錨框無法覆蓋如此大的變化范圍。而提出的網絡由于根據數據集的大尺度及大寬高比的缺陷進行了感受野的調整,因此性能有了進一步的提升。

表5 不同網絡架構對比
本文通過對LNG焊縫缺陷進行多維度的詳細分析,發現LNG焊縫缺陷具有尺寸和長寬比差異較大等問題。針對該問題,對算法的感受野進行了分析,研究了擴大感受野的方法。在這些研究的基礎上,本文使用多分支不同空洞率的卷積層來解決感受野不足的問題,設計了DRepDet算法來進行焊縫缺陷自動檢測。DRepDet算法可以檢測7種焊縫缺陷,使感受野從基線的675提升到867,并將超大尺寸缺陷及長寬比較大缺陷的識別準確率從60.4提升到了63.5、AP50提升了1.4%、Recall50提升了2.9%。同時,DRepDet算法對于正常尺寸的缺陷識別率也有改善,且幾乎不影響小缺陷的檢測性能。本文研究表明,擴大感受野可以有效提高大缺陷的檢測性能。