羅純坤
(西南交通大學(xué), 四川成都 610031)
螺栓連接相比于焊接、鉚接等連接方式,具有安裝方便、質(zhì)量可靠等優(yōu)點,故廣泛運用于眾多領(lǐng)域,尤其是在鋼橋中[1]。螺栓連接的質(zhì)量直接關(guān)乎著整個結(jié)構(gòu)的安全性,所以應(yīng)在施工和運營階段始終保證其質(zhì)量安全可靠。但是,在實際運營過程中,由于各種復(fù)雜作用的綜合影響,螺栓難免會長期處于振動和負荷狀態(tài),甚至受到?jīng)_擊,因此螺栓可能會出現(xiàn)脫落現(xiàn)象,危及整個結(jié)構(gòu)的安全[2]。螺栓脫落問題一直是橋梁工程領(lǐng)域研究的重點,準確的螺栓脫落檢測方法可以極大地保證橋梁的安全運營。
傳統(tǒng)的螺栓脫落檢測技術(shù)主要靠人工巡檢,該方法主要由人工來操作,不僅費時費力,而且不能實現(xiàn)實時檢測。近年來,深度學(xué)習(xí)的興起,促進了螺栓脫落檢測技術(shù)的發(fā)展,基于深度學(xué)習(xí)的方法成本低,屬于無損檢測,識別的準確率高且易于部署,克服了傳統(tǒng)螺栓檢測技術(shù)的弊端。
采用消費級相機在帶螺栓拼接板上采集螺栓脫落圖像,采集時需要變換拍攝角度、距離等,以保證螺栓圖像的多樣性。共采集螺栓圖像230張,圖像示例如圖1所示。
圖1 螺栓脫落圖像數(shù)據(jù)示例
為提高螺栓脫落檢測模型的魯棒性,對采集的原始圖像進行一定的預(yù)處理,主要為螺栓圖像篩選和圖像尺寸統(tǒng)一化。采集的螺栓圖像總共230張,因部分圖像之間是相似的,從中挑選出200張圖像作為螺栓脫落數(shù)據(jù)集。最后采用Python將螺栓圖像的分辨率壓縮到640像素×480像素,以方便輸入到網(wǎng)絡(luò)進行訓(xùn)練。
經(jīng)過圖像預(yù)處理后,采用labelImg對螺栓脫落圖像進行標注。對標注完成得到的圖像進行數(shù)據(jù)集劃分,按7∶2∶1的比例對數(shù)據(jù)集進行隨機劃分,得到訓(xùn)練集、驗證集和測試集。
目標檢測的任務(wù)是為了能在給定的圖像中準確找到物體的位置,并給出物體的類別。目前常見的目標檢測算法眾多,可分為2類,即單階段和兩階段的目標檢測。常用單階段目標檢測算法有Yolo系列、SSD和RetinaNet等;常用兩階段目標檢測算法有R-CNN、SPP-NET、Fast R-CNN和Faster R-CNN等。兩階段的目標檢測精度高但檢測速度慢,單階段的目標檢測速度快但精度稍遜。由于本文只需要對1~2個類別進行檢測,故選擇單階段目標檢測算法精度就足夠了,最終確定選擇Yolo網(wǎng)絡(luò)來進行螺栓脫落檢測。
Yolo是基于深度學(xué)習(xí)的回歸方法,其核心思想是將整張圖作為輸入,直接在輸出層回歸目標框的位置和目標所屬的類別。Yolo系列主要有Yolov1~ Yolov5等多個版本的算法,對比各個版本的檢測準確率和速度,最終選擇采用Yolov5深度學(xué)習(xí)模型來檢測螺栓脫落。Yolov5s是由輸入端、Backbone、Neck、Prediction 4個部分所構(gòu)成,其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 Yolov5s網(wǎng)絡(luò)結(jié)構(gòu)
(1)輸入端包括Mosaic數(shù)據(jù)增強、自適應(yīng)錨框計算、自適應(yīng)圖片縮放這3個部分。Mosaic數(shù)據(jù)增強的核心思想是隨機選取4張圖片,將4張圖片進行隨機裁剪、隨機縮放、隨機排布的方式進行拼接。可以豐富數(shù)據(jù)集,讓網(wǎng)絡(luò)的魯棒性更好,且可以直接計算4張圖片的數(shù)據(jù),使得Mini-batch大小并不需要很大,可以減小GPU。自適應(yīng)錨框是指Yolov5s模型中會預(yù)設(shè)錨定框,當自定義數(shù)據(jù)集輸入后,Yolov5s會按照自定義數(shù)據(jù)集的標簽來自動學(xué)習(xí)預(yù)設(shè)錨定框的尺寸。在網(wǎng)絡(luò)訓(xùn)練過程中,會在預(yù)設(shè)框的基礎(chǔ)上輸出預(yù)測框,再與真實框?qū)Ρ?反向更新誤差,迭代網(wǎng)絡(luò)參數(shù)繼續(xù)訓(xùn)練,在一定程度上可以提高檢測的精度。自適應(yīng)圖片縮放是指將輸入圖片統(tǒng)一縮放到一個標準尺寸,長寬比不同的圖片會對原始圖像自適應(yīng)的添加最少的黑邊,填充的黑邊越少,目標檢測速度越快。
(2)Backbone主干網(wǎng)絡(luò)結(jié)構(gòu)主要包括Focus結(jié)構(gòu)和CSP結(jié)構(gòu)。Focus結(jié)構(gòu)的原理是圖片進入Backbone前對其進行切片操作,具體操作類似于鄰近下采樣,將寬、高的信息集中到通道上,然后再使用卷積進行特征提取。其作用是為了在下采樣過程中不丟失信息,且可使特征提取更加的充分,但與普通卷積下采樣相比計算量會增加一點點。Yolov5s中含有2種CSP結(jié)構(gòu),如網(wǎng)絡(luò)結(jié)構(gòu)圖所示,CSP1_X結(jié)構(gòu)應(yīng)用在Backbone主干網(wǎng)絡(luò)中,CSP2_X結(jié)構(gòu)應(yīng)用在Neck中。其主要作用為增強CNN的學(xué)習(xí)能力,使得在輕量化的同時還能保持準確率,還可以降低計算瓶頸,降低內(nèi)存成本等。
(3)Neck網(wǎng)絡(luò)結(jié)構(gòu)主要包括SPP模塊和FPN+PAN的結(jié)構(gòu)。在目標檢測中,通常會在Backbone主干網(wǎng)絡(luò)和輸出層之間插入一些層,這個部分就稱為Neck,其主要作用是為了更好地對融合特征進行提取,且Neck中使用CSP2_X結(jié)構(gòu)加強了網(wǎng)絡(luò)特征融合的能力。
(4)輸出端Prediction主要包括邊界框的損失函數(shù)計算和nms非極大值抑制。Yolov5采用了CIOU_Loss作為損失函數(shù),使得預(yù)測框回歸的速度和精度都更高一些。目標檢測的后處理過程中,需要對很多的目標框進行篩選,通常需要nms非極大值抑制操作來實現(xiàn)。
隨著計算機視覺的不斷發(fā)展,在一些領(lǐng)域已經(jīng)取得了顯著的成就,但是這些成功的背后都是靠大量的數(shù)據(jù)支撐,尤其在深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練中,若想要獲得不錯的效果,需要幾十萬甚至上百萬的數(shù)據(jù)[3]。在實際運用中,因為收集到的相關(guān)數(shù)據(jù)集過小,根本不可能實現(xiàn)從零開始訓(xùn)練整個網(wǎng)絡(luò),為此可采用遷移學(xué)習(xí)來解決數(shù)據(jù)量不足的問題。遷移學(xué)習(xí)是指用一個已經(jīng)訓(xùn)練好的模型進行另一個模型的訓(xùn)練[4],這個訓(xùn)練好的模型是在非常大的數(shù)據(jù)集上已經(jīng)預(yù)訓(xùn)練好了的。很明顯,若2個數(shù)據(jù)集之間存在較強的相關(guān)性,遷移學(xué)習(xí)的效果就越好,采用較少的數(shù)據(jù)就可以訓(xùn)練得到較好的結(jié)果。
預(yù)訓(xùn)練Yolov5s的模型的原始訓(xùn)練數(shù)據(jù)集是COCO數(shù)據(jù)集,起源于微軟于2014年出資標注的Microsoft COCO數(shù)據(jù)集,與ImageNet 競賽一樣,被視為是計算機視覺領(lǐng)域最受關(guān)注和最權(quán)威的比賽之一。COCO數(shù)據(jù)集包含200 000張圖像,含有80個類別,超過500 000個目標標注,是一個最廣泛公開的目標檢測數(shù)據(jù)庫。由于本文只需對少類別目標進行檢測,用其訓(xùn)練好的權(quán)重作為預(yù)訓(xùn)練權(quán)重,可以實現(xiàn)利用較少圖像得到不錯的檢測效果。
螺栓目標檢測模型的搭建和訓(xùn)練在PyTorch平臺上進行,編程語言為Python,編譯器為PyCharm 2020.1。模型訓(xùn)練的硬件和軟件配置如表1所示。
表1 軟硬件配置
螺栓目標檢測模型的預(yù)訓(xùn)練權(quán)重使用Yolov5官方提供的yolov5s.pt,大部分超參數(shù)設(shè)置成模型中給定的初始值,主要設(shè)置的訓(xùn)練參數(shù)設(shè)置如表2所示。
表2 訓(xùn)練參數(shù)設(shè)置
模型訓(xùn)練到300次時停止訓(xùn)練,此時準確率達到98.32%,損失值為0.014 91,訓(xùn)練過程的準確率和損失曲線如圖3所示。訓(xùn)練得到2個權(quán)重文件,分別為best.pt和last.pt,最好的訓(xùn)練結(jié)果是在epoch為114次時到達,用best.pt權(quán)重文件進行螺栓圖片檢測,可以發(fā)現(xiàn)螺栓脫落檢測效果良好,檢測效果如圖4所示。
圖3 螺栓脫落檢測訓(xùn)練過程準確率和損失曲線
圖4 螺栓脫落檢測結(jié)果
(1)螺栓脫落檢測訓(xùn)練過程中,在迭代訓(xùn)練50次左右開始到達穩(wěn)定,114次達到最優(yōu),300次時準確率為98.32,損失值為0.014 91,可見模型訓(xùn)練參數(shù)設(shè)置合理,模型收斂較快。
(2)利用訓(xùn)練完成后的模型進行螺栓脫落檢測準確率高、速度快、魯棒性良好,可運用于實際結(jié)構(gòu)中螺栓脫落的實時檢測。
(3)本文算法還可結(jié)合無人機或外接攝像頭,用于橋梁結(jié)構(gòu)螺栓脫落的實時檢測。