曾金芳,李友明,楊恢先,張 鈺,胡雅欣
(湘潭大學物理與光電工程學院,湘潭411105)
聲音在人類與環(huán)境的互動中起著至關重要的作用,因此,對于人工智能來說,機器或計算機能夠像人類一樣理解聲音是極其關鍵的。近年來,聲音事件的檢測和分類研究引起了學者的極大興趣。目前,關于環(huán)境聲音分類(Environmental sound classification,ESC)的研究越來越多,并廣泛應用于智能家居、助聽器、情景感知[1]和安防監(jiān)控[2]等。ESC任務早期嘗試使用信號處理技術,包括矩陣分解[3]、梅爾頻率倒譜系數(shù)(Mel-frequency cepstral coefficients,MFCCs)特征集、高斯混合模型(Gaussian mixed model,GMM)[4]和受限卷積玻爾茲曼機的無監(jiān)督濾波器組模型(Convolutional restricted Boltzmann machine,ConvRBM)[5]等。之后許多學者提出將機器學習算法應用于聲音事件識別,如Phan等[6]提出使用隨機森林算法,Zieger等[7]提出使用支持向量機(Support vector machine,SVM)的方法等。近年來,隨著深度學習的興起與發(fā)展,基于深度學習的方法也被廣泛用于ESC任務,如Tokozume等[8]構建了基于卷積神經(jīng)網(wǎng)絡(Convolutional neural network,CNN)的端到端分類系統(tǒng)(EnvNet),Zhang等[9]提出基于注意力機制的卷積循環(huán)神經(jīng)網(wǎng)絡(Attention based convolutional recurrent neural network,ACRNN)系統(tǒng),以及劉亞榮等[10]提出結合美爾譜系數(shù)(Mel-frequency spectral coefficient,MFSC)與CNN對環(huán)境聲音進行分類等。
盡管上述聲音分類方法已經(jīng)很好地應用于不同領域,但是它們也具有一定的局限性。隨機森林在某些噪音較大的分類或回歸問題上容易出現(xiàn)過擬合現(xiàn)象,且參數(shù)較復雜,模型訓練和預測都比較慢[11]。對于SVM算法,如果數(shù)據(jù)的特征數(shù)多于樣本數(shù),則SVM的表現(xiàn)很差,且經(jīng)典的SVM算法只能解決小樣本下的二分類問題。用CNN作為環(huán)境聲音的分類器,相較于以往的方法在分類效果上確實能取得更佳的準確率,然而之前提出的CNN模型層數(shù)均比較淺,例如,Piczak[11]首次提出用于聲音分類的CNN模型時,網(wǎng)絡結構只有2個卷積層和3個全連接層。如今越來越深層次的CNN模型[12-15]被提出,并在ImageNet或其他基準數(shù)據(jù)集上取得了更好的性能,這些模型的結果揭示了網(wǎng)絡深度的重要性,證實在一定程度上更深的網(wǎng)絡能夠產(chǎn)生更好的效果。然而實驗表明,深層次的CNN在ESC任務上較難訓練,因此,為了避免通過單純增加網(wǎng)絡層數(shù)所帶來的問題,本文提出使用多級殘差網(wǎng)絡(Multilevel residual network,Mul-EnvResNet)進行訓練,其相較以往在ESC任務上使用的網(wǎng)絡深度更深,且是首次提出將殘差網(wǎng)絡應用于ESC任務。另外,ESC任務的標記數(shù)據(jù)相對稀缺是CNN難以在較簡單模型上改進的重要原因,雖然近年來已經(jīng)發(fā)布了一些新的數(shù)據(jù)集[16],但它們?nèi)匀槐瓤晒┭芯康臄?shù)據(jù)集要小得多。一個解決音頻數(shù)據(jù)稀缺較好的方案是對數(shù)據(jù)進行時標和基頻壓擴,也就是說,對樣本集合進行一種或多種變換,從而產(chǎn)生新的、額外的樣本數(shù)據(jù)。
針對上述問題,本文提出了基于Mul-EnvResNet的ESC方法,主要貢獻總結如下:
(1)將殘差網(wǎng)絡用于ESC,提出了殘差網(wǎng)絡模型EnvResNet,相較于其他用于ESC任務的CNN模型大大加深了網(wǎng)絡結構的層數(shù),從而能夠提取更深層次的重要特征,提高分類準確率。
(2)在設計的EnvResNet基礎上,繼續(xù)構建短連接,提出了一種Mul-EnvResNet模型,進一步提高了模型的學習能力。
本文提出的基于Mul-EnvResNet的ESC流程如圖1所示。首先,對聲音信號進行時標和基頻壓擴,隨后提取其MFCCs以及它的差分,并將提取的特征集按一定比例分為訓練集和驗證集,以便后續(xù)對模型的訓練和測試,接著將訓練集送入Mul-EnvResNet進行訓練,最后輸出驗證數(shù)據(jù)集在模型上的泛化性能。
圖1 基于Mul-EnvResNet的ESC流程圖Fig.1 ESC process based on Mul-EnvResNet
到目前為止,已經(jīng)有各種信號處理和機器學習技術應用于ESC,包括矩陣分解、字典學習、小波濾波器組和深度神經(jīng)網(wǎng)絡[17]等。之前提出的CNN模型均層數(shù)較少,而越來越多的研究證明深層次的網(wǎng)絡提取的特征往往比從淺層網(wǎng)絡中提取得更好。但隨著網(wǎng)絡的不斷深化,兩個問題不可避免,梯度消失和梯度爆炸[18]。對數(shù)據(jù)進行合理的初始化和正則化在一定程度上可以解決這兩個問題,但卻會產(chǎn)生新的難點,就是網(wǎng)絡性能的退化,即隨著深度加深時錯誤率也將跟著上升。為了解決這個問題,He等[15]提出了深度殘差網(wǎng)絡(Deep residual network,ResNet),通過在原始卷積層外部加入短連接構成殘差塊,如圖2所示。
圖2 殘差塊的結構Fig.2 Structure of residual block
殘差塊函數(shù)可被描述為
式中:xl為第l個殘差塊的輸入,xl+1為第l個殘差塊的輸出,F(xiàn)(xl)為殘差映射,f表示修正線性單元(Rectified linear unit,ReLU)。
相比于傳統(tǒng)的神經(jīng)網(wǎng)絡激活函數(shù),如tanh雙曲函數(shù)和邏輯函數(shù)等,ReLU不需要進行指數(shù)運算使得網(wǎng)絡模型整體計算成本下降,且收斂較快,能夠更高效地進行梯度下降和反向傳播,避免梯度爆炸和梯度消失問題。此外,在與原輸入值x相加并執(zhí)行激活函數(shù)前,可以看到H(x)=F(x)+x,即F(x)=H(x)-x,當F(x)=0時,得到H(x)=x,這就實現(xiàn)了恒等映射,從而使得網(wǎng)絡隨深度加深時至少不會退化。ResNet在ILSVRC—2015年度比賽中獲得第1名,證明了其相對于其他網(wǎng)絡結構的優(yōu)勢。
本文在設計Mul-EnvResNet之前,為了選取較優(yōu)的模型設計策略,首先提出了一個殘差網(wǎng)絡并將其命名為EnvResNet,模型結構如圖3所示。
EnvResNet的輸入維度為60×41×2,首先,使用32個維度為3×3的卷積核來提取局部特征,如圖3(a)所示。然后利用5個殘差塊提取更深層次的信息,5個殘差塊輸出端使用的濾波器個數(shù)分別為64、128、128、256、256,每個殘差塊有一個短連接,這里短連接不再是x,而是設計成一個卷積層h(x),這樣可以保證即使F(x)=0時,殘差塊也至少會有一個卷積層h(x)在運作,從而可以避免輸入數(shù)據(jù)和輸出數(shù)據(jù)的通道個數(shù)必須相等的問題,如圖3(b)所示,xl+1的計算式為
圖3 EnvResNet結構與殘差塊Fig.3 Structure of EnvResNet and residual block
式中:xl為殘差塊的輸入,xl+1為殘差塊的輸出,F(xiàn)(xl)為殘差映射,h(xl)表示短連接。在每一層的輸出端都使用ReLU作為激活函數(shù),經(jīng)過5個殘差塊后進入池化層,池化的目的是保留主要的特征,同時減少參數(shù)和計算量,防止過擬合,提高模型泛化能力。接著,使用長短期記憶網(wǎng)絡(Long short-term memory,LSTM)對池化輸出做進一步的處理,LSTM適合于處理與時間序列高度相關的問題。最后通過全連接層進入Softmax層對結果進行分類,Softmax的計算為
式中:Vi為輸入Softmax層的向量,也是前一級的輸出;C為總的類別數(shù)量;i為當前類別的索引;Si為當前元素對應的Softmax輸出,Softmax將多分類的輸出數(shù)值歸一化為相對概率,便于清晰地理解和比較。
本文最終提出的Mul-EnvResNet模型是通過對EnvResNet模型的后4個殘差塊進一步構建短連接而形成,如圖4所示。
圖4 (b)中,2個子殘差塊和一個短連接組成了一個多級殘差塊。假設多級殘差塊的輸入為x,經(jīng)過2個子殘差塊得到的輸出分別為y1和y2,經(jīng)過多級殘差塊的最終輸出為y3,則有
圖4 Mul-EnvResNet結構與多級殘差塊Fig.4 Structure of Mul-EnvResNet and multilevel residual block
從輸出y2中可以分析出,后一個子殘差塊會對前一個子殘差塊的輸出進行殘差映射,若殘差塊過多時,將逐層增加參數(shù)量并增大利用梯度下降法進行反向傳播時的計算難度,從而影響模型最終的訓練效果。設計成多級殘差之后,從輸出y3中可以分析出,當模型去擬合2個連續(xù)的子殘差塊比較困難時,反向傳播會逐漸讓y2趨近于0,那么訓練的網(wǎng)絡可以轉(zhuǎn)換為去學習y3=h3(x),在相同的計算條件下,擬合一個卷積層h3(x)顯然比擬合2個子殘差塊容易[15]。所以Mul-EnvResNet在2個子殘差塊擬合較好時,能夠充分利用子殘差塊內(nèi)部卷積層特征向量的相關信息,而當2個子殘差塊訓練較困難時,則可以轉(zhuǎn)為學習一個較簡單的卷積層,從而保證模型能產(chǎn)生較好的訓練效果。
本文使用公共數(shù)據(jù)庫ESC-50[19]來完成ESC任務。ESC-50數(shù)據(jù)集包含有2 000個帶標記的環(huán)境音頻記錄,分為50個語義類(每類40個樣本),也可分為5大類,即動物、自然聲和水聲、人類非言語聲音、室內(nèi)聲音和城市噪音;每個音頻記錄時長為5 s,適合于ESC任務的基準測試方法。
在進行特征提取之前,本文對音頻記錄進行了數(shù)據(jù)擴容,每個音頻長度都是5 s,通過復制將其轉(zhuǎn)換為10 s的錄音,即將每個音頻的持續(xù)時間加倍以增加訓練樣本的時長。在音頻信號處理領域存在兩個基本的數(shù)據(jù)擴容方法:時標壓擴和基頻壓擴,前者是在時間維度上的一個尺度變換,后者是對音調(diào)的一個調(diào)整,而音調(diào)的高低取決于頻率,頻率越高音調(diào)越高,因此基頻壓擴可以看作是對頻率的一個尺度變換。通過數(shù)據(jù)擴容,增加了訓練樣本的變化情況,能夠改進訓練后模型的泛化能力,從而對環(huán)境聲音進行更好分類。
在對數(shù)據(jù)進行時標和基頻壓擴之后,首先對音頻信號進行預處理,預處理包括濾波、A/D轉(zhuǎn)換、預加重、分幀和加窗等,其中預加重用于優(yōu)化和改善整個聲音信噪比和數(shù)據(jù)的高頻部分,從而使聲音信號數(shù)據(jù)的頻譜更平緩[20-21]。然后重新采樣到22 050 Hz并歸一化形成60個波段,從中提取MFCCs,并使用Librosa(一個用于音頻、音樂分析與處理的Python第三方庫,包含時頻處理、特征提取和繪制聲音圖形等功能)將這些譜圖分割成41幀。最后,對提取的特征進行差分并與提取的MFCCs進行垂直疊加作為網(wǎng)絡的2通道輸入(60×41×2)。
本文實驗的硬件環(huán)境選用CPU為Core i5-8400,顯卡為GeForce GTX 1080Ti的服務器(11 GB顯存)。在Ubuntu18.04操作系統(tǒng)上進行網(wǎng)絡模型的訓練和測試,深度學習框架為Keras2.2.4(一個由Python編寫的開源人工神經(jīng)網(wǎng)絡庫,可以作為Tensorflow和Theano的高階應用程序接口,進行深度學習模型的設計、調(diào)試、評估、應用和可視化等)。為了驗證模型中各模塊的有效性,本文對各種設計策略進行了多組對照實驗。為保證實驗的公平性,對各組策略采用相同的訓練參數(shù)設置。輸入維度為60×41×2,批處理大小為64,迭代次數(shù)為100。優(yōu)化器選用動量梯度下降法,動量為0.9,權重衰減為10-4,初始學習率為10-2,并逐漸降低。
在對殘差網(wǎng)絡模型EnvResNet進行設計時,對池化后是使用LSTM還是2個全連接層(分別為1 024和512個神經(jīng)元)做對比實驗,如圖3(a)所示,同時對殘差塊的短連接使用不同的卷積核大小做對比實驗,如圖3(b)所示,因此有多種不同的設計組合。實驗結果如表1所示。
由表1可知,在池化后使用兩個全連接層比使用LSTM時性能更好,識別率有3%~5%的提升,且在實驗過程中使用LSTM還出現(xiàn)了過擬合的現(xiàn)象,原因可能是經(jīng)過殘差后的特征已經(jīng)失去時間序列的優(yōu)勢,從而使用全連接逐步縮小神經(jīng)元的個數(shù)效果更佳。此外,可以看出,無論使用何種模型策略,短連接使用3×3的卷積核時,模型的識別率相較使用1×1與5×5的卷積核作為短連接時有1%~4%的提升。這里選用3×3的卷積核,一方面盡管在CNN中,卷積核越大,感知域越大,獲取到上層的信息便會越多,但是大的卷積核會導致計算量激增,從而計算性能降低,反而不利于提升網(wǎng)絡的深度,另一方面選用3×3的卷積核也不會如1×1的卷積核那樣,使得提取的特征之間聯(lián)系較小。
表1 不同模型和不同卷積核大小的短連接下的準確率Table 1 Accuracy of different models and shortcut with different convolution kernel sizes
通過分析以上實驗得出的結果,本文提出的EnvResNet在末尾的池化層之后選用全連接層、殘差塊的短連接選擇3×3的卷積核時能達到最好的分類效果。而本文最終提出的Mul-EnvResNet則是通過對EnvResNet模型的后4個殘差塊進一步構建短連接而形成,能夠?qū)崿F(xiàn)更好的分類效果。Mul-EnvResNet的訓練和測試曲線如圖5所示。由于整個數(shù)據(jù)集并不大,因此劃分到驗證集的數(shù)據(jù)不是很多,從而導致了測試數(shù)據(jù)的準確率略微高于訓練數(shù)據(jù)的準確率,但從圖5中可以看出,總體的擬合效果良好,且并未出現(xiàn)過擬合的現(xiàn)象。
圖5 Mul-EnvResNet訓練和測試曲線圖Fig.5 Multilevel residual network training and test curves
Mul-EnvResNet與EnvResNet的 實 驗 結 果 對比如表2所示。由表2中數(shù)據(jù)可知,Mul-EnvResNet的分類準確率更高,作為代價,Mul-EnvResNet模型的參數(shù)量增加,且反向傳播的計算變得更為復雜,訓練難度加大,導致訓練時間更長,且訓練時的迭代次數(shù)更多,迭代200次才趨于收斂,較EnvResNet多迭代了100次。但模型訓練結束后,兩個模型對于驗證集的分類時間是基本一致的,故從分類準確率上考慮,最終選用模型Mul-EnvResNet總體性能更好。
表2 不同模型下分類準確率和訓練時間Table 2 Classification accuracy and training time under different models
將本文提出的Mul-EnvResNet模型與CNN(Piczak FBEs-CNN[11]、logmel-CNN[8]、logmel-CNN?EnvNet[8])、音頻 數(shù) 據(jù) 相 移(PEFBEs[22]、FBEs⊕PEFBEs[22])、基于 注 意 力機制的 循 環(huán) 神經(jīng)網(wǎng)絡(ACRNN[9])及ConvRBM[5]等其他聲音分類方法進行比較,結果如表3所示。
表3 中Piczak FBEs-CNN是首次將CNN用于ESC的模型,由2個卷積層和3個全連接層組成,而logmel-CNN和logmel-CNN?EnvNet則是在Piczak FBEs-CNN的基礎上進行了數(shù)據(jù)擴容。PEFBEs與FBEs⊕PEFBEs使用的網(wǎng)絡模型仍是Piczak FBEs-CNN,但在特征提取時充分利用了相位信息,在一定程度上得到了更好的訓練效果。基于注意力機制的循環(huán)神經(jīng)網(wǎng)絡ACRNN及ConvRBM分別取得了86.10%和86.50%的分類準確率,相較之前的模型具有一定優(yōu)勢,但本文提出的Mul-EnvResNet性能明顯優(yōu)于其他的聲音分類方法,具有最高的分類準確率。
表3 ESC?50上各模型對比實驗結果Table 3 Camparison of experimental results of vari?ous models on ESC?50
通過對復雜環(huán)境下聲音分類技術進行研究,本文將殘差網(wǎng)絡用于ESC,提出了殘差網(wǎng)絡模型EnvResNet,在相同數(shù)據(jù)集下,與以往的CNN模型及其他的聲音分類方法進行比較,取得了更高的分類準確率。此外,還提出了一個Mul-EnvResNet模型,進一步提高了模型在環(huán)境聲音上的學習和泛化能力,取得了最高的分類準確率。但該模型在訓練效率上并沒有達到理想的效果,訓練時間相對較長,這是今后工作需要重點解決的問題。另外,今后的工作也會把提出的Mul-EnvResNet模型應用到不同數(shù)據(jù)集上,如UrbanSound8K和RWCP數(shù)據(jù)集,并結合生成對抗網(wǎng)絡和知識圖譜等相關技術,對ESC技術做進一步研究。