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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

poj 1287 Networking(prim or kruscal最小生成树)

题意给你点与点间距离,求最小生成树。 注意点是,两点之间可能有不同的路,输入的时候选择最小的,和之前有道最短路WA的题目类似。 prim代码: #include<stdio.h>const int MaxN = 51;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int P;int prim(){bool vis[MaxN];