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