楊立東,胡江濤,張壯壯
(內(nèi)蒙古科技大學 信息工程學院,內(nèi)蒙古 包頭 014010)
隨著機器“聽、說、看”等能力的不斷提升,人工智能開始了從感知智能向認知智能的遷移.目前,音頻場景分類作為人工智能領(lǐng)域場景理解的研究熱點也被廣泛關(guān)注.音頻場景分類就是通過算法模型將音頻數(shù)據(jù)集分成記錄環(huán)境聲音的場景類別[1],是計算機聽覺場景分析(Computational Auditory Scene Analysis,CASA)領(lǐng)域的主要研究內(nèi)容,廣泛應(yīng)用于森林動物的監(jiān)聽設(shè)備[2]、機器人導航系統(tǒng)[3]、音頻檢索[4]和輔助設(shè)備[5]等方面.
近年來隨著計算機性能的提高,深度學習技術(shù)在音頻場景分類中表現(xiàn)出良好的性能,例如卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)[6,7]、長短時記憶網(wǎng)絡(luò)(Long Short Term Memory Network,LSTM)[8,9]和深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)[10]已經(jīng)成功應(yīng)用于音頻場景分類,針對傳統(tǒng)的機器學習算法在分類性能上難以提高的情況,許多研究人員開始利用深度學習算法和機器學習算法結(jié)合起來的混合模型改善分類性能.例如,利用CNN與LSTM混合算法提升音頻分類正確率[11];文獻[12]中通過引入i-vectors與卷積神經(jīng)網(wǎng)絡(luò)結(jié)合,同樣在音頻場景分類中取得了很好的效果;文獻[13]中引入機器學習中的梯度向量機并與CNN結(jié)合產(chǎn)生并行結(jié)構(gòu)模型,用它來處理音頻場景的混合特征,實驗結(jié)果顯示在分類性能上有所提高;此外,還有在CNN的最后一層加上高斯混合模型的SuperVector作為概率線性判別分析分類器的特征向量[14],也可以提高分類性能.綜上所述,機器學習與深度網(wǎng)絡(luò)構(gòu)造的混合模型在音頻場景分類上應(yīng)用越來越廣泛,并提升了分類的精確率.
本文采用CNN與極端梯度提升算法(eXtreme Gradient Boosting,XGBoost)[15]相融合的算法模型解決音頻場景分類問題.首先通過變換把預處理后的音頻信號轉(zhuǎn)換為梅爾聲譜圖,然后輸入到卷積神經(jīng)網(wǎng)絡(luò)對其進行特征學習和提取,最后利用極端梯度提升算法完成分類.在該混合系統(tǒng)模型中,特征提取部分和分類器分別采用了不同的模型,從而提高了分類精確率.
音頻場景分類主要包括特征提取和分類器兩部分,本文采用的混合模型基本算法流程如圖1所示.
圖1 基本算法流程圖Fig.1 Basic algorithm flow chart
特征提取是音頻場景分類中重要的環(huán)節(jié),直接影響分類性能的好壞.CNN能夠?qū)⒁痪S的音頻信號轉(zhuǎn)換成二維的梅爾聲譜圖,再進行特征提取.CNN是一種高效的深度學習模型,具有層次結(jié)構(gòu),可以通過每一層對輸入信號的學習獲得高質(zhì)量的特征.此外,CNN通過稀疏交互、參數(shù)共享等手段,利用空間局部相關(guān)性進行特征提取,可以減少模型的復雜度,提高運行速率.CNN網(wǎng)絡(luò)的卷積核與輸入進行卷積操作,設(shè)卷積核為K,偏置為b,在第l層通過激活函數(shù)輸出如公式(1)所示:
Xl=f(Xl-1*Kl+bl)
(1)
其中f()為激活函數(shù).
池化層通過降采樣函數(shù)對特征圖提取抽象特征,保持特征圖的位移不變性,其定義如公式(2)所示:
Xl=f(down(Xl-1))
(2)
其中down()為采樣函數(shù).
經(jīng)過卷積層和池化層操作后得到新的特征表達作為卷積神經(jīng)網(wǎng)絡(luò)的輸出.為了避免模型復雜度過高,效率較低,分類精確率不高等問題,本實驗采用淺層的神經(jīng)網(wǎng)絡(luò)模型,并且舍棄全連接層,避免特征位置信息的丟失,最后直接采用分類器模型進行分類.
XGBoost屬于Boosting算法,是一種基于梯度提升決策樹的改進算法,主要通過把許多樹模型集成在一起構(gòu)成強分類器.Boosting算法有兩個比較大的缺點:1)方差過高,容易產(chǎn)生過擬合;2)Boosting算法模型在構(gòu)建過程中是串行的,不易在大數(shù)據(jù)場景中應(yīng)用.而XGBoost算法有效地改善了上述兩個問題.傳統(tǒng)Boosting算法只是對一階導數(shù)信息進行了運用,XGBoost算法則是通過對代價函數(shù)進行了二階泰勒展開,能夠提取一階導數(shù)和二階導數(shù)中的信息并運用,以及通過加入正則項降低模型的復雜度,從而防止模型過擬合.XGBoost提出了Boosting算法的多線程計算思路,能夠提高CPU內(nèi)核的利用率,使之很好地應(yīng)用于大數(shù)據(jù)場景.
XGBoost的核心思想是對目標函數(shù)不斷進行優(yōu)化,設(shè)其目標函數(shù)定義如公式(3)所示:
(3)
(4)
(5)
而XGBoost回歸樹的復雜度懲罰函數(shù)可以表示如公式(6)所示:
(6)
其中T為葉結(jié)點的個數(shù),‖w‖為葉結(jié)點向量的模.γ表示節(jié)點切分的難度,λ表示L2正則化系數(shù).由公式(6)將目標函數(shù)轉(zhuǎn)換為公式(7):
(7)
通過求解最優(yōu)的葉子節(jié)點分數(shù)w,將目標函數(shù)轉(zhuǎn)換成一個關(guān)于葉子節(jié)點的一元二次函數(shù),最優(yōu)w如公式(8)所示:
(8)
計算出最優(yōu)值如公式(9)所示:
(9)
最終將目標函數(shù)轉(zhuǎn)換為公式(10):
(10)
本文使用XGBoost這種新興的機器學習算法,相較于其他算法,其精度和運算速度都有明顯的提升.
CNN-XGBoost混合模型從宏觀上看是由CNN特征提取網(wǎng)絡(luò)和XGBoost分類器構(gòu)成.CNN模型具有強大的特征學習能力,可以有效提取Mel聲譜圖特征參數(shù).XGBoost模型的優(yōu)勢在于可解釋性強,不易產(chǎn)生過擬合.充分結(jié)合兩者的優(yōu)點,本文采用CNN-XGBoost混合模型.系統(tǒng)模型如圖2所示.
圖2 CNN-XGBoost模型圖Fig.2 CNN-XGBoost model diagram
本文設(shè)計CNN網(wǎng)絡(luò)結(jié)構(gòu)采用3個卷積層、2個池化層,在網(wǎng)絡(luò)中的每個卷積層和激活函數(shù)之間添加批量歸一化,并使用Dropout層,提高網(wǎng)絡(luò)模型泛化能力.在模型訓練階段,將場景音頻文件經(jīng)過預處理得到的Mel聲譜圖作為CNN網(wǎng)絡(luò)的輸入,經(jīng)過訓練直至模型收斂,然后將學習到的特征參數(shù)輸入到XGBoost分類器進行分類.
實驗中采用基于python語言的Tensorflow-gpu深度學習框架進行訓練與測試.卷積神經(jīng)網(wǎng)絡(luò)卷積層采用5×5的卷積核,步長為1,卷積層之后連接2×2的最大池化層,激活函數(shù)使用ReLU函數(shù).每個卷積層的輸出特征依次設(shè)置為64、128、256,最后與XGBoost分類器相連接.XGBoost樹的最大深度為5,每棵樹使用的樣本百分比為0.8,構(gòu)建的樹的數(shù)量為280,使用L2正則化控制樹模型的復雜度,學習率設(shè)置為0.1.為了提高網(wǎng)絡(luò)模型的效率,采用小批量輸入,大小設(shè)置為64.
本實驗采用公開的城市音頻數(shù)據(jù)集UrbanSound8k[16]和環(huán)境聲音數(shù)據(jù)集ESC-50[17]進行訓練和驗證.UrbanSound8k數(shù)據(jù)集分為10個類別的場景,包含了空調(diào)(air_conditioner)、汽車喇叭(car_horn)、兒童游戲(children_playing)、狗叫(dog_bark)、鉆孔(drilling)、發(fā)動機空轉(zhuǎn)(engine_idling)、槍擊(gun_shot)、手提鉆(jackhammer)、警笛(siren)和街頭音樂(street_music).每個場景的數(shù)據(jù)個數(shù)如圖3所示,共8732個音頻數(shù)據(jù),被平均分配到10個文件夾中,每個音頻信號的采樣率為44.1kHz,存儲為wav格式.ESC-50數(shù)據(jù)集包含2000個環(huán)境音頻數(shù)據(jù),共50類聲音,每一類別有50個環(huán)境音數(shù)據(jù),其采樣率亦為44.1kHz.
圖3 UrbanSound8k數(shù)據(jù)集分布圖Fig.3 UrbanSound8k dataset distribution map
音頻信號的預處理包含預加重、加窗和分幀等.通過高通濾波器實現(xiàn)預加重,其定義如公式(11)所示:
H(Z)=1-μZ-1
(11)
其中μ為預加重系數(shù),實驗中設(shè)置為0.97.
分幀可以得到音頻信號的短時平穩(wěn)的信號,選擇Hamming 窗函數(shù).預處理之后的信號通過短時傅里葉變換得到時頻信號,表示為公式(12):
(12)
其中m為幀數(shù),L為幀長,i表示第i幀.
圖4 音頻波形和梅爾聲譜圖Fig.4 Audio waveform and Mel spectrogram
將每一幀頻域信號疊加起來得到聲譜圖,通過梅爾標度濾波器組將聲譜圖轉(zhuǎn)換成梅爾聲譜圖,梅爾聲譜圖能體現(xiàn)音頻信號的時頻域信息和能量值,圖4列舉了數(shù)據(jù)集中室內(nèi)空調(diào)聲的波形圖和梅爾聲譜圖.
實驗參數(shù)如上述2.3節(jié)所述.交叉驗證是一種驗證分類器性能的統(tǒng)計分析方法[18-20],其基本思想是將數(shù)據(jù)集按照某種意義劃分為幾組,一部分用作訓練集,另一部分用作測試集.本實驗采用10折交叉驗證,將音頻信號劃分為10組樣本,選取其中9組樣本用作訓練集,1組樣本用作測試集.重復10次交叉驗證,確保每一組音頻信號樣本都能夠遍歷一次測試集,最后取10次測試結(jié)果的平均值.
本實驗采取精確率Precision、召回率Recall和F1-Score值對模型進行綜合評價.如公式(13)-公式(15)所示[21-23]:
(13)
(14)
(15)
式中,TP表示預測和實際分類正確的標簽數(shù)量,F(xiàn)P表示預測標簽中分類錯誤標簽的數(shù)量,F(xiàn)N表示實際標簽中分類錯誤標簽的數(shù)量,如圖5所示.
圖5 TP、FP和FN含義及關(guān)系示意圖Fig.5 TP,F(xiàn)P and FN meaning and relationship diagram
得到音頻場景分類的精確率Precision、召回率Recall和F1-Score值的結(jié)果如表1所示,平均精確率為0.89,召回率平均值為0.87,F(xiàn)1-Score平均值為0.88.
表1 CNN-XGBoost 性能指標Table 1 CNN-XGBoost performance index
圖6所示的混淆矩陣展示了每種音頻場景分類的具體情況,可以看出有9%兒童玩耍的聲音場景被誤認為街頭音樂場景,主要原因是在錄制兒童玩耍的聲音場景時伴隨著音樂的聲音,而在街頭音樂場景收集過程中摻雜有人們嬉笑的聲音,兩類聲學場景特征中有一定程度的相似性,容易產(chǎn)生誤判,導致分類精確率降低;此外,手提鉆聲音場景也有一部分被識別為鉆孔聲音,這兩類場景也存在一定的相似性,產(chǎn)生誤判導致精確率降低.
圖6 CNN-XGBoost音頻場景分類混淆矩陣Fig.6 CNN-XGBoost audio scene classification confusion matrix
為了驗證算法的有效性,在相同的音頻數(shù)據(jù)集下將本文的算法與常用的CNN[24]、SB-CNN[25]、VGG[26]等算法進行比較,采用分類精確率作為衡量算法模型性能好壞的指標,采用CNN作為基線模型.對比結(jié)果如表2所示.
表2 模型對比1Table 2 Model comparison 1
為了進一步驗證CNN-XGBoost混合模型的分類性能,我們選用公開的音頻場景數(shù)據(jù)集ESC-50進行測試,測試結(jié)果如表3所示.從表3中可以得出,混合模型的分類性能明顯優(yōu)于單獨模型的性能.
實驗結(jié)果對比顯示,本文中的CNN-XGBoost混合算法模型的精確率最高.該混合模型融合了深度學習算法和機器學習算法,充分利用其優(yōu)點進行特征提取和分類,使算法模型性能達到了最優(yōu),精確率有了顯著提高.
表3 模型對比2Table 3 Model comparison 2
針對音頻場景分類正確率不高的問題,本文應(yīng)用CNN-XGBoost混合模型,充分利用CNN可以提取具有顯著區(qū)分度特征的優(yōu)勢以及XGBoost分類器中的樹結(jié)構(gòu)有很好的分類性能的特點,使混合模型的分類精確率達到了89%,實驗結(jié)果證明優(yōu)于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型,從而驗證了深度學習與機器學習算法模型相結(jié)合可以很好地適用于音頻場景分類任務(wù).