徐科,姚凌云,姚靜怡,姚敦輝
西南大學 工程技術學院/丘陵山區農業裝備重慶市重點實驗室,重慶 400715
近年來, 隨著機器學習理論的發展, 大量人工智能(artificial intelligence, AI)項目應運而生, 促使交通環境感知系統朝著多傳感器融合的智能化方向發展[1-4]. 目前, 交通環境信息的感知主要依靠激光雷達、 毫米波雷達和視覺傳感器等機器視覺技術, 幾乎沒有聽覺技術的應用. 然而, 聽覺能力對城市智慧交通系統十分關鍵, 交通環境中的聲音事件(如喇叭聲、 警笛聲、 車輛碰撞聲、 輪胎制動聲等)攜帶著大量聲音信息. 研究交通聲音事件分類方法, 對于完善道路安全和不同背景下的聲音檢測方法有重要的實際意義[5]和應用價值.
交通環境中的聲音事件(sound event)是指一段獨立完整且能引起人們感知注意的短時連續聲音信號[6-7]. 聲音事件檢測(sound event detection, SED) 是交通環境感知的核心技術之一, 主要包括聲音事件分類(sound event classification, SEC)和聲音事件定位(sound event location, SEL). 傳統的聲音事件分類主要借鑒語音識別和模式匹配, 將語音識別技術遷移應用到聲音事件分類領域. 例如使用基于矢量量化的識別技術、 動態時間規整(dynamic time warping, DTW)技術、 隱馬爾可夫模型(hidden Markov models, HMM)、 高斯混合模型(gaussian mixture model, GMM)、 支持向量機(support vector machine, SVM)等技術.
目前, 交通聲音事件分類相關研究以模式識別理論方法為主, 即特征提取, 模式匹配. Karpis[8]研究了基于聲學信號檢測特種車輛(例如警車消防車)的方法, 實現了警車、 消防車的初步檢測. Choi等[9]針對音頻監控問題, 采用GMM分類器在不同背景噪聲環境下對9種異常聲音(尖叫聲、 汽笛聲、 撞擊聲等)進行識別, 并自動更新模型參數達到對環境的自適應, 識別效率有所提高. Li等[10]以HMM識別模型為基礎, 采用環境中的大量聲學事件訓練HMM模型, 并通過將未知聲學事件的MFCC特征與背景池對比, 提取目標聲學事件的聲音, 該算法在不犧牲識別性能的情況下簡化了模型的復雜度. Lefebvre等[11]在2017年使用聲學信號并采用支持向量回歸方法實現了交通流量測量. 朱強華等[12]以MFCC特征和SVM作為聲音特征和分類器對交通聲音分類(警車、 消防車、 救護車、 汽笛聲等)進行了研究, 通過優化MFCC和SVM算法, 完成無人車交通聲音分類任務, 但其所建模型在信噪比減小的情況下, 分類準確率大大降低. 2020年, Zhang等[13]提出了一種基于稀疏自動編碼器的車輛聲音事件分類方法分析交通狀況, 其檢測準確率達到94.9%.
上述研究主要采用梅爾頻率倒譜系數(mel-frequency cepstrum coefficient, MFCC)等聲學特征和傳統機器學習方法(machine learning, ML)作為聲音事件的模型分類器. 然而傳統機器學習僅適用于小樣本, 在處理大樣本、 高維度的數據時準確率會大幅降低[14]. 此外, 實際交通環境噪音較大, MFCC聲音特征提取對噪聲十分敏感, 較大程度上影響了機器學習的性能[15]. 而近幾年由于人工智能快速發展, 基于深度學習的算法在聲音識別方面表現出巨大優勢, 具有學習能力強、 覆蓋范圍廣等優點, 通過神經網絡對聲音事件進行特征提取和學習, 可以獲得更好的分類效果[16].
鑒于此, 本文以SIF特征提取法作為交通聲音的聲學特征, 將卷積神經網絡引入交通聲音事件分類研究, 在VGG卷積神經網絡中搭建了雙卷積層融合算法以及塊間直連通道, 提出一種基于改進VGG-16卷積神經網絡的交通聲音事件分類算法. 該算法對麥克風系統采集到的交通聲音進行預處理, 將快速傅里葉變換得到的時頻域譜圖作為聲音的特征, 神經網絡則負責交通聲音的深層特征進行學習, 完成交通環境的聲音事件分類任務. 實驗結果表明, 本文提出的VGG-TSEC塊間直連算法在交通聲音測試集上的準確率為97.18%, 分類性能優于隨機森林、 K鄰近(KNN)和支持向量機(SVM)等傳統機器學習算法.
交通聲音是一維時域信號, 直接輸入神經網絡會導致信號幀的丟失, 進而影響模型精度. 研究表明, 語譜圖在聲音特征標記領域具有較高的噪聲魯棒性優勢, 然而語譜圖特征在兼顧時域和頻域信息的同時, 容易造成特征泄漏. 因此本文充分考慮語譜圖的優勢, 使用二維語譜圖提取交通聲音聲學特征, 增強了特征的噪聲魯棒性. 語譜圖特征提取示意圖見圖1, 該特征是交通聲音信號的時頻域譜圖. 聲學特征的提取步驟包括預加重、 分幀、 加窗、 短時傅里葉變換等[17]. 首先使用預加重減小信號在傳遞過程中高頻部分的損失. 對預加重后的目標聲音進行分幀, 分幀后的片段表現出短時連續性. 漢寧窗是一種窗函數, 其定義見式(1), 該窗函數用于分幀后的信號處理, 可消除各幀兩端信號的不連續性, 其中M-1是窗函數的周期. 對加窗后的信號進行快速傅里葉變換(fast fourier transform, FFT), 計算方法見式(2), 將傅里葉變換后得到的時頻域譜圖碎片按像素幀順序排列, 短時碎片連接即可得到長時穩定的二維特征譜圖[18], 部分交通聲音事件的時域信號和時頻譜的特征見圖2.

圖1 語譜圖特征提取示意圖

圖2 4類交通聲音語譜圖(警車、 消防車、 救護車、 車輛事故碰撞聲)
(1)
(2)

語譜圖特征提取是將交通聲音時域信號從一維映射到二維的圖像分類問題. 相比于傳統的圖像分類方法, 深度學習方法可以通過自主學習來提取深層語義特征, 加強特征與分類器之間的聯系. 目前應用比較成功的卷積神經網絡有AlexNet, GoogleNet, VGG, Inception和ResNet系列, 此外還包括其他新興的輕量級網絡, 如膠囊網絡和MobileNet等. 研究表明, CNN結構太深易引起模型過擬合, 發生訓練退化; 結構太淺則容易導致特征提取不充分, 無法表達圖像的深層次信息. 試驗對比以上經典結構模型, 選擇具有16個權重層的VGG-16網絡作為本研究的基線結構, VGG-16網絡結構見圖3, 包括13個卷積層、 3個全連接層、 5個最大池化層, 以及Softmax輸出層.

圖3 VGG-16網絡結構
VGG網絡最主要的特點是卷積層采用多個3×3卷積核堆疊構成, 池化層則采用2×2的小卷積核. 在感受野相同的情況下, 通過較小參數代價的小卷積核能獲得更優的非線性結果. 全連接層主要負責卷積特征的融合, 起到分類器的作用. 隨著網絡層數的加深, 需要求解的參數數目也隨之增加, 其中大部分參數來自全連接層. 全連接層的C×1維向量輸入Softmax層, 該層輸出的數值表示該樣本所屬類別的概率, 數值越大, 則可信度越高. Softmax函數見式(3).
(3)
式中,Zi為第i個節點的輸出值;C為分類數目;f(Zi)為分類類別為i的概率; 在模型測試中, Softmax層會選擇f(Z1),f(Z2),f(Z3), …,f(Zc)中概率最大的類別作為樣本的預測標簽.
傳統的VGG-16網絡中Softmax層分類的數目達到1 000個, 3層全連接層結構為(4 096, 4 096, 1 000). 第一層全連接層輸入參數來自池化層, 共25 088個神經元, 所需參數為102 764 544個. VGG中3層全連接神經網絡共計1.236億個參數, 占總參數量的89.33%. 由此可知, 全連接層冗余的參數浪費了系統資源, 且容易發生過擬合現象. 本文采用兩層卷積核為1×1的卷積層與全局平均池化層融合代替全連接層, 降低網絡模型權重參數的同時使模型趨于輕量化. 改進后的VGG-TSEC參數數目為0.377億個, 降低72.76%. 全連接層改進前后結構對比見表1.

表1 VGG-16全連接層改進前后結構表
卷積層是模型中最為核心的一層, 由若干個神經元組成. 假設卷積層第l層直接相連的輸入張量為xl∈Rn×p×q, 其中p,q分別為矩陣高度和寬度. 第l層激活函數輸出al的計算見式(4).
al=f(WlXl+bl)
(4)
式中,f為激活函數;Wl∈Rm×h×h為卷積核的濾波器,m為濾波器的個數,h為濾波器的尺寸;bl為卷積層的偏置. 常見的激活函數有Tanh, ReLU, Leaky ReLU, Sigmod等. 其中ReLU激活函數收斂較快, 然而ReLU存在神經元“死亡”問題, 權重迭代見式(5), 在使用較大學習率時,wij會取到負值, 使激活函數輸出為0, 因此梯度下降對這些神經元無效. 與之相反, Leaky ReLU在x≤ 0時斜率不為0. 經實驗測試Leaky ReLU的交通聲音分類性能優于ReLU[19], 因此本研究選取Leaky ReLU作為卷積層激活函數.
(5)
式中,wij為淺層第i個神經元與深層第j個神經元之間的連接權重;E為網絡激活函數.
此外, 神經網絡在訓練過程中極易出現“訓練集優, 測試集差”的過擬合情況, 致使模型的泛化能力差. 因此引入批量歸一化層(batch normalization, BN), 加快模型訓練的收斂速度, 增強模型泛化能力.
首先在訓練階段, BN層可以對輸入網絡的時頻譜進行預處理, 批處理(mini-batch)輸入x:B={x1,x2, …,xm}, 計算批處理均值μB, 見式(6).
(6)
(7)
規范化處理:
(8)
式中,ε是一個很小的數, 防止分母為零.
尺度變換和偏移:
(9)
式中,γ為尺度因子,β為平移因子.
(10)

特征信息在網絡層傳輸過程中, 各網絡塊內信息經多層卷積神經網絡的特征提取, 易產生特征堆疊, 從而使特征模糊化, 因此本文分別在BlockA1與BlockA2, BlockB1與BlockB2塊間引入2個直連通道, A1處部分原始輸入的信息傳入B1處, B1處的卷積特征傳輸至B3處, 使網絡中的SIF特征提取層次不同, 這樣可以在抑制梯度消失的同時加快網絡收斂速度. 改進后的網絡結構見圖4, 其中2個直連通道分別跨連接核心卷積塊. 模型左側為聲音特征輸入端, 右側則為Softmax分類的概率. 網絡中A1, B1, C 3個核心卷積塊的結構和參數見圖5. A1, A2結構類似, 包含2個卷積層, 1個批量歸一化層和1個最大池化層; B1, B2, B3包含3個卷積層, 1個最大池化層; C由2個單核卷積層融合全局平均池化層構成.

圖4 VGG-TSEC網絡結構

圖5 卷積塊結構示意
3.1.1 采集交通聲音
交通環境中的聲音事件類別復雜, 如警笛聲、 汽車喇叭聲、 車輛剎車制動聲、 發動機加速聲、 事故碰撞聲、 行人尖叫聲等. 鑒于典型聲音事件對交通系統影響最大, 因此研究選擇警車、 消防車、 救護車警笛聲、 車輛事故碰撞聲、 公共汽車、 城市警報聲、 摩托車、 倒車提示音、 行人尖叫聲、 卡車共10種交通聲音作為主要研究對象, 場景為交通聲學場景. 根據《車用電子警報器》(GB 8108-1999), 設置車用電子警報器的音響頻率和重復變調周期, 見表2.

表2 警笛音頻率和周期
交通聲音采集過程存在不安全、 困難度高等問題, 因此在保證實驗室聲音采集有效的情況下, 疊加實際路口交通環境背景音, 以模擬真實路況下的交通聲音. 本文聲音事件的采集工作分2個階段進行: 第一階段在實驗室內采集交通聲音; 第二階段采集交通背景噪音. 首先在實驗室使用采集設備采集聲音. 交通聲音采集示意圖見圖6, 采集設備為LMS Test.Lab, Grass專業級聲學麥克風和筆記本電腦等. 實驗室采集獲得交通聲音約10 h. 第二步采集交通背景噪音, 采集地點為重慶市北碚區云華路與雙元大道某岔路口 (路口常見卡車、 轎車、 摩托車、 行人等). 采集現場見圖6, 獲得交通背景噪音約10 h.

圖6 交通聲音采集示意圖
3.1.2 數據集擴增
訓練深度學習模型需要大量樣本, 低樣本復雜度極易導致模型過擬合. 選擇多普勒頻移、 聲音扭曲、 卷積混響、 相位改變、 延遲等擴增方式, 對采集到的交通聲音進行數據集擴增. 兩通道的聲音增益和衰減設置見表3, 警笛音原始聲音頻譜圖見圖7(a), 卷積混響擴增后的頻譜圖見圖7(b)和圖7(c). 擴增后得到交通聲音數據約45 h. 參考警笛音的周期性, 對擴增后的音頻聲音信號進行切片處理, 得到訓練集32 740個, 驗證集和測試集4 092個, 各類交通聲音的具體編號、 數量等信息見表4和圖8.

表3 聲音通道增益和衰減

表4 各類交通聲音的標簽信息

圖7 原始聲音(a),Bitter hall way(b), Corner verbation(c)

0. 救護車; 1. 公共汽車; 2. 城市警報聲; 3. 消防車; 4. 摩托車; 5. 警車; 6. 倒車提示音; 7. 尖叫聲; 8. 卡車; 9. 車輛碰撞聲.圖8 實驗中的交通聲音
實驗訓練與測試計算機的物理環境配置: CPU為 Intel(R) Xeon(R) Platinum 8259L, GPU為NVIDIA Quadro GP100, 顯存16GB, 主存192GB; 軟件環境: Ubuntu操作系統, Tensorflow-gpu 2.5.0深度學習框架, CUDAtoolkit 11.2.0, CUDNN 8.1.0.77, keras 2.5.0, 基于python 3.8.12的Pycharm開發環境. 學習率為0.001, 最大迭代次數300, 選用交叉熵損失函數和Adam模型優化器.
此外, 引入準確率(A)、 精確率(P)、 召回率(R)、F1分數等指標對試驗結果進行評價, 具體計算方法見式(11)-(14):
(11)
(12)
(13)
(14)
式中,TP為真陽性;FP為假陽性;TN為真陰性;FN為假陰性.
使用交通數據集驗證改進后的模型. 通過CAM方法獲取聲音SIF熱力圖, 見圖9, 從熱力圖高亮部分可以看出該區域包含模型的重要特征. VGG-TSEC模型訓練的準確率和損失值曲線見圖10, 在迭代了80次后, 模型趨于收斂、 重合, 此時訓練集、 驗證集的準確率和損失值基本保持不變. VGG-TESC混淆矩陣見圖11, 混淆矩陣高亮對角線代表模型預測正確數, 通過該圖可以直觀地分析模型分類能力, 如公共汽車和卡車的分類性能較差, 警笛音的分類結果較好. 交通聲音驗證集結果見表5, VGG-TSEC在測試集上的準確率為97.18%, 聲音事件分類精確率、 召回率、F1分數均處于較高水平.

表5 交通聲音驗證集結果

圖9 救護車警笛音語譜圖(a), 卷積層后的熱力圖(b),(c)

圖10 VGG-TESC訓練集和驗證集性能表征

圖11 VGG-TESC混淆矩陣
將LeNet-5, AlexNet, VGG等卷積神經網絡用于驗證交通聲音數據集, 結果見表6. 本文提出的VGG-TSEC模型的精確率、 召回率和F1分數相比其他網絡有了顯著提高. 實驗表明, 本文提出的VGG-TSEC比原VGG網絡分類準確率高4.68%. 各機器學習方法的交通事件分類性能見表7, 對比VGG-TESC模型與其他研究結果, 傳統機器學習方法在交通聲音事件分類領域的識別準確率較低, 而本文所優化的VGG-TSEC分類準確率比隨機森林、 K鄰近(KNN)和支持向量機(SVM)分別提高了17.05%, 22.25%, 11.59%.

表6 各網絡聲音分類的綜合性能

表7 各機器學習方法的交通聲音事件分類性能
交通聲音事件分類旨在識別環境中的聲音事件類別, 為交通系統提供更多的聲音信息. 結論如下: 本文針對現有交通系統環境聲音感知能力不足、 效率低、 魯棒性低、 可分類數量少等問題, 基于VGG-16改進并提出了VGG-TSEC交通聲音事件分類方法, 提高了復雜交通環境下的聲音事件分類的準確率, 豐富了不同環境背景下的聲音事件分類方法.
1) 本文所提出VGG-TSEC交通聲音事件分類方法的平均準確率達到97.18%, 與AlexNet, VGG-16, ResNet34等網絡相比, 模型性能顯著提高.
2) 實驗表明, 雙卷積層融合算法優化后的模型參數量降低了72.75%, 使得網絡時空效率均得到了明顯提升, 為后續移動端的部署奠定基礎.
3) 創新性地引入塊間直連通道算法, 避免深層網絡中圖形特征堆疊, 抑制梯度消失, 加快網絡收斂速度.