潘安迪,肖 川,陳 曦
(復旦大學 計算機科學技術學院,上海 201203)
水聲目標識別的任務是通過采集到水聲目標的信號來對目標進行識別和檢測[1].海水是一種復雜的介質,具有時變特性,充斥復雜噪聲的特性[2-4].因此捕捉到的聲學信號在時間和相位上擁有時變的特點[2].這也使得水聲目標識別是一項具有挑戰性的工作.
在水聲目標識別領域早期,大部分分類任務都是基于特征工程與分類器構造的[5].常被水聲目標識別使用的特征有梅爾頻率倒譜系數(Mel Frequency Cepstrum Coefficient,MFCC),時頻譜特征等等.從特征工程的角度來講,有人設計手工特征,如Li 等[2]通過比較小波包分解后不同頻帶的分形維數(Fractal Dimension,FD)值來設計船聲信號特征;有人使用特征組合和特征選擇方法來組合、抽取以構成更加魯棒的特征,如Jiang 等[6]將功率譜(power spectra)和方譜特征(square spectrum feature)結合起來,并且使用主成成分分析法降維,獲得更加有判別力的特征.分類器構構造方面,有人引入集成算法,如Sun 等[7]使用自適應提升算法(AdaBoost)構造并集成多個有偏好的分類器,以提高最終分類準確率;有人致力于核函數的構造,如Sherin等[8]使用BAT 算法進行核函數的構造與選擇.整體而言,在水聲目標識別領域中,抽取的特征能否有效地表示樣本決定了模型的性能.
近年來,由于深度學習可以從數據中自動學習特征,并且學得的特征比傳統特征更能表示樣本,成為了近年來的研究熱點,如Xie 等[9]基于時頻譜,使用了深度玻爾茲曼機.然而,深度學習方法在擁有大量數據時才更好地發揮優越性,顯然,常見的水聲目標識別數據集無法滿足這一要求.因此,半監督學習方法被引入.Yang 等[10]使用無標簽數據預訓練了深度信念網絡,利用競爭性學習方法以及標簽數據對神經元進行聚類,最后進行微調.鄧晉等[11]使用了兩類遷移學習方法,基于ImageNet[12]和AudioSet 訓練分類模型作為特征提取器,對于抽取的深度特征進行進一步分類;另一種方法是,將上述模型作為預訓練模型,使用水聲目標識別數據集進行微調得到最終的分類模型.
在現實的海洋環境聲學場景中,往往船只的聲音信號伴隨著很大的背景噪聲[13,14],傳統的低層次特征[15-18]對噪聲會比較敏感,因為低層次特征容易直接被聲音信號中的物理性質影響.在圖像分類任務[19-21]中,視覺詞袋模型是一個有效的模型,常常被用于計算機視覺中的目標識別任務.與另外一種高層次特征SIFT[22]相比,視覺化詞袋模型更適合水聲目標識別,因為水聲音頻信號頻譜沿著時間軸的變化是顯著的,但是在尺度,位置以及形態上面沒有顯著的特征.因此,本文提出了一種基于改進視覺化詞袋模型的方法來進行水聲目標識別,對高層次特征進行提取,通過建立視覺詞本,統計一個音頻頻譜圖中含有的每個視覺化詞條的數量,將這個向量轉化為TF-IDF 向量,得到最終的特征,輸入到多層感知機中,進行分類.
本文后續的組織結構如下:第2 節介紹本文提出的算法流程以及算法的原理;第3 節介紹本文進行的實驗,包括實驗配置以及實驗結果和結果分析;第4 節對文章進行總結.
本文提出的算法的整體架構如圖1所示.首先,對音頻信號進行預處理,將音頻信號轉換為梅爾頻譜,然后對梅爾頻譜圖做歸一化操作,將梅爾頻譜圖轉換為灰值圖譜.然后需要建立視覺詞匯庫,在每個類別中隨機抽取10 個樣本,對樣本進行上述的預處理操作,轉換為灰度圖,然后將灰度圖中的一列作為一個視覺詞匯,將所有視覺詞匯打亂,使用K-means 聚類[23]將所有視覺詞匯聚類為600 個簇心.簇心的數目即視覺詞匯庫的規模.最后,訓練集中的音頻數據都需要進行預處理,然后將灰度圖中的每一列歸類到視覺詞匯庫中的某個詞匯,從而得到一個600 維的向量,每個維度表示的是該樣本對應的灰度圖中含有某個詞匯的數量.
由于船只噪聲信號能量主要分布在8000 Hz 以下的低頻帶,為了更好地表現能量沿著頻率軸的變化,我們選擇梅爾頻譜來表現信號的時頻特性.目標音頻信號采用的采樣率為52 734 Hz,使用50%重疊的90 ms漢明窗加窗函數,然后通過歸一化操作將梅爾頻譜圖轉換為灰度圖,公式描述如下,得到224×224的圖片格式.
詞袋模型(Bag of Words,BOW)[24]是自然語言處理(natural language processing)領域中常用的算法,用來表示文本信息.詞袋模型假設一個文檔,忽視文檔的單詞順序與語法,僅將文本看作詞語的集合,用詞語的統計信息來表示一個文檔.在本論文中我們將灰度圖中的一列作為一個詞匯,從而得到視覺詞袋模型(Bags of Visual Words,BOVW),可以將頻譜圖表示為一個統計向量[25].首先,我們需要建立視覺詞匯庫.從每個類別中隨機選擇10 個樣本,轉化為灰度頻譜圖,然后把灰度頻譜圖的每一列作為一個詞匯,使用K-means 聚類算法,使用余弦距離作為度量標準,將50 個樣本中所有的詞匯進行聚類,聚類為k個類別,k為視覺詞匯庫的規模,即為其中含有的詞匯數量.

圖1 算法整體流程圖
建立視覺詞匯庫之后,我們將提取音頻的視覺詞袋表示特征.首先我們將音頻轉化為灰度圖,然后將灰度圖中的每一個列作為視覺詞匯,將視覺詞匯與視覺詞匯庫中的K個標準視覺詞匯進行對比,找到歐式距離最近的標準視覺詞匯Wi,這一列視覺詞匯即屬于視覺詞匯Wi.在得到了灰度圖中的每一列所屬的視覺詞匯之后,通過統計每一個視覺詞匯出現的次數,得到一個K維向量,這個向量即為一個音頻的視覺詞袋表示.在視覺詞袋模型上,本文還使用TF-IDF 方法做出了額外的改進,用來凸顯重要性高的視覺詞匯,對重要性較低的視覺詞匯則使用較低的權重.視覺詞袋表示的特征提取流程如算法2.

算法2.視覺詞袋特征提取輸入:樣本音頻輸出:視覺詞袋特征向量(V1,V2,…,V224)←G←Preprocess(S)#對音頻進行預處理,得到灰度圖,將灰度圖中的每一列當成一個視覺詞匯(N1,N2,…NK)←(Wi…)←match(((V1,V2,…,V224)))#在視覺詞匯庫中找到歐式距離最近的標準詞匯W,將這一列看作詞匯Wi, 統計灰度圖中包含的各個視覺詞匯的數量,得到一個K 維向量,向量的第i 維是視覺詞匯Wi的數量(F1,F2,…,FK)←Mutiply((N1,N2,…,NK),(TDF,TDF,…,TDF))#計算逆文件頻率(IDF)向量,將兩個向量對應位置的值相乘,得到K 維的BOVW-TF-IDF 向量
TF-IDF (Term Frequency-Inverse Document Frequency,詞頻-逆向文件頻率)[26]是一種用于信息檢索與文本挖掘的常用加權技術.其實TF是詞頻(Term Frequency),表示了詞語在文本中出現的頻率,IDF (Inverse Document Frequency)是逆文檔頻率,表示了詞語在語料庫中出現的頻率.TF-IDF是一種統計方法,用以評估一個詞匯對于一個語料庫中的其中一份文檔的重要程度.詞匯的重要性隨著它文檔中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降,例如常用的“的”字.在視覺詞匯中,詞匯同樣有重要程度的區別,比較重要的視覺詞匯更能顯著地描述樣本,重要程度低的視覺詞匯可能與音頻信號中共有的場景以及噪聲有關.所以本論文中將視覺詞袋模型方法提取的向量轉化為TF-IDF 向量,表示為如公式:

IDFi可以衡量視覺詞匯Wi在視覺詞匯庫中的重要程度,在音頻文件轉換得到的灰度圖中出現的頻率越高,重要程度越低,反之,則重要程度越高.
感知機(perceptron)[27]是最原始的前饋神經網絡.它通過權重w和偏置項b,可以將一個多維輸入X映射為一個二元的值,是一種簡單的二元線性分類器.多層感知機(multilayer perceptron)是感知機的推廣.感知機由輸入層部分、隱藏層部分和輸出層部分組成,隱藏層部分可以是一層或者多層的.每一層由多個感知機單元組成,輸入為上一層的所有輸出.同時,若多層感知器的每一個單元都是線性的,那么任意多層感知機都可被等價為一個單層感知機.所以,多層感知機中,每一個單元都選擇了非線性的激活函數.最終,使用衡量預測值與實際值之間誤差的損失函數,通過反向傳播算法,一個多層感知機可以在訓練集上面擬合.
在本文中,我們將設置感知機的參數為:輸入層的神經元數目為600,即為輸入特征的維數,也是聚類算法的簇心數目,視覺詞匯庫的規模;中間隱藏層的神經元數目為300;輸出層神經元數目與類別數目一致,為5 個神經元.在輸入層和隱藏層之后都使用批歸一化(batch normalization)來調整數據的分布.本文使用的感知機原理圖簡化如圖2.

圖2 多層感知機原理圖
本文還測試了將支持向量機[28]和隨機森林[29]作為后端分類器的性能,結果顯示多層感知機要優于其他兩個分類器,實驗結果在第3.4 節中給出.
本文實驗在 Ubuntu20.04 系統下,利用 Python 語言,Scikit-Learn[30]機器學習框架完成.硬件環境為CPU Intel I7,內存 16 GB,顯卡 Nvidia GeForce RTX1080Ti.
本文中使用的船舶噪聲數據集來自于挪威科技大學在2012-2013年錄制的ShipsEar 數據集.ShipsEar 數據集包含不同種類的船只錄音以及海洋環境自然背景噪聲,旨在用于訓練船只識別檢測系統.該數據集總共包含90 條記錄,每條記錄的長度從15 秒到10 分鐘不等,船只總共有11 類,根據原論文的分類,將11 種船只噪聲和海洋環境自然背景噪聲合并為A,B,C,D,E 五類,其中E 類為自然背景噪聲,詳細的分類如表1所示.

表1 ShipsEar 數據集詳情
在評估模型性能過程中,經常需要使用多種不同指標進行評估.大部分的評價指標只能片面的反映模型某一部分的性能.常用的分類任務評價指標有精確率(Precision),召回率(Recall),準確率(Accuracy),F1.本文的數據類別比較均衡,用Accuracy即可較好地評估模型的好壞.將模型的預測結果和真實的標簽進行對比,真正例(True Positive,TP)為被模型預測為正的正樣本,假正例(False Positive,FP)為被模型預測為正的負樣本,假負例(False Negative,FN)為被模型預測為負的正樣本,真負例(True Negative,TN)為被模型預測為負的負樣本.

本論文選擇現在ShipEar 船舶噪聲數據集上使用神經網絡達到最好性能的論文:基于深度玻爾茲曼機的水聲目標識別算法(dbm-based underwater acoustic source recognition)作為對比模型.該論文提出了一種通過數據集用深度學習學習特征的方法進行水聲目標識別.
為了體現本文提出的使用詞頻-逆文件頻率改進的視覺詞袋特征(BOVW-TF-IDF)的作用,本實驗選擇了對比使用詞頻-逆文件頻率改進的視覺詞袋特征(BOVW-TF-IDF)與視覺詞袋特征(BOVW)的效果,分類器都是多層感知機.如表2,可以看出,BOVW-TF-IDF特征相比傳統BOVW 特征能更好地表示水聲目標識別信號,可能是因為TF-IDF 算法可以將在每個類別中都會出現的噪聲以及海洋背景聲的權重降低了,使得能表示船只特性的詞匯更為突出.

表2 與DBM 算法性能對比
在第一個實驗中,我們對現在基于深度玻爾茲曼機的水聲識別算法性能和本文提出的算法的正確率進行對比.如表2所示,本文提出的算法相對基于深度玻爾茲曼機的水聲識別算法有比較明顯的提升,證明了本文提出的特征表示方法是很有價值的,可以達到深度學習模型提取特征的效果.
本文選擇了3 種分類器進行對比,結果見表3,輸入的都是TF-IDF 特征,根據3 種分類器的正確率,最終選擇了多層感知機作為末端分類器.可以看出多層感知機的分類準確率要高于其他兩個分類器,所以本文選擇多層感知機作為末端分類器.

表3 不同分類器的分類正確率對比
分類器的正確率也會受詞匯庫的規模影響,如圖3所示,在詞匯庫規模超過600 之后,識別的正確率有降低的趨勢.可能是因為聲音的頻譜圖比現實中的更抽象,600的詞匯庫規模已經可以有效地表示水聲目標,達到比較高的正確率

圖3 不同詞匯規模對模型性能的影響對比
本文針對水聲目標識別問題,提出了一種基于改進視覺化詞袋模型的算法,該算法通過視覺化詞袋方法提取出了頻譜圖中的統計信息作為高階表示,并且使用了自然語言處理中常用的詞頻-逆文件頻率方法來調整特征的權重,能夠更有效地利用重要的視覺特征,降低環境聲以及噪聲的影響,并在ShipEar 數據集上取得了92.53%的平均準確率,相較于現在效果最好的DBM 算法有了顯著的提升,滿足了現實應用場景的準確率需求.本文提出的算法的思路可以廣泛運用于音頻分類的領域.