胡鑫旭,周 欣,何小海,熊淑華,王正勇
(四川大學 電子信息學院,成都 610065)
隨著近年來互聯網與電影行業的快速發展,網絡上包含的音視頻信息與日俱增,為用戶所共享的音視頻中不乏包含有暴力恐怖音視頻,這些暴恐音視頻將產生不良的網絡環境,對缺乏判斷力的未成年人產生負面影響.針對此現象,通常由人工進行審查,審核通過以后才可進入網絡,但由于網絡上的音視頻信息豐富,并且每日還會產生海量的音視頻,所以這種做法不僅耗時耗力,而且影響了信息的傳播速度.因此,自動檢測與判別網絡上傳播的暴恐音視頻成為近年來的一個研究熱點.
通常情況下,對網絡暴力元素的判別可以使用視頻或音頻特征,也可以兩者相結合,由于音頻在處理速度上較快于視頻處理速度,對于實時性要求比較高的場景,使用音頻特征的判別更具優勢,所以基于音頻信息的暴恐場景判別研究是極有必要的.
目前暴恐音頻場景判別任務主要基于傳統的機器學習算法,采用SVM 分類器或KNN 分類器.2006年,Theodoros Giannakopoulos 使用SVM 來檢測暴力音頻,提取音頻的能量熵、短時平均過零率、短時能量、頻譜衰減值等特征,訓練集和測試集各為10 分鐘的視頻數據,最后達到14.5%的分類錯誤率[1].文獻[2]同樣使用SVM 分類器方法,在由15 部電影組成的MediaEval VSD 數據集上截取槍聲、爆炸聲等暴力片段,隨機采樣15 部電影中的非暴力部分,得到70.2%的分類準確率.但由于SVM 模型在訓練數據較多的時候,需要計算的核矩陣大小也會增大,將會使訓練效率降低,而較少的訓練數據又限制了判別效果.2008年,Aggelos Pikrakis 使用KNN 分類器檢測音頻中的槍聲,提取了MFCC、STFT 聲譜圖、色彩特征、熵、語譜圖等特征,從30 部電影中截取5000 個音頻片段進行檢測,準確率為64.55%[3].可見采用傳統方法進行的暴力音頻場景判別效果都不盡人意.
2006年,Hinton 教授首次提出深度學習的概念,從此深度學習技術在圖像、視頻、語音、文本等領域得到了廣泛應用.文獻[2]搭建了基于深度神經網絡的暴力音頻分類系統,在暴力與非暴力音頻各為30 分鐘的訓練集上訓練,達到了77.38%的分類準確率.梁嘉欣等人針對傳統方法忽略時序信息的問題,提出了一種基于張量模型的暴力音頻檢測方法,最終得到了89.6%的準確率[4].可見采用了深度學習方法的判別率往往相比于傳統機器學習方法有一定提升,因此本文將卷積神經網絡(Convolutional Neural Network,CNN)應用于暴恐音頻場景的判別中.
由于數據集的限制,將深度學習用于暴恐音頻判別的研究不多.針對判別網絡上傳播的一段只有背景信息的音頻是否屬于暴恐音頻的應用背景,需要含有場景背景信息豐富并且包含暴恐元素的一段持續性音頻序列,然而目前國內外并沒有相關領域的公開音頻數據集,于是本文從網上和電影中截取音頻片段組成暴恐音頻庫,但暴恐音頻來源受限并且數量較少,而CNN 往往需要希望有足夠多的數據訓練,性能才好,在數據集過小的情況下效果不佳.于是本文將遷移學習技術引入暴恐音頻的判別中.
遷移學習的核心是利用已有的知識,去解決不同但相關領域的問題[5].考慮到本文屬于有監督到有監督的類型,于是采用fine-tune 的遷移學習方法.Fine-tune基于一個預訓練好的模型,采用相同的網絡結構,使用不同于預訓練好模型的數據,根據所要完成任務的要求,調整輸出,在預訓練好的模型參數上進行再訓練,是一種解決小數據庫訓練的方法[6].
圖1為本文基于遷移學習的暴恐音頻判別方法的總體框圖,主要包括提取音頻對數梅爾頻譜特征、在源音頻數據上預訓練網絡得到預訓練模型、在目標音頻數據上進行fine-tune 二次訓練.具體為:將TUT 音頻數據集作為源音頻數據,提取音頻對數梅爾頻譜特征后,預訓練網絡得到預訓練模型,然后將暴恐音頻庫作為目標音頻數據,提取對數梅爾頻譜特征后在預訓練模型上繼續訓練得到最終的模型,最后在測試音頻上運用最終得到的模型進行暴恐音頻判別.此外,為提取更多的特征,在fine-tune 以后的網絡結構中添加輔助網絡,并將輔助網絡部分的輸出特征與輸入特征聚合在一起共同輸入分類層,更有效地利用暴恐音頻中的信息.
音頻特征的提取主要有3 種方式:時域特征、頻域特征及倒譜域特征的提取.時域特征通常是指短時平均過零率、短時能量、能量熵等,時域特征具有簡單但不夠豐富的特點;頻域特征是指傅里葉頻譜、濾波器組等.相比于時域特征,頻域特征具有對外界環境更好的感知特性,但是頻域特征無法得到頻率分布隨時間變化的狀態,所以本文采用的是音頻的倒譜域特征,典型代表是對數梅爾頻譜特征[7],將一維的音頻信號映射為時間-頻域的二維信號[8],提取過程如圖2所示.

圖1 總體框圖
本文產生對數梅爾頻譜圖的參數為:音頻信號的采樣率為44.1 kHz,預加重系數為0.97,采用漢明窗進行分幀,快速傅里葉變換(Fast Fourier Transform,FFT)窗口長度為50 ms,相鄰窗之間的距離為20 ms,每幀包含2205 個采樣點,梅爾濾波器的個數為200,圖3展示了含有槍聲的暴恐音頻(a)與正常音頻(b)的聲音波形圖與梅爾頻譜圖.

圖2 提取音頻對數梅爾頻譜特征流程

圖3 音頻波形圖與梅爾頻譜圖
梅爾頻譜圖的垂直軸表示頻率,水平軸表示時間,顏色表示每個時間點各個頻率位置處的聲音的強度,圖3(c)中梅爾頻譜圖的3 到4.2 s 顯示的是出現槍聲的梅爾頻譜圖,與其他未出現槍聲的時間段梅爾頻譜圖有明顯差異,由圖3可見,含有暴恐元素音頻的頻率與強度在整個時間軸上分布不均勻,而正常音頻的梅爾頻譜圖在整個時間軸上頻率與強度分布基本均勻.提取特征后,將其轉換為分貝標度,以便于計算.
使用頻譜圖的好處是把現在的音頻分類問題變成了一個圖像分類問題,將每個wav 文件轉換成二維自變量(時間-頻率)的頻譜圖,每個頻譜圖存儲在與其類別相對應的文件夾中.一個10 s 長的音頻,采樣率為44.1 kHz,共有44.1 kHz×10 s=441 000 個點,分幀過后,因為幀移為20 ms,即幀移為882(44.1 kHz×0.02 s=882)個采樣點,所以維度為500 列(441 000/882=500),行為梅爾濾波器個數.最終將每個10 s 長的音頻轉化為數組形式,維度為200 行、500 列.
在提取音頻梅爾頻譜特征后,將每段音頻輸入卷積神經網絡進行預訓練,本文在文獻[7]的基礎上搭建預訓練網絡,預訓練網絡結構如圖4.

圖4 預訓練網絡結構
值得注意的是為了減少神經網絡參數與避免過擬合,采用全局平均池化層(Global Average Pooling,GAP)替代全連接層,搭建的預訓練網絡結構參數如表1所示.

表1 CNN 模型預訓練網絡參數表
將上述預訓練神經網絡在TUT 數據集上進行實驗,該數據集包含公共汽車站場景類、超市場景類等15 個場景類,訓練集中每類場景包含234 個音頻,訓練后的模型作為暴恐音頻判別的預訓練模型.
由于TUT 數據集并不包含暴恐音頻類,因此,需要對預訓練模型進行遷移學習,保留預訓練模型權重與網絡結構,調整模型輸出,在自建的暴恐音頻庫上繼續訓練,最終搭建的暴恐音頻判別的卷積神經網絡結構如圖5.
考慮到1.2 節得到的預訓練模型已經從TUT 數據集中習得了很多音頻低層次特征,因此只需在預訓練模型上做簡單權重調整,所以微調部分迭代次數由600 改為300,學習速率由0.01 改為0.001,模型參數如表2所示.
因為在卷積神經網絡中,最終任務的高級特征往往由網絡后端習得,網絡前端習得的只是低層次特征[9].為提取更多的高級特征,形成多級特征提取器,本文以CNN 模型作為基礎網絡,在截斷的基礎網絡的末尾追加了幾個特征層,這部分稱為輔助結構.但如果只是簡單地增加深度,會導致梯度彌散或梯度爆炸,所以新添輔助結構部分采用了一種類似于殘差網絡的結構,如圖6所示.

圖5 CNN-fine-tune 網絡結構

表2 CNN-fine-tune 網絡參數表

圖6 添加輔助網絡結構
輔助網絡部分采用3 個連續的濾波器大小為1×50、1×1、1×1 的卷積層,最后一個1×1 的卷積層為了改變特征圖通道數,使得經過3 次非線性激活函數計算,增強了對于復雜程度和非線性程度的表達能力和泛化能力.將這一部分得到的特征圖與輸入特征圖聚合在一起,共同輸入分類層:

其中,式(1)中F1是基礎網絡的輸出,也是輔助網絡的輸入,F2是輔助網絡的輸出,σ 為激活函數,ωi(i=1,2,3)為輔助結構中3 個卷積層權重,采用均勻分布初始化權重.式(2)意為采用keras 中concatenate函數,實現了原始CNN 網絡特征圖與輔助網絡特征圖的數據疊加.下面說明引入輔助網絡的原理[10].
假設on是 網絡第n層 的輸出特征圖,in是n層的輸入也是第n-1層的輸出,每一層輸出特征圖的計算公式如下:

輔助網絡跨越多層,將輸入通過恒等映射轉換成輸出,此時每一層的梯度計算公式如下:

由式(4)可見在網絡中加入輔助網絡,可以使得梯度在反向傳播時永遠大于或等于1,這樣就不會影響深層網絡的訓練.
本文是在Ubuntu16.04 系統下,基于Keras 深度學習框架,以theano 作為后端進行網絡模型的構建和訓練,實驗采用NVIDIA GTX960 顯卡進行加速.
預訓練網絡部分使用TUT 數據集,遷移學習網絡部分訓練與測試數據集組成如下:從Youtube 中下載了網友錄制的一些恐怖襲擊現場音頻,同時也選取了少部分電影中的暴恐鏡頭音頻,根據槍聲、尖叫聲、爆炸聲、警報聲、打斗聲等截取音頻.正常音頻包括綜藝節目片段、電影片段與生活場景音頻,包含了笑聲、說話聲、鼓掌聲、音樂聲等.建立的數據集共699個音頻片段,由于音頻段時長各異,制作數據集時統一將尺寸設定為每個音頻10 s,其中正常音頻片段348 個,250 個正常音頻用于訓練,98 個正常音頻用于測試,暴恐音頻片段351 個,250 個暴恐音頻用于訓練,101 個暴恐音頻用于測試.音頻庫分布如表3.

表3 音頻分布表
本文研究的對象是一個二分類任務,各種類別樣本數量相當,不需要考慮樣本類別不平衡問題,性能指標采用準確率(Accuracy,Acc).Acc的計算過程如公式所示:

其中,Nt表示每類預測正確的樣本數量,Nall表示每類總樣本數量.
利用最終得到的暴恐音頻判別模型在測試集的199 個音頻片段上進行測試,得到未使用遷移學習與使用遷移學習,以及未改進CNN 與改進CNN 后得到的判別效果分別如表4所示,同時使用傳統SVM 分類器進行比較.

表4 實驗結果
由實驗一結果與實驗二結果對比可得,傳統機器學習方法對于暴恐音頻的判別不如深度學習方法.實驗二和實驗三對比可得,使用fine-tune 的遷移學習方法比未使用遷移學習的方法提升了6.93%的暴恐音頻判別率和1.02%的正常音頻判別率,平均判別率提升了3.97%.同時,實驗四表明疊加輔助網絡結構后對于暴恐音頻和正常音頻的判別率都有所提高,平均判別率相比于未添加輔助網絡的提高了1.01%,可見疊加的輔助網絡有助于得到更加可靠的特征提取效果.
本文在判別網絡上傳播的一段音頻是否屬于暴恐音頻的應用背景下,首先在公開的TUT 音頻數據集上進行預訓練得到預訓練模型,然后利用fine-tune 的遷移學習方法將預訓練模型與網絡結構引入暴恐音頻的判別中,在訓練數據較少的情況下,也得到了不錯的判別率,為提取更多的特征,在fine-tune 以后的網絡添加了一種類似于殘差網絡的結構,進一步提高了音頻判別率.