ITADN
X-niper/UniTalker
X-niper/UniTalker · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

UniTalker: 通过统一模型扩展音频驱动的 3D 面部动画 [ECCV2024]

相关链接

[Homepage]      [arXiv]      [Video]     
UniTalker Architecture

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 中的 datasetduplicate_list,确保这两个列表保持相同的长度。

python -m main.train --config config/unitalker.yaml