謝 寧, 譚俊濤, 陳 梁, 黃元毅
(1.上海通用五菱汽車股份有限公司,柳州 545007;2.湖南大學汽車車身先進設計制造國家重點實驗室,長沙 410082)
白車身焊接機器人是集環(huán)境感知、運動規(guī)劃和控制于一體的系統(tǒng).其中,對白車身焊點位置的檢測是實現(xiàn)機器人自動完成焊接質(zhì)量檢測的重要基礎[1].傳統(tǒng)的基于霍夫圓變換的焊點檢測方法在車間光照條件不好、油污的影響以及焊點自身的形狀不規(guī)則等情況下,檢測效果較差.因此,研究復雜環(huán)境下焊點的檢測定位方法對于提升白車身質(zhì)量有著重大意義.
近年來,鑒于深度學習對目標特征具有高度的提取能力,神經(jīng)網(wǎng)絡被廣泛運用到目標檢測的任務當中.目前,主流的檢測方法主要分為單階段檢測和雙階段檢測兩類[2].雙階段檢測先對檢測圖像進行候選區(qū)域生成,再通過卷積神經(jīng)網(wǎng)絡在區(qū)域中進行目標的檢測,代表網(wǎng)絡為R-CNN系列網(wǎng)絡[3].單階段檢測則省去了候選區(qū)域生成這一步驟,直接在網(wǎng)絡中對圖像進行特征提取來預測目標的位置和類別,代表網(wǎng)絡有YOLO[4]、SSD[5]系列網(wǎng)絡.單目標檢測網(wǎng)絡的特點是端到端,檢測速度快,其中,最經(jīng)典的是YOLO(You Only Look Once)系列算法.在車身焊點檢測方法研究中,巴文進[6]利用基于多輪廓聚類分析的類圓檢測方法,相較于霍夫圓檢測能夠在焊點形狀不理想的情況下具有更好的檢測效果,但對于圖像中噪聲較嚴重的情況難以達到好的效果;王振興[7]通過改進YOLOv2來識別焊點,能夠很好的克服在光線環(huán)境過亮、過暗以及焊點形狀不規(guī)則的情況下,焊點難以識別的問題;馬亞東[8]使用Tiny-YOLOv3算法結(jié)合RTCD圓檢測算法來聯(lián)合定位焊點位置,精確率和召回率達到了98.5%和88.1%,但從識別效果上來看,焊點漏檢的問題還可以進一步改善.
近年來,YOLO系列不斷更新,新的YOLOv7[9]算法是YOLOv4的原三位作者Chien-Yao Wang、Alexey Bochkovskiy和Hong-Yuan Mark Liao提出.YOLOv7在5 FPS到160 FPS范圍內(nèi),速度和精度都超過了所有已知的目標檢測器.針對車間焊點檢測容易受環(huán)境光、銹跡和污漬影響的問題及在線檢測實時性的需求,文中選擇兼具檢測魯棒性與速度的YOLOv7系列網(wǎng)絡模型,同時完成其輕量化模型的訓練,降低設備運行性能要求以減小成本,以滿足工廠生產(chǎn)線焊點實際檢測要求.
目標檢測神經(jīng)網(wǎng)絡需要依托數(shù)據(jù)集進行訓練,文中研究以焊點檢測為目標,使用工業(yè)相機采集白車身焊接車間白車身上4 000張不同光照條件、各種實際工況下的焊點灰度圖片,以保證檢測的穩(wěn)定性和準確性.圖1為一組不同光照條件和干擾情況下的焊點圖像.
圖1 不同環(huán)境下采集的焊點圖像
使用LabelImg標注工具對數(shù)據(jù)集中的焊點目標進行標注,并將標注信息保存為Pascal VOC數(shù)據(jù)集格式.將標注好的4 000張圖片,通過Python腳本對圖片進行一系列的尺寸變換(如縮放、裁剪和翻轉(zhuǎn)等),擴充到8 000張,其中,5 600 張作為訓練集,2 400 張作為驗證集.由于數(shù)據(jù)集樣本的數(shù)量和復雜程度對網(wǎng)絡模型的檢測準確性和泛用性有很大的影響,網(wǎng)絡通常會在加載數(shù)據(jù)集時對圖片進行預處理來間接實現(xiàn)數(shù)據(jù)集的增強.文中通過以下方式對數(shù)據(jù)集圖像進行增強.
(1)對圖片在HSV顏色空間上進行變換、直方圖均衡化、中值濾波等方法對圖像進行增強;
(2)對1張圖片隨機引入另外3張或8張圖片,通過Mosaic[10]方法生成一張新的圖片,提升了數(shù)據(jù)的多樣性以及GPU的計算效率;
(3)隨機選擇兩張圖片,將一張圖片中的目標通過CopyPaste[11]方法隨機復制粘貼到另一張圖片中;
圖2為焊點原圖片經(jīng)過數(shù)據(jù)增強后輸入神經(jīng)網(wǎng)絡的圖片.
圖2 經(jīng)過數(shù)據(jù)增強的焊點圖片
YOLOv7是目前具有最優(yōu)秀性能的端到端目標檢測神經(jīng)網(wǎng)絡之一,具有檢測速度快、實時性好的特點.由于焊點檢測場景具有單一性,車身焊點形狀幾乎都為類圓形,焊點灰度圖像灰度特征簡單,且檢測類別僅有焊點一類,因此,文中采用YOLOv7的簡化網(wǎng)絡YOLOv7-Tiny作為焊點目標檢測網(wǎng)絡.
YOLOv7-Tiny網(wǎng)絡結(jié)構(gòu)如圖3所示.
YOLOv7-Tiny特征提取網(wǎng)絡由CBL模塊、改進高效長程聚合網(wǎng)絡ELAN-T層和MP層構(gòu)成.ELAN-T層作為多分支堆疊模塊,由數(shù)個CBL模塊拼接而成,最終堆疊模塊的輸入包含多個分支.ELAN-T層與原始ELAN層的區(qū)別僅在于CBL模塊連接輸出數(shù)量的不同,ELAN-T削減了兩層分支,雖然特征提取能力有所下降,但提升了特征提取的速度.堆疊模塊對應了更密集的殘差結(jié)構(gòu),使網(wǎng)絡更容易優(yōu)化,緩解模型深度增加帶來的梯度消失問題.
在卷積神經(jīng)網(wǎng)絡中,經(jīng)過層層卷積,高層結(jié)果所含的語義特征信息越強,但同時也會使得目標的幾何位置信息越弱,造成位置信息的損失,不利于小目標檢測.YOLOv7-Tiny網(wǎng)絡使用了FPN+PAN的網(wǎng)絡結(jié)構(gòu),能夠?qū)Σ煌瑢蛹壍奶卣鬟M行信息融合,在不同的尺度上對目標進行預測,網(wǎng)絡結(jié)構(gòu)如圖4所示.
圖4 FPN+PAN網(wǎng)絡結(jié)構(gòu)圖
FPN(Feature Pyramid Network)網(wǎng)絡結(jié)構(gòu)類似金字塔,圖片先經(jīng)過Backbone網(wǎng)絡一系列卷積操作得到高層結(jié)果,然后,自上而下對高層結(jié)果進行上采樣(Upsample)過程,同時融合來自Backbone網(wǎng)絡中的一些淺層的信息.FPN網(wǎng)絡能夠自上而下地傳遞高層的語義特征信息,但是位置信息的傳遞效果不好,特征信息較弱.PAN(Path Aggregation Network)網(wǎng)絡結(jié)構(gòu)是一個自下而上的金字塔網(wǎng)絡,能夠?qū)PN網(wǎng)絡進行補充,將底層結(jié)果所含較強的位置信息傳遞到上層,得到的結(jié)果即包含語義特征信息又包含位置消息.最后,我們在網(wǎng)絡的三個不同尺度上的輸出上對結(jié)果進行目標預測.
通過FPN特征金字塔,網(wǎng)絡輸出大中小3個尺度的加強圖像特征,模型會分別將這3個特征傳入檢測端,檢測端負責將特征圖轉(zhuǎn)換為邊界框和類別概率.檢測端引入隱式表征策略來細化預測結(jié)果,對應特征圖大小使用3種目標尺寸的IDetec檢測頭.
YOLOv7原版網(wǎng)絡中默認采用的激活函數(shù)為SiLU,具備無上界有下界、平滑、非單調(diào)的特性,效果較ReLU要好,特別是在較深的網(wǎng)絡中優(yōu)勢更明顯.但是考慮到Tiny網(wǎng)絡結(jié)構(gòu)相較YOLOv7簡單,且設備的性能不高,以及對目標檢測的實時性要求,YOLOv7-Tiny采用計算量較小的LeakyReLU激活函數(shù)來提升檢測速度.
評價一個目標檢測神經(jīng)網(wǎng)絡模型檢測精度的指標,一般采用均值平均精度(mean Average Precision,mAP),評價模型檢測速度則是每秒檢測幀數(shù)(Frames Per Second,F(xiàn)PS).mAP是所有檢測類別的平均精度(Average Precision,AP)求和再除以所有類別的平均值.AP值通過畫出召回率(Recall)和準確率(Precision)的曲線,計算曲線圍成的面積得到.將一個正確的目標成功檢測出來則為真正類(True Positive,TP),將一個不正確的目標檢測為正確則為假正類(False Positive,F(xiàn)P).設目標的總數(shù)有N個,則模型檢測的召回率為
(1)
模型檢測的準確率為
(2)
對不同的召回率的值記錄對應的最大的準確率,畫出R與P的曲線圖,計算P-R曲線與坐標軸圍成的面積就是模型的AP值:
(3)
文中使用基于Pytorch的深度學習框架,電腦配置為:顯卡為GTX1050 2GB,CPU為Intel i5-7500 3.40GHz,運行內(nèi)存為8G.將5 600張焊點圖片作為訓練數(shù)據(jù)集,同時采用了數(shù)據(jù)增強的方法來增加樣本.在訓練過程中,計算每一輪結(jié)果在驗證集上的損失值,記錄并保存每一輪的訓練結(jié)果同時更新網(wǎng)絡權(quán)重,根據(jù)損失函數(shù)對網(wǎng)絡自動進行調(diào)整.訓練結(jié)果如圖5所示.
圖5 Loss值曲線
模型訓練損失如圖所示,訓練500輪左右,驗證集損失val_loss曲線趨于穩(wěn)定,模型已經(jīng)收斂.600輪后,雖然訓練集損失仍在逐步下降,但val_loss曲線開始有上升趨勢,說明模型發(fā)生了過擬合.選擇val_loss最小值對應的結(jié)果作為模型最終權(quán)重進行實驗.
將訓練得到的目標檢測模型在含有2 400張焊點圖片的驗證集上進行驗證,得到最終結(jié)果.不同模型在驗證集下的實驗結(jié)果匯總在表中,AP@0.5表示交并比為0.5時的平均精度,AP@0.5∶0.95表示交并比從0.5到0.95,步長為0.05的不同交并比的平均精度的平均值.
從表1中的結(jié)果來看,YOLOv2和YOLOv3的AP@0.5∶0.95值為72.8%和64.9%,但是參數(shù)量超過50 M,模型過大不利于實際部署,檢測速度也不能滿足實際需求.YOLOv3-Tiny與YOLOv3相比精度提高了10.4%,模型參數(shù)量為8.6 M,運行速度和精度優(yōu)于前兩種算法,但仍不夠理想.相比之下,YOLOv7-Tiny網(wǎng)絡模型精度、FPS和參數(shù)量分別達到81.2%、27.83和6.0 M,各方面有顯著提高,雖然精度相比于YOLOv7原網(wǎng)絡下降了1.1%,但TOLOv7-Tiny網(wǎng)絡參數(shù)量比YOLOv7減少了30.4 M,檢測的FPS值更是達到了27.83,高出YOLOv7網(wǎng)絡FPS值18.78,更加接近機器視覺檢測幀率的標準,在相同設備條件下運行效率更高,對焊點的檢測能在保證相當精度的情況下更加具有實時性.
表1 不同模型對比結(jié)果
在對白車身焊點進行精確定位時,基于霍夫變換的圓檢測算法在大多數(shù)情況下表現(xiàn)情況都很好,但是遇到圖像信息較為復雜的情況,算法很容易受到噪聲的干擾,導致無法對焊點的檢測出現(xiàn)誤檢、漏檢的情況.
從圖6中可以看出,傳統(tǒng)圖像處理算法在一定程度上能夠檢測焊點信息,但是算法固定的閾值設定會讓檢測在不同環(huán)境下的效果不穩(wěn)定,一張圖片在不同的閾值下會出現(xiàn)不同的結(jié)果,而一定的閾值在不同的圖片上可能檢測效果不好,出現(xiàn)漏檢和誤檢的情況.
圖6 基于霍夫圓檢測的傳統(tǒng)焊點檢測方法
圖7是不同光照環(huán)境下,以及存在銹跡或油污的焊點圖片用傳統(tǒng)檢測方法和基于神經(jīng)網(wǎng)絡檢測方法的結(jié)果對比.
圖7 檢測方法效果對比
圖7中使用方框標記目標的方法為文中的檢測方法,通過對比可知,設定了固定閾值的傳統(tǒng)焊點識別無法同時滿足不同光照下的焊點檢測,而在圖片中存在銹跡或油污的情況下,圖像邊緣檢測處理算法會受到嚴重的干擾,導致圓檢測基本無法識別目標,產(chǎn)生漏檢或誤檢的情況.而基于YOLOv7-Tiny神經(jīng)網(wǎng)絡的焊點檢測方法,相比于傳統(tǒng)的檢測算法,能夠識別出不同環(huán)境下的焊點位置,在焊點形狀不完全時也具有一定的識別能力,解決了環(huán)境干擾下焊點檢測效果差的問題,檢測的魯棒性、檢測準確率大幅提升.
針對汽車白車身焊點檢測問題,文中提出了基于輕量化YOLOv7的焊點檢測方法,建立焊點數(shù)據(jù)集,并將訓練得到的模型與傳統(tǒng)焊點檢測算法進行比較.實驗結(jié)果表明,網(wǎng)絡模型具有參數(shù)少、檢測精度高的特點,AP@0.5達到了99.3%,單張檢測時間為0.036秒,表明該輕量化模型能夠適應不同生產(chǎn)環(huán)境下的焊點檢測,實現(xiàn)在線實時焊點質(zhì)量檢測,有效提高車身焊點自動化質(zhì)量監(jiān)測的效率.