北方工業(yè)大學信息學院 喬子凌 柳子涵 鮑志平 蔡希昌 董紅霞 劉都鑫 劉子逸
近年來,基于深度學習的音頻事件分類方法成為研究熱點,但其嵌入式實現(xiàn)仍存在較多難點。論文由此出發(fā),研究嵌入式GPU下的音頻事件分類算法及軟硬件實現(xiàn)。硬件上,采用環(huán)形麥克風陣列和Jetson Nano完成音頻采集及音頻分類處理。算法上,研究兩張基于多重卷積神經(jīng)網(wǎng)絡(luò)塊結(jié)合池化層的方法,并在卷積層后疊加BN層和RELU激活函數(shù)。軟件上,實現(xiàn)Python下的音頻采集、算法實現(xiàn)及指標輸出。實驗對比證明,論文提出的網(wǎng)絡(luò)一和網(wǎng)絡(luò)二的分類準確指標mAP的值為0.431/0.343、AUC的值為0.973/0.965、d-prime的值為2.732/2.568。指標值明顯高于與谷歌提供的基線值,且網(wǎng)絡(luò)一較為優(yōu)化。
目前難點在多個方面,一個是算法的成熟度方面,另一個是嵌入式實現(xiàn)方面。對于音頻事件分類而言,其實時性有一定要求。應(yīng)用上,通常在監(jiān)測點布置需要多個音頻采集點,并將音頻數(shù)據(jù)進行實時分析與分類輸出。
目前,在工程驅(qū)動的需求下,嵌入式GPU發(fā)展迅速。典型方案為NVIDIA公司的嵌入式GPU。但由于嵌入式GPU的平臺性能有限,如何選擇復雜度合適的神經(jīng)網(wǎng)絡(luò)算法,將復雜算法移植,并保證足夠的準確度,這方面的研究已積累較多的經(jīng)驗。
本文通過研究兩種組成不同的多層卷積神經(jīng)網(wǎng)絡(luò)塊在嵌入式GPU下的建模與對比實驗,完成一種工程可用的音頻事件分類方法探索。
在實時音頻事件分類實現(xiàn)中,硬件平臺的小型化與運算速度的平衡尤為重要。一方面,要求硬件平臺功耗低,體積小;另一方面要求算力較為強悍,接口較為豐富,且生態(tài)環(huán)境較好,便于移植和深入研究。
綜合上面兩方面要求,嵌入式GPU選擇為NVIDIA公司的Jetson Nano平臺。該平臺的硬件主要性能如下:采用四核64位ARM CPU和128CUDA集成的NVIDIA GPU;提供472 GFLOPS的計算性能;4GB LPDDR4存儲器。生態(tài)環(huán)境方面,NVIDIA提供了CUDA及各深度學習框架的支持,便于模型的移植與應(yīng)用。
另外,為更好提高分類效果與提高升級潛力,前端應(yīng)采用麥克風陣列。經(jīng)綜合考慮,采用Seeed公司的Respeaker USB Mic array。該板采用4顆數(shù)字麥克風組成環(huán)形陣列,且通過MicroUSB接口提供供電功能支持。驅(qū)動方面,支持USB Audio Class 1.0(UAC 1.0),可適配Jetson Nano的Linux系統(tǒng)。
綜上所述,硬件平臺選擇Jetson Nano平臺和Respeaker環(huán)形麥克風陣列,其搭配具有高靈活度,驅(qū)動方便等優(yōu)勢,具備音頻采集及算法實現(xiàn)的必要支撐。
考慮到算法需要在嵌入式移植,設(shè)計了兩種網(wǎng)絡(luò)結(jié)構(gòu)。其中,網(wǎng)絡(luò)一主要考慮推理的準確率,其網(wǎng)絡(luò)結(jié)構(gòu)相對復雜;網(wǎng)絡(luò)二主要考慮推理的速度,其網(wǎng)絡(luò)結(jié)構(gòu)相對簡單。兩個模型的共同點在于兩點,一方面在卷積塊后加入平均池化層可以在縮減特征矩陣尺寸的同時保留矩陣中更多有效信息;另一方面為降低內(nèi)存容量要求,并加快模型推理速度,均采用全局池化層進行輸出。具體設(shè)計如下。
網(wǎng)絡(luò)一采用了五個3×3卷積核來增加神經(jīng)節(jié)點數(shù),網(wǎng)絡(luò)參數(shù)量達到80,753,615。網(wǎng)絡(luò)一包含五個卷積塊和兩個2×2平均池化層,每個卷積塊由3×3卷積層、BN層、RELU激活層組成。輸出部分采用了平均池化層和全局池化層。網(wǎng)絡(luò)一模型示意圖如圖1(左)所示。
網(wǎng)絡(luò)二采用了三個5×5卷積核減少了參數(shù)量,網(wǎng)絡(luò)參數(shù)量為4,837,455。網(wǎng)絡(luò)二包含三個卷積塊和一個2×2池化層,每個卷積塊由5×5卷積層、BN層以及RELU激活層組成,最后通過全局池化層進行輸出。網(wǎng)絡(luò)二模型示意圖如圖1(右)所示。

圖1 兩種網(wǎng)絡(luò)的實現(xiàn)框圖
在訓練方面,本文采用了AudioSet數(shù)據(jù)集。AudioSet是一個大型音頻數(shù)據(jù)集,具有527個音頻類。其中,訓練集由2063839個剪輯音頻組成,包括22,160個剪輯音頻的“平衡子集”,該測試集由20,371個音頻剪輯組成。訓練過程中保存最優(yōu)網(wǎng)絡(luò)模型,將最優(yōu)模型下載至嵌入式平臺。
綜上所述,本文設(shè)計了兩個網(wǎng)絡(luò)模型作為音頻事件分類方法,各有所側(cè)重。訓練方面,采用AudioSet數(shù)據(jù)集,并對訓練后的網(wǎng)絡(luò)模型下載到嵌入式GPU。
為實現(xiàn)算法的評估與驗證,需要在JetsonNano的Linux系統(tǒng)編寫程序?qū)崿F(xiàn)算法及硬件驅(qū)動,由此程序設(shè)計主要分為音頻采集模塊、網(wǎng)絡(luò)實現(xiàn)模塊及指標計算三部分。為了提高運行效率,采用C++實現(xiàn)音頻采集模塊的設(shè)計,采用pytorch深度學習框架與Python語言完成網(wǎng)絡(luò)實現(xiàn)及指標計算模塊。下面進行詳細說明。
音頻采集模塊通過libasound2(ALSA庫)實現(xiàn)音頻采集。網(wǎng)絡(luò)實現(xiàn)模塊中,預處理部分通過采集到的音頻使用librosa庫取梅爾頻譜,將圖譜序列化得到音頻特征矩陣。網(wǎng)絡(luò)推理模塊是將保存的模型進行調(diào)用并賦值給模型函數(shù),將音頻采集模塊返回的特征序列傳入模型進行推理,最后保存推理得到的概率最大的五個分類。指標計算模塊利用pytorch提供的計算函數(shù)實現(xiàn),在此不做贅述。
實驗驗證環(huán)節(jié)按照實驗步驟,完成實驗,并進一步完成數(shù)據(jù)分析。實驗步驟為如下三步:
(1)硬件連接與配置:將ReSpeaker_6麥克風與Jetson Nano的I/O接口連接,并在Jetson Nano上將麥克風配置為Jetson Nano的音頻采集設(shè)備。
(2)程序運行:依次啟動模型一/二的音頻事件分類程序。
(3)結(jié)果比對:分析比較各模型的指標輸出,評價模型優(yōu)劣。
最終,根據(jù)mAP(mean Average Precision/平均精度)、AUC(Area Under Curve/ROC曲線下方的面積大小)、d-prime(靈敏度指數(shù)d)三個指標對模型進行評估,如表1所示。其中,Google CNN為谷歌發(fā)布的基于卷積神經(jīng)網(wǎng)絡(luò)的音頻事件分類模型。和Google CNN相比,網(wǎng)絡(luò)一/二在平均精度、準確率和靈敏度方面均有提升且網(wǎng)絡(luò)一提升較大。

表1 三個模型指標比對表
在實驗過程中,使用網(wǎng)絡(luò)一和網(wǎng)絡(luò)二的音頻事件分類程序均未出現(xiàn)延時過長、內(nèi)存溢出等現(xiàn)象,實時性與可靠性得到初步驗證,因此本文認定網(wǎng)絡(luò)一為較優(yōu)選擇。
結(jié)論:論文從嵌入式音頻處理算法的需求出發(fā),完成了硬件設(shè)備的選型,比較了兩類基于CNN的對輕量化神經(jīng)網(wǎng)絡(luò),并完成系統(tǒng)驗證與評估。實踐證明,本論文提出的嵌入式GPU及音頻事件分類算法具備較高的準確度,能夠滿足實時性要求,可廣泛應(yīng)用于智能家居、智能安防等音頻信號處理領(lǐng)域中。