原论文链接:https://arxiv.org/abs/2104.11116
源代码链接:https://github.com/Hangz-nju-cuhk/Talking-Face_PC-AVS
该项目将 PC-AVS(Pose-Controllable Talking Face Generation by Implicitly Modularized Audio-Visual Representation) 的论文代码移植到 talkingface-toolkit 框架中,主要完成了以下工作:
- 修改,调整了原论文中的 BaseDataset 与 VOXTestDataset 类,使其符合框架要求。
- 理解并整理了原论文中有关推理的部分,将其整合进 talking-face 框架中,对模型进行评估(原论文代码不支持训练)
- 增加 util 中部分工具函数,方便实现部分功能
- 原论文代码采用封装 argparse 的方式,传递参数,为了符合整个框架,将参数传递方式修改为由 yaml 进行配置。
主体与框架保持一致,部分依赖有变化
librosa==0.9.1
lws==1.2.8
numpy==1.20.3
ffmpeg>=4.0.0
| 成员 | 工作 |
|---|---|
| 冯宇鹏 | 阅读论文,编写文档 README |
| 李奕霖 | 阅读论文,修改整理框架代码(eval 部分的代码) |
| 王宇璇 | 阅读论文,编写配置文件 yaml 文件等,编写文档 |
| 徐宇飞 | 阅读论文,修改整理框架代码(dataset 部分的代码) |
| 李嘉政 | 阅读论文,修改整理框架代码(util 部分的代码) |
PC-AVS(Pose-Controllable Talking Face Generation by Implicitly Modularized Audio-Visual Representation) 是一种姿态可控的声像系统,该系统可以实现对任意面孔在说话同时实现对姿态的自由控制。不从音频中学习姿势动作,而是利用另一个姿势源视频来补偿头部动作。该系统的关键是设计一个隐式的低维姿势代码,它没有嘴型或身份信息。通过这种方式,视听表征被模块化为三个关键因素的空间:语音内容、头部姿势和身份信息。
原论文中项目演示截图与网络框架概述如图
使用 pip 搭建环境
pip install -r requirements.txt
部分依赖有改动
librosa==0.9.1
lws==1.2.8
numpy==1.20.3
ffmpeg>=4.0.0
在 checkpoints 一节中下载相关的预训练模型
运行如下命令
python run_talkingface.py --model=PC_AVS --dataset=PC_AVSDataset --evaluate_model_file ./checkpoints/PC_AVS/simple_model.pth --config_files ./talkingface/properties/model/PC_AVS.yaml即可看到验证结果
主要保存的是训练和评估模型所需要的额外的预训练模型,在对应文件夹的README有更详细的介绍
保存 PC-AVS 中使用到的五个预训练模型。
下载 链接 中的 zip 文件,解压缩到 checkpoints/PC_AVS/demo 文件夹下。
在 evaluate 过程中还会下载预训练模型保存在 checkpoints 中。

存放数据集以及数据集预处理之后的数据,详细内容见dataset里的README
将原论文代码中的 argparse 中 parser 对象中参数改为由 yaml 文件配置,部分参数如下:
data 文件夹结构如下:
.
├── __init__.py
├── dataprocess
│ ├── __init__.py
│ ├── align_68.py
│ ├── prepare_testing_files.py
│ └── wav2lip_process.py
└── dataset
├── __init__.py
├── dataset.py
├── pc_avs_dataset.py
└── wav2lip_dataset.py
我们支持自定义的数据集,使用方法如下:
模型只处理类似voxceleb2的裁剪数据,因此需要预处理自准备数据。
需要处理自己准备的数据face-alignment。运行即可安装
pip install face-alignment
假设视频已经通过前面的步骤 prepare_testing_files.py 处理到 [name] 文件夹中,
你可以运行
python dataprocess/align_68.py --folder_path [name]
裁剪后的图像将保存在一个额外的 [name_cropped] 文件夹中。
然后可以通过手动更改 demo.csv文件或更改目录文件夹路径并再次运行预处理文件。
PC-AVS 网络结构较复杂, model 文件夹内结构如下:
├── __init__.py
├── av_model.py
└── networks
├── FAN_feature_extractor.py
├── __init__.py
├── architecture.py
├── audio_network.py
├── base_network.py
├── discriminator.py
├── encoder.py
├── generator.py
├── loss.py
├── sync_batchnorm
│ ├── __init__.py
│ ├── batchnorm.py
│ ├── batchnorm_reimpl.py
│ ├── comm.py
│ ├── replicate.py
│ ├── scatter_gather.py
│ └── unittest.py
├── util.py
└── vision_network.py
存放有关配置的 yaml 文件。包含 PC_AVS.yaml。







