王 振 鄧三鵬 祁宇明 周裔揚
(天津職業(yè)技術(shù)師范大學(xué)機器人及智能裝備研究院,天津,300222)
鋼軌螺栓組件指的是鋼軌接頭處用于固定軌道夾板的螺栓、螺母、墊圈的組合體,它是保證兩段鋼軌安全連接的關(guān)鍵,因為重載火車高速碾壓和各種不確定因素的作用,造成組件出現(xiàn)各種故障,典型的有扭緊力下降、螺栓斷裂、螺母裂紋或缺失、墊圈斷裂或缺失、組件整體缺失。許多火車事故都是由于鋼軌連接處的問題引起的[1],因此對影響鋼軌接頭處安全的鋼軌螺栓組件故障進行目標檢測算法研究具有重要價值。
軌道螺栓組件位于鋼軌的側(cè)面,如圖1所示。在鐵路軌道中,每隔12.5m或25m有一段鋼軌接頭,需要軌道螺栓組件連接固定,這導(dǎo)致螺栓組件的檢測和維修的工作是間斷不連續(xù)的。傳統(tǒng)的軌道螺栓組件識別與檢測依賴于人工,需要工人每每俯身彎腰察看,這要求工人需要大量的先驗知識、技巧以及體力、耐力要求。雖然要求高,但是這種檢測效果不是很好,效率十分低下。
圖1 螺栓組件位置圖
基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的目標檢測算法,通過將目標檢測與深度學(xué)習(xí)相結(jié)合,采用相關(guān)數(shù)據(jù)進行目標特征自動學(xué)習(xí)的方式,可以進行多樣化背景與遷移場景的目標檢測?;贑NN的目標檢測算法可以分為兩類:一類是以R-CNN系列為代表的基于候選區(qū)域的目標檢測算法,這類算法的特點是檢測精度高、速度慢;另一類是以YOLO(You Only Look Once)系列、SSD[2]系列為代表的基于回歸的目標檢測算法,這類算法的優(yōu)點是實時性好,缺點是檢測精度相對偏低。
YOLO v3是YOLO系列目標檢測算法的第三版,相比于上述第一種檢測方法速度慢的特點,YOLO v3[3]既可以保證檢測精度,也可以保證檢測速度。這類針對小目標物體的檢測,國內(nèi)外諸多研究者提出了不同的方案。鞠默然等[4]在YOLO v3的基礎(chǔ)上對模型的網(wǎng)絡(luò)結(jié)構(gòu)進行了改進,有效提高了對衛(wèi)星拍攝圖像中小目標物體的檢測能力。岳曉新等[5]使用聚類算法對訓(xùn)練數(shù)據(jù)集進行聚類分析,并引入新的損失函數(shù)運行道路小目標檢測算法,能夠大大提高小目標檢測精度和速度,并有效降低小目標漏檢率。本文綜合考慮YOLO v3在小目標檢測領(lǐng)域的各種應(yīng)用,采用一種基于YOL0v3的鋼軌螺栓組件故障目標檢測算法。
YOLO v3的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,主要包括Darknet-53網(wǎng)絡(luò)與YOLO層。Darknet-53作為骨干網(wǎng)絡(luò)主要用于提取圖像特征,它是全卷積網(wǎng)絡(luò),包含53個卷積層,并引入了殘差結(jié)構(gòu)。當(dāng)輸入圖像尺寸為416×416時,Darknet-53特征提取網(wǎng)絡(luò)輸出三個尺度的特征圖,大小分別為13×13、26×26、52×52。將三個不同尺度的特征圖通過FPN(Feature Pyramid Network)進行融合,利用多尺度策略幫助網(wǎng)絡(luò)模型同時學(xué)習(xí)不同層次的特征信息,最后將融合后的特征輸入YOLO層進行類別預(yù)測和邊界框回歸。YOLO v3采用先驗框(anchor box)機制來預(yù)測目標邊界框,3個尺度的特征圖、每個位置使用3個先驗框,所以使用K-means得到9個先驗框,對標注邊界框尺寸進行K-means聚類,得到一組尺寸固定的初始候選框。
圖2 YOLO v3的網(wǎng)絡(luò)結(jié)構(gòu)
YOLO v3核心的運行過程為:
1)輸入一張任意大小圖片,在保持長寬比不變的情況下,縮放寬和高達到416,生成416×416的新圖,作為網(wǎng)絡(luò)的輸入。
2)運行網(wǎng)絡(luò)。YOLO v3的卷積神經(jīng)網(wǎng)絡(luò)輸出把圖片分成S×S個網(wǎng)格,輸出有3層特征圖(featue maps),每層特征圖有S×S個網(wǎng)格,分別為13×13、26×26和52×52),奇數(shù)的網(wǎng)格導(dǎo)致每個網(wǎng)格都會有個中心位置,然后這些網(wǎng)格負責(zé)去檢測那些中心點落在該格子內(nèi)的目標。
3)通過非極大值抑制(NMS),篩選出框(boxes)、輸出框(class_boxes)和置信度(class_box_scores),再生成類別信息(classes),生成最終的檢測數(shù)據(jù)框。
4)調(diào)用畫圖函數(shù)繪制目標檢測的結(jié)果輸出。
整個YOLO v3的運行邏輯如圖3所示。
圖3 YOLO v3運行邏輯
對于訓(xùn)練樣本標注問題,因為做的是鋼軌螺栓組件的檢測,目前并沒有相應(yīng)的開放數(shù)據(jù)集可以供直接使用。所以,筆者選擇自己制作鋼軌螺栓的專業(yè)檢測數(shù)據(jù)集,一共收集了1505張圖片,分為幾大類:有扭緊力下降(標簽為:loose)155張,螺栓斷裂(標簽為:Boltbreak)200張,螺母裂紋(標簽為:Nutcrack)200張,螺母缺失(標簽為:Missingnut)119張,墊圈斷裂(標簽為:Washerfracture)400張,或墊圈缺失(標簽為:Missinggasket)231張,組件整體缺失(標簽為:Overallmissing)100張,螺母和墊圈都消失(標簽為:NWdisappear)100張,如圖5所示。
圖4 待訓(xùn)練圖片部分類別
利用labelimg軟件進行人工標注,80%數(shù)據(jù)用于訓(xùn)練,20%用于測試。標注之后產(chǎn)生的xml文件,分開存放用以下一步使用。人工標注過程和xml文件包含信息見圖5。
圖5 標注過程及標注信息
筆者通過標注得到1505個xml文件標注數(shù)據(jù),分為1204個訓(xùn)練用數(shù)據(jù)和301個測試用數(shù)據(jù)。
模型訓(xùn)練參數(shù)主要如表1所示。使用YOLO默認的輸入大小,在訓(xùn)練開始階段,衰減系數(shù)設(shè)置為0.0005,學(xué)習(xí)率設(shè)置為0.0001;在訓(xùn)練迭代次數(shù)達到8000和14000次時,將學(xué)習(xí)率降低至初始學(xué)習(xí)率的10%。模型迭代參數(shù)(epochs)為80,批處理參數(shù)(Batch_size)為4,其他參數(shù)采用YOLO v3模型中的參數(shù)。
表1 模型參數(shù)
本實驗環(huán)境使用的電腦配置為:運行環(huán)境為64位win10操作系統(tǒng)、PyCharm 、TensorFlow、CUDA10.0、cuDNN7.1、NVIDIA GeForce RTX 2060(6G)。
實驗檢測效果如圖6所示,組件的各種狀態(tài)可以較好地檢測出來。
圖6 部分檢測識別效果
性能分析見表2。在實驗驗證的時候,使用同樣的數(shù)據(jù)集采用不同的目標檢測算法進行對比實驗,橫向?qū)Ρ绕渌哪繕藱z測方法可以看出,使用YOLO v3是相對速度最快的方法了。表2中的mAP和FPS,分別為目標檢測領(lǐng)域衡量檢測精度的均值平均精度和反應(yīng)檢測速度。
表2 誤檢、漏檢和mAP數(shù)據(jù)對比
表3 實驗AP 對比 單位/(%)
分析數(shù)據(jù)可以看出,YOLO v3相對于Faster R-CNN和SSD有較好的識別精度和速度。各種故障可以較好地檢測出來,但是對于扭緊力下降的故障的識別效果不好。這主要有幾方面的原因:
1)所拍攝圖片中螺紋分辨率太小。對于CNN來說,將這么小的圖像進行卷積壓縮之后,可能就無法提取有效的畫面特征信息。
2)攝像頭拍攝角度限制。若此,CNN檢測提取出來的特征就和之前學(xué)習(xí)的特征有所區(qū)別。
本文將YOLO v3應(yīng)用到鋼軌螺栓檢測領(lǐng)域,提出了一種基于YOLO v3的軌道螺栓組件的實時檢測方法,從實驗數(shù)據(jù)對比來看,基于YOLO v3的軌道螺栓組件檢測方法可以實現(xiàn)對鋼軌螺栓的實時有效檢測。但是也存在一定的問題,比如螺栓上細小的螺紋缺陷沒有被檢測出來,應(yīng)用的YOLO v3算法目標檢測的均值平均精度為86.106%,F(xiàn)PS為38.21幀/s。橫向?qū)Ρ菷aster R-CNN和SSD均有良好的評價指標。在接下來的工作中,筆者將繼續(xù)采集更多的鋼軌螺栓組件圖像來擴充現(xiàn)有數(shù)據(jù)集,以便更好地進行工程應(yīng)用。