陳 凱,王 海*
(1.安徽工程大學 機械工程學院,安徽 蕪湖 241000;2.先進數(shù)控和伺服驅動安徽省重點實驗室,安徽 蕪湖 241000;3.特種顯示與成像技術安徽省技術創(chuàng)新中心,安徽 蕪湖 241000)
在自動跟蹤焊接機器人的工作中,要做到機器人實時焊縫跟蹤焊接就要知道目標焊縫的準確位置。對于焊縫位置的定位,通常有主動視覺和被動視覺兩種檢測方法,無論是哪一種方法最終都要根據(jù)焊縫位置得到焊槍的運行軌跡再進行跟蹤焊接。在焊接大型桁架、滾筒等工件時,由于各種復雜的環(huán)境,焊縫的大小、類型的多樣性等情況使得焊縫目標識別難度增加。
近年來,隨著互聯(lián)網(wǎng)的發(fā)展,人工智能、機器學習、深度學習在焊縫圖像的識別領域中運用廣泛,其中深度學習神經(jīng)網(wǎng)絡增加了學習能力[1-4],GPU的出現(xiàn)讓深度學習超大規(guī)模的計算變?yōu)榭赡?,通過大量數(shù)據(jù)樣本可以在復雜環(huán)境中精確地識別目標。李鶴喜等[5]針對焊接機器人的焊縫識別視覺建模使用了深度學習的方式來構建,其網(wǎng)絡模型中輸入層、隱含層和輸出層構成了全連接層,相當于一個分類器用于焊縫目標識別,對9種類別的焊縫進行分類,但未做到定位檢測。郭鵬飛[6]提出用Faster-RCNN對焊縫圖像進行深度特征提取。張宇飛等[7]基于視覺的焊接機器人跟蹤焊接問題提出了一種圖像處理算法,并且在計算機Python平臺上基于OpenCV開發(fā)出焊縫圖像的識別程序。Yang等[8]使用LSTM生成相關濾波器,再用卷積神經(jīng)網(wǎng)絡(CNN)提取的特征進行卷積,但這種方法在復雜的焊接環(huán)境中無法獲得穩(wěn)定的結果。張永帥等[9]通過卷積神經(jīng)網(wǎng)絡將焊縫圖片進行端對端的像素分類,將圖像中目標焊縫激光條紋和背景分割處理,利用跳躍結構將高層信息和低層信息融合完善邊緣細節(jié),提高圖像分割精度。鄒焱飚等[10]還提供了一個根據(jù)深度分層特征的焊縫檢驗單元,有很好的畸變?nèi)萑棠芰?,可以在噪聲污染的時序圖中定位焊縫。
本文的方法可以在復雜環(huán)境下通過MobileNetV3算法判斷捕捉到圖像中是否有焊縫和對焊縫類型進行分類。由于輕量化網(wǎng)絡性能優(yōu)勢,分類過程中時效性大大提高,并結合了GAN算法用SeGAN網(wǎng)絡對焊縫圖像進行分割得到焊縫的準確位置,綜合后提高了分類分割性能。
MobileNetV3[11]是由google提出的一種輕量化網(wǎng)絡,該網(wǎng)絡綜合了V1、V2的新模塊,并具有相對常規(guī)卷積計算中參數(shù)更少的深度可分離卷積、倒殘差式結構和線性瓶頸結構、SE模塊,利用NAS(神經(jīng)結構搜索)尋找合適的網(wǎng)絡參數(shù)與配置。MobileNetV2中加入了線性瓶頸結構和反向剩余結構,并通過利用問題的低秩本質(zhì)來實現(xiàn)更有效的層結構。MnasNet是在MobileNetV2架構上創(chuàng)新形成的,在瓶頸結構中融入了基于擠壓和激勵的輕量級注意模塊,目的是利用結合特征信道的關系來加強網(wǎng)絡的學習能力。MobileNetV3網(wǎng)絡通過組合不同層來構建出更有效的網(wǎng)絡模型。MobileNetV3網(wǎng)絡有MobileNetV3-large以及MobileNetV3-small兩種形式,針對不同情況選用不同模型。相對而言,MobileNetV3-small運用在ImageNet圖片分類任務上相對于MobileNetV2,精度提升約3.2%,運行耗時卻減少了15%;MobileNetV3-small與MobileNetV2相比,若在COCO數(shù)據(jù)集上輸出訓練結果精度相同時,速度提高了25%,同時在分割算法上也有一定的提高。MobileNetV3-small的整體結構如表1所示,Input代表每個特征層大小的變化;Operator為每次的特征層經(jīng)歷的瓶頸以及對應深度可分離卷積的卷積核大小;SE代表是否引入注意力機制;NL為選擇使用激活函數(shù)ReLU或者h-swish;s為bneck結構所用步長。
表1 MobileNetV3-small整體結構
圖1 Bneck結構示意圖
(1)
在MobileNetV3網(wǎng)絡中用到一個Pytorch Image Models(timm)庫,包括models、layers、utilities、optimizers、schedulers等,即將各種較好且先進的模型組合在一起。
在MobileNetV3多分類任務中損失函數(shù)用交叉熵損失函數(shù)(nn.CrossEntropyLoss()),該損失函數(shù)綜合了nn.LogSoftmax()和nn.NLLLoss()兩種函數(shù)方法,nn.LogSoftmax()相當于激活函數(shù),nn.NLLLoss()則是損失函數(shù)。其公式表達為
(2)
SeGAN算法也引入了對抗網(wǎng)絡算法的思想[12],在GAN中會有兩種不同的網(wǎng)絡訓練:生成器網(wǎng)絡(Generator)和判別網(wǎng)絡(Discriminator),GAN算法流程圖如圖2所示。由圖2可知,給生成網(wǎng)絡加入隨機噪音變量z,則輸出的將是虛假圖片數(shù)據(jù)G(z;θg),然后判別網(wǎng)絡輸入兩個參數(shù):真實圖片x和虛假圖片z,輸出的結果表明了該輸入為真實數(shù)據(jù)圖像還是虛假圖片的二分類置信度D(x;θd)。在理想情形下,判別網(wǎng)絡D要通過結果準確識別輸入的圖像究竟是個真實的圖像還是生成器生成的圖像,而生成器G所要做的就是以最大可能性去欺騙D,讓判別器把產(chǎn)生的虛假圖像判斷為真實的圖像。
圖2 GAN算法流程圖
訓練過程是典型的博弈思維,通過互相提升網(wǎng)絡的特性,增加分割精度,增強辨別能力。由算法訓練方式和過程定義了其損失函數(shù)如下:
(3)
式中,xi、zi為實際的圖片數(shù)據(jù)和noise變量,優(yōu)化目標是minGmaxDLoss。訓練過程中在不斷對參數(shù)進行優(yōu)化,在這里不是對θg、θd直接進行梯度優(yōu)化,而是逐步進行。對于訓練判別器D,即更新θd,循環(huán)k次,每循環(huán)一次準備一組真實數(shù)據(jù)x=x1,x2,x3,…,xm和一組偽圖片數(shù)據(jù)z=z1,z2,z3,…,zm,通過式(4)進行計算,
(4)
再用梯度上升法更新θd。通過訓練生成器網(wǎng)絡G更新θg:先提供一組偽圖片數(shù)據(jù)z=z1,z2,z3,…,zm,計算如式(5)所示:
(5)
接著用梯度下降法更新θg,以此為循環(huán)交替訓練網(wǎng)絡。
盡管SeGAN和Gan都利用了對抗性訓練過程,但它們有不同的目標。不同于傳統(tǒng)的Gan試圖找到兩個分布pdata和Pz之間的映射函數(shù),SeGAN旨在解決輸入圖像和它們正確的分割掩碼之間的映射(即像素方向的標簽映射)。在SeGAN中,首先給出一個數(shù)據(jù)集,其中包含訓練圖像xn和一一對應的標簽圖像yn,定義多尺度目標損失函數(shù)為
(6)
式中,lmae為平均絕對誤差(MAE);xn·S(xn)是被分割的預測標簽映射(即預測標簽映射與原始圖像的像素相乘)的輸入圖像;xn·yn是被真實的標簽映射(即真實的標簽映射與原始圖像的像素相乘)的輸入圖像;fc(x)表示評價網(wǎng)絡從圖像x中提取的層次特征。
圖3 SeGAN網(wǎng)絡結構圖
SeGAN網(wǎng)絡結構主要由Segmentor和Critic兩部分構成。Segmentor部分是類似U-Net的u型網(wǎng)絡結構,編碼器部分先使用卷積核大小為4×4、步長為2的卷積層進行降采樣,解碼器部分通過卷積調(diào)整圖像大小進行上采樣,最后一步通過卷積核大小為3×3、步幅為1的卷積層進行上采樣,最后輸出結果是網(wǎng)絡預測的焊縫二值圖像;Critic部分的網(wǎng)絡共用Segmentor部分編碼的前3層,依次向Critic輸送經(jīng)過預測的焊縫二值圖掩膜的原始輸入圖像,以及真實焊縫二值圖掩膜的原始輸入圖像,而最后的loss值則經(jīng)過計算兩個不同輸出之間的MAE值(L1 loss)得到。其中Multi-scale對Critic部分的每一個卷積計算層產(chǎn)生的特征圖像都計算其MAE值,對最終的總loss取平均值。訓練網(wǎng)絡方式類似于GAN網(wǎng)絡的對抗訓練學習過程。首先,固定S(Segmentor),對C(Critic)開始一輪訓練;再固定C(Critic),對S(Segmentor)再開始下一輪訓練,如此反復。對Critic的訓練目的是使loss變大(max),對Segmentor訓練的目的是使loss變小(min)。隨著訓練的不斷進行,兩個網(wǎng)絡會變得越來越大,一直訓練到分割生成器能夠生成出與真實圖片非常接近的圖像即為預測圖像。
本實驗是在一臺服務器上完成,CPU為酷睿I5-11400F,GPU為GeForce RTX2060,運行內(nèi)存為6 G。要進行神經(jīng)網(wǎng)絡訓練首先要收集焊縫數(shù)據(jù),對大量數(shù)據(jù)樣本圖片進行圖像預處理。數(shù)據(jù)集圖片來自于焊接現(xiàn)場拍攝,部分如圖4所示。共2 000張圖片,其中500張為不含目標焊縫和已經(jīng)焊接完成的圖片,1 000張為含有T型角接焊縫的圖片,另有500張含有V型焊縫的圖片。由于數(shù)據(jù)樣本量較少,對其進行擴充,使得數(shù)據(jù)量擴大100倍。對于收集的焊縫圖片,這些采集到的圖片數(shù)據(jù)集是沒有標簽的,需要人工對其逐一進行標注,標注后的圖片結果才能用于網(wǎng)絡訓練。標注工具使用的是一個圖形界面的圖像標注軟件——LabelMe。對原始圖像使用LabelMe標注,對不含目標焊縫的圖片直接標注為0,L型焊縫紅色框標注標簽為1,T型焊縫用綠色框標注標簽為2。標注過的焊縫圖如圖5所示。
圖4 部分圖像數(shù)據(jù)集
圖5 部分焊縫圖數(shù)據(jù)標注
針對研究的分類問題,用準確率(Accuracy)、精確率(Precision)和召回率(Recall)來表示訓練和預測效果。
(7)
(8)
(9)
式中,TP為真陽性;TN為真陰性;FP為假陽性;FN為假陰性。MobileNetV3訓練驗證過程參數(shù)曲線如圖6所示。由圖6可知,用MobileNetV3網(wǎng)絡在焊縫圖片數(shù)據(jù)集上的準確度快速達到穩(wěn)定狀態(tài),而且訓練和驗證時的誤差收斂較好,訓練過程曲線較平滑。
圖6 MobileNetV3訓練驗證過程參數(shù)曲線
將訓練結果較好的模型用在測試集上進行訓練,訓練集混淆矩陣如圖7a所示;測試集混淆矩陣如圖7b所示。通過公式計算得出各指標數(shù)值如表2、3所示。
圖7 混淆矩陣
表2 訓練結果各項指標
表3 測試結果各項指標
由表2和表4可知,訓練集上的精確度為99.74%,測試集結果的準確率為99.39%,已達到要求精度。為了驗證MobileNetV3在焊縫分類識別中的有效性,分別用了MobileNetV2、VGG16和RestNet網(wǎng)絡在焊縫圖像數(shù)據(jù)集上進行訓練測試,得到各參數(shù)結果如表4所示。其中,Parameter amount為權重、卷積核等各參數(shù)的數(shù)量,Predicted time為測試所有測試集數(shù)據(jù)的時間。
表4 不同網(wǎng)絡在焊縫圖像數(shù)據(jù)集上的訓練測試結果
分類結束后將結果保存的文件放在Precdict-result.py文件后面,為進行預測焊縫位置做準備。對于焊縫位置定位用到SeGAN網(wǎng)絡訓練,首先生成訓練判別器G,然后生成訓練判別器D。輸入圖片像素為180×180×128大小,在進行網(wǎng)絡訓練過程中,進一步將圖片大小隨機剪裁為160×160×128大小,從而達到數(shù)據(jù)增強的效果。
訓練模型時,通過對比使用批量隨機梯度算法、動量梯度下降方法和自適應調(diào)節(jié)學習率的Adam優(yōu)化器,得知Adam算法結果最好。訓練過程參數(shù)設置:一次訓練選取樣本數(shù)Batch Size為10,完整訓練Epoch為30,每個Epoch訓練1 302張圖片,學習率設置為0.000 2,動量系數(shù)設置為0.9,使用單個GPU訓練,學習衰減率設為0.5。訓練過程中,生成器網(wǎng)絡損失值G-loss和判別器網(wǎng)絡損失值D-loss如圖8所示。在訓練10個Epoch后,損失值都趨于穩(wěn)定狀態(tài)。
圖8 G-loss與D-loss曲線 圖9 Dice值曲線
訓練結果Dice值如圖9所示。Dice值為預測的正確結果的兩倍比上真實結果和預測結果的總和,數(shù)學表達式如式(10)所示,Dice值越高表示預測區(qū)域與真實樣本標注區(qū)域重合度越高,分割效果越好。在第10個Epoch過后Dice都穩(wěn)定在0.95左右。
(10)
將分類定位兩部分合成一個運行程序,輸入260張測試焊縫圖片,預測種類結果和定位,輸出結果標簽值為0或1或2,分別為無焊縫、L型焊縫和T型焊縫。為了使分割的效果可視化,抽取部分的結果如圖10所示,黑色部分為焊接件,白色區(qū)域為分割出來的焊縫位置,可見SeGAN網(wǎng)絡具有較好的分割效果,尤其是對寬度較小的焊縫也具有良好的分割效果。在識別效率方面,預測時間約為1.38 s,SeGAN網(wǎng)絡分割較傳統(tǒng)U-Net分割網(wǎng)絡效率有所提高。
圖10 焊縫分割結果
最后,將本文算法與其他分割算法進行了對比實驗,將每個模型訓練過程中的超參數(shù)設置為文獻推薦參數(shù)值,同樣在本文的焊縫數(shù)據(jù)集上進行訓練預測,得到不同模型的MPA值和MIOU值如表5所示。
表5 不同算法實驗對比
通過對比幾個不同算法的參數(shù)結果,結合了GAN的分割網(wǎng)絡與其他幾個網(wǎng)絡相比,其MAP值和MIOU值均有所提高,相對原本SegNet算法平均交并比提高了1.5%。
本文用一種輕量化的網(wǎng)絡MobileNetV3將傳統(tǒng)卷積替換成深度可分離卷積,當網(wǎng)絡結構為深層網(wǎng)絡結構時可以大大減少參數(shù)量,計算量和參數(shù)量為傳統(tǒng)卷積的1/3,可以防止模型過擬合,有效提高網(wǎng)絡模型的魯棒性。研究借鑒了GAN網(wǎng)絡的思路,采用SeGAN分割網(wǎng)絡,用min-max的對抗學習來訓練Segment和Critic部分,并用Multi-scale L1 loss來優(yōu)化分割網(wǎng)絡,分割出的圖像較原始圖像更平滑,包含更少噪聲,MIOU值較U-Net提高了4.7%,較SegNet提高了1.5%。對于研究中實驗樣本數(shù)量不夠大,影響網(wǎng)絡模型分割性能的問題,后續(xù)將對數(shù)據(jù)樣本量進行擴充,并擴增焊縫類型,提高深度學習在焊縫檢測方面的適用性。