何 琦
(中國(guó)鐵路蘭州局集團(tuán)有限公司,蘭州 730000)
列車(chē)車(chē)底關(guān)鍵零部件的安裝狀態(tài)一直以來(lái)是檢修作業(yè)的首要工作,當(dāng)前,通過(guò)機(jī)器視覺(jué)智能裝置是檢修的主要工具[1],檢測(cè)識(shí)別方法傳統(tǒng)上通過(guò)深度學(xué)習(xí)對(duì)正常樣本和故障樣本進(jìn)行目標(biāo)分類(lèi)推理,其典型缺點(diǎn)為:深度學(xué)習(xí)需要大量的故障樣本,然而真實(shí)列車(chē)車(chē)底故障發(fā)生頻率低,故障樣本較少,易導(dǎo)致深度學(xué)習(xí)模型不收斂或者模型過(guò)擬合,不足以支撐深度學(xué)習(xí)在列車(chē)車(chē)底故障檢測(cè)的應(yīng)用,為此,提出一種基于記憶模塊的深度自編碼器故障檢測(cè)方法。
此方法通過(guò)機(jī)器視覺(jué)智能裝置采集的高清圖像,采用多層卷積神經(jīng)網(wǎng)絡(luò)作為編碼器,特征記憶機(jī)制模塊作為特征最優(yōu)器,多層反卷積網(wǎng)絡(luò)作為解碼器。運(yùn)用最優(yōu)算法迭代優(yōu)化輸入和輸出的重構(gòu)誤差。此方法把列車(chē)車(chē)底的關(guān)鍵零部件正常圖片作為自編碼的輸入,自編碼器的輸出作為正常圖片的重構(gòu),輸入圖和重構(gòu)圖的差異體現(xiàn)關(guān)鍵零部件是否存在故障異常。
自編碼器(Auto-Encoder,AE),是一種無(wú)監(jiān)督的學(xué)習(xí)模型。它在最優(yōu)化方法(如梯度下降法)與反向傳播算法的基礎(chǔ)上,以輸入數(shù)據(jù)本身為監(jiān)督,引導(dǎo)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)映射關(guān)系,獲得重構(gòu)輸出[2]。在時(shí)序異常檢測(cè)方案中,異常相比在正常時(shí)是少數(shù),因此,如果使用自編碼器重構(gòu)輸出與原始輸入之間的差異超過(guò)特定閾值(threshold),則認(rèn)為原始時(shí)間序列中存在異常。自動(dòng)編碼提供類(lèi)似主成分分析法(Principal Component Analysis,PCA)等數(shù)據(jù)降維、壓縮的功能。從自編碼的網(wǎng)絡(luò)結(jié)構(gòu)可以看出,如果輸入層的神經(jīng)元數(shù)n大于隱藏層的神經(jīng)元數(shù)m,數(shù)據(jù)就要從n維減少到m維,可以使用m維特征向量重構(gòu)原始數(shù)據(jù)。這與主成分分析法的維度縮小相同,PCA是求解特征向量進(jìn)行維度縮小,是線性維度縮小,自編碼器是非線性維度縮小。
在半監(jiān)督/無(wú)監(jiān)督設(shè)定下,自編碼器期望異常的重構(gòu)損失大,而正常重構(gòu)損失反之,因此可以區(qū)分這兩種情況。但實(shí)際上無(wú)法保障這一點(diǎn),自編碼器也能很好地進(jìn)行部分異常重構(gòu),大部分論文認(rèn)為這是因?yàn)樽跃幋a器的泛化能力太強(qiáng)了。本文通過(guò)使用自編碼器的記憶增強(qiáng)(Memory Augmentated AE)來(lái)解決這一問(wèn)題。
記憶自編碼器由編碼器、記憶單元和解碼器構(gòu)成,其中編碼器和解碼器構(gòu)成自編碼器。自編碼器是一個(gè)強(qiáng)大的特征壓縮工具,在無(wú)監(jiān)督機(jī)器學(xué)習(xí)中對(duì)高維數(shù)據(jù)進(jìn)行降維建模,在機(jī)器學(xué)習(xí)中,降維是通過(guò)降低數(shù)據(jù)的維度描述的過(guò)程,通過(guò)保留一些現(xiàn)有特征或通過(guò)基于舊特征組合來(lái)生成數(shù)量更少的新特征來(lái)進(jìn)行降維,降維的目的是對(duì)于給定一組可選的編碼器和解碼器,希望編碼時(shí)保持信息量最大,從而在解碼時(shí)具有盡可能小的重構(gòu)誤差。
編碼器和解碼器通過(guò)神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn),并采用隨機(jī)梯度下降算法進(jìn)行迭代最優(yōu)求解,自編碼器表示輸入的數(shù)據(jù)和輸出的數(shù)據(jù)保持一致,使編碼器對(duì)數(shù)據(jù)進(jìn)行特征降維,解碼器對(duì)特征進(jìn)行重構(gòu),并通過(guò)反向傳播誤差來(lái)更新網(wǎng)絡(luò)的權(quán)重,目的是自編碼器的輸出重構(gòu)出輸入數(shù)據(jù)。
編碼器和解碼器自編碼器如圖1所示。
圖1 自編碼器示意Fig.1 Schematic diagram of the autoencoder
圖像數(shù)據(jù)輸入為X,經(jīng)過(guò)編碼器輸出特征為Z=fe(X),特征是指把高維度的輸入編碼成低維度的隱變量,通過(guò)解碼器解碼Y=fd(Z),把編碼過(guò)后的輸入,解碼為高維度的Y,解碼器的輸出盡可能的恢復(fù)編碼器的輸入,即X≈Y,自編碼器優(yōu)化的目標(biāo)Min=dis(X,Y),dis(X,Y)表示X和Y之間的距離度量,常用歐式距離度量公式,Min也即為重構(gòu)損失函數(shù)。
深度自編碼器的編碼器和解碼器都是深度非線性網(wǎng)絡(luò),網(wǎng)絡(luò)層數(shù)和特征圖寬度、網(wǎng)絡(luò)結(jié)構(gòu)越復(fù)雜,自編碼器就可以進(jìn)行更多的降維,同時(shí)保持較低的重構(gòu)損失,其非線性特征提取能力較強(qiáng),可獲得良好的數(shù)據(jù)表示。但由于網(wǎng)絡(luò)的泛化能力過(guò)于強(qiáng)大,且海量正常樣本的圖像本身差異性較大,網(wǎng)絡(luò)為了學(xué)習(xí)到圖像的各種邊緣信息,過(guò)于“完美的”逼近重構(gòu)誤差,正常正樣本和異常負(fù)樣本經(jīng)過(guò)同一個(gè)自編碼器,重構(gòu)誤差無(wú)法有效區(qū)別輸入圖像,導(dǎo)致負(fù)樣本無(wú)法識(shí)別。為了克服自編碼器的這個(gè)缺點(diǎn),引入一種新模型的記憶體增強(qiáng)自動(dòng)編碼器(Masked Autoencoders,MAE),給定輸入,掩碼自編碼器不會(huì)直接輸入編碼到解碼器中,但使用它作為記憶中最相關(guān)的特征轉(zhuǎn)換,在掩碼自編碼器中,編碼器和解碼器的結(jié)構(gòu)與傳統(tǒng)AE的結(jié)構(gòu)相似,僅在中間增加一個(gè)記憶單元,用于特征的轉(zhuǎn)換,如圖2所示。
衛(wèi)星:為把普洱的生態(tài)環(huán)境優(yōu)勢(shì)轉(zhuǎn)變?yōu)榘l(fā)展優(yōu)勢(shì),推動(dòng)綠色發(fā)展制度化、常態(tài)化、長(zhǎng)效化,我們主要做了以下工作:
如圖2所示,記憶單元M定義為N個(gè)行向量的矩陣,每個(gè)行向量mi表示記憶項(xiàng),此記憶項(xiàng)保存了每次訓(xùn)練中與正樣本最相關(guān)的向量,維度為C,與編碼器輸出特征Z的維度相同,因此最終輸出如公式(1)所示。
圖2 記憶自編碼器示意Fig.2 Schematic diagram of memory autoencoder
其中w是一個(gè)行向量,是針對(duì)特征Z的記憶力權(quán)重,w權(quán)重矩陣計(jì)算如公式(2)所示。
通過(guò)公式(2),分別計(jì)算出每個(gè)wi的softmax損失函數(shù)。特征Z與記憶項(xiàng)mi的余弦相似度如公式(3)所示,求出Z與mi間的夾角余弦。
在訓(xùn)練階段,記憶單元M,保存與編碼器輸出的特征最相似的特征向量,記錄正常數(shù)據(jù)的正常模式。矩陣M在批訓(xùn)練中,迭代更新,訓(xùn)練算法采用隨機(jī)梯度下降算法(Stochastic Gradient Descent,SGD)[3],SGD梯度下降最優(yōu)化是一種一階優(yōu)化算法,隨機(jī)選擇訓(xùn)練樣本,在更新參數(shù)時(shí)計(jì)算函數(shù)的一階導(dǎo)數(shù),目標(biāo)是在每次迭代中使梯度沿最陡斜率的方向行進(jìn),在目標(biāo)函數(shù)的梯度相反的方向上更新網(wǎng)絡(luò)參數(shù)[4]。在測(cè)試階段,正常數(shù)據(jù)從記憶單元M中選擇與之最相似的行向量來(lái)獲得重建,重建誤差最小;異常數(shù)據(jù)也從記憶單元M中選擇與之最相似的行向量來(lái)重建,由于記憶單元M記錄的都是正常數(shù)據(jù)的正常模式,找出與異常最相似的特征后重建的數(shù)據(jù)必然是正常數(shù)據(jù),重建誤差增大,從而把異常數(shù)據(jù)識(shí)別出來(lái)。
根據(jù)記憶自編碼器原理,結(jié)合列車(chē)車(chē)底關(guān)鍵零部件分布特性,構(gòu)建針對(duì)列車(chē)車(chē)底關(guān)鍵零部件狀態(tài)異常識(shí)別框架,如圖3所示。
圖3 車(chē)底關(guān)鍵零部件異常識(shí)別原理Fig.3 Schematic diagram of abnormal identification of key components under a train
以車(chē)底關(guān)鍵零部件螺母開(kāi)口銷(xiāo)缺失異常狀態(tài)為例,開(kāi)口銷(xiāo)完好圖片預(yù)先通過(guò)記憶自編碼器進(jìn)行模型訓(xùn)練。在測(cè)試階段,開(kāi)口銷(xiāo)完好和缺失圖片分別輸入記憶自編碼器,經(jīng)過(guò)編碼器和解碼器重構(gòu)圖片,把輸入圖和重構(gòu)輸出圖的灰度值進(jìn)行余弦距離相似度計(jì)算,相似度滿足一定閾值,判別為異常識(shí)別。由于記憶自編碼器模型是開(kāi)口銷(xiāo)完好圖片訓(xùn)練,重構(gòu)的圖片必然和完好圖片的差異最小,開(kāi)口銷(xiāo)缺失圖片重構(gòu)的圖片和輸入圖片差異較大,根據(jù)閾值即可檢測(cè)異常圖片。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)已在機(jī)器視覺(jué)領(lǐng)域有廣泛應(yīng)用,表現(xiàn)出泛化能力強(qiáng)、識(shí)別精度高等特點(diǎn)。相較于全連接神經(jīng)網(wǎng)絡(luò),若使其處理大尺寸圖像則有很明顯的缺點(diǎn):將圖像展開(kāi)為向量會(huì)丟失空間信息[5];由于參數(shù)過(guò)多使得效率低下,訓(xùn)練困難;大量的參數(shù)很快會(huì)導(dǎo)致網(wǎng)絡(luò)過(guò)擬合。而使用卷積神經(jīng)網(wǎng)絡(luò)就可以很好解決上述問(wèn)題,其整個(gè)網(wǎng)絡(luò)幾乎可以近似地表示所有函數(shù),但是卷積神經(jīng)網(wǎng)絡(luò)在視覺(jué)處理方面比全連接網(wǎng)絡(luò)有很大進(jìn)步。主要有兩個(gè)優(yōu)點(diǎn):稀疏連接和參數(shù)共享。這兩個(gè)特征都大大減少了網(wǎng)絡(luò)的自由參數(shù)數(shù)量。稀疏連接是基于圖像總是具有局部相關(guān)性,圖像的一個(gè)特征很可能與局部像素有關(guān)(這與人的視覺(jué)認(rèn)識(shí)也是一致的)。卷積神經(jīng)網(wǎng)絡(luò)的各層神經(jīng)元是三維排列的,層中神經(jīng)元只與前一層的一塊區(qū)域連接,而非全連接。
卷積層是構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)的核心層,它產(chǎn)生了網(wǎng)絡(luò)中大部分的計(jì)算量。卷積作用類(lèi)似于濾波器的作用。卷積層的參數(shù)由可學(xué)習(xí)的濾波器集合組成。每個(gè)濾波器在空間上都很小(寬度和高度),但深度和輸入數(shù)據(jù)是一致的。網(wǎng)絡(luò)可以讓濾波器學(xué)習(xí)特定類(lèi)型的視覺(jué)特征,如位置邊界或第一層顏色斑點(diǎn),甚至是網(wǎng)絡(luò)更高層的蜂窩形狀或輪子形狀的圖案。反卷積并不是嚴(yán)格意義上的對(duì)應(yīng)過(guò)程的逆運(yùn)算。卷積與相應(yīng)的反卷積所使用的稀疏矩陣數(shù)字上沒(méi)有對(duì)應(yīng)關(guān)系,只是在階數(shù)上維持了轉(zhuǎn)置關(guān)系。但是階數(shù)相同,這足以保證卷積和對(duì)應(yīng)反卷積的連接模式不變。連接模式是指輸出特征圖的所有像素和輸入特征圖的像素之間的線性關(guān)系不變。反卷積操作可以視作對(duì)應(yīng)卷積相對(duì)于輸入的梯度,實(shí)際上,反卷積運(yùn)算通常是梯度代入計(jì)算。本文采用深度卷積神經(jīng)網(wǎng)絡(luò)作為編碼器和解碼器。定義Conv(k, s, c)和Dconv(k, s, c)分別表示卷積和反卷積,其中k指卷積核尺寸,s指卷積核滑動(dòng)步數(shù),c指卷積核數(shù)量。完整的網(wǎng)絡(luò)模型如圖4所示。
圖4 車(chē)底關(guān)鍵零部件異常識(shí)別網(wǎng)絡(luò)模型Fig.4 Abnormal identification network model diagram of key components under a train
列車(chē)車(chē)底主要包括制動(dòng)裝置、傳動(dòng)裝置、牽引裝置、輪軸、車(chē)鉤裝置等,這些裝置中共同的關(guān)鍵零部件之一為螺栓螺母。螺栓螺母缺失和開(kāi)口銷(xiāo)缺失關(guān)系到列車(chē)安全運(yùn)行。但此類(lèi)異常,實(shí)際車(chē)輛發(fā)生故障的頻率很低,相關(guān)車(chē)輛專業(yè)提供的故障樣本較少。傳統(tǒng)的基于分類(lèi)算法[6],由于數(shù)據(jù)稀疏,模型收斂欠佳?;谟洃涀跃幋a器的算法優(yōu)點(diǎn)為無(wú)需大量負(fù)樣本,數(shù)據(jù)標(biāo)注簡(jiǎn)單。因此,本文選用螺栓螺母缺失和開(kāi)口銷(xiāo)缺失對(duì)算法方法進(jìn)行驗(yàn)證[7]。
選擇某個(gè)路局的機(jī)務(wù)段進(jìn)行驗(yàn)證,通過(guò)某個(gè)廠家的機(jī)器視覺(jué)裝置采集高清圖像。圖像數(shù)據(jù)共3 500張,每張圖像都含有關(guān)鍵零部件的螺栓和螺母,其中故障圖片15張。圖像實(shí)例如圖5所示。
圖5 車(chē)底關(guān)鍵零部件螺栓Fig.5 Bolts of key components under a train
一個(gè)關(guān)鍵區(qū)域包括多個(gè)螺栓螺母,螺栓螺母的目標(biāo)檢測(cè)采用傳統(tǒng)的端到端的圖像檢測(cè)算法。本文處理的輸入圖片是如圖5所示紅框的已經(jīng)檢測(cè)成功的小圖。
本文的試驗(yàn)環(huán)境為window10,intel i7處理器,內(nèi)存32 G,顯卡RTX2080Ti,算法框架為darknet開(kāi)源深度學(xué)習(xí)框架。選擇 2 500張圖片進(jìn)行訓(xùn)練,剩余1 000張圖片進(jìn)行測(cè)試。由于記憶自編碼器對(duì)訓(xùn)練方法有一定要求,否則訓(xùn)練難以收斂,本文主要采用如下的訓(xùn)練方法。
使用截?cái)嗟恼龖B(tài)分布(也叫作高斯分布)來(lái)初始化網(wǎng)絡(luò)的權(quán)值和偏移量,初始化范圍[-0.005,0.005]。
學(xué)習(xí)率調(diào)整。每個(gè)批學(xué)習(xí),學(xué)習(xí)率降低2%,從而加速收斂,訓(xùn)練后期學(xué)習(xí)率降低為0.5%,從而穩(wěn)定地落入局部最優(yōu)點(diǎn)。使用Adam,Adagrad等自適應(yīng)優(yōu)化算法,就可以實(shí)現(xiàn)學(xué)習(xí)率的自適應(yīng)調(diào)整。從而保證準(zhǔn)確率的同時(shí)加快收斂速度。
數(shù)據(jù)增強(qiáng)。為了增強(qiáng)網(wǎng)絡(luò)模型對(duì)正常樣本的差異性的穩(wěn)定和普適,對(duì)正常樣本進(jìn)行圖像數(shù)據(jù)的旋轉(zhuǎn)、圖像多尺度處理、圖像數(shù)據(jù)的放射變換、圖像數(shù)據(jù)的軟曝光、圖像數(shù)據(jù)增加噪點(diǎn)等個(gè)數(shù)據(jù)增強(qiáng)的方法。
在每個(gè)卷積后,加入一個(gè)激活函數(shù)。激活函數(shù)選擇tanh非線性函數(shù),一方面可以增加模型的非線性元素,另一方面可以降低梯度彌散問(wèn)題。
采用動(dòng)量的隨機(jī)梯度下降[8]用于改善SGD更新時(shí)可能產(chǎn)生的收斂震蕩現(xiàn)象。通過(guò)積累前幾輪的動(dòng)量信息輔助參數(shù)更新,動(dòng)量因子采用動(dòng)態(tài)更新,初始值設(shè)置0.5,之后隨著訓(xùn)練輪數(shù)增長(zhǎng),每100輪調(diào)整一次,逐漸變?yōu)?.9。
如表1所示,對(duì)驗(yàn)證測(cè)試進(jìn)行統(tǒng)計(jì),15個(gè)故障,漏識(shí)別1個(gè),漏檢率為8.3%。經(jīng)過(guò)分析,記憶自編碼器對(duì)螺栓螺母完好的圖片重構(gòu)誤解較小,對(duì)螺栓螺帽缺失和開(kāi)口銷(xiāo)缺失圖片重構(gòu)誤差較大。當(dāng)輸入圖和重構(gòu)圖進(jìn)行余弦相似度計(jì)算,閾值選擇0.9,開(kāi)口銷(xiāo)缺失圖片。漏識(shí)別一個(gè),如果閾值選擇0.8,所有異常圖片均能識(shí)別成功,但是誤報(bào)會(huì)增加。
表1 異常識(shí)別統(tǒng)計(jì)Tab. 1 Statistical list of abnormal identification
典型的故障識(shí)別圖片如圖6所示。
圖6 典型車(chē)底關(guān)鍵零部件故障Fig.6 Typica fault of key components under a train
針對(duì)列車(chē)車(chē)底關(guān)鍵零部件安裝狀態(tài)的檢測(cè)功能,提出基于記憶自編碼的異常檢測(cè)算法。該算法通過(guò)在傳統(tǒng)自編碼的網(wǎng)絡(luò)模型中添加記憶單元,可以有效降低異常識(shí)別的漏檢率,算法在某路局大量測(cè)試和驗(yàn)證。驗(yàn)證表明,基于本文提供的方法,可對(duì)車(chē)底關(guān)鍵零部件的螺栓螺母缺失和開(kāi)口銷(xiāo)缺失進(jìn)行異常識(shí)別,具有較高的識(shí)別準(zhǔn)確率和實(shí)用性。針對(duì)列車(chē)車(chē)底制動(dòng)裝置、傳動(dòng)裝置、牽引裝置、輪軸、車(chē)鉤裝置等其他如螺栓松動(dòng)、線纜斷裂、閘瓦磨損異常、異物覆蓋等異常類(lèi)型也具有普適性。