
Overview
本文首先提出了從端到端的網(wǎng)絡,從輸入的音頻直接推斷人臉表情變化對應的頂點位置的偏移量。為了解決聲音驅(qū)動過程中,情緒變化對表情驅(qū)動效果的影響,網(wǎng)絡自動從數(shù)據(jù)集中學習情緒狀態(tài)潛變量。運行推斷階段,可將情緒潛變量作為用戶輸入控制參數(shù),從而輸出不同情緒下的說話表情。
網(wǎng)絡結構
根據(jù)功能,網(wǎng)絡主要劃分為三個部分:頻率分析層(Formant Analysis Network)、發(fā)音分析層(Articulation Network)、頂點輸出層(Output Network)。
Formant Analysis Network
頻率分析層包括一個固定參數(shù)的自相關處層(autocorrelation)、以及5個卷積層。自相關層使用線性預測編碼(Linear Predictive Coding, LPC)提取音頻的前K個自相關系數(shù)。由于自相關系數(shù)描述了原始音頻信號共振峰的能量普分布,因此可以用系數(shù)來描述音頻的特征。自相關層以多幀音頻信號為輸入,經(jīng)過處理輸出WH的2D音頻特征圖。其中W表示幀數(shù),H表示自相關系數(shù)的維度。2D音頻特征圖再經(jīng)過五層的13的卷積,對自相關系數(shù)進行壓縮,最終輸出W*1的特征向量。語音處理層的網(wǎng)絡結構如下所示:

語音單幀時間長度為16ms,因此語音處理網(wǎng)絡主要是針對音頻的短時特征進行提取,包括語調(diào)、重音、以及特殊音位信息等。
Articulation Network
語音處理層輸出的音頻特征向量維度為。其中256為特征圖的通道數(shù)。發(fā)音分析層包含5個卷積層,每層的卷積核為3*1,用于在時序上提取相鄰序列幀的關聯(lián)特征,輸出發(fā)音特征圖。由于發(fā)音不僅與聲音頻率相關,而且與說話者的情緒和類型等緊密相關。語音處理層同時接受訓練提取的情緒狀態(tài),向量長度為E,直接連接到發(fā)音特征圖,與發(fā)音特征圖聯(lián)合學習與表情的關系。語音處理層的網(wǎng)絡結構如下圖所示:

經(jīng)過語音處理層處理后,最終輸長度為(256+E)的特征向量,其中256為音頻特征,E為情緒特征。在訓練階段,情緒向量的輸入為E維的隨機高斯分布采樣。針對帶情緒的輸入樣本,訓練過程中存儲語音處理層輸出的特征向量,其中的E維特征向量即為自動學習到的該訓練樣本數(shù)據(jù)所蘊含的情緒狀態(tài)。將不同情緒數(shù)據(jù)下學習到的情緒特征向量組合構成了情緒狀態(tài)矩陣。在推斷過程中,用戶可以選擇該矩陣的任意一組向量作為情緒輸入(而非隨機高斯分布采樣),控制輸出表情中包含指定的情緒。亦可通過線性組合不同的情緒向量作為輸入,從而產(chǎn)生包含新情緒的表情動畫。通過此中自動學習數(shù)據(jù)中蘊含的情緒,避免了手工標數(shù)據(jù)集的注情緒狀態(tài)標簽所造成的歧義和不準確性。情緒特征向量并沒有實際的語義信息,因此并不能通過one-hot向量來描述不同的情緒,一個語義明確的情緒對應的情緒向量可能每一維度值都有取值。
情緒狀態(tài)的學習有些類似基于編碼解碼器模型思想。通過輸入隨機變量,自動學習與輸出目標對應的潛變量。在推斷過程中,利用潛變量輸入給解碼器即可還原對應的輸入。
Output Network
語音處理層輸出的(256+E)維的特征向量即為從訓練集上學習到的人臉說話表情動畫的特征。輸出網(wǎng)絡通過兩層全連接層實現(xiàn)從特征到人臉表情頂點坐標的映射。第一層實現(xiàn)了從語音特征到人臉表情基系數(shù)的映射,第二層實現(xiàn)了從表情系數(shù)到每個頂點坐標值的映射。第二層的權重矩陣對應的其實就是傳統(tǒng)表情驅(qū)動中的多線性人臉表情模型,因此可以預先用150個預計算的PCA分量進行初始化。輸出網(wǎng)絡的結構圖如下所示:

Loss Functions
損失函數(shù)包括三項,分別為位置項、運動項、以及情緒正則項。對于包含多項的損失函數(shù),一個較大的挑戰(zhàn)在于如何給各項選擇合適的權重值,用于調(diào)和量綱的不同以及重要程度。論文對每一項都進行歸一化處理,避免了額外增加權重。
Position term: 位置項,描述了網(wǎng)絡預測的人臉表情與gt人臉表情之間的逐頂點均方差值:
其中V為人臉模型的頂點數(shù)。y描述的是將所有頂點按照分量展開后組成的長度為3V的向量。
Motion term: 運動項。位置項只約束了單幀預測的誤差,沒有考慮幀間的關系,容易導致幀間表情動作的波動,通過約束預測輸出幀間頂點運動趨勢與數(shù)據(jù)集上頂點在幀間運動趨勢一致,可以有效避免表情動作的抖動,保證動作的平滑。訓練通常采用minbatch策略。假設minbatch中訓練樣本數(shù)為B,則按相鄰兩幀為一組,劃分為B/2組,計算組內(nèi)前后兩幀輸出差值,作為頂點運動速度。計算符號定義為m[.],則運動項的定義為:
Regularization term: 正則項。為了避免學習到的情緒狀態(tài)包含跟語音特征相似的特征,需要網(wǎng)絡能夠自動區(qū)分學習語言音頻發(fā)音特征和情緒特征??紤]到語音頻率的短時變化性,情緒在相對較長時間是不變的,可以通過約束情緒狀態(tài)特征變化過快來引導網(wǎng)絡通過音頻發(fā)音特征描述短時的語音變化,而情緒特征描述長時的情緒變化。通過直接約束兩幀情緒狀態(tài)的變化速度為0即可達到目標:
其中表示訓練樣本x時對應的情緒狀態(tài)特征向量的第i個分量。為了避免網(wǎng)絡通過增大權重,而抑制e變量各分量為0來滿足該正則項要求,通過借鑒BN的思想,對其進行歸一化處理:
模型訓練
訓練數(shù)據(jù)集
訓練數(shù)據(jù)集包含兩個專業(yè)人員的面部表情數(shù)據(jù)。錄制采用專業(yè)的動捕設備獲取9個角度的數(shù)據(jù)數(shù)據(jù),通過多角度重建技術獲得每幀的3D人臉數(shù)據(jù),并逐幀對齊到標準人臉模版從而得到拓撲一致的逐幀表情數(shù)據(jù)。錄制人員通過不同情緒分別說出三句全字母句,用于盡可能的包含不同字母的發(fā)音。此外通過角色帶入的方式說出指定的劇本,以便獲得更多的情緒。兩個錄制人員各自錄制3~5分鐘,分別包含了9034幀和6762幀。
數(shù)據(jù)預處理
每個輸入的聲音樣本長度為520ms,其中前260ms表示前向過去的聲音,后260ms表示后向?qū)淼穆曇?,其對應到?60ms處的表情模型。聲音樣本被切分為64個音頻幀,每幀的長度為16ms。相鄰音頻幀之間有8ms的重疊。每個音頻幀均勻采樣256個點,通過采樣點間的相關分析,得到32個自相關系數(shù)。因此一個音頻幀對應一個32維的音頻特征,一個輸入聲音樣本,經(jīng)過頻率分析,得到尺寸為64*32的2D共振峰特征圖,作為網(wǎng)路的輸入。
此外,音頻數(shù)據(jù)通過隨機前后偏移至多16.6ms的方式來增強數(shù)據(jù)。此外還對每個卷積層的輸入增加倍增噪聲,并作用在偏置上。
訓練參數(shù)設置
使用Adam優(yōu)化器,訓練的epoch=500,minbatch設置為100,學習率按照10折方式衰減。情緒輸入值采樣自零均值高斯噪聲。其中第一個角色E=16,噪聲方差為0.01,第二個角色E=24,噪聲方差為0.002。
模型推斷
情緒狀態(tài)篩選
由于網(wǎng)絡無法完全準確的區(qū)分和學習音頻和情緒特征,很多學習到的情緒特征仍然也只提取了鄰近幀區(qū)間的特征,不適合用于泛化。主要原因是數(shù)據(jù)集中本身過小,無法完整的覆蓋所觀察的情緒下所有不同的音位和發(fā)音變化,這樣導致無法準確的將情緒從音頻特征中剝離。
通過觀察,發(fā)現(xiàn)很多學習到的情緒特征抑制了嘴部的動作。通過從驗證集中選擇若干包括明顯張閉嘴的音頻樣本,在樣本上使用逐條輸入情緒特征,只保留輸出嘴部動作與gt一致的情緒特征輸入。通過此過濾,最終備選的情緒狀態(tài)向量只有100條。
對備選的情緒狀態(tài)在音頻驗證集上逐一驗證,剔除輸出結果明顯不符或者表情不太自然的情緒輸入,剔除后備選情緒向量只有86條。最后,在未見過的說話者的音頻數(shù)據(jù)上使用類似的方式進一步剔除,最終保留33條情緒狀態(tài)向量。
實際驅(qū)動過程中,給定一段音頻數(shù)據(jù),并從33條情緒狀態(tài)向量中選擇一條作為情緒輸入,即可得到對應情緒狀態(tài)下的人臉說話表情動畫。給定不同的情緒輸入,即可得到相同音頻輸入下,不同的情緒動畫效果。
動畫遷移
目前網(wǎng)絡輸出的表情動畫只能作用在固定的人臉模型上,為了能夠驅(qū)動其它卡通形象,可以通過Deformation Transfer等技術實現(xiàn)。
總結
相對前面兩篇文章,本文采用了端到端的學習方法,并且綜合考慮了情緒的因素,情緒也是由網(wǎng)絡自行學習得到,而無需數(shù)據(jù)標注。由于該方法是直接輸出表情的頂點坐標,因此驅(qū)動其它角色時,需要進行變形遷移。此外,直接輸出頂點坐標意味著如果希望預測效果好,則gt的表情坐標值進度需要足夠的高。情緒向量的篩選需要通過手工方式完成,工作量較大。