韓天翊,林榮恒
(1.北京郵電大學(xué)計(jì)算機(jī)學(xué)院(國(guó)家示范性軟件學(xué)院),北京 100876) (2.北京郵電大學(xué)網(wǎng)絡(luò)與交換技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京 100876)
情感是一系列主觀認(rèn)知體驗(yàn)的總稱,是一種心理和生理狀態(tài),是各種感覺(jué)和行為的結(jié)合. 情感通常與心情、性格等因素相互作用,也會(huì)受到激素的影響. 不同的情緒對(duì)日常行為會(huì)有著不同的導(dǎo)向作用,人們做的每件事都會(huì)有不同的情感表達(dá). 了解用戶使用產(chǎn)品時(shí)的情感,可以大大提高服務(wù)質(zhì)量和服務(wù)效果.
近年來(lái),隨著科學(xué)技術(shù)的日益發(fā)達(dá),情感識(shí)別的效率和準(zhǔn)確性均有大幅提升. 情感識(shí)別系統(tǒng)能夠幫助客服人員預(yù)先了解客戶的情感狀況,提高服務(wù)質(zhì)量,進(jìn)而提高服務(wù)效率和滿意度. 但是,情感識(shí)別在單一模態(tài)下很難進(jìn)一步提高識(shí)別準(zhǔn)確率,又往往需要使用高性能的GPU,這使得系統(tǒng)的使用范圍很小,很難在現(xiàn)實(shí)生活中表現(xiàn)出應(yīng)有的效果. 因此,有必要減少系統(tǒng)的使用條件,設(shè)計(jì)一個(gè)軟硬件結(jié)合的多模態(tài)情感識(shí)別系統(tǒng),并行加速計(jì)算過(guò)程,提高系統(tǒng)識(shí)別準(zhǔn)確率,讓系統(tǒng)可以在更廣泛的范圍內(nèi)使用.
本文設(shè)計(jì)并實(shí)現(xiàn)了一種軟硬結(jié)合的多模態(tài)情感識(shí)別方法,使用語(yǔ)音和面部表情兩個(gè)模態(tài),通過(guò)梅爾頻率倒譜系數(shù)與卷積神經(jīng)網(wǎng)絡(luò)對(duì)情感進(jìn)行識(shí)別和分類(lèi),同時(shí)將語(yǔ)音情感識(shí)別遷移到神經(jīng)網(wǎng)絡(luò)計(jì)算棒以降低環(huán)境負(fù)載,在模態(tài)融合時(shí)采用決策層融合的方式來(lái)提高識(shí)別準(zhǔn)確率.
基于音頻的情感識(shí)別出現(xiàn)于1972年. Ang等使用決策樹(shù)方法進(jìn)行語(yǔ)音情感識(shí)別[1]. Lee等通過(guò)結(jié)合詞匯和話語(yǔ)來(lái)識(shí)別情感[2]. 目前廣泛應(yīng)用于語(yǔ)音情感識(shí)別的算法包括SVM、長(zhǎng)短期記憶網(wǎng)絡(luò)等. Graves等使用長(zhǎng)短期記憶網(wǎng)絡(luò)對(duì)音素進(jìn)行分類(lèi)和識(shí)別[3]. Eyben等使用雙向長(zhǎng)短期記憶網(wǎng)絡(luò)進(jìn)行語(yǔ)音情感識(shí)別[4]. 陳闖等提出了一種基于改進(jìn)遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行識(shí)別(IAGA-BP)[5].
視頻的情感識(shí)別主要依賴于使用者的面部表情. Ekman等提出了一種通過(guò)劃分面部區(qū)域的表情編碼系統(tǒng)[6]. 此后,研究人員提出了許多識(shí)別面部表情的方法. Zhang使用多層感知機(jī)作為分類(lèi)器[7],Shan等使用LBP特征進(jìn)行面部情感識(shí)別[8]. 由于深度學(xué)習(xí)技術(shù)不需要在分類(lèi)之前手動(dòng)提取特征,深度學(xué)習(xí)技術(shù)在面部情感識(shí)別中得到了越來(lái)越廣泛的應(yīng)用. Ko結(jié)合了針對(duì)單個(gè)幀的空間特征的卷積神經(jīng)網(wǎng)絡(luò)(CNN)和針對(duì)連續(xù)幀的時(shí)間特征的長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)[9]. 謝非等提出了一種基于膚色增強(qiáng)和分塊PCA的人臉檢測(cè)及表情識(shí)別方法[10].
人的聲音和表情可以直接反映人的情感. 在早期的研究中,情感識(shí)別往往使用單一模態(tài)數(shù)據(jù)進(jìn)行,導(dǎo)致識(shí)別精度通常較低. 為了解決單數(shù)據(jù)識(shí)別精度差的問(wèn)題,Kim等提出了一種同時(shí)使用語(yǔ)音和視頻兩種模式的情感識(shí)別系統(tǒng),將不同的模態(tài)數(shù)據(jù)一起使用可以提高系統(tǒng)識(shí)別的準(zhǔn)確性[11]. Hossain等提出了一種多方向回歸的視聽(tīng)情感識(shí)別系統(tǒng)[12],使用MDR和基于脊波變換的特征,用極限學(xué)習(xí)機(jī)進(jìn)行分類(lèi),獲得的準(zhǔn)確率為83.06%. 閆靜杰等提出了一種基于稀疏典型相關(guān)分析的特征融合方法,使用表情和語(yǔ)音數(shù)據(jù)獲得了60.09%的準(zhǔn)確率[13]. Jiang等提出了一種使用語(yǔ)音和面部特征來(lái)識(shí)別情緒的系統(tǒng),使用三態(tài)流DBN模型作為分類(lèi)器,在eNTERFACE數(shù)據(jù)庫(kù)中,準(zhǔn)確率為66.54%[14]. 在Kaya等的研究中,語(yǔ)音信號(hào)中的音頻特征、圖像幀中的密集特征以及基于卷積神經(jīng)網(wǎng)絡(luò)的圖像幀特征在評(píng)分級(jí)別上被融合以識(shí)別情緒[15].
梅爾頻率倒譜系數(shù)是目前應(yīng)用于情感識(shí)別中重要的聲學(xué)特征. 考慮到人類(lèi)的聽(tīng)覺(jué)特征,即人耳的靈敏度對(duì)頻率的感知并不是線性的,將普通頻率轉(zhuǎn)換為梅爾頻率,定義梅爾頻率如下:
圖1 梅爾頻率倒譜系數(shù)提取流程Fig.1 Extraction process of Mel spectrum
梅爾頻率倒譜系數(shù)(Mel-frequency cepstral coefficients,MFCC)是在Mel標(biāo)度頻率域提取出來(lái)的倒譜參數(shù),圖1所示為梅爾頻率倒譜系數(shù)提取流程.
預(yù)加重是為了提高語(yǔ)言的高頻部分,使頻譜變得更加平滑,一般將語(yǔ)音信號(hào)通過(guò)一個(gè)高通濾波器:
H(z)=1-μz-1,
式中,H(z)為傳遞函數(shù);μ為預(yù)加重系數(shù),取μ=0.97.為了平滑信號(hào),減弱頻譜泄露,使用漢明窗對(duì)信號(hào)進(jìn)行加窗處理:
式中,a的值不同會(huì)產(chǎn)生不同的漢明窗,一般情況下取a=0.46.
經(jīng)過(guò)一系列步驟,最終得到MFCC計(jì)算公式為:
式中,ml表示濾波器輸出的對(duì)數(shù);L是濾波器的個(gè)數(shù).
PyAudio庫(kù)可在系統(tǒng)中錄制音頻. 在錄音過(guò)程中,需要設(shè)置每個(gè)緩沖區(qū)的幀數(shù)、采樣位數(shù)、聲道模式及采樣頻率. 在使用過(guò)程中,首先實(shí)例化PyAudio庫(kù),打開(kāi)音頻數(shù)據(jù)流并分別傳入上述4個(gè)參數(shù),同時(shí)調(diào)用Wave庫(kù),不斷從音頻數(shù)據(jù)流中讀取Chunk寫(xiě)入文件流,最終得到一個(gè)完整的聲音文件. Wavio是一個(gè)python庫(kù),可以讀取wav文件,在打開(kāi)采集到的音頻后,依次對(duì)音頻對(duì)象進(jìn)行預(yù)加重、分幀、FFT、梅爾濾波等操作,就可以獲得音頻數(shù)據(jù)的梅爾頻率倒譜系數(shù)特征值.
可使用AlexNet卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行音頻的情感識(shí)別[16]. AlexNet的網(wǎng)絡(luò)結(jié)構(gòu)包括5個(gè)卷積層、3個(gè)池化層和3個(gè)全連接層. 多個(gè)卷積內(nèi)核可以提取數(shù)據(jù)源中的不同特征. 在前兩個(gè)卷積層后是最大池化層,之后第三、第四和第五卷積層直接相連,在第五個(gè)卷積層后是重疊的最大池化層,同時(shí)輸出將進(jìn)入全連接層. 全連接層可以為分類(lèi)器提供標(biāo)簽.
為了滿足情感識(shí)別過(guò)程的環(huán)境要求且并行加速計(jì)算過(guò)程,讓系統(tǒng)可以在更廣泛的范圍內(nèi)使用,需要將訓(xùn)練后的卷積神經(jīng)網(wǎng)絡(luò)運(yùn)行在Intel神經(jīng)網(wǎng)絡(luò)計(jì)算棒上. 為此,需進(jìn)行一些格式轉(zhuǎn)換,使得系統(tǒng)可以成功運(yùn)行. 神經(jīng)網(wǎng)絡(luò)計(jì)算棒的數(shù)據(jù)輸入格式僅接受由OpenVINO工具套件的模型優(yōu)化器生成的網(wǎng)絡(luò)中間表示IR,而模型優(yōu)化器可以接收ONNX格式的神經(jīng)網(wǎng)絡(luò),所以首先需將AlexNet神經(jīng)網(wǎng)絡(luò)生成對(duì)應(yīng)的ONNX格式模型,之后通過(guò)模型優(yōu)化器將ONNX格式轉(zhuǎn)換為網(wǎng)絡(luò)中間表示IR. 在轉(zhuǎn)換模型后,可在神經(jīng)網(wǎng)絡(luò)計(jì)算棒中使用推理引擎來(lái)預(yù)測(cè)收集的數(shù)據(jù). 此外,可將多線程和異步操作用于預(yù)測(cè),以提高神經(jīng)網(wǎng)絡(luò)計(jì)算棒的性能.
OpenCV中的VideoCapture類(lèi)可用來(lái)從攝像頭捕獲視頻或讀取圖像序列. 視頻數(shù)據(jù)從攝像頭拍攝后,每隔幾幀將視頻流中的圖片進(jìn)行人臉識(shí)別,使用Haar特征與級(jí)聯(lián)分類(lèi)器可以從圖片中切割人臉表情[17].
Haar特征是基于“塊”的特征,一般分為3類(lèi):邊緣特征、線性特征、中心特征和對(duì)角線特征. 特征模板內(nèi)有白色和黑色兩種矩形,并定義該模板的特征值為白色矩形像素和減去黑色矩形像素和,反映了圖像的灰度變化情況. Haar特征值的計(jì)算方法是將灰度化的圖像分為黑色和白色兩個(gè)區(qū)域,并計(jì)算白色區(qū)域W與黑色區(qū)域B的像素值之和的差值,乘以相應(yīng)的權(quán)重系數(shù)T,得到i區(qū)域Haar特征值:
積分圖是一種只遍歷一次圖像就可以求出圖像中所有區(qū)域像素和的快速算法,能夠提高圖像特征值計(jì)算的效率.對(duì)于灰度圖像中的任意一點(diǎn),其積分圖定義為:
其中,第0行和第0列為0,image(x,y)為點(diǎn)(x,y)處的原始灰度圖.
Adaboost是一種迭代算法,會(huì)挑選出一些最能代表人臉的矩形特征,按照加權(quán)投票的方式將多個(gè)弱分類(lèi)器構(gòu)造為強(qiáng)分類(lèi)器. 將訓(xùn)練得到的強(qiáng)分類(lèi)器串聯(lián)可以組成一個(gè)級(jí)聯(lián)結(jié)構(gòu)的層疊分類(lèi)器來(lái)提高分類(lèi)器的檢測(cè)速度. 得到識(shí)別出的人臉表情后,將切割到的人臉表情圖片中最大的一個(gè)經(jīng)如下轉(zhuǎn)換后可以作為卷積神經(jīng)網(wǎng)絡(luò)的輸入:
(1)從視頻流找到的最大的人臉圖片格式為ndarray,首先將其轉(zhuǎn)化成PIL Image類(lèi)型;
(2)重新設(shè)定大小,將輸入的PIL Image大小設(shè)置為48;
(3)在PIL Image中心進(jìn)行剪裁;
(4)隨機(jī)水平翻轉(zhuǎn)給定的PIL Image,翻轉(zhuǎn)概率為0.5;
(5)將PIL Image格式轉(zhuǎn)成Tensor格式,大小范圍為[0,1].
在得到Tensor格式的數(shù)據(jù)后,可以將其導(dǎo)入卷積神經(jīng)網(wǎng)絡(luò),對(duì)表情進(jìn)行情感識(shí)別.
本文利用TensorFlow處理進(jìn)行視頻數(shù)據(jù)的情感識(shí)別. 視頻識(shí)別的網(wǎng)絡(luò)由10個(gè)卷積層、4個(gè)池化層及 2個(gè)全連接層組成. 前4個(gè)卷積層后是池化層,第五、六卷積層是直接相連的,之后緊跟一個(gè)池化層,與之類(lèi)似,七、八卷積層與九、十卷積層后都緊跟一個(gè)池化層. 全連接層可以給分類(lèi)器提供標(biāo)簽. 圖2所示為視頻模型的網(wǎng)絡(luò)結(jié)構(gòu).
在預(yù)測(cè)當(dāng)前小片段的類(lèi)別時(shí),可能識(shí)別結(jié)果與前序結(jié)果完全相反. 由于情感一般是連續(xù)和平穩(wěn)的,在大多數(shù)情況下不會(huì)發(fā)生突變,系統(tǒng)在識(shí)別情感時(shí)需要結(jié)合之前的識(shí)別結(jié)果.
圖2 視頻模型網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Network structure of video model
數(shù)據(jù)采集需要分別處理系統(tǒng)輸入的語(yǔ)音流數(shù)據(jù)與視頻幀數(shù)據(jù). 從語(yǔ)音流中提取的梅爾頻率倒譜系數(shù)首先被用于卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,將訓(xùn)練后的網(wǎng)絡(luò)遷移至神經(jīng)網(wǎng)絡(luò)計(jì)算棒,后續(xù)通過(guò)OpenVINO推理引擎進(jìn)行情感識(shí)別. 對(duì)于視頻幀數(shù)據(jù),系統(tǒng)要通過(guò)OpenCV對(duì)幀進(jìn)行人臉檢測(cè),將檢測(cè)到的人臉輸入卷積神經(jīng)網(wǎng)絡(luò)來(lái)識(shí)別情感. 系統(tǒng)的兩種模式會(huì)同時(shí)進(jìn)行工作,圖3所示為情感識(shí)別系統(tǒng)整體的結(jié)構(gòu)框圖.
圖3 情感識(shí)別系統(tǒng)結(jié)構(gòu)框圖Fig.3 Module structure of the multimodal emotion recognition system
圖4 決策層融合基本流程Fig.4 The basic process of decision-level fusion
在單模態(tài)情感識(shí)別結(jié)束后,可得到分別由語(yǔ)音和視頻識(shí)別的結(jié)果. 為了提高系統(tǒng)總體的準(zhǔn)確率,需融合兩種模態(tài). 多模態(tài)融合通過(guò)不同模態(tài)之間的關(guān)聯(lián)性,將多個(gè)角度的數(shù)據(jù)結(jié)合,來(lái)提高總體識(shí)別準(zhǔn)確率. 決策層融合[18]是在提取不同模態(tài)的數(shù)據(jù)后,各自獨(dú)立地進(jìn)行情感分類(lèi),最后利用兩種模態(tài)的結(jié)果得到多模態(tài)的識(shí)別結(jié)果. 本文中決策層融合采用加權(quán)求和的方式:
p=w0·paudio+w1·pvideo,
式中,w0和w1分別為語(yǔ)音和視頻情感識(shí)別的權(quán)重,且w0+w1=1.
考慮到同一種感情不同人說(shuō)話會(huì)有不同的表現(xiàn)形式,而人的表情并不會(huì)因?yàn)槿说牟煌嗖钌踹h(yuǎn),因此對(duì)于視頻數(shù)據(jù)情感識(shí)別的權(quán)重要高于語(yǔ)音數(shù)據(jù). 圖4顯示了決策層融合的基本流程.
為了測(cè)試系統(tǒng)的有效性,多模態(tài)情感識(shí)別系統(tǒng)需檢查每個(gè)模塊的輸入和輸出,包括功能測(cè)試和非功能測(cè)試. 計(jì)算機(jī)的配置為i7-8550u,mx150,16G. 系統(tǒng)的Python開(kāi)發(fā)環(huán)境為Python3.7.3,系統(tǒng)版本為 Windows10 1903. 計(jì)算機(jī)中裝有OpenVINO R2020.2套件,并已進(jìn)行配置. 在此基礎(chǔ)上設(shè)計(jì)了系統(tǒng)的測(cè)試用例,測(cè)試用例涵蓋了每個(gè)模塊的功能. 經(jīng)測(cè)試顯示,所有結(jié)果均與預(yù)期相同.
系統(tǒng)對(duì)開(kāi)心、生氣與正常3種表情進(jìn)行識(shí)別. 語(yǔ)音識(shí)別模型使用營(yíng)業(yè)廳通話錄音作為數(shù)據(jù)集. 數(shù)據(jù)集按照8∶2的比例隨機(jī)劃分為訓(xùn)練集與測(cè)試集. 使用測(cè)試集對(duì)語(yǔ)音模型測(cè)試,其分類(lèi)準(zhǔn)確度為74.5%. 同時(shí),為了測(cè)試神經(jīng)網(wǎng)絡(luò)計(jì)算棒對(duì)系統(tǒng)性能的影響,選擇了不同長(zhǎng)度的音頻文件進(jìn)行測(cè)試.
表1顯示了對(duì)于相同時(shí)長(zhǎng)的音頻在不同硬件上的運(yùn)行時(shí)間,可以發(fā)現(xiàn),神經(jīng)網(wǎng)絡(luò)計(jì)算棒的運(yùn)行時(shí)間與高性能CPU相似,可以在性能較差的運(yùn)行環(huán)境中保持運(yùn)行速度.
視頻模型的數(shù)據(jù)集結(jié)合了Fer2013、CK+和GENKI數(shù)據(jù)集,訓(xùn)練集和測(cè)試集按8∶2進(jìn)行劃分,使用支持向量機(jī)和深度神經(jīng)網(wǎng)絡(luò)作為基線算法. 實(shí)驗(yàn)結(jié)果如表2所示,卷積神經(jīng)網(wǎng)絡(luò)識(shí)別準(zhǔn)確率為78.62%,召回率77.98%,優(yōu)于支持向量機(jī)和深度神經(jīng)網(wǎng)絡(luò)的識(shí)別準(zhǔn)確率. 圖5顯示了面部表情的混淆矩陣. 取w0=0.3,w1=0.7,系統(tǒng)經(jīng)過(guò)決策層融合,準(zhǔn)確率提升了3.4%. 系統(tǒng)測(cè)試效果如圖6所示. 相比于文獻(xiàn)[13]和[19],以及多流隱馬爾可夫模型[14]和異步DBN模型[14],本文方法可以得到相似或更高的準(zhǔn)確率.
表2 不同方法對(duì)情感的識(shí)別結(jié)果Table 2 Recognition results of different methods
表1 不同硬件所需時(shí)間的對(duì)比Table 1 Comparison table of time for different hardware
圖5 面部表情識(shí)別結(jié)果Fig.5 Recognition results of facial expressions
圖6 系統(tǒng)效果示意圖Fig.6 The schematic diagram of the system
為了測(cè)試系統(tǒng)的有效性,多模式情感識(shí)別系統(tǒng)需要檢查每個(gè)模塊的輸入和輸出,包括功能測(cè)試和非功能測(cè)試. 該系統(tǒng)基于瀏覽器/服務(wù)器架構(gòu)模式,系統(tǒng)非功能測(cè)試主要對(duì)兼容性和連接速度進(jìn)行測(cè)試. 兼容性測(cè)試是指系統(tǒng)對(duì)瀏覽器的支持. 經(jīng)測(cè)試,該系統(tǒng)功能無(wú)明顯異常,在主流瀏覽器中具有良好的兼容性,系統(tǒng)界面可以順利打開(kāi),沒(méi)有明顯的延遲和滯后.
針對(duì)傳統(tǒng)情感識(shí)別系統(tǒng)準(zhǔn)確率較低和往往需要高性能環(huán)境的問(wèn)題,本文設(shè)計(jì)和實(shí)現(xiàn)了一種軟硬結(jié)合的多模態(tài)情感識(shí)別系統(tǒng)以降低環(huán)境負(fù)載. 語(yǔ)音情感識(shí)別首先對(duì)每句語(yǔ)音進(jìn)行語(yǔ)音信號(hào)預(yù)處理,提取語(yǔ)音的梅爾頻率倒譜系數(shù)特征,將卷積神經(jīng)網(wǎng)絡(luò)遷移至神經(jīng)網(wǎng)絡(luò)計(jì)算棒對(duì)其進(jìn)行情感識(shí)別分類(lèi). 視頻情感識(shí)別使用Haar特征與級(jí)聯(lián)分類(lèi)器從圖片中切割人臉表情,通過(guò)卷積神經(jīng)網(wǎng)絡(luò)對(duì)表情進(jìn)行識(shí)別和分類(lèi). 實(shí)驗(yàn)結(jié)果表明,本研究采用的軟硬結(jié)合的多模態(tài)情感識(shí)別方法具有較高的識(shí)別準(zhǔn)確率,能夠在性能較差的運(yùn)行環(huán)境中保持運(yùn)行速度.