眨眼算什么,让蒙娜丽莎像你一样唠上嗑才算硬核
第一次寫文章還把蒙娜麗莎名字寫錯了,原諒四川人我N、L不分,蒙娜麗莎表示有很多話要說。這不,三星莫斯科AI中心和Skolkovo 科學技術研究所(DeepWarp也是他們的作品)在19年5月份就發表了一篇論文,文章中提出的talking head模型,讓蒙娜麗莎說上了話,讓瑪麗蓮夢露笑開了眼。
(話癆式蒙娜麗莎)
像這類換臉的技術有很多,比如被玩壞了的deepfake,最新的FaceShifter(和Face X-Ray簡直上演了換臉算法的矛與盾),以及只遷移表情的face2face和其升級版可以完成上身運動和頭部運動遷移的HeadOn。但是這些方法都需要大量的數據(應該是A轉B,A和B都需要一定量的數據),且對計算資源要求高。而該論文的模型只需要少量樣本(few-shot),甚至只需要一張圖像(one-shot),比如:蒙娜麗莎,就可以把她的臉、表情、頭部動作按照你給的說話視頻動起來了。
相關資源
論文:Few-Shot Adversarial Learning of Realistic Neural Talking Head Models
復現代碼:https://github.com/vincent-thevenin/Realistic-Neural-Talking-Head-Models
論文筆記
作者首先采用了一個元學習(meta-learning)的架構,在大量不同外表、不同談話表情的說話人視頻數據上進行預訓練(embedding)。在預訓練過程中,同時利用少量的對應視頻幀人頭圖像(同一個人)和視頻的embedding信息完成關鍵點到真實圖像的生成,元學習的主要目的是通過GAN實現人臉關鍵點(Landmarks)到人臉的生成過程;然后利用元學習得到的高質量生成器和判別器重新在新的人頭數據集上(可以同一人像也可以不同人像)進行對抗學習,其實就是一個微調(fine-tuning)或者在線學習的過程。
(論文公開的視頻)
01
元學習
元學習階段包含三個網絡:嵌入網絡(embedder)、生成網絡(generator)和判別網絡(discriminator),首先,定義一些如下數學符號:
:視頻視頻序列數量;
?:第i個視頻序列;
?:第i個視頻的第t幀;?
:第i個視頻的第t幀對應的關鍵點結果(通過《How far are we from solving the 2d & 3d face alignment problem》得到);
(模型結構)
嵌入網絡
:輸入視頻幀及對應的關鍵點結果,嵌入式網絡的作用是將該輸入映射為一個維向量。其中是網絡可訓練參數,通過元學習過程進行優化,因此嵌入向量就包含了特定的視頻幀信息,通過求平均得到視頻的嵌入向量。
具體地,從視頻數據集隨機選取視頻i,并從該視頻隨機選取第t幀,并在除第t幀外隨機選取k(k=8)幀s1, s2, . . . , sK,通過對這K幀經過embedder得到的向量求平均,得到的平均向量,作為該視頻的嵌入向量。
問:那么第t幀是拿來干什么用的呢??
答:通過該幀的關鍵點讓生成網絡生成該幀人臉圖像。
生成網絡
ψ:輸入視頻幀關鍵點定位圖像,以及要轉換的視頻嵌入向量,生成對應幀的重建結果。生成器的作用是要使得生成的圖像和視頻幀視頻幀圖像相似度越大越好。生成網絡的參數有兩部分:共性參數?ψ和特性參數ψ,在元學習過程中,ψ可以直接訓練得到,而ψ則需要通過嵌入向量?經過MLP預測得到,即:ψ。
那么,利用關鍵點和視頻嵌入向量對第t幀進行重建:
嵌入網絡和生成網絡的參數通過以下損失函數進行優化:包含三個部分:內容損失、對抗損失和匹配損失。
其中,內容損失和風格遷移的損失類似,通過對真實圖像和預測圖像在VGG19的Conv1,6,11,20,29的激活層特征,以及VGGFace的Conv1,6,11,18,25的激活層特征分別計算L1距離,并進一步加權求和而來。
對抗損失:生成器生成的圖像應該盡可能“騙”過判別器,使得判別器輸出的真實性得分最大化。
對抗損失中,作者還借鑒了pix2pixHD的特征匹配損失,即從判別器的中間層提取特征,學習匹配真實圖像和生成圖像的這些中間表示,具有穩定訓練的作用。
嵌入向量匹配損失:對應視頻嵌入向量的距離,其中一個嵌入向量來自于嵌入網絡,另一個嵌入向量,是判別網絡權重的一部分,借鑒自《cGANs with Projection Discriminat》的思想。
判別網絡
:判別網絡的輸入包括:第t幀的圖像或者生成圖像、對應的關鍵點結果,以及視頻序列的索引i,為卷積神經網絡參數,視頻嵌入矩陣,第i列表示第i個視頻嵌入向量,以及和都是判別網絡的可訓練參數。通過卷積網絡,判別器將圖像和關鍵點結果映射為一個N維向量,基于這個結果和、和線性運算,得到一個得分,表示輸入是否為第t幀的真實圖像以及是否和輸入的關鍵點結果相匹配 。
在更新嵌入網絡和生成網絡時,判別網絡通過如下的hinge loss更新其權重,損失函數形式:
02
少樣本微調
在元學習已收斂的模型基礎上,通過少量樣本進行微調,即只有一個視頻序列(要模仿的視頻)和少量幀(需要轉換的圖像)的簡單版元學習,選取T張同一視頻的圖像幀x(1), x(2), . . . , x(T),以及對應的關鍵點結果圖像 y(1), y(2), . . . , y(T),T大小不同于元學習的K,T=1時為one-shot 學習。
通過嵌入網絡得到輸入T幀圖像的嵌入向量:
繼而完全可以通過生成器對關鍵點圖像生成類似于這T幀的圖像,但是存在個體差異:看起來像但是真實度不夠,這個差異可以通過接下來的微調有效地解決。
微調生成網絡
ψψ:同預訓練一致,生成器對輸入的關鍵點圖像重建人臉圖像,訓練參數也包含兩部分:ψ和ψ',ψ'通過和預訓練的投影矩陣P進行初始化,后續直接更新ψ',然后更新ψ′,使得G更快適應于另一個域(測試集),初始化:
ψ
損失函數:
微調判別網絡
:卷積層參數以及偏置均由預訓練參數初始化,所以微調后的判別器形式如下:
那么該如何初始化呢,并不能像預訓練那樣采用,因為表示訓練集第i個視頻的嵌入向量。這時候就體現出它的作用了,因為可以使y與更相似,所以可以初始化為:
損失函數:
03
實驗結果
作者在兩個數據集:VoxCeleb1和VoxCeleb2進行訓練和驗證,并通過FID(Frechet Inception Distance)、SSIM(結構相似度)、CSIM(余弦相似度)以及用戶調研進行定量和定性地評估。
左邊的T表表示測試所用圖像數量,可以看出T=1也可以生成比較逼真的圖像;T越大時,生成效果越好。
(T為不同值時在兩個數據集的生成結果以及不同方法的對比)
作者還在靜態畫數據上通過one-shot學習,生成動態的視頻結果,其中輸入的的關鍵點數據來自于VoxCeleb2。不過作者使用了余弦相似度對視頻進行了排序,找出了相似的臉型的視頻作為被模仿的輸入。(但是這怎么微調呢,沒有ground truth啊?)
(單張靜態畫的預測結果)
拿code搞事情
搞不了事情了,以后添置臺設備再玩兒吧
長按二維碼關注我們
有趣的靈魂在等你
留言請摁
總結
以上是生活随笔為你收集整理的眨眼算什么,让蒙娜丽莎像你一样唠上嗑才算硬核的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读研打比赛领奖金免费旅游,国内算法竞赛平
- 下一篇: 论文创新,可以看看这几篇去雨文章是怎么做