Bailando 音乐生成舞蹈网络学习

2024-08-23 16:44

本文主要是介绍Bailando 音乐生成舞蹈网络学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、代码/论文

二、Bailando: 3D Dance Generation by Actor-Critic GPTwith Choreographic Memory

        Bailando :演员评论家GPT与编舞记忆的3D舞蹈生成

三、论文学习:

1、现阶段音乐生成舞蹈的挑战:现有CNN等直接音乐特征映射舞蹈特征的方法无法给舞蹈施加空间约束。裁剪、拼接舞蹈动作块方法,很难对齐节奏和节拍。

1)空间约束:由音乐生成的舞蹈根据编舞规范需要施加空间约束,并非所有物理上可行的3D人体姿势都适用于舞蹈。舞蹈式姿态的子空间对身体有更严格的位置标准,并根据编舞规范选择性地具有视觉表现力和情感感染力。

2)与音乐的时间一致性:生成的舞蹈需要与不同的音乐流派保持时间上的一致性,生成的舞蹈序列在各种类型的节拍上应与音乐节奏保持一致,同时保持整个动作流畅。

2、本文方法解决上述问题:

 1)空间约束:通过总结舞蹈风格子空间动作的基本和可重用部分,本文建立了一个量化舞蹈单元的有限字典,及舞蹈记忆,本文使用 VQ-VAE 无监督的方式将3D关节序列编码和量化到代码本中,,其中每个学习到的代码都显示为代表独特的舞蹈姿势。为了进一步扩大编排记忆可以表示的范围,将3D姿势划分为组成的上半身和下半身,并分别学习半身体的vq-vae,这样任何一段舞蹈都可以表示为成对的姿势代码序列。

2)时间一致性:为了生成时间和谐的舞蹈序列,引入了一种名为运动GPT的类似GPT的网络,将音乐和源姿态代码转换为目标的未来姿态代码。由于三维姿态在编舞记忆中被划分为组合半体,我们提出了交叉条件因果注意层来增强运动GPT,以保持生成体的连贯性。此外,为了实现不同运动节奏和音乐节拍之间的精确时间同步,我们应用了一种策略强化学习方案,通过演actor-critic GPT 微调和新设计的节拍对齐奖励函数来进一步提高运动GPT。

3)本文贡献:(1)创建了一个编码记忆网络VQ-VAE,编码和量化舞蹈3d姿势(2)创建了一个结合编舞记忆和交叉条件因果注意的 actor-critic GPT网络

3、本文方法:与其他基于学习的方法不同,我们不会学习从音频特征到 3D 关节序列连续域的直接映射。相反,我们首先将空间标准舞蹈动作编码并量化为有限码本 Z 作为编舞记忆,每个代码 zi 都表示具有上下文语义信息的舞蹈姿势。具体来说,我们分别在上半身和下半身学习 VQ-VAE,并将舞蹈动作表示为一系列组合的上下姿势代码对 p = [pu; pl]。然后,我们引入运动 GPT 将音乐特征和源姿势代码转换为未来的姿势代码。此外,为了实现生成的动作节奏和音乐节拍之间的同步对齐,我们在提出了在动作 GPT 上使用我们新设计的节拍对齐奖励强化学习进行演员评论家学习。生成的姿势代码序列最终由 VQ-VAE 解码器解码并组合成流畅的 3D 舞蹈。

1)舞蹈记忆网络:VQ-VAE 网络修改为3d动作编码量化网络

(1)把动作转为 J×3 3D世界坐标系点位、并分成上下两部分分别做以下步骤

(2)经过 E 进行编码,把帧数×节点上×位置信息(T,J,3)-> e动作特征矩阵 (T,C=512)

(3)经过编码记忆密码本 Choreographic Memory Codebook, 他的作用可以输入 e (T,C)编码成(T,1)维数组,然后把这个一维数组解码成 eq(T,C)矩阵。

(4)通过两个解码器分别解码,Dp解码(T,2 到 J,3)的节点位置数据 P,Dv解吗(T,1,3)的节点位置数据V,最后拼接 [V , 上P ,下P] 成完整 (T,J,3)动作数据

(5)训练时先训练Dp,然后固定Dp参数固定,添加Dv层只预测V进行微调训练 

2)交叉条件运动GPT: actor-critic GPT 修改GPT 网络使用编码记忆密码本 Choreographic Memory Codebook 通过把e编码的一维数组数据,去训练预测下一个一维数组数字,组成一串动作数组,通过 Choreographic Memory Codebook解码成 eq ,然后舞蹈记忆网络解码成真正的动作数据

(1)通过舞蹈记忆网络将真实的3d舞蹈动作数据编码成编码记忆密码本的Pup、Plow

(2)将音乐信息和经过特征提取的 P 拼接,然后经过 Transformer 层 fs + fa输出预测未来的姿势数组 aup,alow 

(3)通过 Choreographic Memory Codebook解码、通过 舞蹈记忆网络解码成真正的动作数据

3)强化学习:加强舞蹈节拍一致性

(4)增加另一个单独三层Transformers fv 作为 评论家模型,原模型为演员模型

(5)TD-error 得分为 评论家得分 + 身体一致性得分 和 节奏对齐得分(3.3公式没看懂,有大佬看懂这部分可以留个言😄)

4、实验

这篇关于Bailando 音乐生成舞蹈网络学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099937

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

C/C++随机数生成的五种方法

《C/C++随机数生成的五种方法》C++作为一种古老的编程语言,其随机数生成的方法已经经历了多次的变革,早期的C++版本使用的是rand()函数和RAND_MAX常量,这种方法虽然简单,但并不总是提供... 目录C/C++ 随机数生成方法1. 使用 rand() 和 srand()2. 使用 <random