曹晉晉
(天津理工大學電氣工程與自動化學院,天津 300384)
在智能焊接工作過程中,焊縫特征提取是實現機器人實時焊縫跟蹤焊接的基礎[1-3]。在實際焊接工作中,焊接現場環境復雜,焊縫形式多樣,傳統的圖像處理方法識別模型單一,且在圖像提取過程中易受到弧光、飛濺、煙霧等因素的干擾,焊縫目標識別難度增大,無法完全適應復雜工作場景下的焊縫跟蹤。
近年來,隨著計算機圖像處理技術能力的提升以及深度學習理論的迅速發展,深度學習技術正逐步應用于焊縫圖像識別、焊縫跟蹤和焊縫缺陷檢測等領域[4-6]。該技術通過對大量的數據樣本進行訓練,可以在復雜的環境下精準地識別目標。
焊縫特征識別系統的結構如圖1 所示,首先通過相機等視覺系統掃描焊件獲取圖像信息并傳到計算機中,接著對接收的圖像進行預處理和特征提取,進而對識別出的焊縫進行標定,將坐標轉換后發送到控制器,控制器接收坐標信息后,驅動焊槍進行焊接完成焊接任務。

圖1 焊縫識別系統
在對焊縫識別的研究中,樊德金等[7]首次利用最小二乘法對焊縫進行擬合。李鶴喜等[8]針對焊接機器人的焊縫識別視覺建模使用了深度學習的方式來構建,其網絡模型中輸入層、隱含層和輸出層構成了全連接層,相當于一個分類器用于焊縫目標識別,對不同類別的焊縫進行分類,但未做到定位檢測。
張宇飛等[9]依托Python 平臺,開發出基于OpenCV的焊縫識別程序。鄒焱飚等[10]還提供了一個根據深度分層特征的焊縫檢驗單元,有很好的畸變容忍能力,可以在噪聲污染的時序圖中定位焊縫。
陳凱等[11]通過先分類再分割的思想來實現對目標焊縫的識別定位。楊中雨等[12]利用自適應矩估計的方法避免了卷積網絡識別陷入局部最優解。劉美菊等[13]提出了一種改進型網絡壓縮算法,解決了設備成本高的問題。馬徐峰[14]利用改進的SSD 模型對焊縫進行識別跟蹤,解決了原網絡特征語義性不強的問題。張永帥等[15]通過全卷積網絡對焊縫圖像進行點到點的像素級分類,將高層特征和低層特征進行融合,完善邊緣細節,有效地提高了圖像分割精度。
深度學習經典檢測方法有以下2 種:①單階段檢測方法。如Yolo 系列,即通過一個回歸得到結果;②雙階段檢測方法,如Faster-RCNN、Mask-RCNN,雙階段相對于一階段多了一個預選步驟,因此速度比較慢。
單階段最核心的優勢是速度非常快,適合做實時檢測任務,但是缺點也是有的,即效果通常不會太好;雙階段檢測速度通常較慢,但是準確率較高。
為了克服環境因素,更高效率地識別提取焊縫特征信息,本文在Faster-RCNN 網絡的基礎上,用ResNet網絡代替VGG 網絡,優化了網絡參數和結構,克服了傳統模型檢測精度低、易受環境影響、訓練耗時長等問題。ResNet 網絡既提高了網絡深度,又避免了梯度消失現象。同時用FPN(特征金字塔)網絡來代替原有的RPN 網絡,更好地解決了多尺度圖像的檢測問題。從實驗結果可以看出,隨著訓練周期的增加,數據集的損失值相應減少,焊縫特征檢測的置信率達到98%以上,精確率達到99.6%,能夠滿足焊縫特征提取系統的工作要求。
卷積神經網絡(Convolutional Neural Network,CNN)作為深度學習中的典型模型,在對圖像數據集的訓練過程中,獲取被檢測目標的特征,通過反復訓練,達到在不同的工作環境下均可完成對目標特征的檢測識別效果,保證模型的魯棒性[16]。相比傳統圖像處理方法,深度學習法夠獲取圖像特征像素之間的規律,從而有效地解決因環境差異引起的圖像識別困難等問題。卷積神經網絡的基本結構如圖2 所示。

圖2 卷積神經網絡的基本結構
卷積過程首先要對圖像中的特征點進行賦值,然后對圖像中的賦值區域進行卷積運算,得到的結果作為對應位置新的特征值,然后沿著圖像右方或下方平移該卷積核,繼續進行新特征值的計算,最終獲得圖像信息。2 個通道的卷積運算過程如圖3 所示。

圖3 2 個通道的卷積運算過程
目前典型的卷積神經網絡架構有VGG16、ResNet等。本文利用Pytorch 框架構建ResNet18 模型,對焊縫數據集進行訓練,實現焊縫圖像的自動檢測提取。
在卷積神經網絡中,提高網絡性能一般從拓展網絡的寬度或增加網絡的深度2 個方面入手。同一個模型下,層數淺的網絡相當于之后在做等價映射,網絡層數深的其性能往往會更加優越。但是在實際應用中,或多或少會存在信息丟失、損耗等問題,同時還有可能導致梯度消失或者梯度爆炸,使得很深的網絡無法訓練[17]。
殘差網絡能夠利用殘差塊實現數據的跳躍鏈接,既能保證信息傳輸的完整性,又能降低訓練壓力。如圖4 所示,完成x→F(x)的映射,可以通過2 種方法實現。左圖為一般方法,右圖則是利用殘差塊推動數據跨層傳播,對比可知,殘差映射F(x)-x更容易得到優化,同時更能捕捉到數據的波動,更具效率。

圖4 普通映射與殘差網絡映射示意圖
殘差塊示意圖如圖5 所示,2 個3×3 卷積層的連接順序均為卷積層、規范化層和激活函數。跳躍連接即從輸入端直接到達最后的ReLU 激活函數前。通道數相同時,殘差塊依照左側流程圖疊加;若不同時,輸入數據需要通過1×1 卷積層變化后,才可以繼續疊加。

圖5 殘差塊示意圖
RCNN 網絡在目標檢測時,特征識別全部作用在最后一層,當處理小目標物體檢測時,往往因為語義信息的丟失,導致檢測結果不夠準確。在實際焊接工作中,待識別的物體各種尺度都有,為了提升檢測精度和效率,更好地完成多尺度的目標檢測,使RCNN網絡更好地應用在焊縫檢測中,本文選擇FPN 算法對圖像進行處理。
一般的圖像多尺度檢測方法圖6 所示,對原始圖像逐層提取特征,然后進行擬合、識別、預測,這種方法的優點是能夠完成不同尺度下的目標檢測,但是在實際應用中,占用的系統內存較大,工作量繁重。

圖6 多尺度金字塔
FPN 網絡的檢測流程如圖7 所示。圖像的分辨率信息和語音信息由不同網絡完成,原始圖像經卷積處理后,通過1×1 卷積層變成相同的尺寸,這樣做的目的是將不同網絡得到信息進行疊加,在保證檢測精度的同時又能提升工作效率,更適合焊接工作中的小目標識別。

圖7 FPN 網絡
數據集的制作一般需要將圖片名稱、格式和尺寸進行統一,在進行分類實驗時,不同的數據集需要存放在不同的文件夾下,收集到的圖片質量一定程度上影響著模型訓練的結果。數據集如圖8 所示。

圖8 數據集
本實驗的運行環境如下:CPU 使用的是Intel Core i9-12900kf,主頻5.5 GHz,運行內存32 G,頻率5 400 Hz,GPU 使用的是GeForce RTX 3090 24G 顯存的版本,系統的NVIDIA 的CUDA 版本是11.1,采用Windows10 的操作系統,搭建的是Anaconda 的Python3.7 的編程環境,采用的是PyTorch 的深度學習框架。本文通過平移和翻轉的方式擴充采集的焊縫數據集。訓練網絡的焊縫圖像共10 000 張,包括2 000張原始圖像和8 000 張增強圖像。其中8 000 張圖片用作訓練,2 000 張圖像用作測試。
本次實驗采取的是Faster-RCNN 的網絡結構,訓練模型是ResNet50。其中輸入到網絡的圖片大小壓縮成了756×1 008 的保持原比例的像素。模型訓練的總的訓練步數分別為5、10、20 個周期,優化器采用的是SGD 優化器,基礎的學習率是0.02,沖量設置是0.9,權值衰減系數是0.000 1。每次的訓練樣本是80 張圖片。
對訓練集和測試集分別進行圖像片大小的調整、圖像增強、數據集的擴充以及圖像標準化的處理,其主要目的是讓圖像數據將轉化為模型能夠接受的數據類型及格更適合進行實驗。通過標準化后,使數據更符合數據中心化分布規律,能增加模型的泛化能力。
在正向傳播過程中,數據會按照各層網絡順序依次傳播,并記錄每次圖像的數據與標簽。輸出結果的有效性通過損失值反映,當數據結果與期望值存在較大差異時,數據會通過反向傳播來修正誤差,并記錄下每次的損失值進行匯總。
分別設置不同的訓練周期對采集到的數據進行訓練,記錄并繪制損失率曲線圖。通過觀察曲線圖的走勢可以看出模型是否有效,結果是否準確。不同訓練周期下的訓練集與測試集的損失率曲線圖如圖9—圖11 所示,訓練結果如表1 所示。觀察可知,損失率隨著訓練時長的增加均有不同程度的降低,這說明沒有過擬合現象的發生。周期為10 時,2 條曲線已經幾乎重合,周期為20 時,準確率達到99.6%。

表1 不同訓練周期的訓練結果

圖9 訓練周期為5 時的損失率

圖10 訓練周期為10 時的損失率

圖11 訓練周期為20 時的損失率
選取2 000 張焊縫圖像進行焊縫特征的提取實驗。焊縫圖像原圖如圖12 所示,焊縫特征提取結果如圖13所示。圖中方框是跟蹤到的焊縫區域。焊接時通常伴隨著不同程度的弧光、飛濺等的干擾,有些強干擾甚至會將特征點區域完全淹沒。焊縫特征提取結果顯示,本文所提方法能克服焊接時的噪聲干擾,可以較為準確地定位焊縫,保證了焊縫提取的精度。實驗結果表明大部分檢測結果的置信度都在98%以上,精確率達到99.6%。

圖12 焊縫圖像原圖

圖13 焊縫特征提取結果
本文使用Pytorch 搭建ResNet50 模型,為了更加準確高效地識別提取焊縫,對模型結構進行調整優化,通過反復訓練,繪制出數據損失率的曲線圖,驗證了模型的有效性。在使用該網絡對焊縫圖像識別的的實驗中,焊縫識別的準確率達到了99.6%,滿足了實際工作的要求。