陳達亮 張博文 郝耀東 安子軍 鄧江華
(1.中汽研(天津)汽車工程研究院有限公司,天津 300399;2.燕山大學,秦皇島 066000)
主題詞:異響識別 卷積神經(jīng)網(wǎng)絡(luò) Transformer編碼器棧 并行網(wǎng)絡(luò) 音頻剪切 數(shù)據(jù)增強
目前,基于各種信號的故障診斷技術(shù)已廣泛應用于工業(yè)生產(chǎn)中,但針對乘用車系統(tǒng)中存在的異響問題,相關(guān)數(shù)據(jù)集的匱乏限制了該領(lǐng)域診斷技術(shù)的發(fā)展,因此有必要進行基于易獲信號的車輛異響診斷方法開發(fā)。
在故障診斷領(lǐng)域,研究人員采用梅爾頻率倒譜系數(shù)(Mel Frequency Cepstral Coefficients,MFCCs)特征[1]和小波特征[2]等作為聲信號特征輸入分類器,分類器利用自身的數(shù)據(jù)統(tǒng)計分析能力,最終實現(xiàn)分類功能。分類器可分為2 個階段,即傳統(tǒng)機器學習階段和深度學習階段。前者代表算法有支持向量機[3]、決策樹[4]和人工神經(jīng)網(wǎng)絡(luò)[5]等;后者代表算法有卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[6]、循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[7]等。
在傳統(tǒng)機器學習方面:文獻[8]針對旋轉(zhuǎn)機械出現(xiàn)的早期故障振動信號,進行了小波包分解和經(jīng)典模式分解以獲得故障特征,并在機械軸承上得到試驗驗證;文獻[9]利用小波基函數(shù)逐級對軸承故障特征進行小波包分解,最終實現(xiàn)了超過99%的分類精度。
在深度學習方面:文獻[10]開發(fā)了一種車輛動力總成系統(tǒng)異響的分類方法,提取了MFCCs 特征作為RNN的輸入,最終實現(xiàn)了87.6%的分類精度;文獻[11]使用了2種數(shù)據(jù)增強方法,并利用含有殘差鏈接的CNN開發(fā)了針對旋轉(zhuǎn)機械的故障診斷技術(shù),最終在公開數(shù)據(jù)集上實現(xiàn)了99.91%的識別率。
傳統(tǒng)機器學習和深度學習在分類問題上都存在一些不足:前者在分析處理復雜函數(shù)或龐大數(shù)據(jù)時計算能力不足,不適合智能分類領(lǐng)域的發(fā)展趨勢;后者在數(shù)據(jù)集小且稀疏的情況下極易造成深度學習模型過擬合現(xiàn)象。本文基于有限的7種異響數(shù)據(jù),并利用數(shù)據(jù)擴充方法增加樣本數(shù)量,提出一種新的深度學習識別方法,驗證Transformer編碼器棧和CNN并行工作機制的有效性,同時提取輸入特征的空間和時序信息以獲得更高的識別精度。
本文利用HeadLab前端設(shè)備進行若干車型的車內(nèi)噪聲數(shù)據(jù)采集,為了降低訓練風險并保留聲音信號的完整信息,統(tǒng)一采樣頻率為48 kHz,量化位數(shù)為16 bit。對噪聲數(shù)據(jù)進行人工聽診作為初步主觀篩選,利用Testlab對噪聲數(shù)據(jù)進行時域和頻域分析作為客觀篩選,綜合主、客觀篩選結(jié)果并截取異常噪聲的出現(xiàn)時間段,最終作為有效數(shù)據(jù)保留。為驗證診斷模型的泛化能力,將有效數(shù)據(jù)以8∶1∶1的比例劃分為訓練集、驗證集和測試集,其中訓練集和驗證集的數(shù)據(jù)集合統(tǒng)稱為訓練數(shù)據(jù),測試集為測試數(shù)據(jù)。
劃分數(shù)據(jù)集后,針對各數(shù)據(jù)集分別采用音頻剪切和數(shù)據(jù)增強方式來擴充數(shù)據(jù)。
2.2.1 音頻剪切
將一段音頻切分成若干個小時間塊,通過分析該段音頻波形圖,確定異常頻率之間的時間間隔。本文確定小時間塊的時長為3 s,為避免裁剪過程中相鄰時間塊出現(xiàn)信息丟失,設(shè)置切分步長為2 s。
2.2.2 數(shù)據(jù)增強
采用4種有效方法進行數(shù)據(jù)增強,分別是時間拉伸(Time Stretching)、時間平移(Time Shifting)、噪聲增加(Noise Addition)、音高修正(Pitch Shifting)。
2.2.2.1 時間拉伸
在音高不變的前提下,通過設(shè)置拉伸參數(shù)v改變原音頻信號的速度,v∈(1,+∞)或v∈(0,1)表示加快或減慢音頻速率為原音頻速率的v倍。為了防止音頻失真,本文對每個音頻數(shù)據(jù)設(shè)置了一組拉伸參數(shù)v∈{0.8,2}。
2.2.2.2 時間平移
保持音高不變,在時域范圍平移一定距離,平移參數(shù)σ可設(shè)置為正值或負值,分別代表音頻數(shù)據(jù)向前或向后平移。本文對每個音頻數(shù)據(jù)設(shè)置平移參數(shù)σ=fs∕2,其中fs為采樣頻率,本文取σ∈{-fs∕2,fs∕2}。
2.2.2.3 噪聲增加
噪聲增加是自然語言處理和圖像識別領(lǐng)域常用的增強技術(shù),在聲音識別領(lǐng)域,噪聲增加是指為原音頻數(shù)據(jù)增加背景噪聲,如高斯噪聲、環(huán)境音等。本文選擇添加均值為0,標準差為1的高斯白噪聲。
2.2.2.4 音高修正
在音速不變的前提下,改變原音頻的音高,實際上音高的改變并不影響故障特征的標簽,通過設(shè)置修正參數(shù)ρ使音高向上或向下移動若干步(以半音為單位,ρ為正代表向上移,反之向下),本文取ρ∈{-6,3,6}。
所有的異響類型、樣本量、時長及數(shù)據(jù)擴充后的數(shù)據(jù)信息如表1 所示。圖1 所示為4 種增強技術(shù)的部分處理結(jié)果,原始音頻是一段經(jīng)過篩選的減速器敲擊聲。
圖1 增強信號與原始信號波形對比
表1 數(shù)據(jù)信息
為了獲取有效的故障診斷特征及可以用于深度學習的輸入數(shù)據(jù),提取基于對數(shù)濾波器組能量(Logfbank)及MFCCs的特征參數(shù),提取流程如圖2所示。
圖2 特征提取流程
具體操作過程如下:
a.預加重。噪聲數(shù)據(jù)通過預加重達到平衡頻譜和改善信噪比的目的,圖3 所示為一段原始敲擊噪聲,預加重結(jié)果如圖4 所示。時域信號X(n)預加重后的輸出為:
圖3 減速器敲擊異響
圖4 經(jīng)預加重的減速器敲擊異響
式中,n為采樣點序號;α為濾波器系數(shù)。
b.分幀、加窗。使用漢明窗將信號分為若干短的時間段,每個短時間段稱為分析幀,可認為在分析幀內(nèi),信號的頻率平穩(wěn)。為了保持信號的連續(xù)性,避免信號失真,相鄰的分析幀通常會有重疊,重疊部分稱為幀移。分幀操作可表達為:
其中,ω(n)為漢明窗函數(shù):
c.傅里葉變換與功率譜計算。在每個分析幀上進行傅里葉變換,將時域信號轉(zhuǎn)換為頻域功率分布,然后計算功率譜:
式中,Pi(k)為第i幀對應的第k個功率譜;j為傅里葉變換時的虛部單位;K為傅里葉變換的長度。
d.梅爾濾波器組濾波。功率譜經(jīng)過梅爾尺度的三角濾波器組便可以得到人耳感知頻率范圍內(nèi)的音頻。音頻的實際頻率f與梅爾尺度頻率Mel(f)的關(guān)系為:
e.對數(shù)能量分析。對每個濾波器的輸出取對數(shù)得到對數(shù)能量,將濾波器組輸出的對數(shù)能量命名為Logfbank,對數(shù)能量輸出為:
其中,Hm(k)為三角濾波器組的定義函數(shù):
式中,M為濾波器數(shù)量;f(m)為第m個濾波器的中心頻率。
f.離散余弦變換。去除Logfbank特征之間的高度相關(guān)性以獲得更為抽象的特征(MFCCs):
式中,n′為MFCCs的階數(shù)。
基于Pytorch框架(版本1.7.0),對訓練數(shù)據(jù)和測試數(shù)據(jù)應用5種數(shù)據(jù)擴充方法后,利用Python_speech_feature庫中的Logfbank函數(shù)提取Logfbank特征,利用Librosa庫中的Librosa.feature.mfcc函數(shù)提取MFCCs特征。函數(shù)設(shè)置細節(jié)如表2所示,特征形狀為本文擬議并行架構(gòu)的輸入形狀(特征階數(shù)×時間的2維矩陣)。
表2 特征提取細節(jié)
卷積神經(jīng)網(wǎng)絡(luò)目前仍然是計算機視覺領(lǐng)域的主流方法,原因在于它可以共享權(quán)重參數(shù),且可以相對少的權(quán)值參數(shù)建立稀疏聯(lián)系[12]。以上特點使得網(wǎng)絡(luò)更易于優(yōu)化,同時降低了過擬合的風險。
卷積網(wǎng)絡(luò)由若干典型層組成,典型層中一般包含卷積層和池化層,其中卷積層通過使用微型卷積核與輸入張量進行卷積運算,從而實現(xiàn)對局部信息的掃掠,同時還需要采用非線性激活函數(shù)(一般使用線性整流函數(shù)(Rectified Linear Unit,ReLU))加快特征學習能力。池化層則用于提取重要的局部信息,提高計算效率,一般使用最大池化或平均池化。最后經(jīng)過全連接層實現(xiàn)分類功能。圖5展示了含有1個典型層和2個全連接層的簡化CNN結(jié)構(gòu)。
圖5 簡化的CNN結(jié)構(gòu)
Transformer 目前已成為主流的序列到序列(Seq2Seq)模型。其利用由若干編碼器串聯(lián)而成的編碼器棧取代了以RNN 為核心的編碼器。如圖6 所示,編碼器棧中的每一個編碼器由多頭注意力(Multi-Head Attention,MHA)單元和前饋神經(jīng)網(wǎng)絡(luò)單元串聯(lián)而成,每一個單元又附有殘差連接。加入殘差連接的原因在于:參數(shù)的分布在訓練時可能不斷變化,殘差連接可以使網(wǎng)絡(luò)對特征參數(shù)進行歸一化操作,從而能夠?qū)W習到更有效的梯度。
圖6 編碼器棧結(jié)構(gòu)
3.2.1 多頭注意力機制
注意力機制將輸入的上下文序列向量映射為數(shù)字張量集合{ki,vi},通過Softmax函數(shù)使輸入矩陣Q和鍵矩陣K的相似度呈概率分布,然后與值矩陣V進行加權(quán)求和,最終映射為Z值并作為前饋神經(jīng)網(wǎng)絡(luò)單元的輸入。
MHA 可以理解成若干基于縮放的點乘注意力(Scaled Dot-product Attention,SDA)并行的形式。SDA映射函數(shù)表示為:
式中,D為Q或K的矩陣維度,當Q=K=V時稱為自注意力;S()為概率化函數(shù)。
進一步,MHA可表示為:
3.2.2 求和與正則化
殘差連接借用殘差網(wǎng)絡(luò)(ResNet)[13]的思想,通過求和(Add)形式實現(xiàn),目的是避免多層疊加網(wǎng)絡(luò)導致的梯度消失和爆炸問題。加入正則化(Norm)操作是對張量進行歸一化,從而達到降低學習難度的目的。最終殘差連接的輸出表示為:LN(x+Sub(x))。其中,x為輸入的恒等映射,Sub(x)代表網(wǎng)絡(luò)單元對x的激活映射,LN()為歸一化操作,其具體輸出表示為:
式中,Maxis(x)、Var(x)分別為給定通道軸的平均值和方差;ε為避免分母為0的參數(shù);ω、b分別為可學習的權(quán)重與偏置項。
3.2.3 前饋神經(jīng)網(wǎng)絡(luò)
前饋神經(jīng)網(wǎng)絡(luò)也稱為全連接神經(jīng)網(wǎng)絡(luò),一般包括輸入層、隱含層和輸出層。在Transformer 中,其輸入層為編碼器在經(jīng)過第1 個歸一化處理后的輸出張量。具體傳播形式為:
式中,a(l)為第l層的輸出;fl()為激活函數(shù);W(l)、b(l)分別為第l層所使用的權(quán)重和偏置。
卷積神經(jīng)網(wǎng)絡(luò)針對復雜的輸入特征,通過正、反向傳播,使輸出盡可能逼近一個能匹配信號特征的非線性函數(shù),得到輸入特征在空間尺度的信息。Transformer編碼器通過多頭注意力機制加上殘差連接捕獲連續(xù)信號各時序之間的隱藏關(guān)系,從而得到輸入的連續(xù)特征的時序信息。為了提高診斷模型的診斷能力,同時獲取信號的空間信息和時序關(guān)系信息,本文設(shè)置了深度卷積網(wǎng)絡(luò)和Transformer 編碼器棧同時工作的架構(gòu)來提高診斷性能。
圖7展示了擬議架構(gòu),在架構(gòu)中,設(shè)置了2條用于提取空間信息的并行CNN線路(CNN1、CNN2)和1條用于提取時序信息的編碼器棧線路(Transformer)。對于輸入的2D 特征,在CNN1 中設(shè)置了3 個卷積層,采用3×3的微型卷積核,在CNN2 中同樣設(shè)置3 個卷積層,與CNN1 不同的是,用3×1 和1×3 的非對稱卷積核取代了3×3 卷積核,這不僅極大減少了計算參數(shù),而且可以獲得額外的空間信息。另外,每個卷積層最后均設(shè)有池化操作用于減少參數(shù)數(shù)量、加快訓練速度。在Transformer中,首先對輸入的特征圖進行池化,然后采用串聯(lián)Transformer 編碼器棧進行時序信息抓取。最終將3 條并行線路提取到的空間時序信息融合,再線性變換到全連接層,最后使用Softmax 函數(shù)輸出各噪聲類型的概率。并行線路可以實現(xiàn)CNN 與Transformer 協(xié)同工作,避免了深層網(wǎng)絡(luò)帶來的計算成本。
圖7 并行架構(gòu)
表3 展示了并行架構(gòu)的細節(jié),(a,b,c,d)表示卷積層∕池化層卷積核∕池化核數(shù)量為a,卷積核∕池化核寬、高、步長分別為b、c、d,Dropout(0.4)表示隨機丟棄40%的神經(jīng)元,5×()表示5 個編碼器,MHA(5)表示多頭注意力包含5 個自注意力。網(wǎng)絡(luò)加入了批量歸一化(Batch Normalization,BN)層,這對網(wǎng)絡(luò)訓練效率和優(yōu)化梯度問題有明顯的增益[14]。對于反向傳播中的梯度問題,選取了隨機梯度下降(Stochastic Gradient Descent,SGD)優(yōu)化技術(shù),SGD 中的優(yōu)化參數(shù)設(shè)置為:學習率為0.01、權(quán)重衰退系數(shù)為0.001、動量為0.8。此外,在卷積層中,為了避免丟失特征圖中的邊緣信息,統(tǒng)一采用零填充卷積。而在每個卷積層的池化級之后,均采用了隨機失活(Dropout)技術(shù),這種技術(shù)通過隨機丟棄參數(shù)來避免模型因過擬合帶來的泛化能力差的問題。另外,交叉熵損失函數(shù)用于計算網(wǎng)絡(luò)成本。
表3 并行架構(gòu)細節(jié)
異響識別整體流程如圖8所示,為了保證網(wǎng)絡(luò)后期訓練的準確性,數(shù)據(jù)擴充設(shè)置在劃分數(shù)據(jù)集之后,以避免來自同一原始音頻的擴充數(shù)據(jù)同時分布到訓練集、驗證集和測試集中。
圖8 異響識別整體流程
將應用了5 種擴充技術(shù)的各數(shù)據(jù)集與原始數(shù)據(jù)集合在一起作為最終的擴充數(shù)據(jù)集,并提取MFCCs 特征作為輸入。
提取Logfbank 作為網(wǎng)絡(luò)輸入用于對比,試驗設(shè)置與3.2.1 節(jié)類似。結(jié)果如圖9 所示:所提出方法的4 項評價指標準確度、精度、召回率和F1 分數(shù)均明顯高于以Logfbank 作為輸入特征時的結(jié)果,分別達到0.983 1、0.976 0、0.982 4、0.978 7。
圖9 不同特征的性能比較
以MFCCs 特征作為輸入,將本文提出的模型與其他主流模型進行對比,對比模型包括支持向量機(Support Vector Machine,SVM)、VGG16[15]和長短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)。其中SVM不能直接處理二維輸入特征,因此在時間維度上進行了降維處理(在時間維度上取均值),并采用高斯核函數(shù)(Radial Basis Function,RBF),懲罰因子參數(shù)設(shè)置為1;共設(shè)置3層,其中LSTM層設(shè)置64個隱藏單元。測試精度結(jié)果如圖10所示。
圖10 不同識別模型在各數(shù)據(jù)集上的表現(xiàn)
從圖10 中可以看出:采用擴充技術(shù)所獲得的擴充數(shù)據(jù)作為輸入明顯能夠獲得更優(yōu)的仿真結(jié)果。其中,針對本研究任務(wù),擬議識別模型在3種深度學習模型中最優(yōu),而隨著擴充數(shù)據(jù)集的加入,SVM 模型診斷性能下降,原因在于:數(shù)據(jù)量的大幅提升會增加分類器的計算負荷,極易造成性能不穩(wěn)定;所使用的擴充數(shù)據(jù)集本身是由少量原始數(shù)據(jù)增廣而來,不同類型的噪聲經(jīng)過數(shù)據(jù)擴充后降低了原本的稀疏性(如減速器敲擊和齒輪沖擊經(jīng)過加噪后波形圖表現(xiàn)相似),從而使得分類器的性能下降。因此SVM 更擅長處理小而稀疏的數(shù)據(jù)集,但這并不符合基于大數(shù)據(jù)診斷模型開發(fā)的發(fā)展趨勢。
本文基于新的深度學習并行架構(gòu),并使用數(shù)據(jù)擴充技術(shù),提出了一種用于車輛異響識別的方法。試驗驗證了所提出方法的分類性能,并探究了以2種常用的說明性特征(MFCCs 與Logfbank)作為輸入時對識別性能的影響,進一步對比了擬議方法與其他3種識別模型的性能,結(jié)果表明:所提出的方法在包含7 種車輛異響的擴充數(shù)據(jù)集上可以實現(xiàn)98.31%的識別精度;MFCCs 特征更適用于所提出的并行網(wǎng)絡(luò)架構(gòu);異響數(shù)據(jù)應用數(shù)據(jù)擴充技術(shù)結(jié)合深度學習可有效提高識別性能。另外,所提出的方法明顯優(yōu)于另外3種流行的識別模型,可供乘用車售后服務(wù)平臺以及車輛異響識別的算法研究參考。