NTU S-Lab等提出基于GPT的3D舞蹈生成新框架(CVPR 2022 Oral)

2024-01-16 08:50

本文主要是介绍NTU S-Lab等提出基于GPT的3D舞蹈生成新框架(CVPR 2022 Oral),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关注公众号,发现CV技术之美

本篇文章分享 CVPR 2022 Oral 论文『Bailando: 3D Dance Generation by Actor-Critic GPT with Choreographic Memory』,由 NTU S-Lab 等提出基于 GPT 的 3D 舞蹈生成新框架。

详细信息如下:

7ca1665b9feb870da1c0623c0daa37e2.png

  • 论文链接:https://arxiv.org/abs/2203.13055

  • 项目链接:https://github.com/lisiyao21/Bailando

      01      

问题背景

近些年,虚拟主播产业逐渐变得火爆,虚拟人物的表演受到越来越多人的喜爱。驱动3D虚拟人物根据音乐跳舞也成为了非常热门的研究课题。

然而,想要自动化地为一段音乐配舞仍然是个非常困难的任务。其中难点有两个:

第一,舞蹈在空间上有一定规则和范式,并非是所有所有物理上可行的 3D 人体姿势都适用于舞蹈。舞蹈通常有着对身体有更严格要求的姿态标准,并且要具有表现力和感染力。我们可以随意产生一段人体姿态,但如果生成的姿态东倒西歪,就无法达到舞蹈的标准。

第二,生成的舞蹈动作,要在时间上同音乐保持连贯。舞蹈动作应该保持流畅,且能与不同节拍的音乐保持节奏一致。

大多数现有的舞蹈生成研究都试图设计一个巧妙的神经网络,把音乐信号直接映射到高维连续空间中的3D人体关键点序列[1, 2, 3, 4]。但是,此类方法在实践中通常不够稳定,比如经常会出现僵住或轻微的乱晃。这是因为,这些映射的目标空间,没有被显示地约束为符合舞蹈标准的子空间,因此容易回归到不符合舞蹈标准的姿态。

为了达到舞蹈的空间姿态标准,一些研究工作收集了很多真实舞蹈动作的片段,并通过拼接这些片段,编排成新的舞蹈[5]。虽然这种方法可以通过直接操作真实数据保证生成的舞蹈的空间质量,但收集、剪裁这些舞蹈片段需要巨大的人工工作量。更关键的是,因为每一段舞蹈片段的时长、速度以及对应音乐的节奏是固定的,因此,没有办法复用于其他速度和节奏的音乐。比如,对应4/4拍音乐的片段可能无法被用于3/4拍的音乐,每分钟80拍的没法适用于每分钟60拍的。对于不同速度和节奏的音乐,这种方法就很难保证上述的时间一致性。

针对这两个难点,我们提出了一个“两阶段”的编舞框架Bailando。在第一阶段,我们利用量化自编码器(VQ-VAE)将符合空间标准的舞姿编码和量化到一个名为“舞蹈记忆”的编码本中;在第二阶段,我们利用生成预训练Transformer(GPT)将音乐转换为视觉上令人满意的舞蹈。我们还进一步通过引入评论家网络给生成的舞蹈打分,以指导 GPT 编排出与背景音乐节奏具有时间一致性的舞蹈动作。

      02      

提出的方法

2.1 针对舞蹈序列的VQ-VAE和编舞记忆

与之前的方法不同,我们不学习从音频特征到 3D 关键点序列的连续域的直接映射。相反,我们先让神经网络“观看”大量的舞蹈数据,自己从里面“总结”出有意义的舞蹈元素,并且记录下来成为“编舞记忆”。编舞记忆中,每个元素都是从专业舞蹈中提取的符合空间要求的标准舞姿。

具体来说,我们设计了一个针对人体姿态序列的VQ-VAE(Vector Quantized Variational Auto-Encoder)网络,对舞蹈数据的姿态序列进行编码和量化到一个编码本Z中。

d8e9e2d897cae0d240c41d97989b1ff4.png

Z表示VQ-VAE的量化编码本,即“编舞记忆”,其中每一个元素都代表着一个标准的舞姿。为了使舞蹈记忆能涵盖更广泛的舞蹈动作,我们对舞蹈动作的上下身用独立的VQ-VAE进行学习,分别得到上下半身的编码本,并对上下半身进行组合式的拼接。我们还单独学习一个网络分支Dv,用于预测人体关键点的整体位移。 

训练VQ-VAE的损失函数分为:

9ec21959f0276a84ea98f27a331e8996.png

其中,重构函数不仅考虑到对关键点位置P的重构,还考虑到对一阶(速度)和二阶(加速度)导数的重构。

d3096cbcdd4308d31feaeca7107d2a65.png

2.2 动作GPT (motion GPT)

在我们从舞蹈数据中总结出了标准的舞姿库“编舞记忆”后,编舞的任务就变成了对音乐的每一时刻,选择一个合适的舞姿与之对应。这一步我们用到了GPT(Generative Pretrained Transformer)。

4bb0583c59c174d9764ff635af561ffb.png

对于每一时刻t,GPT根据0到t-1时刻的音乐(m)、上半身(u)和下半身(l)信息来预测t时刻的上、下半身舞姿,并对每一个存在编舞记忆中的舞姿计算一个概率。而GPT的学习则是通过对预测的概率与真实动作之间的Cross-Entropy损失函数进行优化。

2.3 “演员-评论家”(Actor-Critic)学习

GPT的训练是直接而有效的。然而,这个框架有一个弊端,即很难向损失函数中加入一些人工定义的正则化项(比如希望让生成的舞蹈更加符合音乐节拍),因为GPT的学习的对象是舞姿在编舞记忆中的编号。为了解决这个问题,我们采用了一种名为“演员-评论家”的强化学习框架。

具体来说,我们把GPT前3层视作一个表示当前状态的“状态网络”,后几层视作一个产生“动作”的“演员网络”,并单独引入一个新的GPT分支作为“评论家网络”。评论家网络的打分和人工设计的奖励函数R,将决定GPT生成的舞蹈是好的(应该鼓励),还是不好的(应该避免),并通过对相应损失函数的优化提升GPT的效果。

36db4d43e02dbda9a7a18ecc1723bcd8.png

      03      

实验结果

3.1 对比实验

我们在AIST++ 数据集上分别对比了Bailando和其他模型的效果,如下表所示,可以看到Bailando相比于已有的方法的有很大优势。

236a8f63f906832d3eefc8e469a5d464.png

以下是一些对比实验的视频:

3.2 消融实验

为了验证每个模块的效果,我们进行了各种消融实验,实验结果也验证了我们提出的每个模块的有效性:

f37591cc17838cfe4615092bbcb453e6.png

以下是消融实验的对比视频:

3.3 为现实音乐伴舞

AIST++的音乐和现实中的音乐有一定差异(比如,没有歌词),但我们依然可以产生还不错的结果:

      04      

总结

在本文中,我们提出了一个名新的3D舞蹈生成框架Bailando,来解决舞蹈生成任务中的空间和时间挑战。该框架由一个通过编码和量化舞蹈动作来解决空间约束的“编舞记忆”,和一个让合成的舞蹈与音乐的保持时间一致性的“演员-评论家” GPT 组成。我们提出的方法不仅在标准数据集AIST++上获得了最好的定量结果,并且在对用户的主观调研中获得了相较其他方法更高的评价。

Bailando的相关代码目前已经开源,欢迎各位同学使用和交流。

  • 论文链接:https://arxiv.org/abs/2203.13055

  • 项目链接:https://github.com/lisiyao21/Bailando

MMLab@NTU

https://www.mmlab-ntu.com/

参考文献

[1] Jiaman Li, Yihang Yin, Hang Chu, Yi Zhou, Tingwu Wang, Sanja Fidler, and Hao Li. Learning to generate diverse dance motions with transformer. arXiv, abs/2008.08171, 2020.

[2] Zijie Ye, Haozhe Wu, Jia Jia, Yaohua Bu, Wenting Chen, Fanbo Meng, and Yanfeng Wang. Choreonet: Towards music to dance synthesis with choreographic action unit. ACM MM, 2020.

[3] Ruozi Huang, Huang Hu, Wei Wu, Kei Sawada, and Mi Zhang. Dance revolution: Long sequence dance generation with music via curriculum learning. ICLR, 2020.

[4] Ruilong Li, Shan Yang, D A Ross, and Angjoo Kanazawa. Learn to dance with aist++: Music conditioned 3d dance generation. ICCV, 2021

[5] Chen Kang, Zhipeng Tan, Jin Lei, Song-Hai Zhang, Yuan-Chen Guo, Weidong Zhang, and Shi-Min Hu. Choreomaster: Choreography-oriented music-driven dance synthesis. In SIGGRAPH, 2021

作者信息

李思尧 | 南洋理工大学 S-Lab 一年级博士生,导师是Chen Change Loy副教授。以一作身份发表3篇顶会论文,曾连续获得ICCV 2019、ECCV 2020 AIM视频插帧赛道冠军。目前主要研究兴趣为内容生成。

7db22ef69fd95d056a283a4b0fc4eabe.png

END

加入「姿态估计交流群👇备注:pose

ae07475593fa94e97e93de322c33870a.png

这篇关于NTU S-Lab等提出基于GPT的3D舞蹈生成新框架(CVPR 2022 Oral)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

轻量级在线服装3D定制引擎Myway简介

我写的面向web元宇宙轻量级系列引擎中的另外一个,在线3D定制引擎Myway 3D。 用于在线商品定制,比如个性化服装的定制、日常用品(如杯子)、家装(被套)等物品的在线定制。 特性列表: 可更换衣服款式,按需定制更换模型可实时更改材质颜色可实时添加文本,并可实时修改大小、颜色和角度,支持自定义字体可实时添加艺术图标,并可实时修改大小、颜色和角度,支持翻转、各种对齐可更改衣服图案,按需求定制

Windwos +vs 2022 编译openssl 1.0.2 库

一 前言 先说 结论,编译64位报错,查了一圈没找到解决方案,最后换了32位的。 使用qt访问web接口,因为是https,没有openssl库会报错 QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());if (reply){if (reply->error() == QNetworkReply::NoError

android 带与不带logo的二维码生成

该代码基于ZXing项目,这个网上能下载得到。 定义的控件以及属性: public static final int SCAN_CODE = 1;private ImageView iv;private EditText et;private Button qr_btn,add_logo;private Bitmap logo,bitmap,bmp; //logo图标private st

FastAdmin/bootstrapTable 表格中生成的按钮设置成文字

公司有个系统后台框架用的是FastAdmin,后台表格的操作栏按钮只有图标,想要设置成文字。 查资料后发现其实很简单,主需要新增“text”属性即可,如下 buttons: [{name: 'acceptcompany',title: '复核企业',text:'复核企业',classname: 'btn btn-xs btn-primary btn-dialog',icon: 'fa fa-pe

【机器学习】自然语言处理的新前沿:GPT-4与Beyond

📝个人主页:哈__ 期待您的关注  目录 🔥引言 背景介绍 文章目的 一、GPT-4简介 GPT-4概述 主要特性 局限性和挑战 二、自监督学习的新进展 自监督学习的原理 代表性模型和技术 三、少样本学习和零样本学习 少样本学习的挑战 先进方法 四、跨模态学习 跨模态学习的概念 代表性技术 应用场景 第五部分:可解释性和透明性 AI的可解释

【文末附gpt升级秘笈】腾讯元宝AI搜索解析能力升级:千万字超长文处理的新里程碑

腾讯元宝AI搜索解析能力升级:千万字超长文处理的新里程碑 一、引言 随着人工智能技术的飞速发展,自然语言处理(NLP)和机器学习(ML)在各行各业的应用日益广泛。其中,AI搜索解析能力作为信息检索和知识抽取的核心技术,受到了广泛的关注和研究。腾讯作为互联网行业的领军企业,其在AI领域的探索和创新一直走在前列。近日,腾讯旗下的AI大模型应用——腾讯元宝,迎来了1.1.7版本的升级,新版本在AI搜

(1995-2022年) 全国各省份-技术交易活跃度

技术交易活跃度是一个关键指标,用于衡量技术市场的交易频繁程度和活跃性。它不仅显示了市场参与者对技术交易的参与热情,而且交易的频率也体现了市场的活力。这一指标对于不同的利益相关者具有不同的意义: 对投资者而言,技术交易活跃度是把握市场趋势、评估交易策略和预测市场波动的重要工具。对企业来说,技术交易活跃度反映了其技术创新的活跃程度和市场竞争的激烈程度,有助于企业制定技术创新和市场竞争策略。对政策制定

[分布式网络通讯框架]----Zookeeper客户端基本操作----ls、get、create、set、delete

Zookeeper数据结构 zk客户端常用命令 进入客户端 在bin目录下输入./zkCli.sh 查看根目录下数据ls / 注意:要查看哪一个节点,必须把路径写全 查看节点数据信息 get /第一行代码数据,没有的话表示没有数据 创建节点create /sl 20 /sl为节点的路径,20为节点的数据 注意,不能跨越创建,也就是说,创建sl2的时候,必须确保sl

【服务器08】之【游戏框架】之【加载主角】

首先简单了解一下帧率 FixedUpdate( )   >   Update( )   >   LateUpdate( ) 首先FixedUpdate的设置值 默认一秒运行50次 虽然默认是0.02秒,但FiexedUpdate并不是真的0.02秒调用一次,因为在脚本的生命周期内,FixedUpdate有一个小循环,这个循环也是通过物理时间累计看是不是大于0.02了,然后调用一次。有

Java中的集合框架使用技巧

Java中的集合框架使用技巧 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java中集合框架的使用技巧,这些技巧能够帮助我们更高效地处理数据和优化程序性能。 Java集合框架概述 Java集合框架提供了一组实现了各种集合接口的类和接口,用于存储和操作数据。它包括列表、集合、队列和映射等数据结构,能够满足不