張澤寧 鄭樹(shù)彬 李立明
(上海工程技術(shù)大學(xué)城市軌道交通學(xué)院 上海 201600)
軌道扣件作為連接鋼軌與軌枕的重要部分,其是否處于工作狀態(tài)會(huì)直接影響鋼軌與軌枕的連接強(qiáng)度進(jìn)而影響列車行車安全。軌道扣件狀態(tài)巡檢更是鐵路工務(wù)部門對(duì)鐵路線路日常維護(hù)的重要工作。在傳統(tǒng)軌道扣件檢測(cè)算法中,張?chǎng)┌氐龋?]提出改進(jìn)的Sobel算子結(jié)合二值化形態(tài)學(xué)的軌道扣件分割算法。邊緣特征和形態(tài)學(xué)分割對(duì)亮度十分敏感;DOU Yunguan等提出首先運(yùn)用模板匹配算法根據(jù)軌道的幾何關(guān)系來(lái)定位扣件,然后采用最近鄰分類器判斷扣件是完整狀態(tài)還是丟失狀態(tài)。模板匹配需要消耗大量計(jì)算資源無(wú)法做到實(shí)時(shí)檢測(cè),同時(shí)極易遭受干擾而致使匹配失敗。其他利用淺層特征進(jìn)行扣件定位的方法,如HOG(histogram of oriented gradient)特征[2]、紋理特征[3]、SIFT特征[4]都非常容易受到光照和對(duì)比度等因素影響,并且需要根據(jù)不同特征進(jìn)行不同的預(yù)處理,難以廣泛使用。
目前,隨著計(jì)算機(jī)視覺(jué)、深度學(xué)習(xí)等領(lǐng)域的不斷發(fā)展,圖像中更深層次的特征被廣泛應(yīng)用,愈來(lái)愈多優(yōu)秀的目標(biāo)檢測(cè)算法隨之出現(xiàn)。在軌道交通行業(yè),利用抗干擾能力更強(qiáng)、適應(yīng)性更廣、準(zhǔn)確率更高的深度學(xué)習(xí)目標(biāo)檢測(cè)算法來(lái)輔助人工巡檢已是重點(diǎn)研究方向。在計(jì)算機(jī)視覺(jué)和深度學(xué)習(xí)如火如荼的發(fā)展中主要出現(xiàn)了兩類目標(biāo)檢測(cè)算法,即two stage目標(biāo)檢測(cè)算法和one stage目標(biāo)檢測(cè)算法。前者主要思路是先通過(guò)啟發(fā)式方法或者卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)在圖片中產(chǎn)生大量稀疏的候選區(qū)域(region proposals),再將每個(gè)候選區(qū)域送入多層CNN中進(jìn)行分類和回歸[5];后者不需要生成候選區(qū)域,直接將圖片送入CNN,根據(jù)特征圖以不同尺度和寬高比對(duì)圖片進(jìn)行密集抽樣,再利用CNN提取特征后進(jìn)行分類和回歸?,F(xiàn)階段SSD作為優(yōu)秀的one stage算法在voc2007數(shù)據(jù)集中目標(biāo)檢測(cè)的準(zhǔn)確率和速率(77%mAP/46FPS)均領(lǐng)先two stage算法中性能較好Faster R-CNN算法(73%mAp/7FPS)[6]。
本文充分利用SSD算法優(yōu)勢(shì),結(jié)合軌道扣件快速?gòu)棗l狀態(tài)檢測(cè)任務(wù)的特點(diǎn),優(yōu)化先驗(yàn)框尺度和寬高比,并且使用遷移學(xué)習(xí)的方法提高了訓(xùn)練速度和檢測(cè)精度。最終能夠準(zhǔn)確識(shí)別軌道扣件快速?gòu)棗l和鋼軌表面的具體位置,為軌道扣件快速?gòu)棗l狀態(tài)檢測(cè)提出一種新方法。
SSD算法使用多層神網(wǎng)絡(luò)提取一系列不同尺度的特征圖,利用不同寬高比的先驗(yàn)框?qū)θ珗D各子區(qū)域進(jìn)行分類和回歸。其在VGG-16基礎(chǔ)上刪除dropout層和全連接層并增加更多卷積層以獲得不同大小的特征圖。保存經(jīng)過(guò)卷積層Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2所得到的六個(gè)特征圖,將其作為物體類別和位置坐標(biāo)預(yù)測(cè)的基礎(chǔ)。在SSD算法中不同大小的特征圖負(fù)責(zé)檢測(cè)的物體大小不同,較大的特征圖中包含更多細(xì)節(jié)特征,適合檢測(cè)較小的物體,較小的特征圖有更大的感受野,適合檢測(cè)較大的物體[7]。SSD優(yōu)于其他深度學(xué)習(xí)目標(biāo)檢測(cè)算法的原因就在于SSD算法為不同大小的特征圖設(shè)置不同尺度和寬高比的先驗(yàn)框(同一個(gè)特征圖中每個(gè)單位的先驗(yàn)框數(shù)量相同)[8]。使得不同尺度和寬高比的先驗(yàn)框能夠囊括更多大小各異的物體。
對(duì)于尺度,其遵循線性遞增的規(guī)則,即隨著特征圖大小的降低,先驗(yàn)框尺度線性增加:
其中,m指特征圖數(shù)量,sk指先驗(yàn)框尺度相對(duì)于輸入圖片的比例,而smin和smax分別表示該比例的最小值和最大值(取0.2和0.9)。一般情況下將第一個(gè)先驗(yàn)框尺度比例設(shè)置為s1=smin/2=0.1。
圖1 SSD網(wǎng)絡(luò)整體結(jié)構(gòu)
進(jìn)一步,根據(jù)損失函數(shù)計(jì)算l與g的綜合損失,利用梯度下降的方法更新卷積層參數(shù)權(quán)重[11]。在訓(xùn)練過(guò)程中,對(duì)于圖片中每一個(gè)已經(jīng)標(biāo)注的真實(shí)框找到與其交并比(Intersection-over-Union,IoU)大于0.5的先驗(yàn)框。將這些先驗(yàn)框所對(duì)應(yīng)的邊界框作為正樣本,而沒(méi)有與之匹配的邊界框則與背景匹配,將這些邊界框作為負(fù)樣本[12]。由于圖片中標(biāo)注的真實(shí)框一般僅有幾個(gè)而負(fù)樣本數(shù)量非常多,為解決正負(fù)樣本不平衡的問(wèn)題,以正負(fù)樣本1∶3的比例篩選負(fù)樣本中背景置信度較高的邊界框[13]。
SSD算法需要對(duì)物體的類別和位置坐標(biāo)進(jìn)行預(yù)測(cè),因此其損失函數(shù)由類別置信度損失(confidence loss,conf)和位置坐標(biāo)損失(locatization loss,loc)兩部分加權(quán)而成[14]。在本文中類別置信度損失采用softmax損失函數(shù)進(jìn)行計(jì)算,而位置坐標(biāo)損失由smoothL1損失函數(shù)獲得,兩者的權(quán)重相同取權(quán)重系數(shù)α=1??傮w損失函數(shù)可表達(dá)為
其中,x表示輸入,c表示邊界框中物體類別的得分值,l表示邊界框的編碼值,g表示真實(shí)框,N表示正負(fù)樣本整體個(gè)數(shù)。
3.2.1 類別置信度損失
特別地,SSD算法將圖片的背景定義為特殊的類別,若邊界框置信度最高的一項(xiàng)為背景類,那么該邊界框沒(méi)有檢測(cè)到目標(biāo)物體。
3.2.2 位置坐標(biāo)損失
在位置坐標(biāo)損失中,邊界框位置預(yù)測(cè)其實(shí)是一個(gè)回歸問(wèn)題,通?;貧w問(wèn)題可以使用L2(平方)損失函數(shù)。但是本網(wǎng)絡(luò)層次較深,多次迭代容易產(chǎn)生梯度消失現(xiàn)象,而且L2損失函數(shù)對(duì)離群點(diǎn)十分敏感,對(duì)較大的損失懲罰很高。L1(絕對(duì))損失函數(shù)沒(méi)有上述問(wèn)題,不過(guò)L1損失函數(shù)在0點(diǎn)不可導(dǎo),反向傳播計(jì)算梯度的時(shí)候容易出現(xiàn)無(wú)法求導(dǎo)的問(wèn)題。因此,本文結(jié)合L2損失函數(shù)和L1損失函數(shù)的優(yōu)點(diǎn)選用smoothL1函數(shù)作為位置坐標(biāo)損失函數(shù)。
smoothL1函數(shù)在自變量x∈(-1,1)時(shí)為平方函數(shù),其他位置為絕對(duì)函數(shù),函數(shù)圖像如圖2所示。
圖2 s moot hL1函數(shù)
在使用smoothL1作為損失函數(shù)時(shí),第i個(gè)預(yù)測(cè)框與第j個(gè)真實(shí)框關(guān)于類別p的位置坐標(biāo)損失可表示為
快速?gòu)棗l軌道扣件系統(tǒng)作為新扣件產(chǎn)品,代表著鐵路扣件技術(shù)的最新水平和發(fā)展方向,已經(jīng)被廣泛應(yīng)用于德國(guó)、法國(guó)、日本、澳大利亞及北美等國(guó)家的鐵路上。目前在我國(guó)合武、石太等客運(yùn)專線均鋪設(shè)了這樣的軌道扣件系統(tǒng)[16]。
根據(jù)石太客運(yùn)專線現(xiàn)場(chǎng)CCD線陣相機(jī)采集到的圖片如圖3所示,左側(cè)快速?gòu)棗l在水平方向上向左彈出,其與鋼軌的水平距離較遠(yuǎn)未扣緊鋼軌,存在安全隱患;右側(cè)快速?gòu)棗l扣緊鋼軌處于正常狀態(tài),不存在安全隱患。實(shí)驗(yàn)使用1336張石太客運(yùn)專線現(xiàn)場(chǎng)軌道扣件圖片作為實(shí)驗(yàn)原始數(shù)據(jù),其中有32張圖片中存在快速?gòu)棗l未扣緊的情況。
圖3 石太客運(yùn)專線現(xiàn)場(chǎng)圖片
SSD目標(biāo)檢測(cè)需要大量數(shù)據(jù)作為支持,同時(shí)為了使網(wǎng)絡(luò)具有更強(qiáng)的泛化能力,參考常用的數(shù)據(jù)增強(qiáng)與擴(kuò)展方法,對(duì)原始圖片進(jìn)行隨機(jī)水平翻轉(zhuǎn),隨機(jī)尺度變換,隨機(jī)對(duì)比度和亮度調(diào)整,使得最終數(shù)據(jù)量達(dá)到原始數(shù)據(jù)量的5倍[17]。之后,將所有圖片轉(zhuǎn)換成300像素×300像素圖片。使用labelImg程序標(biāo)注扣件快速?gòu)棗l區(qū)域和鋼軌區(qū)域。生成包含圖片名稱、物體位置、物體類別等信息的xml文件。最終,取數(shù)據(jù)集中80%的圖片作為訓(xùn)練集進(jìn)行訓(xùn)練。
考慮到軌道扣件快速?gòu)棗l狀態(tài)檢測(cè)任務(wù)的一致性和特定性,有針對(duì)性的設(shè)置SSD網(wǎng)絡(luò)參數(shù)與超參數(shù)顯得尤為重要。由于待檢測(cè)的對(duì)象只有扣件、鋼軌、背景,同時(shí)原始的圖片大小統(tǒng)一,待檢測(cè)對(duì)象的形狀、大小固定不變,僅有鋼軌與軌道扣件快速?gòu)棗l的相對(duì)位置發(fā)生變化。在使用先驗(yàn)框進(jìn)行密集抽樣時(shí),可以有針對(duì)性地設(shè)置先驗(yàn)框的尺度和寬高比,減少生成先驗(yàn)框的數(shù)量,提高運(yùn)行速度。同時(shí),更少的先驗(yàn)框可以大大減少負(fù)樣本數(shù)量,改善傳統(tǒng)SSD模型中正負(fù)樣本極不平靜的問(wèn)題,有利于提高模型精度。
模型訓(xùn)練分為兩個(gè)階段進(jìn)行,第一階段使用VGG16預(yù)訓(xùn)練權(quán)重參數(shù)作為SSD算法的初始化權(quán)重參數(shù)。雖然VGG16預(yù)訓(xùn)練權(quán)重參數(shù)所使用的物體類別和數(shù)量與本實(shí)驗(yàn)不同,但相比初始化形成的隨機(jī)權(quán)重參數(shù),預(yù)訓(xùn)練權(quán)重參數(shù)能使模型更快收斂減少過(guò)擬合現(xiàn)象的發(fā)生,大大節(jié)省了算力和訓(xùn)練時(shí)間;第二階段使用本網(wǎng)絡(luò)對(duì)預(yù)訓(xùn)練網(wǎng)絡(luò)參數(shù)進(jìn)行微調(diào)訓(xùn)練,設(shè)置迭代次數(shù)為5000次,批數(shù)據(jù)量設(shè)置為32。使用均方根反向傳播(Root Mean Square Prop,RMSProp)[18]優(yōu)化算法進(jìn)行優(yōu)化。
實(shí)驗(yàn)使用GPU為GTX1080ti,tensorflow-gpu版本為1.13.1,CUDA版本為10.0并配置cuDNN 7.4。實(shí)驗(yàn)采用優(yōu)化后的先驗(yàn)框參數(shù),配合遷移學(xué)習(xí)的方法對(duì)模型進(jìn)行訓(xùn)練。同時(shí),以傳統(tǒng)SSD網(wǎng)絡(luò)作為對(duì)比實(shí)驗(yàn)。兩種方法均在本文構(gòu)建的數(shù)據(jù)集上進(jìn)行訓(xùn)練,隨著迭代次數(shù)增加損失值變化如圖4所示。
圖4 損失值隨迭代次數(shù)變化情況
由于傳統(tǒng)SSD算法訓(xùn)練5000次時(shí)損失值仍高于2,識(shí)別率僅為54.8%,損失值還在下降過(guò)程中,因此繼續(xù)訓(xùn)練至20000次后損失值穩(wěn)定在0.33附近。本文算法訓(xùn)練5000次時(shí)已經(jīng)穩(wěn)定,識(shí)別結(jié)果如圖5所示。能以較高的準(zhǔn)確率識(shí)別定位到快速?gòu)棗l和鋼軌的具體位置,取得了很好的識(shí)別效果。
圖5 本文算法識(shí)別結(jié)果
在交叉驗(yàn)證集上使用訓(xùn)練好的模型參數(shù)對(duì)兩種方法進(jìn)行驗(yàn)證,識(shí)別結(jié)果如表1所示。
表1 檢測(cè)準(zhǔn)確率與速率
實(shí)驗(yàn)結(jié)果表明,本文方法即使用了遷移學(xué)習(xí)并優(yōu)化網(wǎng)絡(luò)參數(shù)的SSD算法在迭代5000次時(shí)損失值趨近0.16,識(shí)別率達(dá)到95.2%。而沒(méi)有使用遷移學(xué)習(xí)的傳統(tǒng)SSD算法在迭代5000次時(shí)模型還沒(méi)有收斂,直到迭代20000次時(shí)損失值穩(wěn)定在0.33附近,此時(shí)識(shí)別率為87.1%。
進(jìn)一步,使用本文算法的識(shí)別結(jié)果,根據(jù)扣件快速?gòu)棗l與鋼軌的相對(duì)位置距離,以本次實(shí)驗(yàn)的300×300像素圖片為依據(jù)。在水平方向上,處于扣緊狀態(tài)的快速?gòu)棗l識(shí)別框的中心坐標(biāo)與軌道識(shí)別框的中心坐標(biāo)之差小于78像素,換言之水平方向上兩者中心距離大于78像素的快速?gòu)棗l被認(rèn)為處于未扣緊狀態(tài)。對(duì)于準(zhǔn)確定位的快速?gòu)棗l和鋼軌,依據(jù)此相對(duì)位置可以完全準(zhǔn)確地判斷出快速?gòu)棗l的狀態(tài)。
本文使用遷移學(xué)習(xí)方法,利用已經(jīng)訓(xùn)練好的其他模型參數(shù)作為訓(xùn)練初始化參數(shù),在此基礎(chǔ)上使用現(xiàn)場(chǎng)軌道扣件數(shù)據(jù)集進(jìn)行再訓(xùn)練,大大減少了訓(xùn)練時(shí)間、節(jié)約算力,提高了識(shí)別精度。除此之外,本文根據(jù)待檢測(cè)的快速?gòu)棗l和鋼軌形狀調(diào)整先驗(yàn)框尺度和寬高比,減少了負(fù)樣本數(shù)量,使先驗(yàn)框更容易擬合到待檢測(cè)物體,相比傳統(tǒng)SSD算法有更高的檢測(cè)準(zhǔn)確率和速率。
本文以傳統(tǒng)SSD目標(biāo)檢測(cè)算法為基礎(chǔ),在軌道扣件快速?gòu)棗l檢測(cè)項(xiàng)目上對(duì)一千余張現(xiàn)場(chǎng)實(shí)際照片進(jìn)行分析。結(jié)合軌道扣件快速?gòu)棗l的形態(tài)特點(diǎn),提出基于SSD的軌道扣件快速?gòu)棗l狀態(tài)檢測(cè)方法。該方法通過(guò)調(diào)整先驗(yàn)框尺度和寬高比使之能夠更好地框選待檢測(cè)物體。同時(shí)運(yùn)用遷移學(xué)習(xí)的方法對(duì)數(shù)據(jù)集進(jìn)行訓(xùn)練,有效地提高了訓(xùn)練速度和檢測(cè)準(zhǔn)確度。在準(zhǔn)確定位快速?gòu)棗l與鋼軌的位置坐標(biāo)后,通過(guò)設(shè)定兩者在水平方向上的距離閾值可以準(zhǔn)確檢測(cè)出快速?gòu)棗l是否處于扣緊狀態(tài)。未來(lái)會(huì)將此方法運(yùn)用到實(shí)際扣件檢測(cè)系統(tǒng)中,并對(duì)其進(jìn)一步完善。