LLM
Avatar
硬件
多模态
视频
RAG
音频
音乐
Infra
图像
机器人
😋从音频合成照片级人类对话Avatar
type
status
slug
summary
tags
category
icon
password
Date
从音频到照片级逼真呈现:合成人类对话
此存储库包含“从音频到照片级真实体现:在对话中合成人类”的 pytorch 实现
🐣在此处试用我们的演示或继续按照以下步骤在本地运行代码!感谢大家通过贡献/评论/问题提供的支持!
音频2照片真实.mp4
该代码库提供:
- 列车代码
- 测试代码
- 预训练运动模型
- 访问数据集
如果你使用数据集或代码,请引用我们的论文
存储库内容
- 快速入门:
简单的 Gradio 演示,可让您录制音频和渲染视频
- 安装:Codec Avatar Body
环境设置与安装(更多渲染管线细节请参考
)
我们注释了代码,您可以使用👇图标直接复制并粘贴到您的终端中。
快速开始
通过此演示,您可以录制音频片段并选择要生成的样本数量。
确保你拥有 CUDA 11.7 和 gcc/++ 9.0 以实现 pytorch3d 兼容性
👇 安装必要的组件。这将进行环境配置并安装相应的渲染资产、先决条件模型和预训练模型:
👇 运行 demo,你可以录制音频并渲染相应的结果!
🎤 首先,录制你的音频
⌛ 请稍候,因为渲染可能需要一段时间!
您可以更改要生成的样本数量(1-10),并通过点击每个视频右上角的下载按钮来下载您喜欢的视频。
安装
该代码已使用 CUDA 11.7 和 python 3.9、gcc/++ 9.0 进行了测试
👇如果您尚未通过演示设置完成此操作,请配置环境并下载先决条件模型:
👇 为了使渲染正常工作,请确保安装了pytorch3d。
有关渲染器的更多详细信息,请参阅CA Bodies repo 。
下载数据和模型
要下载任何数据集,您都可以在 找到它们
https://github.com/facebookresearch/audio2photoreal/releases/download/v1.0/<person_id>.zip
,其中您可以用、、或<person_id>
中的任意一个替换。可以使用此命令通过命令行下载。PXB184RLW104TXB805GQS883
👇 要下载所有数据集,您只需运行以下命令即可下载并解压所有模型。
同样,要下载任何模型,您都可以在 找到它们
http://audio2photoreal_models.berkeleyvision.org/<person_id>_models.tar
。👇您还可以使用此脚本下载所有模型:
上述模型脚本将下载用于运动生成的模型和身体解码器/渲染模型。请查看脚本了解更多详细信息。
数据集
一旦下载并解压数据集(通过
scripts/download_datasets.sh
),它应该展开到以下目录结构:四位参与者(
PXB184
、RLW104
、TXB805
、GQS883
)各自应有独立的“场景”(1 到 26 左右)。对于每个场景,我们保存了 3 种类型的数据注释。对于训练/验证/测试分割,索引定义如下
data_loaders/data.py
:对于我们训练的四个数据集参与者中的任何一个。
可视化基本事实
如果您已正确安装渲染要求,则可以使用以下命令可视化完整的数据集:
视频将根据指定的
--max_seq_length
参数进行分块长度,您可以指定(默认值为 600)。👇例如,为了可视化的基本事实注释
PXB184
,您可以运行以下命令。预训练模型
我们训练特定于人员的模型,因此每个人都应该有一个关联的目录。例如,对于
PXB184
,他们的完整模型应解压到以下结构中。每个人有 4 个模型,每个模型都有一个关联的
args.json
。- 面部扩散模型,根据音频输出 256 个面部代码
- 一个姿势扩散模型,根据音频和指南姿势输出 104 个关节旋转
- 一个引导 vq 姿势模型,以 1 fps 的速度输出以音频为条件的 vq 标记
- 对连续 104 维姿势空间进行矢量量化的 vq 编码器-解码器模型。
运行预训练模型
要运行实际模型,您需要运行预先训练的模型并生成相关的结果文件,然后才能对其进行可视化。
人脸生成
要生成脸部结果文件,
应该
<path/to/model>
是与生成面部相关的扩散模型的路径。例如对于参与者PXB184
,路径可能是./checkpoints/diffusion/c1_face/model000155000.pt
其他参数包括:👇 使用提供的预训练模型运行面部模型的完整示例
PXB184
如下:这将从数据集中生成 10 个样本。输出结果文件将保存到:
./checkpoints/diffusion/c1_face/samples_c1_face_000155000_seed10_/results.npy
身体生成
要生成相应的身体,它将与生成脸部非常相似,只是现在我们必须输入用于生成指导姿势的模型。
👇 这里
<path/to/guide/model>
应该指向引导变压器。完整命令如下:类似地,输出将被保存到:
./checkpoints/diffusion/c1_pose/samples_c1_pose_000340000_seed10_guide_iter-0100000.pt/results.npy
可视化
在身体生成方面,您还可以选择传入标志,
--plot
以便渲染出逼真的头像。您还需要传入带有--face_codes
标志的相应生成的面部代码。或者,如果您已经预先计算了姿势,您也可以传入带有标志的生成身体--pose_codes
。这会将视频保存在与身体results.npy
存储相同的目录中。👇添加了三个新标志的完整命令示例如下:
其余标志可以与之前相同。有关实际渲染 API,请参阅Codec Avatar Body以进行安装等。 重要提示:为了可视化完整的逼真头像,您需要先运行面部代码,然后将其传递到身体生成代码中。
--plot
如果您尝试使用面部代码调用生成,它将不起作用。从零开始训练
您需要训练的模型有四种:1) 面部扩散模型,2) 身体扩散模型,3) 身体 vq vae,4) 身体引导变换器。唯一的依赖关系是 4) 需要 3)。所有其他模型都可以并行训练。
1)人脸扩散模型
为了训练面部模型,您需要运行以下脚本:
重要的是,一些标志如下:
👇 对人员进行训练的完整示例
PXB184
如下:2)体扩散模型
训练身体模型与训练脸部模型类似,但需要以下附加参数
与人脸训练不同的标志如下:
👇 对人员进行训练的完整示例
PXB184
如下:3)身体 VQ VAE
要训练 vq 编码器-解码器,您需要运行以下脚本:
👇 对于 person 来说
PXB184
,它将是:4)车身导轨变压器
一旦您通过 3) 训练了 vq,您就可以将其传入训练身体引导姿势变换器:
👇 对于 person 来说
PXB184
,它将是:训练完这 4 个模型后,您现在可以按照“运行预训练模型”部分来生成样本并可视化结果。
您还可以通过传入标志来可视化相应的基本事实序列
--render_gt
。执照
代码和数据集根据CC-NC 4.0 国际许可证发布。