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