生成模型 | 2024年新年新论文:audio2photoreal[正在更新中]

news2024/9/20 15:44:22

本博客主要包含了20240103新出的论文From Audio to Photoreal Embodiment: Synthesizing Humans in Conversations论文解释及项目实现~

论文题目:20240103_From Audio to Photoreal Embodiment: Synthesizing Humans in Conversations

论文地址:2401.01885v1.pdf (arxiv.org)

项目地址:facebookresearch/audio2photoreal: Code and dataset for photorealistic Codec Avatars driven from audio (github.com)

1.论文详解

论文提出了一个框架,用于生成逼真的化身,这些化身根据二元交互的对话动态做出手势。给定语音音频,输出个人手势运动的多种可能性,包括面部、身体和手部。方法背后的关键是将矢量量化的样本多样性优势与通过扩散获得的高频细节相结合,以产生更具动态性、表现力的运动。使用高度逼真的头像来可视化生成的动作,这些头像可以表达手势中的关键细微差别(例如冷笑和傻笑)。为了促进这一研究,论文引入了一个首创的多视图对话数据集,可以进行逼真的重建。实验表明,模型可以生成适当且多样化的手势,优于仅扩散和仅VQ的方法。此外,感知评估强调了照片级真实感(相对于网格)在准确评估对话手势中微妙运动细节方面的重要性。提供代码和数据集。

论文框架

 动作的生成主要包括了脸部,身体,

1.1.面部动作扩散模型

为了从语音输入中生成面部动作,提出基于语音条件的扩散模型,根据DDPM,正向噪音过程定义为

 - 表示了在给定前一个时间步的情况下,当前时间步的面部动作服从于一个高斯分布(正态分布)。这个模型可以根据先前的面部动作状态来预测当前的动作状态,这样就能够根据音频输入生成连贯的面部运动序列。

 F(0)近似表示清晰(无噪音)的面部表情编码序列F。在这里,τ ∈ [1, . . . , T˙] 表示正向扩散的步骤,而ατ ∈ (0, 1) 则遵循一个单调递减的噪声计划。当τ接近T˙时,采样F(T˙) ∼ N(0, I),即按照正态分布采样得到的清晰的面部动作序列。

接着,为了反向去噪,论文参考了[15, 30]的方法,定义了一个模型来从带有噪声的F(τ)中去除噪音,得到了F(0)的预测值。然后,可以通过将正向过程应用于预测的F(0)来获得反向过程的下一个步骤F(τ−1)。这种方法可以帮助还原面部动作的清晰版本,从而实现从噪声版本到清晰版本的逆向转换。

使用神经网络F来预测F(0)。公式中的F(F(τ); τ, A, L)表明F(0)的近似值,其中A是输入的音频特征,而L = (l1, . . . , lT)是根据[9]的预先训练的音频到唇部回归器的输出,但这里限制在唇部顶点而不是整个面部网格上。研究人员在30小时的内部三维网格数据上对唇部回归器进行了训练。每个lt ∈ Rdl×3表示给定音频A时在帧t上预测的dl个唇部顶点的集合。表2显示,在同时考虑唇部回归器输出和音频时,与仅考虑音频相比,显著提高了唇同步质量。扩散模型则是使用简化的ELBO(Evidence Lower Bound)目标进行训练,

训练过程中采用了一种无分类器指导的模型训练方法。他们通过在训练过程中以低概率随机地替换条件部分(A = ∅ 和 L = ∅)来实现这一点。为了结合音频和唇部顶点信息,他们使用了一个交叉注意力层。同时,时间步信息则通过一个特征逐层线性调制(FiLM)层来整合,具体示意如图4a所示。这种方法允许模型在训练过程中部分时间不使用音频和唇部顶点信息,从而更好地适应不完整的条件输入。

2.项目实现

 2.1.环境配置

git clone https://github.com/facebookresearch/audio2photoreal
cd audio2photoreal

pip install -r scripts/requirements.txt
sh demo/install.sh
sh scripts/download_prereq.sh
apt install ffmpeg

# demo 
python -m demo.demo

 

2.2.数据集下载

论文中提出的模型中共包含四个人,PXB184RLW104TXB805, 和 GQS883,这里只下载一个

一个人的数据是1.1G.(地址)

# RLW104 数据集人ID
wget https://github.com/facebookresearch/audio2photoreal/releases/download/v1.0/RLW104.zip
unzip RLW104.zip -d dataset/
rm RLW104.zip

包含了语音文件,身体动作numpy文件,人脸numpy文件, 

  • audio.wav:包含 48kHz 原始音频(两个通道,1600*T 个采样点)的波形文件;通道 0 是与当前人相关的音频,通道 1 是与对话伙伴相关的音频。
  • body_pose.npy:运动骨架中关节角度的(T x 104)数组。并非所有关节都用 3DoF 表示。每个 104-d 向量可用于重建全身骨架。
  • face_expression.npy:(T x 256)面部编码数组,其中每个 256-d 向量可重建一个面部网格。
  • missing_face_frames.npy: 面部代码丢失或损坏的索引列表(t)。
  • data_stats.pth:每个人每种模式的均值和 std。

下载动作生成

每个人1.3G (地址

wget http://audio2photoreal_models.berkeleyvision.org/RLW104_models.tar
tar xvf RLW104_models.tar
rm RLW104_models.tar

 

要运行实际模型,您需要运行预训练模型并生成关联的结果文件,然后再对其进行可视化。

2.3.预训练模型

我们训练特定于人员的模型,因此每个人都应该有一个关联的目录。例如,对于 ,它们的完整模型应解压缩为以下结构。

每个人有 4 个模型,每个模型都有一个相关的 .args.json

  1. 输出 256 个基于音频的面部代码的人脸扩散模型
  2. 一种姿态扩散模型,可输出 104 次关节旋转,以音频和引导姿势为条件
  3. 以 1 fps 的音频为条件输出 VQ 令牌的引导 VQ 姿势模型
  4. 一个 VQ 编码器-解码器模型,用于矢量量化连续的 104 维姿态空间。

2.4.运行预训练模型

2.4.1.人脸生成

生成语法

python -m sample.generate 
    --model_path <path/to/model> 
    --num_samples <xsamples> 
    --num_repetitions <xreps> 
    --timestep_respacing ddim500 
    --guidance_param 10.0

参数说明

  • model_path :
  • num_samples:要生成的样本数。要对整个数据集进行采样,请使用 56(TXB805 除外,该数据集使用 58)。
  • num_repetitions:重复采样次数,即生成的序列总数为(num_samples * num_repetitions)。
  • timestep_respacing:扩散步长。格式始终为 ddim<number>。
  • guidance_param:条件对结果的影响程度。我通常使用的范围是 2.0-10.0,脸部倾向于更高。

 # 实例


python -m sample.generate  --model_path RLW104 --num_samples 56 --timestep_respacing ddim500  --guidance_param 10.0

使用提供的预训练模型生成人脸

# 可以打开audio2photoreal/checkpoints/diffusion/c2_face查看权重名称

python -m sample.generate --model_path checkpoints/diffusion/c2_face/model000190000.pt --num_samples 10 --num_repetitions 5 --timestep_respacing ddim500 --guidance_param 10.0

 

 生成一个结果的numpy文件

 2.4.2.身体生成

与人脸生成相似,这里输入模型来生成引导姿势。

身体生成语法

python -m sample.generate 
    --model_path <path/to/model> 
    --resume_trans <path/to/guide/model> 
    --num_samples <xsamples> 
    --num_repetitions <xreps> 
    --timestep_respacing ddim500 
    --guidance_param 10.0

实例: 

#确认路径 audio2photoreal/checkpoints/diffusion/下 和 /checkpoints/guide/c2_pose/checkpoints下参数 名称

python -m sample.generate --model_path checkpoints/diffusion/c2_pose/model000190000.pt --resume_trans checkpoints/guide/c2_pose/checkpoints/iter-0135000.pt --num_samples 10 --num_repetitions 5 --timestep_respacing ddim500 --guidance_param 10.0

 同样,输出将保存到

查看结果

# 注意路径
python -m sample.generate --model_path checkpoints/diffusion/c2_pose/model000190000.pt --resume_trans checkpoints/guide/c2_pose/checkpoints/iter-0135000.pt --num_samples 10 --num_repetitions 5 --timestep_respacing ddim500 --guidance_param 10.0 --face_codes checkpoints/diffusion/c2_face/samples_c2_face_000190000_seed10_/results.npy --pose_codes checkpoints/diffusion/c2_pose/samples_c2_pose_000190000_seed10_guide_iter-0135000.pt/results.npy --plot

 如果出错,参考【PS2】

2.5.可视化

如果环境配置完成,可是实话完整数据集~

python -m visualize.render_anno --save_dir visualize/ --data_root dataset/RLW104 --max_seq_length 600

2.6.训练

训练四种可能的模型:

  • 1) 面部扩散模型,
  • 2) 身体扩散模型
  • 3) 身体 vq vae,
  • 4) 身体导向变压器。 唯一的依赖关系是

3) 是 4) 所必需的。所有其他模型都可以并行训练。

训练完这 4 个模型后,现在可以按照“运行预训练模型”部分生成样本并可视化结果。

通过传入标志来可视化相应的地面实况序列。--render_gt

 

PS

【PS1】 AttributeError: module 'cv2.dnn' has no attribute 'DictValue'

查看库pip list 中是否有

因为我的环境是在docker容器内 ,所以要下载opencv-contrib-python,没有的话

# 如果没有就下载 pip install opencv-python-headless
pip install opencv-contrib-python

如果有以上库,依旧出现同样错误,那么就是opencv配置库不全

apt-get install build-essential cmake
apt-get install libgtk-3-dev
apt-get install libboost-all-dev
pip install dlib

 最终解决:是因为版本问题,修改为

pip install opencv-python==4.8.0.74

【PS2】FileNotFoundError: [Errno 2] No such file or directory: 'audio2photoreal/checkpoints/ca_body/data/RLW104/config.yml'

 在/audio2photoreal/sample/generate.py文件中170行

指定了配置文件位置,但是文件夹下并没有此文件

 下载预训练文件没有下载完全,尝试

sh demo/install.sh

【PS3】ModuleNotFoundError: No module named 'tkinter'

解决:

apt-get install tcl-dev tk-dev python3-tk

【PS4】ing

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1369903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python2048小游戏核心算法(python系列26)

前言&#xff1a;做核心算法之前我们可以玩一玩这个小游戏来了解一下规则。2048在线试玩 运行效果&#xff1a; 代码案例&#xff1a; # 2048小游戏# 1.将列表中零移动到列表的末尾 def move_zeroes():x 0for i in range(len(list_nums)):if list_nums[i] ! 0:list_nums[x],…

python 基础笔记

基本数据类型 函数 lamda 匿名函数 成员方法 类 类与对象 构造方法 魔术方法 私有成员 私有方法 继承 注解 变量注解 函数注解 Union类型 多态 参考链接&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了_哔哩哔哩_bilib…

小测一下HCL中VSR的转发性能

正文共&#xff1a;555 字 10 图&#xff0c;预估阅读时间&#xff1a;1 分钟 上次我们在HCL中导入了NFV的自定义镜像&#xff08;如何在最新版的HCL 5.10.0中导入NFV镜像&#xff1f;&#xff09;&#xff0c;但是当时没有测试转发性能&#xff0c;最近HCL又更新了V5.10.1版本…

用golang 实现给图片添加文字水印

package mainimport ("fmt""github.com/golang/freetype""image""image/draw""image/jpeg""io""os""time" )func main() {// 打开原始图片file, err : os.Open("004.jpeg")if err …

[Vulnhub靶机] DriftingBlues: 5

[Vulnhub靶机] DriftingBlues: 5靶机渗透思路及方法&#xff08;个人分享&#xff09; 靶机下载地址&#xff1a; https://download.vulnhub.com/driftingblues/driftingblues5_vh.ova 靶机地址&#xff1a;192.168.67.24 攻击机地址&#xff1a;192.168.67.3 一、信息收集 …

多线程基础入门【Linux之旅】——下篇【死锁,条件变量,生产消费者模型,信号量】

目录 一&#xff0c;死锁 1. 死锁的必要条件 2&#xff0c;避免死锁 二&#xff0c;条件变量 同步概念与竞态条件 条件变量——初始化 静态初始化 动态初始化 pthread_cond_destroy (销毁) pthread_cond_wait (等待条件满足) pthread_cond_signal (唤醒线程) ph…

@PolarDB,你的动手体验搭子,来啦

前言 PolarDB是阿里云自研的新一代云原生数据库&#xff0c;在计算存储分离架构下&#xff0c;利用了软硬件结合的优势&#xff0c;为用户提供具备极致弹性、高性能、海量存储、安全可靠的数据库服务。100%兼容MySQL和PostgreSQL生态&#xff0c;高度兼容Oracle语法。 1月17日…

Linux下进程控制

文章目录 创建进程fork创建进程fork返回值写诗拷贝fork常规用法fork失败的原因 进程终止进程正常终止查看进程退出码_exit函数exit函数exit 和 _exit 的区别return退出 进程等待进程等待的方式wait方法(系统调用)waitpid方法(系统调用) WEXITSTATUS 和 WIFEXITED阻塞等待和非阻…

vue无法获取dom

处理过程 watch监听值变化 index.js:33 [Vue warn]: Error in callback for watcher "$store.state.modelsStorageUrl": "TypeError: Cannot set properties of undefined (setting modelScene)"watch: {"$store.state.modelsStorageUrl":{ha…

24上半年教师资格证笔试报名全流程✅

&#x1f550;考试时间安排 &#xff08;一&#xff09;报名时间&#xff1a; 2024年1月12日9:30至15日16:00 &#xff08;二&#xff09;缴费时间&#xff1a; 2024年1月17日24:00 &#xff08;三&#xff09;考试时间&#xff1a; 2024年3月9日星期六 &#xff08;四&#xf…

上网行为管理到底是什么!

之前经常听过上网行为管理系统&#xff0c;那这个系统到底是什么&#xff0c;还真不是很清楚&#xff01;今天仔细查了很多资料&#xff0c;分享给大家&#xff1a; 上网行为管理是指一种帮助互联网用户控制和管理对互联网的使用&#xff0c;包括对网页访问过滤、上网隐私保护…

vue3 useAttrs的使用场景,提取共有props

1 场景 多个类似组件都需要传参data&#xff0c;用于请求接口或者处理数据&#xff0c;想让组件干净整洁&#xff0c;把参数data提出来 2 方法 选项式 可以使用mixin混入或者extends继承&#xff08;略&#xff09; 组合式 可以使用hook 无脑式踩坑&#xff08;如下代码…

SwiftUI之深入解析Alignment Guides的超实用实战教程

一、Alignment Guide 简介 Alignment guides 是一个强大的布局工具&#xff0c;但通常未被充分利用。在很多情况下&#xff0c;它们可以帮助我们避免更复杂的选项&#xff0c;比如锚点偏好。如下所示&#xff0c;对对齐的更改也可以自动&#xff08;并且容易地&#xff09;动画…

Python书籍推荐,建议收藏

学习Python的书籍可太多了&#xff0c;从入门到放弃&#xff0c;应有尽有啊 入门书籍 根据豆瓣评分的高低&#xff0c;这里介绍了一些经典入门书籍&#xff0c;大家根据自身情况选择尝试 《Python编程&#xff1a;从入门到实践&#xff08;第二版&#xff09;》 非常经典且非…

【python】TCP测速程序

一、服务端 下面是一个简单的 Python 服务端程序的示例&#xff0c;使用标准库中的 socket 模块来建立一个 TCP 服务器。该服务器接收客户端的连接请求&#xff0c;客户端发送一定大小的数据流以测试 TCP 带宽。 实际场景中带宽测试可能需要更复杂的逻辑来确保测试的准确性。 …

Android AAudio

文章目录 基本概念启用流程基本流程HAL层对接数据流计时模型调试 基本概念 AAudio 是 Android 8.0 版本中引入的一种音频 API。 AAudio 提供了一个低延迟数据路径。在 EXCLUSIVE 模式下&#xff0c;使用该功能可将客户端应用代码直接写入与 ALSA 驱动程序共享的内存映射缓冲区…

基于springboot在线考试系统源码和论文

网络的广泛应用给生活带来了十分的便利。所以把在线考试管理与现在网络相结合&#xff0c;利用java技术建设在线考试系统&#xff0c;实现在线考试的信息化。则对于进一步提高在线考试管理发展&#xff0c;丰富在线考试管理经验能起到不少的促进作用。 在线考试系统能够通过互…

前端实现截图并下载

原理: 使用一个名为html2canvas的JavaScript库。这个库允许你将当前的HTML内容渲染到一个canvas元素上&#xff0c;然后将其转换为图像并进行下载。 你需要在项目中引入html2canvas库。你可以从官方网站&#xff08;https://html2canvas.hertzen.com/&#xff09;下载&#xf…

编译原理期末大题步骤——例题

一、预测分析方法步骤 提取左公因子&#xff0c;消除左递归判断文法是否为LL(1)文法若是&#xff0c;构造预测分析表&#xff1b;否则&#xff0c;不能进行分析。根据预测分析表对输入串进行分析 例子&#xff1a; 文法G[E]&#xff1a; …

selenium python 实现基本自动化测试的示例代码

安装selenium 打开命令控制符输入&#xff1a;pip install -U selenium 火狐浏览器安装firebug&#xff1a;www.firebug.com&#xff0c;调试所有网站语言&#xff0c;调试功能 Selenium IDE 是嵌入到Firefox 浏览器中的一个插件&#xff0c;实现简单的浏览器操 作的录制与回…