申瑞超,柴曉冬,李立明,孫 睿,鐘倩文
(上海工程技術(shù)大學(xué) 城市軌道交通學(xué)院, 上海 201620)
鐵路運(yùn)輸是一種能源集約式的陸地交通運(yùn)輸,因其運(yùn)輸量大、速度較快、受環(huán)境因素影響較小、安全性強(qiáng)等特點(diǎn)受到國(guó)家重點(diǎn)發(fā)展,截至2020年7月底,中國(guó)鐵路運(yùn)輸總營(yíng)業(yè)里程已超過(guò)14萬(wàn)千米[1]。在鐵路運(yùn)輸中安全尤為重要,扣件作為鋼軌與枕木的連接部件,扣件狀態(tài)的檢測(cè)在鐵路運(yùn)輸安全中扮演著重要角色??奂幱谌笔?、位移、斷裂等失效狀態(tài)時(shí),可能會(huì)造成列車(chē)脫軌等重大安全事故。人工巡檢是常用的扣件狀態(tài)檢測(cè)手段之一,但綿長(zhǎng)的鐵路線路和復(fù)雜的環(huán)境,耗費(fèi)了巨大的人力和財(cái)力,工作人員的安全也得不到保障,利用機(jī)器視覺(jué)技術(shù)檢測(cè)鐵路扣件狀態(tài)已成為趨勢(shì)。如20世紀(jì)90年代,美國(guó)的VIS綜合系統(tǒng)使用人工和計(jì)算機(jī)結(jié)合的方式對(duì)扣件、鋼軌和道床等進(jìn)行檢測(cè)[2];2016年,中國(guó)自主研發(fā)的綜合鐵路巡檢車(chē)在昆明鐵路局試用,實(shí)現(xiàn)了自動(dòng)化檢測(cè)鋼軌表面和扣件,其對(duì)扣件狀態(tài)檢測(cè)的準(zhǔn)確率達(dá)96%[3]。為了提高準(zhǔn)確率,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)應(yīng)用到扣件檢測(cè)中,如Khan R A[4]等結(jié)合腳點(diǎn)檢測(cè)和模板匹配檢測(cè)扣件;王強(qiáng)等[5]利用改進(jìn)的LBP特征對(duì)扣件進(jìn)行檢測(cè),提高了在不同環(huán)境下的檢測(cè)的正確率;林菲等[6]采用深度學(xué)習(xí)網(wǎng)絡(luò)VGG自動(dòng)提取扣件特征,使得扣件檢測(cè)的精度提升,達(dá)97.14%。然而,機(jī)器視覺(jué)算法的有效性是建立在數(shù)據(jù)分布大致均衡的假設(shè)基礎(chǔ)上[7],采集到的現(xiàn)場(chǎng)扣件圖像正負(fù)樣本往往不均衡[8],這樣的數(shù)據(jù)訓(xùn)練出的模型就會(huì)造成將負(fù)樣本檢測(cè)為正樣本的情況。如Gibert[9]和李永波[10]在利用機(jī)器視覺(jué)算法檢測(cè)扣件時(shí),正負(fù)樣本失衡,雖然在其各自提出的算法中做了驗(yàn)證,但是負(fù)樣本較小的情況下的算法指標(biāo)不能代表模型的泛化能力[11],在現(xiàn)實(shí)應(yīng)用中可能會(huì)造成漏報(bào)率較高的情況。為解決機(jī)器學(xué)習(xí)中樣本不均衡問(wèn)題,Nekooeimehr[12]等提出了一種加權(quán)訓(xùn)練方式,通過(guò)對(duì)少數(shù)樣本的采樣次數(shù)和權(quán)重進(jìn)行自適應(yīng),實(shí)現(xiàn)不均衡樣本的機(jī)器學(xué)習(xí)[12]。本文提出了一種基于自編碼器的零樣本扣件檢測(cè),只需要提供正樣本,就可以達(dá)到檢測(cè)扣件狀態(tài)的目的。
算法流程如圖1所示。首先,使用欠完備自編碼器、棧式自編碼器和卷積自編碼器提取扣件正樣本圖像特征;通過(guò)正樣本特征向量與基向量的余弦相似度推斷出負(fù)樣本的分布空間;在檢測(cè)時(shí)將各自編碼器算法得出的結(jié)果利用多數(shù)投票法確定樣本屬性。實(shí)驗(yàn)證明,使用本文方法,在只使用正樣本訓(xùn)練的情況下,可以有效地檢測(cè)出扣件圖像的負(fù)樣本,實(shí)現(xiàn)了零樣本扣件檢測(cè)。
圖1 算法流程圖
自編碼器是前饋非循環(huán)神經(jīng)網(wǎng)絡(luò),不需要借助事先標(biāo)注的標(biāo)簽,通過(guò)無(wú)監(jiān)督學(xué)習(xí),學(xué)習(xí)到數(shù)據(jù)的高效表示[13],具有非常好的提取數(shù)據(jù)特征的能力,在圖像重構(gòu)、聚類(lèi)、機(jī)器翻譯等方面有著廣泛應(yīng)用。自編碼器的通用結(jié)構(gòu)如圖2所示,有輸入層、隱含層和輸出層,可以分為編碼器部分和解碼器部分[14]。假設(shè)自編碼器的輸入層輸入為v,隱含層的輸出為y,輸出層的輸出為s,則v和s有相同的維度,在訓(xùn)練時(shí),通過(guò)調(diào)整自編器內(nèi)部的參數(shù),盡可能的讓v和s的值相同,訓(xùn)練完成后,移除解碼器,新的數(shù)據(jù)經(jīng)過(guò)編碼器前饋運(yùn)算輸出的值就是編碼結(jié)果。
圖2 自編碼器通用結(jié)構(gòu)
編碼器通過(guò)式(1)將v映射為y,實(shí)現(xiàn)了原始數(shù)據(jù)的編碼,解碼器通過(guò)式(2)將編碼數(shù)據(jù)y重構(gòu)為s,實(shí)現(xiàn)數(shù)據(jù)解碼。
y=f(v)=ξ1(w1v+b1)
(1)
s=g(v)=ξ2(w2y+b2)
(2)
其中,w1和b1是編碼器的參數(shù)矩陣和偏置量,w2和b2為解碼器的參數(shù)矩陣和偏置量,通過(guò)對(duì)w1、b1、w2和b2的調(diào)整,使v和s相同;ξ1和ξ2為映射函數(shù)。本文使用3種自編碼器:欠完備自編碼器、棧式自編碼器和稀疏自編碼器。
欠完備自編碼器的隱含層神經(jīng)元數(shù)少于輸入層,即s的維度小于v的維度。初始狀態(tài)時(shí),w1、b1、w2和b2都是隨機(jī)初始化,通過(guò)最小化損失函數(shù)L實(shí)現(xiàn)s與v的值相同。假設(shè)v和s的維度為n,本文欠完備自編碼器使用的均方誤差(Mean Square Error,MSE)損失函數(shù)的表達(dá)式為:
(3)
其中,si表示輸入圖像的第i個(gè)像素值,vi表示解碼器的第i個(gè)輸出值。自編碼器的參數(shù)用w表示,參數(shù)的更新如式(4):
(4)
其中,η是學(xué)習(xí)率,通過(guò)鏈?zhǔn)角髮?dǎo)法則更新自編碼器中的每個(gè)參數(shù)使L(v,s)趨近于0,此時(shí)y就是v的低維度表示。
本文使用的欠完備自編碼器如圖3所示,隱含層使用49個(gè)神經(jīng)元,輸出層與圖像維度相同,使用式(5)ReLu作為映射函數(shù)。
圖3 欠完備自編碼器
(5)
在訓(xùn)練時(shí)將扣件圖像的每個(gè)像素依次排列,拉伸為211 600維的向量作為自編碼器的輸入,將輸出值帶入式(3)求得損失,并通過(guò)式(4)更新自編碼器參數(shù)。
棧式自編碼是一個(gè)由多層自編碼器堆疊組成的神經(jīng)網(wǎng)絡(luò),其前一層自編碼器的輸出作為其后一層自編碼器的輸入。對(duì)于一個(gè)k層棧式自編碼的編碼過(guò)程就是按照從前向后的順序執(zhí)行每一層自編碼器的編碼步驟。假設(shè)Hi表示棧式自編碼器的第i層(0≤i≤k),自編碼器的隱含層Hi會(huì)作為Hi+1層的輸入層,第一個(gè)輸入層就是整個(gè)神經(jīng)網(wǎng)絡(luò)的輸入層,利用貪心算法訓(xùn)練每一層的步驟如下:
準(zhǔn)確稱(chēng)取25mg樣品(樣品粒度小于0.074mm),加入0.2mL高氯酸和125mg氟化氫銨于消解罐中,蓋上蓋子(不要擰緊),放入烘箱,升溫至120℃,保溫1h,然后升溫到230℃,保溫3h,冷卻后取出消解罐,得到白色粉末狀固體。于消解罐中加入2mL硝酸,擰緊蓋子置于160℃電熱板上加熱1h,冷卻后打開(kāi)蓋子,160℃蒸至近干狀態(tài),繼續(xù)加入2mL 硝酸,升溫至250℃繼續(xù)蒸干,同時(shí)保溫2h。取下消解罐,并冷卻到室溫,加入2mL 5%硝酸(體積分?jǐn)?shù))于消解杯中,于電熱板上,待消解杯中的溶液開(kāi)始冒泡時(shí),將其取下,并用0.5%硝酸稀釋定容至25mL。
(1)首先采用自編碼網(wǎng)絡(luò),訓(xùn)練從輸入層到H1層的參數(shù),訓(xùn)練完畢后,去除解碼層,只留下從輸入層到隱藏層的編碼階段;
(2)接著訓(xùn)練從H1到H2的參數(shù),把無(wú)標(biāo)簽數(shù)據(jù)的H1層神經(jīng)元的輸出值作為H2層的輸入,然后再進(jìn)行自編碼訓(xùn)練,訓(xùn)練完畢后,再去除H2層的解碼層;
(3)對(duì)所有層重復(fù)(1)和(2),即移除前面自編碼器的輸出層,用另一個(gè)自編碼器代替,再用反向傳播進(jìn)行訓(xùn)練,直到棧式自編碼器的層數(shù)達(dá)到k。
本文所用棧式自編碼器結(jié)構(gòu)如圖4所示。編碼器部分神經(jīng)元采用遞減式結(jié)構(gòu),減少了重要信息的丟失;輸出層的維度為49;在解碼器部分,各層神經(jīng)元數(shù)與解碼器對(duì)稱(chēng),使用式(5)作為映射函數(shù)。
圖4 棧式自編碼器
含有卷積操作層(Convolutional layers)的自編碼器稱(chēng)為卷積自編碼器。卷積層含有一系列濾波器,在特征圖上按照一定的步長(zhǎng)滑動(dòng),將卷積核參數(shù)與像素值對(duì)應(yīng)相乘后相加輸出。卷積層作用于圖像的局部區(qū)域進(jìn)而獲得圖像的局部特征,多層卷積層的應(yīng)用,可以擴(kuò)大這個(gè)局部區(qū)域的范圍,使提取到的特征更具備空間特性,因此卷積操作更適合用于圖像領(lǐng)域[15]。
本文使用的卷積自編碼器結(jié)構(gòu)如圖5所示。在編碼器部分,卷積層數(shù)量為3,每層卷積核數(shù)量遞增,卷積核的大小為3×3,步長(zhǎng)為3;在輸出層與卷積層之間有一個(gè)全連接層作為過(guò)渡;輸出層維度為49;在解碼器部分有與編碼器部分對(duì)稱(chēng)的全連接層和反卷積層,使用式(5)作為映射函數(shù)。
圖5 卷積自編碼器
扣件圖像經(jīng)自編碼器提取的特征都為49維的高維特征,本文使用余弦相似度作為度量這些高維特征之間相似度的尺度。余弦相似度是用空間中兩個(gè)向量的夾角來(lái)判斷這兩個(gè)向量的相似程度,兩個(gè)向量夾角越大,距離越遠(yuǎn),最大距離就是兩個(gè)向量夾角180°;夾角越小,距離越近,最小距離就是兩個(gè)向量夾角0°,完全重合。假設(shè)有A、B兩個(gè)n維向量,余弦相似度用式(6)求解。
(6)
其中,Ai和Bi代表向量的第i維的值。使用3種自編碼器對(duì)扣件圖像特征進(jìn)行編碼,并通過(guò)余弦相似度確定扣件狀態(tài),當(dāng)3種方法識(shí)別的扣件狀態(tài)不一致時(shí),使用多數(shù)投票法確定結(jié)果。假設(shè)扣件的正常狀態(tài)用1表示,異常狀態(tài)用0表示,其真值見(jiàn)表1。
表1 投票法真值表
本文實(shí)驗(yàn)涉及的軟硬件平臺(tái)及版本信息見(jiàn)表2。
表2 實(shí)驗(yàn)軟硬件平臺(tái)及版本信息
以下實(shí)驗(yàn)都基于相同的軟硬件條件。本文將扣件分為正常狀態(tài)和異常狀態(tài)兩類(lèi),如圖6所示。異常狀態(tài)扣件包括斷裂、彈出等情況。數(shù)據(jù)集中圖像共600張,其中正常狀態(tài)扣件430張,異常狀態(tài)扣件170張。隨機(jī)選取260張正常圖像作為訓(xùn)練集,340張作為測(cè)試集。測(cè)試集中正常狀態(tài)扣件170張,異常狀態(tài)扣件170張。
圖6 扣件狀態(tài)
本文用向量余弦值作為扣件狀態(tài)的判定標(biāo)準(zhǔn)。在訓(xùn)練集中,任意選取一個(gè)圖像作為參照,經(jīng)過(guò)自編碼器得到的特征T定義為基向量,訓(xùn)練集中其余圖像經(jīng)過(guò)自編碼器得到的向量與基向量求余弦值,該余弦值為兩張圖像的相似度,范圍為-1~1,相似度越接近1,向量代表的圖像與基向量越相關(guān)。在不同算法中特征向量的提取不盡相同,對(duì)3個(gè)自編碼器進(jìn)行上述操作,得到的相似度最小值見(jiàn)表3。
表3 各算法的最小相似度
本文將測(cè)試圖像的相似度閾值設(shè)置為訓(xùn)練集中相似度的最小值,即測(cè)試圖像的自編碼向量在相似度最小值和1之間時(shí)扣件為正樣本,否則測(cè)試圖像中的扣件為負(fù)樣本。為進(jìn)一步提高算法的正確率,本文使用投票法對(duì)3種算法給出的結(jié)果使用多數(shù)投票法進(jìn)行投票。各個(gè)算法實(shí)驗(yàn)結(jié)果見(jiàn)表4。
表4 自編碼器實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)證明,自編碼器可以有效地提取扣件特征,將扣件圖像信息映射到高維空間中,利用特征之間的相似度實(shí)現(xiàn)了在只訓(xùn)練正樣本的情況下檢測(cè)扣件狀態(tài)。從負(fù)樣本的檢出數(shù)量來(lái)看,因?yàn)榫矸e自編碼器的卷積操作能更好地提取到扣件的空間特征,使得3種自編碼器中,卷積自編碼器表現(xiàn)最好。使用多數(shù)投票法后,正樣本的檢出數(shù)量和負(fù)樣本的檢出數(shù)量都有所增加。
代先星使用VGG深度學(xué)習(xí)網(wǎng)絡(luò)對(duì)扣件進(jìn)行分類(lèi)[8],李永波使用HOG特征提取與SVM分類(lèi)器結(jié)合方式檢測(cè)扣件[10],這兩種算法的指標(biāo)在各自的數(shù)據(jù)集中都較為優(yōu)秀,為證明本文算法的優(yōu)越性,在相同的軟硬件條件和數(shù)據(jù)集下將本文方法與以上兩種算法對(duì)比,并使用總體精度(Overall Accuracy,OA)、精確率(Precision)、虛警率(False alarm,F(xiàn)PR)和漏警率(Missing alarm,F(xiàn)NR)評(píng)估扣件狀態(tài)檢測(cè)算法,式(7)~(10)。
(7)
(8)
(9)
(10)
其中,TP表示算法被正確分類(lèi)的個(gè)數(shù);N代表所有測(cè)試集的數(shù)量;NTP表示數(shù)據(jù)集中正樣本數(shù)量;NFP表示負(fù)樣本被檢測(cè)為正樣本的數(shù)量;NTN表示數(shù)據(jù)集中負(fù)樣本的數(shù)量;NFN表示正樣本被檢測(cè)為負(fù)樣本的數(shù)量。
因?yàn)榭奂顟B(tài)的檢測(cè)關(guān)乎鐵路安全,所以在保證整體精度的情況下,虛警率越低越好,算法分類(lèi)實(shí)驗(yàn)結(jié)果見(jiàn)表5。由實(shí)驗(yàn)數(shù)據(jù)可知,傳統(tǒng)的機(jī)器學(xué)習(xí)在沒(méi)有負(fù)樣本時(shí),整體表現(xiàn)較差,不能達(dá)到扣件狀態(tài)檢測(cè)的效果;基于深度學(xué)習(xí)的VGG網(wǎng)絡(luò)只通過(guò)學(xué)習(xí)正樣本數(shù)據(jù),總體精度不夠,虛警率過(guò)高,不適用于扣件檢測(cè)這種負(fù)樣本較少的情況;本文方法不管是在總體精度還是虛警率方面比前兩種方法都大有改觀,綜合各個(gè)評(píng)價(jià)指標(biāo),本文提出的扣件檢測(cè)算法最好,實(shí)現(xiàn)了零樣本檢測(cè)鐵路扣件狀態(tài)。
表5 算法分類(lèi)實(shí)驗(yàn)結(jié)果
本文提出了一種基于卷積自編碼器的零樣本扣件檢測(cè)方法,首先通過(guò)欠完備自編碼器、棧式自編碼器和卷積自編碼器分別對(duì)扣件提取特征,再通過(guò)特征與基向量的相似度判定扣件的狀態(tài),最后通過(guò)多數(shù)投票法最終確定扣件狀態(tài),為鐵路扣件檢測(cè)提供了一種新的解決思路。本文算法在測(cè)試集中的整體精度為95.59%,精確度為97.70%,F(xiàn)PR為2.30%,F(xiàn)PN為6.47%,比傳統(tǒng)方法和深度學(xué)習(xí)方法在評(píng)價(jià)指標(biāo)方面有所提升,本文方法解決了利用機(jī)器視覺(jué)算法檢測(cè)扣件狀態(tài)時(shí)數(shù)據(jù)集不均衡的問(wèn)題。