Up主已經開始鬼畜,騰訊開源「AniPortrait」讓照片唱歌說話

机器之心發表於2024-04-07

AniPortrait 模型是開源的,可以自由暢玩。


「小破站鬼畜區的新質生產力工具。」

近日,騰訊開源釋出的一個新專案在推上獲得瞭如此評價。這個專案是 AniPortrait,其可基於音訊和一張參考影像生成高質量動畫人像。

話不說多,我們先看看可能會被律師函警告的 demo:Up主已經開始鬼畜,騰訊開源「AniPortrait」讓照片唱歌說話
動漫影像也能輕鬆開口說話:Up主已經開始鬼畜,騰訊開源「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 資訊,從而實現面部重現效果,如下影片所示:Up主已經開始鬼畜,騰訊開源「AniPortrait」讓照片唱歌說話更多細節請參考原論文。

相關文章