UniTalker: 通过统一模型扩展音频驱动的 3D 面部动画 [ECCV2024]
相关链接
UniTalker 能够从不同的音频域生成逼真的面部运动,包括各种语言中的清晰和嘈杂语音、文本转语音生成的音频,甚至伴有背景音乐的嘈杂歌曲。
UniTalker 可以输出多种标注。
对于具有新标注的数据集,只需将新的头部模块插入 UniTalker,并使用现有数据集或仅使用新数据集进行训练,从而避免重新拓扑。
安装
环境
- Linux
- Python 3.10
- Pytorch 2.2.0
- CUDA 12.1
- transformers 4.39.3
- Pytorch3d 0.7.7 (可选:仅用于渲染结果)
conda create -n unitalker python==3.10
conda activate unitalker
conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia
pip install transformers librosa tensorboardX smplx chumpy numpy==1.23.5 opencv-python
推理
下载检查点、PCA 模型和模板资源
UniTalker-B-[D0-D7]: 论文中的基础模型。请下载并将其放置在 ./pretrained_models 。
UniTalker-L-[D0-D7]: 论文中的默认模型。请先尝试使用基础模型来运行整个流程。
Unitalker-data-release-V1: 发布的数据集、PCA 模型、数据划分 json 文件以及 id-template numpy 数组。请在本仓库中下载并解压。
FLAME2020: 请下载 FLAME 2020 并将 generic_model.pkl 移动到 resources/binary_resources/flame.pkl。
使用 git lfs pull 获取 ./resources.zip 和 ./test_audios.zip,并在此仓库中解压。
最后,这些文件应按如下方式组织:
├── pretrained_models
│ ├── UniTalker-B-D0-D7.pt
│ ├── UniTalker-L-D0-D7.pt
├── resources
│ ├── binary_resources
│ │ ├── 02_flame_mouth_idx.npy
│ │ ├── ...
│ │ └── vocaset_FDD_wo_eyes.npy
│ └── obj_template
│ ├── 3DETF_blendshape_weight.obj
│ ├── ...
│ └── meshtalk_6172_vertices.obj
└── unitalker_data_release_V1
│ ├── D0_BIWI
│ │ ├── id_template.npy
│ │ └── pca.npz
│ ├── D1_vocaset
│ │ ├── id_template.npy
│ │ └── pca.npz
│ ├── D2_meshtalk
│ │ ├── id_template.npy
│ │ └── pca.npz
│ ├── D3D4_3DETF
│ │ ├── D3_HDTF
│ │ └── D4_RAVDESS
│ ├── D5_unitalker_faceforensics++
│ │ ├── id_template.npy
│ │ ├── test
│ │ ├── test.json
│ │ ├── train
│ │ ├── train.json
│ │ ├── val
│ │ └── val.json
│ ├── D6_unitalker_Chinese_speech
│ │ ├── id_template.npy
│ │ ├── test
│ │ ├── test.json
│ │ ├── train
│ │ ├── train.json
│ │ ├── val
│ │ └── val.json
│ └── D7_unitalker_song
│ ├── id_template.npy
│ ├── test
│ ├── test.json
│ ├── train
│ ├── train.json
│ ├── val
│ └── val.json
演示
python -m main.demo --config config/unitalker.yaml test_out_path ./test_results/demo.npz
python -m main.render ./test_results/demo.npz ./test_audios ./test_results/
训练
下载数据
Unitalker-data-release-V1 包含 D5、D6 和 D7。这些数据集已经过处理,并分组为训练集、验证集和测试集。请使用这三个数据集来尝试训练步骤。 如果你想在 D0-D7 上训练模型,你需要按照以下链接下载数据集: D0: BIWI. D1: VOCASET. D2: meshtalk. D4,D5: 3DETF.
修改配置并训练
请根据你准备的数据集,修改 config/unitalker.yaml 中的 dataset 和 duplicate_list,确保这两个列表保持相同的长度。
python -m main.train --config config/unitalker.yaml