邵 睿,彭 碩,查文文,陳成鵬,辜麗川,焦 俊
(安徽農(nóng)業(yè)大學(xué) 信息與計(jì)算機(jī)學(xué)院,合肥 230036)
豬聲包含豐富信息,是判斷生豬行為的依據(jù),通過識(shí)別生豬音頻可以分析生豬行為[1],有助于生豬福利養(yǎng)殖。提取聲學(xué)特征和構(gòu)建聲學(xué)模型是生豬音頻識(shí)別的關(guān)鍵,在早期相關(guān)研究中,F(xiàn)errari等人[2]通過分析豬聲信號的均方根和峰值頻率,對患病豬只咳嗽聲實(shí)現(xiàn)有效識(shí)別。Exadaktylos等人[3]分析豬咳嗽聲、打呼嚕聲、尖叫聲中高能量部分的功率譜密度,利用模糊c-均值聚類算法,對不同豬聲進(jìn)行分類。徐亞妮等人[4]提取梅山母豬咳嗽聲功率譜密度特征,用改進(jìn)的模糊C均值聚類算法對豬咳嗽聲和尖叫聲進(jìn)行識(shí)別,效果良好。文獻(xiàn)[5-6]提取豬聲信號的MFCC,提出用SVM模型對生豬的患病叫聲進(jìn)行監(jiān)測的方法,滿足了識(shí)別需要。
隨著深度學(xué)習(xí)技術(shù)發(fā)展,深層神經(jīng)網(wǎng)絡(luò)對聲學(xué)特征進(jìn)行多層非線性處理,將聲學(xué)特征轉(zhuǎn)換為不變性、鑒別性的特征,以實(shí)現(xiàn)豬聲的識(shí)別。黎煊等[7]用深度信念網(wǎng)絡(luò)實(shí)現(xiàn)對豬咳嗽聲的識(shí)別,效果良好;趙健等[8]通過構(gòu)建基于DNN-HMM聲學(xué)模型對連續(xù)的豬咳嗽聲進(jìn)行建模,針對連續(xù)豬聲中的咳嗽聲實(shí)現(xiàn)有效識(shí)別;蒼巖等[9]用MobileNetV2網(wǎng)絡(luò)對不同狀態(tài)下豬只聲音譜圖進(jìn)行分類識(shí)別,通過譜圖優(yōu)化、模型壓縮,模型取得較高的識(shí)別精度。
生豬音頻信號是時(shí)序信號,提取生豬音頻信號MFCC,構(gòu)成多幀的豬聲特征向量序列。對于多幀的豬聲特征向量序列,當(dāng)前幀不僅與前面多幀有聯(lián)系,也與后面多幀有聯(lián)系。[10]BiLSTM網(wǎng)絡(luò)分別沿前向時(shí)序和后向時(shí)序處理豬聲特征向量序列,充分捕捉前后多幀間的時(shí)序信息并對生豬音頻進(jìn)行聲學(xué)建模,形成基于BiLSTM網(wǎng)絡(luò)的聲學(xué)模型,實(shí)現(xiàn)對5種豬聲的有效識(shí)別。本文算法整體流程如圖1所示。
生豬音頻采集于安徽蒙城京徽蒙生豬養(yǎng)殖基地,采集對象為10只150kg左右的長白豬。采集工具為飛利浦VTR5110錄音筆,采用單聲道錄制,采樣頻率為44100Hz,采樣精度為16位,采樣格式為wav。
為了盡可能減輕噪聲污染、減少非豬聲信息,需要對生豬音頻信號去噪及端點(diǎn)檢測。
1.2.1 基于維納濾波的生豬音頻信號去噪
豬場環(huán)境中存在低頻的風(fēng)機(jī)運(yùn)行聲,豬聲采集的過程中也有金屬撞擊聲、鳥鳴聲等高頻噪聲,而豬聲的頻率主要集中在10KHz內(nèi)[11]。因此,豬聲頻率與多種環(huán)境噪聲的頻段重疊,傳統(tǒng)帶通濾波器難以對采集的豬聲進(jìn)行有效去噪。本研究借鑒了語音去噪中效果較好的維納濾波[12],維納濾波器是一種基于最小均方誤差準(zhǔn)則的平穩(wěn)過程去噪的最優(yōu)估計(jì)器。
假設(shè)采集的音頻信號x(n)由豬聲信號s(n)和豬場噪聲信號v(n)疊加而成,維納濾波器傳遞函數(shù)是(n),濾波器輸出信號是y(n)=(n),即豬聲信號的估計(jì)值。維納濾波器的輸入輸出關(guān)系如圖2所示。
圖2 維納濾波器的輸入輸出關(guān)系
豬聲信號s(n)與濾波器輸出信號(n)之間的誤差記為e(n),維納濾波器按最小均方誤差準(zhǔn)則使得E[e2(n)]達(dá)到最小,根據(jù)正交性原理,最佳的傳遞函數(shù)h(n)對任意m均滿足下式。
E[{s(n)-(n)}·x(n-m)]=0
(1)
通過計(jì)算音頻信號x(n)和豬場噪聲信號v(n)的功率譜得到音頻信號的先驗(yàn)信噪比,用先驗(yàn)信噪比計(jì)算維納濾波器傳遞函數(shù)h(n),得到濾波器輸出信號(n),即音頻信號去噪后的豬聲信號。
如圖3所示,對比生豬發(fā)情聲信號經(jīng)維納濾波處理前后的波形圖,可知濾波后的生豬發(fā)情聲信號噪聲明顯減少,且原信號基本沒有發(fā)生失真。
圖3 豬發(fā)情聲維納濾波前后的對比圖
1.2.2 生豬音頻信號端點(diǎn)檢測
端點(diǎn)檢測可以有效減少生豬音頻信號特征提取的運(yùn)算量,本研究借鑒文[13]中對生豬音頻信號處理效果較好的基于改進(jìn)的EMD-TEO(經(jīng)驗(yàn)?zāi)B(tài)分解的Teager能量算子)倒譜距離的端點(diǎn)檢測算法,確定生豬音頻信號的起止點(diǎn)。步驟如下:
(1)采用EMD(經(jīng)驗(yàn)?zāi)B(tài)分解)算法將生豬音頻信號分解為多個(gè)基本模式分量。
(2)再利用TEO(Teager能量算子)對模態(tài)分量進(jìn)行處理,獲得其能量譜作為第一個(gè)判決參數(shù)。
(3)引入短時(shí)倒譜距離方法,計(jì)算倒譜距離作為第二個(gè)判決參數(shù)。
(4)根據(jù)(2)、(3)中得到的判決參數(shù),設(shè)置閾值做出判決,確定生豬音頻信號的起止點(diǎn)。
1.2.3 MFCC提取
MFCC是一種基于人耳聽覺特性的特征參數(shù),有較好的魯棒性。利用音頻頻率與梅爾頻率倒譜系數(shù)成非線性對應(yīng)關(guān)系,將線性頻譜映射到非線性的梅爾頻率頻譜中。13維MFCC反映豬聲靜態(tài)特征,13維MFCC的一階、二階差分反映豬聲動(dòng)態(tài)特征,故用39維MFCC特征可以包含豬聲中更多特征。[8]
這5種豬聲樣本的MFCC三維圖如圖4所示。
圖4 豬聲樣本的MFCC圖
每種豬聲樣本的標(biāo)簽用獨(dú)熱碼表示,即進(jìn)食樣本、咳嗽樣本、發(fā)情樣本、嚎叫樣本、哼叫樣本分別用[1,0,0,0,0]、[0,1,0,0,0]、[0,0,1,0,0]、[0,0,0,1,0]、[0,0,0,0,1]標(biāo)記。
LSTM網(wǎng)絡(luò)是對循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)的改進(jìn),它克服了RNN梯度消失的問題,可以對序列中有效信息進(jìn)行長時(shí)記憶。[14-18]LSTM用內(nèi)部自循環(huán)結(jié)構(gòu)來控制信息流,通過輸入門、遺忘門、輸出門3個(gè)非線性門控單元和1個(gè)記憶單元來控制信息的流通和損失,解決了RNN中神經(jīng)元的長期依賴問題。一個(gè)完整的LSTM內(nèi)部結(jié)構(gòu)如圖5所示。
圖5 LSTM結(jié)構(gòu)圖
(2)
(3)
(4)
(5)
(6)
LSTM網(wǎng)絡(luò)按某一順序處理序列,BiLSTM網(wǎng)絡(luò)就是在LSTM網(wǎng)絡(luò)中使用兩套連接權(quán)重分別沿前向時(shí)序和后向時(shí)序[19,20]對同一序列進(jìn)行建模。BiLSTM網(wǎng)絡(luò)結(jié)構(gòu)圖,如圖6所示,x(t)表示序列中第t幀的特征向量,其中t=1~T,T是樣本序列中的總幀數(shù)。在BiLSTM網(wǎng)絡(luò)中,x(t)被LSTM網(wǎng)絡(luò)分別沿前向時(shí)序和后向時(shí)序處理并輸出信息h(t)。
圖6 BiLSTM網(wǎng)絡(luò)結(jié)構(gòu)圖
本研究以構(gòu)建的豬聲識(shí)別網(wǎng)絡(luò)(PigVocalizations net,PVnet)為聲學(xué)模型,如圖7所示,PVnet模型由2層BiLSTM網(wǎng)絡(luò)層(BiLSTM1和BiLSTM2)和3層全連接層(FC1、FC2和FC3)構(gòu)成。FC1和FC2用非線性激活函數(shù)ReLU和正則化方法Dropout技術(shù)[21]來避免訓(xùn)練過擬合,正則化參數(shù)值取0.05(即丟棄5%的神經(jīng)元),F(xiàn)C3用函數(shù)Softmax分類。
圖7 PVnet3聲學(xué)模型結(jié)構(gòu)圖
輸入PVnet模型的樣本是大小為T×39特征序列,T為樣本所包含的幀數(shù),39為特征向量維數(shù)。樣本首先經(jīng)BiLSTM1處理,輸出大小為T×78的特征序列,再經(jīng)BiLSTM2處理,輸出大小為1×156的向量。1×156的向量依次經(jīng)FC1、FC2和FC3處理,分別降維到1×20、1×10、1×5,最后利用Softmax函數(shù)計(jì)算出樣本的分類概率向量[S1,S2,S3,S4,S5],其中S1、S2、S3、S4、S5分別表示樣本屬于進(jìn)食聲、咳嗽聲、發(fā)情聲、嚎叫聲、哼叫聲的概率。
Softmax計(jì)算公式為:
(7)
本試驗(yàn)采用的CPU為Inter(R)Core(TM) i7-9700,內(nèi)存16G,GPU為NVIDIA GeForce RTX 2080Ti,操作系統(tǒng)為Window 10,深度學(xué)習(xí)框架為TensorFlow,版本號1.13.1。PVnet模型訓(xùn)練參數(shù)如表1所示。
表1 PVnet模型訓(xùn)練參數(shù)
加權(quán)交叉熵函數(shù)公式如下:
豬聲樣本共有3750個(gè),其中進(jìn)食、咳嗽、發(fā)情、嚎叫和哼叫的樣本分別為1290、400、310、930和820個(gè)。不同類樣本的數(shù)量相差較大,不利于模型訓(xùn)練,為了克服樣本數(shù)量不平衡問題,單個(gè)樣本的損失函數(shù)采用可以調(diào)整不同類別樣本在損失函數(shù)上的權(quán)重的加權(quán)交叉熵?fù)p失函數(shù)。
訓(xùn)練模型時(shí),改進(jìn)每個(gè)訓(xùn)練批次中第i個(gè)(i=1,2,...,32)樣本屬于第j類(j=1,2,3,4,5,1~5分別表示進(jìn)食聲、咳嗽聲、發(fā)情聲、嚎叫聲、哼叫聲)的交叉熵?fù)p失函數(shù),
(8)
(9)
βj是訓(xùn)練集中第j類的樣本數(shù)占樣本集的樣本總數(shù)比值。
進(jìn)一步可得代價(jià)函數(shù)如下:
(10)
由于豬聲樣本集屬于不平衡樣本集,PVnet模型采用準(zhǔn)確率(Accuracy,Acc)來衡量模型整體的分類性能是不準(zhǔn)確的。因?yàn)榭赡艽嬖跍?zhǔn)確率很高,但模型對少數(shù)類樣本分類效果不佳的情況。故用總體識(shí)別率(Total Recognition rate,TRrate)來衡量PVnet模型的整體分類性能,計(jì)算公式如下:
(11)
Acc(j)表示第j類樣本的識(shí)別準(zhǔn)確率,其中j=1,2,3,4,5(1~5分別表示進(jìn)食聲、咳嗽聲、發(fā)情聲、嚎叫聲、哼叫聲)。
采用5折交叉驗(yàn)證方法,3750個(gè)豬聲樣本被隨機(jī)分成5份大小相同的互斥子集,每個(gè)子集包含750個(gè)豬聲樣本。每次用4個(gè)子集的并集作為訓(xùn)練集,余下的1個(gè)子集作為測試集。對PVnet模型進(jìn)行5次訓(xùn)練和測試,PVnet模型在測試集上5次試驗(yàn)結(jié)果如表2所示,
表2 PVnet模型的5折交叉驗(yàn)證結(jié)果
由表2知,各組PVnet模型的總體識(shí)別率均高于90%,最高為92.52%,5組總體識(shí)別率均值為91.64%,表明基于BiLSTM的聲學(xué)模型有穩(wěn)定的識(shí)別性能和較高的識(shí)別精度。
為了對基于BiLSTM模型進(jìn)行算法應(yīng)用測試,以樣本集外兩段時(shí)長為1.22h和2.83h的生豬音頻為測試語料。經(jīng)預(yù)處理、MFCC提取、人工標(biāo)記得391個(gè)豬聲樣本,其中進(jìn)食、咳嗽、發(fā)情、嚎叫、哼叫的樣本分別有103、63、52、78、95個(gè)。由表2知,PVnet模型的最佳試驗(yàn)組是第3組,將其命名為PVnet(3)。391個(gè)樣本在PVnet(3)模型上進(jìn)行算法應(yīng)用測試,用大小為5×5的混淆矩陣表示模型對5種樣本的分類結(jié)果。矩陣中任意一個(gè)元素xij,表示真實(shí)標(biāo)記為j的樣本被預(yù)測為i的數(shù)量,其中i、j=1,2,3,4,5(1~5分別表示進(jìn)食聲、咳嗽聲、發(fā)情聲、嚎叫聲、哼叫聲)。
如圖8所示,PVnet(3)模型總體識(shí)別率為90.70%,對進(jìn)食、咳嗽、發(fā)情、嚎叫和哼叫的樣本識(shí)別率分別為88.35%、93.65%、90.38%、88.46%、92.63%??芍狿Vnet模型有一定的泛化性能,對5種樣本均能較好識(shí)別。
圖8 混淆矩陣
本研究以長白豬進(jìn)食聲、咳嗽聲、發(fā)情聲、嚎叫聲和哼叫聲為研究對象,提出了對5種生豬音頻進(jìn)行識(shí)別的方法,構(gòu)建了基于BiLSTM的生豬音頻識(shí)別模型(PVnet模型),在豬聲樣本集下對PVnet模型進(jìn)行5折交叉驗(yàn)證試驗(yàn)。結(jié)果表明,5組PVnet模型的總體識(shí)別率均達(dá)到90%,最高組為92.52%,表明PVnet模型對生豬音頻能穩(wěn)定有效識(shí)別。進(jìn)一步,用391個(gè)樣本集外的豬聲樣本對PVnet(3)模型進(jìn)行算法應(yīng)用測試,PVnet(3)總體識(shí)別率為90.70%,結(jié)合混淆矩陣可知PVnet模型對5種生豬音頻均有較好的識(shí)別效果,且具有泛化性能。