Up主已經開始鬼畜,騰訊開源「AniPortrait」讓照片唱歌說話
「小破站鬼畜區的新質生產力工具。」
近日,騰訊開源發布的一個新項目在推上獲得了如此評價。這個項目是 AniPortrait,其可基于音頻和一張參考圖像生成高質量動畫人像。
該項目剛上線幾天,就已經收獲了廣泛好評:GitHub Star 數已經突破 2800。
下面我們來看看 AniPortrait 的創新之處。
- 論文標題:AniPortrait: Audio-Driven Synthesis of Photorealistic Portrait Animation
- 論文地址:https://arxiv.org/pdf/2403.17694.pdf
- 代碼地址:https://github.com/Zejun-Yang/AniPortrait?
AniPortrait
騰訊新提出的 AniPortrait 框架包含兩個模塊:Audio2Lmk 和 Lmk2Video。
Audio2Lmk 的作用是提取 Landmark 序列,其能從音頻輸入捕獲復雜的面部表情和嘴唇動作。Lmk2Video 是利用這種 Landmark 序列來生成時間上穩定一致的高質量人像視頻。
圖 1 給出了 AniPortrait 框架的概況。
Audio2Lmk
對于一段語音片段序列,這里的目標是預測對應的 3D 人臉網格序列和姿勢序列。
該團隊采用了預訓練的 wav2vec 來提取音頻特征。該模型具有很好的泛化性能,并且可以準確識別音頻中的發音和語調 —— 這對生成具有真實感的人臉動畫來說至關重要。通過利用所獲得的魯棒的語音特征,使用一種包含兩個 fc 層的簡單架構就可以有效地將它們轉換成 3D 人臉網格。該團隊觀察到,這種簡單直接的設計不僅能確保準確度,而且還能提升推理過程的效率。
在將音頻轉換成姿勢的任務中,該團隊使用的骨干網絡依然是同樣的 wav2vec。但是,這一個網絡的權重不同于音頻到網格模塊的網絡。這是因為:姿勢與音頻中的節奏和音調的關聯更加緊密,而音頻到網格任務關注的重點(發音和語調)卻不一樣。為了將之前狀態的影響納入考量,該團隊采用了一個 transformer 解碼器來解碼姿勢序列。在這個過程中,該模塊使用交叉注意力機制將音頻特征整合進解碼器。對于上述兩個模塊,訓練使用的損失函數都是簡單的 L1 損失。
在獲得了網格和姿勢序列之后,再使用透視投影將它們轉換為 2D 的人臉 Landmark 序列。這些 Landmark 是下一階段的輸入信號。
Lmk2Video
給定一張參考人像和一個人臉 Landmark 序列,該團隊提出的 Lmk2Video 可以創建具有時間一致性的人像動畫。這個動畫過程是將動作與 Landmark 序列對齊,同時維持與參考圖像一致的外觀。該團隊采取的思路是將人像動畫表示成一個人像幀構成的序列。
Lmk2Video 的這種網絡結構設計的靈感來自 AnimateAnyone。其中的骨干網絡是 SD1.5,其整合了一個時間運動模塊,能有效地將多幀噪聲輸入轉換成一個視頻幀序列。
另外,他們還使用了一個 ReferenceNet,其同樣采用了 SD1.5 的結構,作用是提取參考圖像的外觀信息并將其整合進骨干網絡中。這一策略設計可確保人臉 ID 在整個輸出視頻中保持一致。
不同于 AnimateAnyone,這里提升了 PoseGuider 的設計的復雜性。原來的版本只是集成了幾個卷積層,之后 Landmark 特征與骨干網絡的輸入層的隱含特征融合。而騰訊的這個團隊發現,這種初級設計無法捕獲嘴唇的復雜運動。因此,他們采用了 ControlNet 的多尺度策略:將相應尺度的 Landmark 特征整合進骨干網絡的不同模塊。盡管有這些改進,但最終模型的參數數量依然相當低。
該團隊還引入了另一項改進:將參考圖像的 Landmark 用作一個額外的輸入。PoseGuider 的交叉注意力模塊能促進參考 Landmark 和每一幀的目標 Landmark 之間的互動。這一過程能為網絡提供額外的線索,使其能夠理解人臉 Landmark 和外觀之間的關聯,由此可幫助人像動畫生成更精準的動作。
實驗
實現細節
Audio2Lmk 階段使用的骨干網絡是 wav2vec2.0。用于提取 3D 網格和 6D 姿勢的工具是 MediaPipe。Audio2Mesh 的訓練數據來自騰訊的內部數據集,其中包含接近一個小時的來自單個說話人的高質量語音數據。
為了確保 MediaPipe 提取出的 3D 網格的穩定性,在記錄期間,表演者頭部位置穩定并且面向相機。訓練 Audio2Pose 使用的是 HDTF。所有的訓練操作都在單臺 A100 上執行,使用了 Adam 優化器,學習率設置為 1e-5.
Lmk2Video 過程則采用了一種兩步式訓練方法。
起始步驟階段關注的重點是訓練骨干網絡 ReferenceNet 以及 PoseGuider 的 2D 組件,而不管運動模塊。在后續步驟,則會凍結其它所有組件,專注于訓練運動模塊。為了訓練模型,這里使用了兩個大規模高質量人臉視頻數據集:VFHQ 和 CelebV-HQ。所有數據都經由 MediaPipe 來提取 2D 人臉 Landmark。為了提升網絡對嘴唇運動的敏感性,該團隊的做法是在根據 2D Landmark 渲染姿勢圖像時,給上下唇標注不同的顏色。
所有圖像的分辨率都重新調整成了 512x512。該模型的訓練使用了 4 臺 A100 GPU,每一步都耗時 2 天。優化器是 AdamW,學習率固定為 1e-5。
實驗結果
如圖 2 所示,新方法得到的動畫在質量和真實度上都非常出色。
此外,用戶還可以編輯其中間的 3D 表征,從而對最終輸出進行修改。舉個例子,用戶可從某個源提取 Landmark 并修改其 ID 信息,從而實現面部重現效果。
更多細節請參考原論文。
本文轉自 機器之心 ,作者:機器之心
