聽(tīng)說(shuō)現(xiàn)在趕火車(chē)刷臉就進(jìn)站了!跟臉有關(guān)的最新玩法是你說(shuō)什么,表情包就演什么
十一結(jié)束,假期開(kāi)工返鄉(xiāng)潮仍在繼續(xù)。就在昨日,一則視頻刷爆朋友圈。
視頻里,北京、廣州、上海、成都、武漢的火車(chē)站都相繼開(kāi)通自助“刷臉”進(jìn)站通道。
乘客驚呼“連化妝和美瞳都能識(shí)別出來(lái),太神奇!”
其實(shí),刷臉早已不是什么新鮮事了!我們今天來(lái)聊一個(gè)更好玩的事兒,那就是你說(shuō)話,AI給你配表情。讓你做個(gè)真正的虛擬人兒。
文章略枯燥,技術(shù)性的話術(shù)有點(diǎn)多,普通小白估計(jì)看起來(lái)夠嗆。技術(shù)宅們,上!
SIGGRAPH 2017曾經(jīng)收錄過(guò)英偉達(dá)的一篇關(guān)于3D動(dòng)畫(huà)人物面部表情研究的論文:Audio-Driven Facial Animation by Joint End-to-End Learning of Pose and Emotion,在該論文中,英偉達(dá)展示了通過(guò)音頻輸入實(shí)時(shí)、低延遲驅(qū)動(dòng)3D面部表情的機(jī)器學(xué)習(xí)技術(shù),從而實(shí)現(xiàn)了虛擬人物面部表情和音頻輸入***配合。
圖1. 根據(jù)語(yǔ)音推斷臉部動(dòng)畫(huà)的深度神經(jīng)網(wǎng)絡(luò)
讓我們先從這張圖開(kāi)始吧。以下“我們”一詞為論文作者的***人稱(chēng)。
當(dāng)網(wǎng)絡(luò)的輸入為時(shí)長(zhǎng)大約半秒的音頻時(shí),輸出是與音頻窗口的中心相對(duì)應(yīng)的固定拓?fù)渚W(wǎng)格的3D頂點(diǎn)位置。該網(wǎng)絡(luò)還有一個(gè)用于描述情緒狀態(tài)的二次輸入。其神經(jīng)網(wǎng)絡(luò)直接從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)情緒狀態(tài),不進(jìn)行任何形式的預(yù)標(biāo)記(pre-labeling)。
我們提出了一種通過(guò)低延遲的實(shí)時(shí)音頻輸入驅(qū)動(dòng)3D面部動(dòng)畫(huà)的機(jī)器學(xué)習(xí)算法。我們的深度神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)從輸入音頻波形到臉部模型的3D頂點(diǎn)坐標(biāo)的映射,同時(shí)還能找到一個(gè)簡(jiǎn)潔的隱藏代碼,這個(gè)代碼可以用來(lái)區(qū)分只根據(jù)音頻無(wú)法解釋的面部表情變化。在進(jìn)行干預(yù)時(shí),隱藏代碼可以作為面部動(dòng)畫(huà)情緒狀態(tài)的直覺(jué)控制(intuitive control)。
我們使用基于視覺(jué)的傳統(tǒng)表演捕捉法(performance capture methods)獲取了3-5分鐘的高質(zhì)量動(dòng)畫(huà)數(shù)據(jù),并用這些數(shù)據(jù)對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行了訓(xùn)練。我們的主要目標(biāo)是模擬單個(gè)表演者的說(shuō)話風(fēng)格;在用戶研究中,當(dāng)我們用不同性別、口音或講不同語(yǔ)言的說(shuō)話者的語(yǔ)音驅(qū)動(dòng)模型時(shí),我們也能得到不錯(cuò)的結(jié)果。這些結(jié)果可應(yīng)用于游戲?qū)υ?、低成本本地化、虛擬現(xiàn)實(shí)頭像和遠(yuǎn)程呈現(xiàn)等技術(shù)中。
CCS 概念: • 計(jì)算方法論→動(dòng)畫(huà);神經(jīng)網(wǎng)絡(luò);基于回歸的監(jiān)督學(xué)習(xí);學(xué)習(xí)隱藏表征;其他關(guān)鍵詞:面部動(dòng)畫(huà)、深度學(xué)習(xí)、音頻
端對(duì)端網(wǎng)絡(luò)架構(gòu)
下面我們將闡述該網(wǎng)絡(luò)的架構(gòu),以及關(guān)于音頻處理和從語(yǔ)音內(nèi)容中分離出情緒狀態(tài)的細(xì)節(jié)。
輸入一小段音頻窗口,神經(jīng)網(wǎng)絡(luò)的任務(wù)是推斷該音頻窗口(window)中心的面部表情。我們將表情直接表示為面部固定拓?fù)渚W(wǎng)格中某一無(wú)情緒姿態(tài)(neutral pose)的逐頂點(diǎn)差分向量。當(dāng)訓(xùn)練好網(wǎng)絡(luò)后,我們通過(guò)在音頻軌道滑動(dòng)窗口來(lái)將網(wǎng)格變成動(dòng)畫(huà),在每個(gè)時(shí)間步長(zhǎng)上對(duì)網(wǎng)絡(luò)進(jìn)行獨(dú)立評(píng)估。雖然網(wǎng)絡(luò)本身沒(méi)有關(guān)于前幾幀動(dòng)畫(huà)的記憶,但是在實(shí)踐中它可以生成暫時(shí)穩(wěn)定的結(jié)構(gòu)。
架構(gòu)概覽
我們的深度神經(jīng)網(wǎng)絡(luò)由一個(gè)特殊用途層、10個(gè)卷積層以及2個(gè)完全連接層構(gòu)成。我們將其切分為3個(gè)概念單元,如圖1和表1所述。
我們先將音頻窗口輸入到一個(gè)共振峰分析網(wǎng)絡(luò)中,生成一個(gè)隨時(shí)間變化的語(yǔ)音特征序列,之后我們會(huì)用這個(gè)序列驅(qū)動(dòng)發(fā)音。該神經(jīng)網(wǎng)絡(luò)先利用固定函數(shù)自相關(guān)分析從音頻中提取出原始共振峰信息(請(qǐng)看原文第3.2節(jié)),然后再用其中5個(gè)卷積層優(yōu)化這些信息。通過(guò)訓(xùn)練,卷積層可以學(xué)習(xí)提取對(duì)面部動(dòng)畫(huà)有用的短期特征(shortterm features),例如語(yǔ)調(diào)、重讀和特定音素。第5個(gè)卷積層的輸出就是此類(lèi)特征隨時(shí)間變化的抽象表示。
接下來(lái),我們將結(jié)果輸入到一個(gè)發(fā)音神經(jīng)網(wǎng)絡(luò)中。這個(gè)網(wǎng)絡(luò)由5個(gè)卷積層構(gòu)成,這些卷積層可以分享特征的時(shí)序變化,并最終確定一個(gè)用于描述音頻窗口中心面部姿態(tài)的抽象特征向量。
將情緒狀態(tài)的(學(xué)習(xí))描述作為二次輸入連接到該發(fā)音神經(jīng)網(wǎng)絡(luò)中,用以區(qū)分不同的面部表情和說(shuō)話風(fēng)格(請(qǐng)看原文第3.3節(jié))。我們將情緒狀態(tài)表示為一個(gè)E維向量,直接將其與發(fā)音神經(jīng)網(wǎng)絡(luò)每層的輸出連接在一起,這樣之后的層就可以相應(yīng)地改變它們的行為。
每個(gè)l層都會(huì)輸出 Fl×Wl×Hl激活函數(shù),其中Fl 是抽象特征映射的數(shù)量,Wl是時(shí)間軸的維度,Hl是共振峰周的維度。在共振峰分析網(wǎng)絡(luò)中,我們使用1×3的strided convolution逐漸減小Hl,逐漸增加Fl,也就是使原始共振峰信息向抽象特征偏移,直到Hl= 1且Fl = 256為止。同樣,在發(fā)音神經(jīng)網(wǎng)絡(luò)中,我們利用3×1卷積減小Wl,也就是通過(guò)結(jié)合不同時(shí)間域(temporal neighborhood)的信息來(lái)對(duì)時(shí)間軸進(jìn)行二次采樣(subsample)。
我們選擇了表1中列出的特定參數(shù),因?yàn)槲覀儼l(fā)現(xiàn)這些參數(shù)在用數(shù)據(jù)集訓(xùn)練的過(guò)程中始終表現(xiàn)良好,同時(shí)也保證了合理的訓(xùn)練次數(shù)。雖然得出的結(jié)果對(duì)層數(shù)或特征映射并不是很敏感,但是我們發(fā)現(xiàn)我們必須對(duì)兩個(gè)不同階段中的卷積進(jìn)行調(diào)整以避免出現(xiàn)過(guò)度擬合。重要的是,共振峰分析網(wǎng)絡(luò)在時(shí)間軸的每一個(gè)點(diǎn)上都執(zhí)行相同的操作,因此我們可以在不同的時(shí)間偏移(time offsets)中使用相同的訓(xùn)練樣本。
發(fā)音神經(jīng)網(wǎng)絡(luò)輸出一系列共同表示目標(biāo)面部姿態(tài)的256+E抽象特征,。我們將這些特征輸入到一個(gè)輸出神經(jīng)網(wǎng)絡(luò)(output network)中,以在跟蹤網(wǎng)格中生成5022個(gè)控制頂點(diǎn)的最終3D位置。該輸出網(wǎng)絡(luò)是一對(duì)可以對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單線性轉(zhuǎn)換的全連接層。***層將輸入特征集映射到線性基本函數(shù)的權(quán)重上,第二層計(jì)算對(duì)應(yīng)基向量(basis vectors)的加權(quán)總和,用它來(lái)表示最終頂點(diǎn)位置。我們將第二層預(yù)設(shè)為150個(gè)預(yù)先計(jì)算的PCA模塊,這些模塊總體可以解釋訓(xùn)練數(shù)據(jù)99.9%的變化。理論上,我們可以用一個(gè)固定的基準(zhǔn)來(lái)有效地訓(xùn)練先前的層,生成150個(gè)PCA系數(shù)。但是我們發(fā)現(xiàn),在訓(xùn)練中任由基向量自行變化得出的結(jié)果反而更好一些。
音頻處理
網(wǎng)絡(luò)的主要輸出是語(yǔ)音音頻信號(hào),在信號(hào)輸入到網(wǎng)絡(luò)之前我們將其轉(zhuǎn)換為16 kHz單聲道信號(hào)。在試驗(yàn)中,我們對(duì)每個(gè)聲道的音量(volume)進(jìn)行正則化,以確??梢岳猛暾膭?dòng)態(tài)范圍[-1,+1],但是我們并沒(méi)有進(jìn)行任何諸如動(dòng)態(tài)范圍壓縮、降噪任何處理或預(yù)加強(qiáng)濾波器(pre-emphasis filter)的處理。
表1中的自相關(guān)層將輸入音頻窗口轉(zhuǎn)化為一個(gè)簡(jiǎn)潔的2D表達(dá),之后的卷積層?!墩Z(yǔ)音生成source–filter模型》(filter model of speech production)[Benzeghiba等人. 2007;Lewis 1991]這篇論文啟發(fā)我們提出了這種方法,他們將音頻信號(hào)建模為線性濾波器(聲道)和激勵(lì)信號(hào)(聲帶)的混合體。眾所周知,線性濾波器的共振頻率(共振峰)攜帶有關(guān)于語(yǔ)音的音素內(nèi)容的重要信息。激勵(lì)信號(hào)可以表示說(shuō)話者聲音的音調(diào)、音色和其他特征,我們假設(shè)對(duì)面部動(dòng)畫(huà)而言這種信號(hào)并不重要,因此我們主要借助共振峰來(lái)改善網(wǎng)絡(luò)對(duì)不同說(shuō)話者的泛化。
線性預(yù)測(cè)編碼(LPC)執(zhí)行信號(hào)濾波器分離(source–filter separation)的標(biāo)準(zhǔn)方法。LPC將信號(hào)斷為數(shù)個(gè)短幀信號(hào),根據(jù)***自相關(guān)系數(shù)K計(jì)算出每幀信號(hào)的線性濾波器系數(shù),并執(zhí)行反向?yàn)V波以提取激勵(lì)信號(hào)。濾波器的共振頻率完全取決于自相關(guān)系數(shù)的值,因此我們選擇跳過(guò)大部分處理步驟,將自相關(guān)系數(shù)直接作為瞬時(shí)共振峰信息的表征。這種方法在直覺(jué)上可行,因?yàn)樽韵嚓P(guān)系數(shù)本質(zhì)上表示的是一種壓縮形式的信號(hào),其頻率信息與原始信號(hào)的頻譜(power spectrum)基本匹配。這種表示非常適合卷積網(wǎng)絡(luò),因?yàn)榫矸e層可以輕易地學(xué)習(xí)如何估計(jì)特定頻帶的瞬時(shí)頻譜。
在試驗(yàn)中,我們將520ms的音頻作為輸入(關(guān)于預(yù)計(jì)輸出姿態(tài)的260ms歷史樣本和260ms未來(lái)樣本)。我們選擇這個(gè)數(shù)值的原因是,它可以使我們?cè)诓幌蚓W(wǎng)絡(luò)提供過(guò)多數(shù)據(jù)(這樣會(huì)導(dǎo)致過(guò)度擬合)的情況下捕捉到諸如音素協(xié)同發(fā)音的相關(guān)效應(yīng)。我們將輸出音頻窗口分為64個(gè)重疊為2x的音頻幀,這樣每幀音頻都對(duì)應(yīng)16ms(256個(gè)樣本),并且連續(xù)的幀數(shù)之間間隔8ms(128個(gè)樣本)。在每幀音頻中,我們移除直流分量(DC component),用標(biāo)準(zhǔn)Hann窗口減緩時(shí)間域混疊效應(yīng)(temporal aliasing effects)。***,我們計(jì)算出自相關(guān)系數(shù)K = 32,總共獲得了64×32個(gè)輸入音頻窗口標(biāo)量。雖然自相關(guān)系數(shù)小一點(diǎn)(例如K = 12)也足以確認(rèn)單個(gè)音素,但是我們選擇更多地保留關(guān)于原始信號(hào)的信息,以確保之后的層也可以檢測(cè)出音調(diào)變化。
我們的方法不同于語(yǔ)音識(shí)別領(lǐng)域先前的絕大多數(shù)方法,這些方法的分析步驟通常都基于某一種專(zhuān)用的方法,例如梅爾頻率倒譜系數(shù)(MFCC)、感知線性預(yù)測(cè)系數(shù)(PLP)和rasta filtering [Benzeghiba等人. 2007]。這些方法之所以被廣泛采用是因?yàn)樗鼈兛梢院芎玫鼐€性分離音素,非常適合隱馬爾科夫模型(Hidden Markov Models)。在我們的早期測(cè)試中,我們嘗試了幾種不同的輸入數(shù)據(jù)表征,結(jié)果發(fā)現(xiàn)我們方法的自相關(guān)系數(shù)明顯更好。
圖2.表演者不說(shuō)話時(shí)動(dòng)畫(huà)是什么樣?這些是從表演者不說(shuō)話的訓(xùn)練集中抽取的樣本幀。
情緒狀態(tài)的表征
根據(jù)語(yǔ)音推斷面部動(dòng)畫(huà)本身就是一個(gè)不明確任務(wù),因?yàn)橥徽Z(yǔ)音可以對(duì)應(yīng)不同表情。這一點(diǎn)尤其體現(xiàn)在眼睛和眉毛上,因?yàn)樗鼈兣c語(yǔ)音的生成無(wú)任何直接關(guān)系。用深度神經(jīng)網(wǎng)絡(luò)處理此類(lèi)不明確任務(wù)相當(dāng)困難,因?yàn)橛?xùn)練數(shù)據(jù)必然會(huì)涵蓋幾乎相同的語(yǔ)音輸入生成大不相同的輸出姿態(tài)的情況。圖2給出了幾個(gè)當(dāng)輸入音頻剪輯完全無(wú)聲音時(shí)產(chǎn)生矛盾訓(xùn)練數(shù)據(jù)的實(shí)例。如果網(wǎng)絡(luò)除了音頻數(shù)據(jù)還有其他可用的數(shù)據(jù),它就會(huì)學(xué)習(xí)輸出矛盾輸出的統(tǒng)計(jì)均值。
我們解決這些不明確任務(wù)的方法是向網(wǎng)絡(luò)提供一個(gè)二次輸入。我們將每個(gè)訓(xùn)練樣本都與一小部分附加的隱藏?cái)?shù)據(jù)關(guān)聯(lián)起來(lái),這樣網(wǎng)絡(luò)就有足夠的信息用來(lái)明確地推斷出正確的輸出姿態(tài)。理想情況下,這些附加數(shù)據(jù)應(yīng)編碼給定樣本時(shí)間域內(nèi)所有無(wú)法根據(jù)音頻本身推斷出的動(dòng)畫(huà)相關(guān)特征,包括不同的表情、說(shuō)話風(fēng)格和自相關(guān)模式等。通俗地說(shuō),我們希望二次輸入能代表表演者的情緒狀態(tài)。除了能消除訓(xùn)練數(shù)據(jù)中的歧義,二次輸入還對(duì)推斷很有幫助——它可以使我們能夠?qū)⒉煌那榫w狀態(tài)于同一給定聲帶混合并匹配在一起,以有效地控制得出的動(dòng)畫(huà)。讓動(dòng)畫(huà)實(shí)現(xiàn)情緒狀態(tài)的其中一種方法是,根據(jù)明顯的情緒對(duì)訓(xùn)練樣本進(jìn)行標(biāo)記或分類(lèi)[Anderson等人. 2013;Cao等人. 2005;Deng等人. 2006;Wampler 等人. 2007]。
這種方法并不算理想,但是因?yàn)樗鼰o(wú)法保證預(yù)定義的標(biāo)記可以充分消除訓(xùn)練數(shù)據(jù)中的歧義。我們并沒(méi)有選擇依賴(lài)預(yù)定義的標(biāo)記,而是采用了一種由數(shù)據(jù)驅(qū)動(dòng)的方法。在這種方法的訓(xùn)練過(guò)程中,網(wǎng)絡(luò)自動(dòng)學(xué)習(xí)情緒狀態(tài)的簡(jiǎn)明表征。這樣只要給出足夠多樣的情緒,我們甚至可以從in-character片段(in-character footage)中提取出有意義的情緒狀態(tài)。我們將情緒狀態(tài)表示為E維向量,其中E是一個(gè)可調(diào)參數(shù),在測(cè)試中我們將其設(shè)定為16或24,并初始化從高斯分布中提取出的隨機(jī)值的分量(components。)。
給每個(gè)訓(xùn)練樣本都分配這樣一個(gè)向量,我們將保存這些隱藏變量的矩陣稱(chēng)為“情緒數(shù)據(jù)庫(kù)”。如表1所示,發(fā)音神經(jīng)網(wǎng)絡(luò)所有的層的激活函數(shù)后都附有情緒狀態(tài)。這樣情緒狀態(tài)就作為損失函數(shù)(請(qǐng)看原文第4.3節(jié))computation graph(計(jì)算圖)的一部分;由于E是一個(gè)可訓(xùn)練的參數(shù),因此在進(jìn)行反向傳播時(shí)它會(huì)隨著網(wǎng)絡(luò)權(quán)重的更新而更新。E維度兩種效應(yīng)之間的均衡。如果E太低,情緒狀態(tài)就無(wú)法消除訓(xùn)練數(shù)據(jù)變化的歧義,導(dǎo)致出現(xiàn)不理想的音頻反映。如果E太高,所有情緒狀態(tài)就會(huì)變得太過(guò)狹義,無(wú)法用于一般推斷(請(qǐng)看原文第5.1節(jié))。
情緒數(shù)據(jù)庫(kù)的有這樣一個(gè)潛在問(wèn)題:如果我們不能有效地限制情緒數(shù)據(jù)庫(kù),它可能會(huì)學(xué)習(xí)明確地保存音頻中呈現(xiàn)的信息。如果不加限制,它可能會(huì)保存確定大部分面部表情的E blend形狀權(quán)重(E blend shape weights),弱化音頻的作用,并使網(wǎng)絡(luò)無(wú)法處理訓(xùn)練中未出現(xiàn)出的數(shù)據(jù)。
按照設(shè)計(jì),音頻數(shù)據(jù)提供的信息應(yīng)僅限于520ms間隔內(nèi)的短期效應(yīng)。因此,我們可以通過(guò)禁止情緒狀態(tài)包含短期變化來(lái)防止它們包含重疊信息。情緒狀態(tài)專(zhuān)門(mén)包含長(zhǎng)期效應(yīng)對(duì)推斷也很有幫助——當(dāng)情緒狀態(tài)保持不變時(shí),我們也希望網(wǎng)絡(luò)能生成合理的動(dòng)畫(huà)。為此,我們可以通過(guò)在損失函數(shù)中引入一個(gè)專(zhuān)用的正則項(xiàng)來(lái)懲罰情緒數(shù)據(jù)庫(kù)中的快速變化,這樣在訓(xùn)練過(guò)程中情緒狀態(tài)就會(huì)逐漸平緩。我們的方法有一個(gè)較大的局限,我們無(wú)法正確模擬眨眼和眼部動(dòng)作,因?yàn)樗鼈兣c音頻無(wú)任何關(guān)系,也無(wú)法通過(guò)緩慢變化的情緒狀態(tài)來(lái)表示。
雖然在發(fā)音神經(jīng)網(wǎng)絡(luò)所有的層上都連接情緒狀態(tài)似乎有些多余,但是我們發(fā)現(xiàn)在實(shí)踐中這樣做可以大幅改善結(jié)果。我們認(rèn)猜測(cè)這是因?yàn)榍榫w狀態(tài)的作用是在多個(gè)抽象層(abstraction level)上控制動(dòng)畫(huà),通常抽象層越高學(xué)習(xí)難度就越大。連接靠前的層可以實(shí)現(xiàn)對(duì)精細(xì)動(dòng)畫(huà)特征(如協(xié)同發(fā)音)的精確控制,而連接靠后的層則只能加強(qiáng)對(duì)輸出姿態(tài)的直接控制。直覺(jué)上,當(dāng)單個(gè)姿態(tài)得到很好的表示時(shí),情緒狀態(tài)訓(xùn)練早期應(yīng)連接靠后的層,而到了訓(xùn)練后期則應(yīng)連接靠前的層。