申瑞超,柴曉冬,李立明,孫 睿,鐘倩文
(上海工程技術大學 城市軌道交通學院, 上海 201620)
鐵路運輸是一種能源集約式的陸地交通運輸,因其運輸量大、速度較快、受環境因素影響較小、安全性強等特點受到國家重點發展,截至2020年7月底,中國鐵路運輸總營業里程已超過14萬千米[1]。在鐵路運輸中安全尤為重要,扣件作為鋼軌與枕木的連接部件,扣件狀態的檢測在鐵路運輸安全中扮演著重要角色。扣件處于缺失、位移、斷裂等失效狀態時,可能會造成列車脫軌等重大安全事故。人工巡檢是常用的扣件狀態檢測手段之一,但綿長的鐵路線路和復雜的環境,耗費了巨大的人力和財力,工作人員的安全也得不到保障,利用機器視覺技術檢測鐵路扣件狀態已成為趨勢。如20世紀90年代,美國的VIS綜合系統使用人工和計算機結合的方式對扣件、鋼軌和道床等進行檢測[2];2016年,中國自主研發的綜合鐵路巡檢車在昆明鐵路局試用,實現了自動化檢測鋼軌表面和扣件,其對扣件狀態檢測的準確率達96%[3]。為了提高準確率,機器學習和深度學習應用到扣件檢測中,如Khan R A[4]等結合腳點檢測和模板匹配檢測扣件;王強等[5]利用改進的LBP特征對扣件進行檢測,提高了在不同環境下的檢測的正確率;林菲等[6]采用深度學習網絡VGG自動提取扣件特征,使得扣件檢測的精度提升,達97.14%。然而,機器視覺算法的有效性是建立在數據分布大致均衡的假設基礎上[7],采集到的現場扣件圖像正負樣本往往不均衡[8],這樣的數據訓練出的模型就會造成將負樣本檢測為正樣本的情況。如Gibert[9]和李永波[10]在利用機器視覺算法檢測扣件時,正負樣本失衡,雖然在其各自提出的算法中做了驗證,但是負樣本較小的情況下的算法指標不能代表模型的泛化能力[11],在現實應用中可能會造成漏報率較高的情況。為解決機器學習中樣本不均衡問題,Nekooeimehr[12]等提出了一種加權訓練方式,通過對少數樣本的采樣次數和權重進行自適應,實現不均衡樣本的機器學習[12]。本文提出了一種基于自編碼器的零樣本扣件檢測,只需要提供正樣本,就可以達到檢測扣件狀態的目的。
算法流程如圖1所示。首先,使用欠完備自編碼器、棧式自編碼器和卷積自編碼器提取扣件正樣本圖像特征;通過正樣本特征向量與基向量的余弦相似度推斷出負樣本的分布空間;在檢測時將各自編碼器算法得出的結果利用多數投票法確定樣本屬性。實驗證明,使用本文方法,在只使用正樣本訓練的情況下,可以有效地檢測出扣件圖像的負樣本,實現了零樣本扣件檢測。

圖1 算法流程圖
自編碼器是前饋非循環神經網絡,不需要借助事先標注的標簽,通過無監督學習,學習到數據的高效表示[13],具有非常好的提取數據特征的能力,在圖像重構、聚類、機器翻譯等方面有著廣泛應用。自編碼器的通用結構如圖2所示,有輸入層、隱含層和輸出層,可以分為編碼器部分和解碼器部分[14]。假設自編碼器的輸入層輸入為v,隱含層的輸出為y,輸出層的輸出為s,則v和s有相同的維度,在訓練時,通過調整自編器內部的參數,盡可能的讓v和s的值相同,訓練完成后,移除解碼器,新的數據經過編碼器前饋運算輸出的值就是編碼結果。

圖2 自編碼器通用結構
編碼器通過式(1)將v映射為y,實現了原始數據的編碼,解碼器通過式(2)將編碼數據y重構為s,實現數據解碼。
y=f(v)=ξ1(w1v+b1)
(1)
s=g(v)=ξ2(w2y+b2)
(2)
其中,w1和b1是編碼器的參數矩陣和偏置量,w2和b2為解碼器的參數矩陣和偏置量,通過對w1、b1、w2和b2的調整,使v和s相同;ξ1和ξ2為映射函數。本文使用3種自編碼器:欠完備自編碼器、棧式自編碼器和稀疏自編碼器。
欠完備自編碼器的隱含層神經元數少于輸入層,即s的維度小于v的維度。初始狀態時,w1、b1、w2和b2都是隨機初始化,通過最小化損失函數L實現s與v的值相同。假設v和s的維度為n,本文欠完備自編碼器使用的均方誤差(Mean Square Error,MSE)損失函數的表達式為:
(3)
其中,si表示輸入圖像的第i個像素值,vi表示解碼器的第i個輸出值。自編碼器的參數用w表示,參數的更新如式(4):
(4)
其中,η是學習率,通過鏈式求導法則更新自編碼器中的每個參數使L(v,s)趨近于0,此時y就是v的低維度表示。
本文使用的欠完備自編碼器如圖3所示,隱含層使用49個神經元,輸出層與圖像維度相同,使用式(5)ReLu作為映射函數。

圖3 欠完備自編碼器
(5)
在訓練時將扣件圖像的每個像素依次排列,拉伸為211 600維的向量作為自編碼器的輸入,將輸出值帶入式(3)求得損失,并通過式(4)更新自編碼器參數。
棧式自編碼是一個由多層自編碼器堆疊組成的神經網絡,其前一層自編碼器的輸出作為其后一層自編碼器的輸入。對于一個k層棧式自編碼的編碼過程就是按照從前向后的順序執行每一層自編碼器的編碼步驟。假設Hi表示棧式自編碼器的第i層(0≤i≤k),自編碼器的隱含層Hi會作為Hi+1層的輸入層,第一個輸入層就是整個神經網絡的輸入層,利用貪心算法訓練每一層的步驟如下:
準確稱取25mg樣品(樣品粒度小于0.074mm),加入0.2mL高氯酸和125mg氟化氫銨于消解罐中,蓋上蓋子(不要擰緊),放入烘箱,升溫至120℃,保溫1h,然后升溫到230℃,保溫3h,冷卻后取出消解罐,得到白色粉末狀固體。于消解罐中加入2mL硝酸,擰緊蓋子置于160℃電熱板上加熱1h,冷卻后打開蓋子,160℃蒸至近干狀態,繼續加入2mL 硝酸,升溫至250℃繼續蒸干,同時保溫2h。取下消解罐,并冷卻到室溫,加入2mL 5%硝酸(體積分數)于消解杯中,于電熱板上,待消解杯中的溶液開始冒泡時,將其取下,并用0.5%硝酸稀釋定容至25mL。
(1)首先采用自編碼網絡,訓練從輸入層到H1層的參數,訓練完畢后,去除解碼層,只留下從輸入層到隱藏層的編碼階段;
(2)接著訓練從H1到H2的參數,把無標簽數據的H1層神經元的輸出值作為H2層的輸入,然后再進行自編碼訓練,訓練完畢后,再去除H2層的解碼層;
(3)對所有層重復(1)和(2),即移除前面自編碼器的輸出層,用另一個自編碼器代替,再用反向傳播進行訓練,直到棧式自編碼器的層數達到k。
本文所用棧式自編碼器結構如圖4所示。編碼器部分神經元采用遞減式結構,減少了重要信息的丟失;輸出層的維度為49;在解碼器部分,各層神經元數與解碼器對稱,使用式(5)作為映射函數。

圖4 棧式自編碼器
含有卷積操作層(Convolutional layers)的自編碼器稱為卷積自編碼器。卷積層含有一系列濾波器,在特征圖上按照一定的步長滑動,將卷積核參數與像素值對應相乘后相加輸出。卷積層作用于圖像的局部區域進而獲得圖像的局部特征,多層卷積層的應用,可以擴大這個局部區域的范圍,使提取到的特征更具備空間特性,因此卷積操作更適合用于圖像領域[15]。
本文使用的卷積自編碼器結構如圖5所示。在編碼器部分,卷積層數量為3,每層卷積核數量遞增,卷積核的大小為3×3,步長為3;在輸出層與卷積層之間有一個全連接層作為過渡;輸出層維度為49;在解碼器部分有與編碼器部分對稱的全連接層和反卷積層,使用式(5)作為映射函數。

圖5 卷積自編碼器
扣件圖像經自編碼器提取的特征都為49維的高維特征,本文使用余弦相似度作為度量這些高維特征之間相似度的尺度。余弦相似度是用空間中兩個向量的夾角來判斷這兩個向量的相似程度,兩個向量夾角越大,距離越遠,最大距離就是兩個向量夾角180°;夾角越小,距離越近,最小距離就是兩個向量夾角0°,完全重合。假設有A、B兩個n維向量,余弦相似度用式(6)求解。
(6)
其中,Ai和Bi代表向量的第i維的值。使用3種自編碼器對扣件圖像特征進行編碼,并通過余弦相似度確定扣件狀態,當3種方法識別的扣件狀態不一致時,使用多數投票法確定結果。假設扣件的正常狀態用1表示,異常狀態用0表示,其真值見表1。

表1 投票法真值表
本文實驗涉及的軟硬件平臺及版本信息見表2。

表2 實驗軟硬件平臺及版本信息
以下實驗都基于相同的軟硬件條件。本文將扣件分為正常狀態和異常狀態兩類,如圖6所示。異常狀態扣件包括斷裂、彈出等情況。數據集中圖像共600張,其中正常狀態扣件430張,異常狀態扣件170張。隨機選取260張正常圖像作為訓練集,340張作為測試集。測試集中正常狀態扣件170張,異常狀態扣件170張。

圖6 扣件狀態
本文用向量余弦值作為扣件狀態的判定標準。在訓練集中,任意選取一個圖像作為參照,經過自編碼器得到的特征T定義為基向量,訓練集中其余圖像經過自編碼器得到的向量與基向量求余弦值,該余弦值為兩張圖像的相似度,范圍為-1~1,相似度越接近1,向量代表的圖像與基向量越相關。在不同算法中特征向量的提取不盡相同,對3個自編碼器進行上述操作,得到的相似度最小值見表3。

表3 各算法的最小相似度
本文將測試圖像的相似度閾值設置為訓練集中相似度的最小值,即測試圖像的自編碼向量在相似度最小值和1之間時扣件為正樣本,否則測試圖像中的扣件為負樣本。為進一步提高算法的正確率,本文使用投票法對3種算法給出的結果使用多數投票法進行投票。各個算法實驗結果見表4。

表4 自編碼器實驗結果
實驗證明,自編碼器可以有效地提取扣件特征,將扣件圖像信息映射到高維空間中,利用特征之間的相似度實現了在只訓練正樣本的情況下檢測扣件狀態。從負樣本的檢出數量來看,因為卷積自編碼器的卷積操作能更好地提取到扣件的空間特征,使得3種自編碼器中,卷積自編碼器表現最好。使用多數投票法后,正樣本的檢出數量和負樣本的檢出數量都有所增加。
代先星使用VGG深度學習網絡對扣件進行分類[8],李永波使用HOG特征提取與SVM分類器結合方式檢測扣件[10],這兩種算法的指標在各自的數據集中都較為優秀,為證明本文算法的優越性,在相同的軟硬件條件和數據集下將本文方法與以上兩種算法對比,并使用總體精度(Overall Accuracy,OA)、精確率(Precision)、虛警率(False alarm,FPR)和漏警率(Missing alarm,FNR)評估扣件狀態檢測算法,式(7)~(10)。
(7)
(8)
(9)
(10)
其中,TP表示算法被正確分類的個數;N代表所有測試集的數量;NTP表示數據集中正樣本數量;NFP表示負樣本被檢測為正樣本的數量;NTN表示數據集中負樣本的數量;NFN表示正樣本被檢測為負樣本的數量。
因為扣件狀態的檢測關乎鐵路安全,所以在保證整體精度的情況下,虛警率越低越好,算法分類實驗結果見表5。由實驗數據可知,傳統的機器學習在沒有負樣本時,整體表現較差,不能達到扣件狀態檢測的效果;基于深度學習的VGG網絡只通過學習正樣本數據,總體精度不夠,虛警率過高,不適用于扣件檢測這種負樣本較少的情況;本文方法不管是在總體精度還是虛警率方面比前兩種方法都大有改觀,綜合各個評價指標,本文提出的扣件檢測算法最好,實現了零樣本檢測鐵路扣件狀態。

表5 算法分類實驗結果
本文提出了一種基于卷積自編碼器的零樣本扣件檢測方法,首先通過欠完備自編碼器、棧式自編碼器和卷積自編碼器分別對扣件提取特征,再通過特征與基向量的相似度判定扣件的狀態,最后通過多數投票法最終確定扣件狀態,為鐵路扣件檢測提供了一種新的解決思路。本文算法在測試集中的整體精度為95.59%,精確度為97.70%,FPR為2.30%,FPN為6.47%,比傳統方法和深度學習方法在評價指標方面有所提升,本文方法解決了利用機器視覺算法檢測扣件狀態時數據集不均衡的問題。