語音生成視頻論文:Audio-driven Talking Face Video Generation with Learning-based Personalized Head Pose

前言

近期在做語音驅動人臉視頻生成的相關工作,在學習過程中發現了幾篇比較好的論文。其中有一篇是清華大學在上個月發佈的,並且提供了源碼。這篇文章中我將解讀一下這篇論文:Audio-driven Talking Face Video Generation with Learning-based Personalized Head Pose,並給出展示效果。
總結論文輸入:任意輸入一個聲音和一個固定的300幀左右某人說話視頻,輸出某人說話的視頻。(聲音爲任意輸入的聲音)。

摘要

現實世界中經常說話的臉通常伴隨自然的頭部運動。但是大多數現有的說話人面部視頻生成方法僅考慮具有固定頭部姿勢的面部動畫。在本文中,提出一個深度神經網絡模型來解決此問題,該模型將源人的音頻信號A和目標人的非常短的視頻V作爲輸入,並輸出具有個性化特徵的合成高質量說話人臉視頻頭部姿勢(利用V中的視覺信息),表情和嘴脣同步(同時考慮A和V)。我們工作中最具挑戰性的問題是,自然的姿勢通常會導致面內和麪外頭部旋轉,這使合成的有聲面部視頻遠非現實。爲了應對這一挑戰,我們重建了3D人臉動畫並將其重新渲染爲合成幀。爲了將這些幀微調爲具有平滑背景過渡的逼真的幀,我們提出了一種新穎的內存增強GAN模塊。通過首先基於可公開獲取的數據集訓練通用映射並使用目標人員的輸入短視頻對映射進行微調,我們開發了一種有效的策略,該策略僅需要少量幀(約300幀)即可學習個性化的談話行爲包括頭部姿勢。大量的實驗和兩項用戶研究表明,我們的方法可以生成高質量(即,個性化的頭部運動,表情和良好的嘴脣同步)說話的面部視頻,這些面部視頻自然看起來比頭部狀態更具區別性。藝術方法。通過首先基於可公開獲取的數據集訓練通用映射並使用目標人員的輸入短視頻對映射進行微調,我們開發了一種有效的策略,該策略僅需要少量幀(約300幀)即可學習個性化的談話行爲包括頭部姿勢。大量的實驗和兩項用戶研究表明,我們的方法可以生成高質量(即,個性化的頭部運動,表情和良好的嘴脣同步)說話的面部視頻,這些面部視頻自然看起來比頭部狀態更具區別性。藝術方法。通過首先基於可公開獲取的數據集訓練通用映射並使用目標人員的輸入短視頻對映射進行微調,我們開發了一種有效的策略,該策略僅需要少量幀(約300幀)即可學習個性化的談話行爲包括頭部姿勢。大量的實驗和兩項用戶研究表明,我們的方法可以生成高質量(即,個性化的頭部運動,表情和良好的嘴脣同步)說話的面部視頻,這些面部視頻自然看起來比頭部狀態更具區別性。藝術方法。我們開發了一種有效的策略,只需要少量的幀(約300幀)即可學習個性化的談話行爲,包括頭部姿勢。大量的實驗和兩項用戶研究表明,我們的方法可以生成高質量(即,個性化的頭部運動,表情和良好的嘴脣同步)說話的面部視頻,這些面部視頻自然看起來比頭部狀態更具區別性。藝術方法。我們開發了一種有效的策略,只需要少量的幀(約300幀)即可學習個性化的談話行爲,包括頭部姿勢。大量的實驗和兩項用戶研究表明,我們的方法可以生成高質量(即,個性化的頭部運動,表情和良好的嘴脣同步)說話的面部視頻,這些面部視頻自然看起來比固定頭部狀態視頻更具區別性。(ps:翻譯原文)

1 介紹

文章介紹部分首先介紹了視覺和聲音是兩個關聯的東西,在虛擬現實和計算機視覺中有很多應用。而這篇論文集中解決人臉說話視頻,在之前的相關工作中都是固定人臉位置進行變化,有一定的缺陷。本篇論文可以通過神經網絡實現一個高質量的視頻並帶有頭部動作。之前從聲音獲取頭部姿態的相關研究也有,但是仍然具有挑戰。由於人臉頭部狀態會有一些變化,很難從二維空間進行學習,因此這篇論文提出使用3D 人臉動畫,再將動畫進行渲染成2D,在渲染完成之後匹配背景得到一個模糊的幀,再通過a novel memory-augmented GAN 去實現逼真度的實驗。這篇論文是最先解決任意人頭部姿態視頻生成。之前的相關工作可以生成奧巴馬的說話視頻但是需要很多數據,且只能是奧巴馬。並且論文在調整網絡時候只需要很短的視頻甚至圖片,再加上任意聲音片段就可以合成新的某人說話視頻。
文章主要工作有三個:

  1. 提出一個網絡可以得到高質量的頭部嘴部同步視頻
  2. 相比較特定人物視頻生成,該網絡可以實現自定的人物視頻。
  3. 在Lip reading in the wild數據中預訓練了網絡,因此後面只需要300幀視頻和語音就可以合成視頻。

2 相關工作

說話人臉視頻生成

人臉說話視頻可以由聲音和視頻兩種信號驅動。其中視頻信號驅動14,15,16,17.。。常用方法是將人臉的視頻轉成3DMM參數,之後通過Gan網絡學習,將我們輸入的人臉轉換成訓練人臉的說話視頻。類似於下圖但是效果應該會更好:
在這裏插入圖片描述
第二種方法是通過語音信號驅動,語音信號驅動又可以分爲特定人臉7,21和任意人臉2,4,8,9。在任意人臉中相關工作都是2D的。2D固有的問題就是人臉難以轉動,儘管有人在特定的情況下作了姿態變化,但是並沒有提供細節部分,因此本文使用了3D中的幾何學,實現頭部姿態
,表情和嘴部的合成。

3D 人臉重建

3D人臉是從2D圖片重建過來。常常使用3DMM表示和PCA參數降維。基於學習的方法[29,[30],[31,[32],[31,[34],35,[36],(37),[38],[39]使用CNN學習人臉圖像到3DMM參數的映射。爲了解決訓練數據不足的問題,一些方法使用合成數據[29,[30,[33,[38],而另一些方法使用無監督或弱監督學習[34],[35,[36],[39]。本文采用[39]方法進行三維人臉重建。

GAN網絡和記憶網絡

Kim等人使用GAN將渲染後的人臉圖像轉換爲真實的視頻幀。雖然這種方法可以取得很好的效果,但它只適用於特定的目標人羣,需要經過與該特定人羣相關的上千個樣本的訓練。不適合任意人物轉換。而記憶網絡因爲其可以保存過去的記憶,常用在問答和總結系統,在這篇論文通過GAN和記憶網絡結合可以對單個人的視頻幀進行微調。

3 本文工作

在本文中,我們解決的問題是生成高質量的說話人臉視頻,當給出一個人的語音講話和一個目標人的短視頻(約10秒)。除了學習語音語音到脣動和面部表情的轉換,我們的說話面孔生成還考慮了個性化的說話行爲(頭部姿勢)。
爲了實現上面的目標進行了兩個階段的實驗,整個流程如下圖所示:
在這裏插入圖片描述
階段一:使用LRW數據集從聲音中提取人臉表情和頭部姿勢,之後當我們輸入一個聲音和短視頻,會首先重建3D人臉,並且會微調網絡用來適應短視頻中的說話行爲,這個網絡最後會得到3D人臉動畫和個人的頭部姿勢。
階段二:從三維人臉動畫到現實的會說話的人臉視頻生成。 我們使用從輸入視頻中獲得的紋理和照明信息將3D面部動畫渲染成視頻幀… 帶着它 有限的信息,圖形引擎只能提供一個粗略的渲染效果,通常是不夠現實的高質量視頻。 把這些合成的框架提煉成現實的 我們提出了一種新的記憶GaN模塊。GaN模塊可以處理各種身份,並生成高質量的幀,其中包含與從輸入視頻中提取的人臉身份匹配的真實會話人臉。請注意上述的步驟中每個步驟有兩個小步驟:先在公開數據集中訓練好,再針對個人進行微調。

3D人臉重建

3D人臉重建採用了最新的方法,該方法使用CNN將人臉轉換成3D的參數。它使用CNN將三維人臉幾何、紋理和光照參數模型擬合到輸入人臉照片I中。最後輸的3DMM參數和聲音網絡提取的特徵結合,將3D人臉渲染成2D,再進行一個背景匹配。

從音頻中提取表情和姿勢

很容易知道聲音和嘴脣、下半臉動作有關,但如果忽略上半臉會造成一定的失去真。所以我們提取語音的信息和3D的幾何信息從輸入數據中心,並且建立一個語音到人臉表達和頭部變化的映射關係。雖然我們說同樣的話時候人各有差異,但是附錄A證明短期語音和pose有一定相關性。具體做法是:語音方面提取mfcc輸入到LSTM中去,然後得到表情和pose序列。公式定義如下:
在這裏插入圖片描述
之後描述了損失函數並且使用了L2正則化計算pose和expression梯度。

渲染和背景顏色匹配

渲染

完成語音網絡和3D特定人臉映射網絡之後,我們得到一個混合參數,其中身份、紋理和光照係數來自目標人物,表情和姿態係數來自音頻。將這些3D參數放入一個渲染網絡[36]中,完成渲染。在渲染過程中需要計算反照率,如果從得到係數中去計算會光滑,導致無法和真實的照片匹配。因此直接在上一節中得到的3D人臉中計算,效果更好一些。在映射中,使用詳細的反照率進行渲染,因爲LRW數據集中的視頻非常短(大約1秒)。 在個性化映射(即通過輸入短視頻進行調優)中,w 使用低頻反照率來容忍頭部姿態的變化,輸入視頻(約10秒)可以提供更多的目標人的訓練數據來微調合成的幀(渲染) 用低頻反照率變成現實的。

背景顏色匹配

生成人臉之後需要加頭髮和背景之類的,而文章說到模板匹配方法很不合適,我們輸入的幀已經很小了。本文提出了一種關鍵幀方法:選擇關鍵幀作爲在短時間內一個軸上頭部方向最大的幀,例如,最左或最右頭部姿態的幀,然後我們只匹配這些關鍵幀的背景。我們稱這些匹配的背景爲關鍵背景。對於相鄰關鍵幀之間的幀,我們使用線性插值來確定它們的背景。每一幀的姿態也被修改以適應背景。最後,通過包含匹配的背景來組裝整個渲染框架。如果只輸入一個信號人臉圖像I而不是一個短視頻,我們使用[30]中的人臉仿形方法將I旋轉到預測的姿態,從而獲得匹配的背景。

記憶Gan網絡渲染視頻幀

之前使用參考文獻36渲染的幀距離真實的視頻還有一定的距離,爲了讓該網絡能夠生成一個逼真的視頻,相比較生成特定一個人的視頻方法[14],提出了一個新的Gan網絡結構

在這裏插入圖片描述這個網絡挺複雜,需要好好琢磨,關於代碼部分我還在看,就不獻醜了。

實驗

環境是pytorch,gpu使用的titan xp代碼公開在:
這裏
效果可以從這裏查看:效果連接

實驗步驟

這一環節介紹了實驗步驟和微調的過程,首先呢作者通過訓練和預訓練發現300幀效果可以達到很好,太少的話會導致圖片學習的程度不夠。
在這裏插入圖片描述

部分環節暫停的效果

之後作者在實驗過程中逐步改進網絡,發現頭部移動和省份確定網絡的重要性。如下圖23行所示,第四行中加入制定人的網絡會導致網絡效果更好一些。
在這裏插入圖片描述

和最近研究方法進行比較

與特定人微調後的網絡比較

作者是第一個實現頭部動作,之前的方法(2,3,4行)都是固定的,結果如下圖所示,在這一節作者對視頻效果進行了主觀評價測試,發現本文方法比之前的方法提升效果顯著。
在這裏插入圖片描述

與本文的預訓練方法比較

由於之前相關工作沒有考慮到頭部,所以爲了公平起見,本文不使用特定人物視頻進行微調。結果顯示如下圖,還是可以看出本文的效果要好一些。
在這裏插入圖片描述

分析頭部動作的真實度

作者設計了一種方法計算生成頭部動作和真實的視頻之間的差距,並召集測試志願者。結果顯示該方法生成的頭部動作和原視頻相關性很好。

結論

總結了本文的工作,主要強調了2D–3D-2D方法可以解決頭部姿態問題,並且使用GAN網絡可以更接近真實視頻。總的來說該方法效果比之前的都要好。

附錄A

作者在研究所工作中發現聲音mfcc和頭部狀態是成正相關的。具體的方法是在一個區域內計算變化。詳情參照原文。

附錄 B

微調的視頻長度對結果的影響也很大,從圖中可以看出300幀效果剛剛好。
在這裏插入圖片描述

計劃

看完論文之後抓緊看懂代碼,找到數據集之後再進行擴展。
目前發現參考文獻中8,22,9有github源碼,但是作者對比試驗中參考文獻you said that ,ATVG暫時沒有搜到源碼。
數據集得去申請LRW,想用中文的,但是看有的人說效果不好。
github地址:

https://github.com/yiranran/Audio-driven-TalkingFace-HeadPose

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章