何 琦
(中國鐵路蘭州局集團有限公司,蘭州 730000)
列車車底關鍵零部件的安裝狀態一直以來是檢修作業的首要工作,當前,通過機器視覺智能裝置是檢修的主要工具[1],檢測識別方法傳統上通過深度學習對正常樣本和故障樣本進行目標分類推理,其典型缺點為:深度學習需要大量的故障樣本,然而真實列車車底故障發生頻率低,故障樣本較少,易導致深度學習模型不收斂或者模型過擬合,不足以支撐深度學習在列車車底故障檢測的應用,為此,提出一種基于記憶模塊的深度自編碼器故障檢測方法。
此方法通過機器視覺智能裝置采集的高清圖像,采用多層卷積神經網絡作為編碼器,特征記憶機制模塊作為特征最優器,多層反卷積網絡作為解碼器。運用最優算法迭代優化輸入和輸出的重構誤差。此方法把列車車底的關鍵零部件正常圖片作為自編碼的輸入,自編碼器的輸出作為正常圖片的重構,輸入圖和重構圖的差異體現關鍵零部件是否存在故障異常。
自編碼器(Auto-Encoder,AE),是一種無監督的學習模型。它在最優化方法(如梯度下降法)與反向傳播算法的基礎上,以輸入數據本身為監督,引導神經網絡學習映射關系,獲得重構輸出[2]。在時序異常檢測方案中,異常相比在正常時是少數,因此,如果使用自編碼器重構輸出與原始輸入之間的差異超過特定閾值(threshold),則認為原始時間序列中存在異常。自動編碼提供類似主成分分析法(Principal Component Analysis,PCA)等數據降維、壓縮的功能。從自編碼的網絡結構可以看出,如果輸入層的神經元數n大于隱藏層的神經元數m,數據就要從n維減少到m維,可以使用m維特征向量重構原始數據。這與主成分分析法的維度縮小相同,PCA是求解特征向量進行維度縮小,是線性維度縮小,自編碼器是非線性維度縮小。
在半監督/無監督設定下,自編碼器期望異常的重構損失大,而正常重構損失反之,因此可以區分這兩種情況。但實際上無法保障這一點,自編碼器也能很好地進行部分異常重構,大部分論文認為這是因為自編碼器的泛化能力太強了。本文通過使用自編碼器的記憶增強(Memory Augmentated AE)來解決這一問題。
記憶自編碼器由編碼器、記憶單元和解碼器構成,其中編碼器和解碼器構成自編碼器。自編碼器是一個強大的特征壓縮工具,在無監督機器學習中對高維數據進行降維建模,在機器學習中,降維是通過降低數據的維度描述的過程,通過保留一些現有特征或通過基于舊特征組合來生成數量更少的新特征來進行降維,降維的目的是對于給定一組可選的編碼器和解碼器,希望編碼時保持信息量最大,從而在解碼時具有盡可能小的重構誤差。
編碼器和解碼器通過神經網絡來實現,并采用隨機梯度下降算法進行迭代最優求解,自編碼器表示輸入的數據和輸出的數據保持一致,使編碼器對數據進行特征降維,解碼器對特征進行重構,并通過反向傳播誤差來更新網絡的權重,目的是自編碼器的輸出重構出輸入數據。
編碼器和解碼器自編碼器如圖1所示。

圖1 自編碼器示意Fig.1 Schematic diagram of the autoencoder
圖像數據輸入為X,經過編碼器輸出特征為Z=fe(X),特征是指把高維度的輸入編碼成低維度的隱變量,通過解碼器解碼Y=fd(Z),把編碼過后的輸入,解碼為高維度的Y,解碼器的輸出盡可能的恢復編碼器的輸入,即X≈Y,自編碼器優化的目標Min=dis(X,Y),dis(X,Y)表示X和Y之間的距離度量,常用歐式距離度量公式,Min也即為重構損失函數。
深度自編碼器的編碼器和解碼器都是深度非線性網絡,網絡層數和特征圖寬度、網絡結構越復雜,自編碼器就可以進行更多的降維,同時保持較低的重構損失,其非線性特征提取能力較強,可獲得良好的數據表示。但由于網絡的泛化能力過于強大,且海量正常樣本的圖像本身差異性較大,網絡為了學習到圖像的各種邊緣信息,過于“完美的”逼近重構誤差,正常正樣本和異常負樣本經過同一個自編碼器,重構誤差無法有效區別輸入圖像,導致負樣本無法識別。為了克服自編碼器的這個缺點,引入一種新模型的記憶體增強自動編碼器(Masked Autoencoders,MAE),給定輸入,掩碼自編碼器不會直接輸入編碼到解碼器中,但使用它作為記憶中最相關的特征轉換,在掩碼自編碼器中,編碼器和解碼器的結構與傳統AE的結構相似,僅在中間增加一個記憶單元,用于特征的轉換,如圖2所示。
衛星:為把普洱的生態環境優勢轉變為發展優勢,推動綠色發展制度化、常態化、長效化,我們主要做了以下工作:
如圖2所示,記憶單元M定義為N個行向量的矩陣,每個行向量mi表示記憶項,此記憶項保存了每次訓練中與正樣本最相關的向量,維度為C,與編碼器輸出特征Z的維度相同,因此最終輸出如公式(1)所示。

圖2 記憶自編碼器示意Fig.2 Schematic diagram of memory autoencoder

其中w是一個行向量,是針對特征Z的記憶力權重,w權重矩陣計算如公式(2)所示。

通過公式(2),分別計算出每個wi的softmax損失函數。特征Z與記憶項mi的余弦相似度如公式(3)所示,求出Z與mi間的夾角余弦。

在訓練階段,記憶單元M,保存與編碼器輸出的特征最相似的特征向量,記錄正常數據的正常模式。矩陣M在批訓練中,迭代更新,訓練算法采用隨機梯度下降算法(Stochastic Gradient Descent,SGD)[3],SGD梯度下降最優化是一種一階優化算法,隨機選擇訓練樣本,在更新參數時計算函數的一階導數,目標是在每次迭代中使梯度沿最陡斜率的方向行進,在目標函數的梯度相反的方向上更新網絡參數[4]。在測試階段,正常數據從記憶單元M中選擇與之最相似的行向量來獲得重建,重建誤差最小;異常數據也從記憶單元M中選擇與之最相似的行向量來重建,由于記憶單元M記錄的都是正常數據的正常模式,找出與異常最相似的特征后重建的數據必然是正常數據,重建誤差增大,從而把異常數據識別出來。
根據記憶自編碼器原理,結合列車車底關鍵零部件分布特性,構建針對列車車底關鍵零部件狀態異常識別框架,如圖3所示。

圖3 車底關鍵零部件異常識別原理Fig.3 Schematic diagram of abnormal identification of key components under a train
以車底關鍵零部件螺母開口銷缺失異常狀態為例,開口銷完好圖片預先通過記憶自編碼器進行模型訓練。在測試階段,開口銷完好和缺失圖片分別輸入記憶自編碼器,經過編碼器和解碼器重構圖片,把輸入圖和重構輸出圖的灰度值進行余弦距離相似度計算,相似度滿足一定閾值,判別為異常識別。由于記憶自編碼器模型是開口銷完好圖片訓練,重構的圖片必然和完好圖片的差異最小,開口銷缺失圖片重構的圖片和輸入圖片差異較大,根據閾值即可檢測異常圖片。
卷積神經網絡(Convolutional Neural Networks,CNN)已在機器視覺領域有廣泛應用,表現出泛化能力強、識別精度高等特點。相較于全連接神經網絡,若使其處理大尺寸圖像則有很明顯的缺點:將圖像展開為向量會丟失空間信息[5];由于參數過多使得效率低下,訓練困難;大量的參數很快會導致網絡過擬合。而使用卷積神經網絡就可以很好解決上述問題,其整個網絡幾乎可以近似地表示所有函數,但是卷積神經網絡在視覺處理方面比全連接網絡有很大進步。主要有兩個優點:稀疏連接和參數共享。這兩個特征都大大減少了網絡的自由參數數量。稀疏連接是基于圖像總是具有局部相關性,圖像的一個特征很可能與局部像素有關(這與人的視覺認識也是一致的)。卷積神經網絡的各層神經元是三維排列的,層中神經元只與前一層的一塊區域連接,而非全連接。
卷積層是構建卷積神經網絡的核心層,它產生了網絡中大部分的計算量。卷積作用類似于濾波器的作用。卷積層的參數由可學習的濾波器集合組成。每個濾波器在空間上都很小(寬度和高度),但深度和輸入數據是一致的。網絡可以讓濾波器學習特定類型的視覺特征,如位置邊界或第一層顏色斑點,甚至是網絡更高層的蜂窩形狀或輪子形狀的圖案。反卷積并不是嚴格意義上的對應過程的逆運算。卷積與相應的反卷積所使用的稀疏矩陣數字上沒有對應關系,只是在階數上維持了轉置關系。但是階數相同,這足以保證卷積和對應反卷積的連接模式不變。連接模式是指輸出特征圖的所有像素和輸入特征圖的像素之間的線性關系不變。反卷積操作可以視作對應卷積相對于輸入的梯度,實際上,反卷積運算通常是梯度代入計算。本文采用深度卷積神經網絡作為編碼器和解碼器。定義Conv(k, s, c)和Dconv(k, s, c)分別表示卷積和反卷積,其中k指卷積核尺寸,s指卷積核滑動步數,c指卷積核數量。完整的網絡模型如圖4所示。

圖4 車底關鍵零部件異常識別網絡模型Fig.4 Abnormal identification network model diagram of key components under a train
列車車底主要包括制動裝置、傳動裝置、牽引裝置、輪軸、車鉤裝置等,這些裝置中共同的關鍵零部件之一為螺栓螺母。螺栓螺母缺失和開口銷缺失關系到列車安全運行。但此類異常,實際車輛發生故障的頻率很低,相關車輛專業提供的故障樣本較少。傳統的基于分類算法[6],由于數據稀疏,模型收斂欠佳。基于記憶自編碼器的算法優點為無需大量負樣本,數據標注簡單。因此,本文選用螺栓螺母缺失和開口銷缺失對算法方法進行驗證[7]。
選擇某個路局的機務段進行驗證,通過某個廠家的機器視覺裝置采集高清圖像。圖像數據共3 500張,每張圖像都含有關鍵零部件的螺栓和螺母,其中故障圖片15張。圖像實例如圖5所示。

圖5 車底關鍵零部件螺栓Fig.5 Bolts of key components under a train
一個關鍵區域包括多個螺栓螺母,螺栓螺母的目標檢測采用傳統的端到端的圖像檢測算法。本文處理的輸入圖片是如圖5所示紅框的已經檢測成功的小圖。
本文的試驗環境為window10,intel i7處理器,內存32 G,顯卡RTX2080Ti,算法框架為darknet開源深度學習框架。選擇 2 500張圖片進行訓練,剩余1 000張圖片進行測試。由于記憶自編碼器對訓練方法有一定要求,否則訓練難以收斂,本文主要采用如下的訓練方法。
使用截斷的正態分布(也叫作高斯分布)來初始化網絡的權值和偏移量,初始化范圍[-0.005,0.005]。
學習率調整。每個批學習,學習率降低2%,從而加速收斂,訓練后期學習率降低為0.5%,從而穩定地落入局部最優點。使用Adam,Adagrad等自適應優化算法,就可以實現學習率的自適應調整。從而保證準確率的同時加快收斂速度。
數據增強。為了增強網絡模型對正常樣本的差異性的穩定和普適,對正常樣本進行圖像數據的旋轉、圖像多尺度處理、圖像數據的放射變換、圖像數據的軟曝光、圖像數據增加噪點等個數據增強的方法。
在每個卷積后,加入一個激活函數。激活函數選擇tanh非線性函數,一方面可以增加模型的非線性元素,另一方面可以降低梯度彌散問題。
采用動量的隨機梯度下降[8]用于改善SGD更新時可能產生的收斂震蕩現象。通過積累前幾輪的動量信息輔助參數更新,動量因子采用動態更新,初始值設置0.5,之后隨著訓練輪數增長,每100輪調整一次,逐漸變為0.9。
如表1所示,對驗證測試進行統計,15個故障,漏識別1個,漏檢率為8.3%。經過分析,記憶自編碼器對螺栓螺母完好的圖片重構誤解較小,對螺栓螺帽缺失和開口銷缺失圖片重構誤差較大。當輸入圖和重構圖進行余弦相似度計算,閾值選擇0.9,開口銷缺失圖片。漏識別一個,如果閾值選擇0.8,所有異常圖片均能識別成功,但是誤報會增加。

表1 異常識別統計Tab. 1 Statistical list of abnormal identification
典型的故障識別圖片如圖6所示。

圖6 典型車底關鍵零部件故障Fig.6 Typica fault of key components under a train
針對列車車底關鍵零部件安裝狀態的檢測功能,提出基于記憶自編碼的異常檢測算法。該算法通過在傳統自編碼的網絡模型中添加記憶單元,可以有效降低異常識別的漏檢率,算法在某路局大量測試和驗證。驗證表明,基于本文提供的方法,可對車底關鍵零部件的螺栓螺母缺失和開口銷缺失進行異常識別,具有較高的識別準確率和實用性。針對列車車底制動裝置、傳動裝置、牽引裝置、輪軸、車鉤裝置等其他如螺栓松動、線纜斷裂、閘瓦磨損異常、異物覆蓋等異常類型也具有普適性。