运动生成学习周报

本周总结

这周主要阅读了一篇人体运动生成综述(2307.10894] Human Motion Generation: A Survey (arxiv.org))。

疑问

由于是第一次接触运动生成领域,因此我预先设想了很多问题,希望可以从论文中得到答案。

  • 人体运动生成的使用场景是什么?
  • text-drivenaudio-driven都是为了传递符合预期的信息,它们之间有什么区别?
  • 运动生成与图像生成、视频生成之间有什么区别和联系?
  • 运动生成与通过强化学习学习动作有什么区别?
  • 评价运动生成质量的标准有哪些儿?
  • 人体运动数据集的形式是什么样的?
  • ……

收获

以下是结合以上问题与两篇论文,我学习到的内容

使用场景

人体运动生成可以用在电影制作、VR 游戏(刀剑领域未来可期)、人机交互(机器人根据特定指令生成并进行相应的动作,似乎会涉及到大量的多模态交互)、数字人(元宇宙,数字资产未来趋势)

数据

运动数据的表现形式主要有两种:基于关节点的数据表示和基于旋转角的数据表示。

  1. 基于关节点:以人体骨骼关键节点的坐标(二维 or 三维,二维如下图所示)记录每一帧的动作。通过记录节点的坐标变化来记录时序的运动数据。
    • 优势:可解释性高,关键点坐标提取方式简单
    • 劣势:表达能力有限,无法记录身体形状和肢体扭曲信息的细节
人体骨骼节点(左18节点,右25节点),参考Openpose
人体骨骼节点(左18节点,右25节点),参考OpenPose
  1. 基于旋转角:使用关节角度表示人体姿态,即在分层结构中,身体部位或节段相对于其上一级的旋转角度。通过记录关节角度的变化来记录时序动作序列。
基于旋转角的人体姿态表示
基于旋转角的人体姿态表示,参考综述论文图

数据集制作方法:

  • 基于标记:追踪标记轨迹,精确度高
  • 无标记:多摄像视角合成,精确度较低,但更方便
  • 伪标记:使用现用的人体姿态评估算法,例如 OpenPose,误差较大
  • 人工标记:质量高,但成本昂贵、耗时高

生成方法

  • 基于 GAN:训练不稳定、不容易收敛、模型坍塌
  • 基于 VAE:后验崩溃
  • 基于 NF计算成本高、训练困难
  • 基于 Diffusion:计算成本高、速度慢
  • 基于运动图

条件生成

graph LR

o(Condition)

o1(Text-Conditioned)
o11(Action-to-Motion)
o111(根据特定动作类别生成动作序列)
o12(Text-to-Motion)
o121(根据自然语言描述生成动作序列)
o122(挑战:Zero-shot、复杂文本)

o2(Audio-Conditioned)
o21(Music-to-Dance)
o211(根据音乐生成对应舞蹈动作)
o212(挑战:错误累积、一对多映射)
o22(Speech-to-Gesture)
o221(根据语音生成手势动作)

o3(Scene-Conditioned)
o31(以目标为导向,考虑环境,生成动作)
o32(预测目标位置,规划路径,填充并细化动作)

o --- o1
o --- o2
o --- o3

o1 --- o11
o1 --- o12
o11 --- o111
o12 --- o121
o12 --- o122

o2 --- o21
o2 --- o22
o21 --- o211
o21 --- o212
o22 --- o221

o3 --- o31
o3 --- o32

style o fill:green,stroke:green,stroke-width:1px,color:white
style o1 fill:#f22816,stroke:#f22816,stroke-width:1px,color:white
style o2 fill:#f2b807,stroke:#f2b807,stroke-width:1px,color:white
style o3 fill:#233ed9,stroke:#233ed9,stroke-width:1px,color:white
style o11 fill:#fcd4d0,stroke:#fcd4d0,stroke-width:1px
style o12 fill:#fcd4d0,stroke:#fcd4d0,stroke-width:1px
style o111 fill:#fcd4d0,stroke:#fcd4d0,stroke-width:1px
style o121 fill:#fcd4d0,stroke:#fcd4d0,stroke-width:1px
style o122 fill:#fcd4d0,stroke:#fcd4d0,stroke-width:1px
style o21 fill:#fcf1cd,stroke:#fcf1cd,stroke-width:1px
style o22 fill:#fcf1cd,stroke:#fcf1cd,stroke-width:1px
style o211 fill:#fcf1cd,stroke:#fcf1cd,stroke-width:1px
style o212 fill:#fcf1cd,stroke:#fcf1cd,stroke-width:1px
style o221 fill:#fcf1cd,stroke:#fcf1cd,stroke-width:1px


linkStyle 0 stroke:#f22816,stroke-width:5px;
linkStyle 1 stroke:#f2b807,stroke-width:5px;
linkStyle 2 stroke:#233ed9,stroke-width:5px;
linkStyle 3 stroke:#f22816,stroke-width:3px;
linkStyle 4 stroke:#f22816,stroke-width:3px;
linkStyle 8 stroke:#f2b807,stroke-width:3px;
linkStyle 9 stroke:#f2b807,stroke-width:3px;
linkStyle 13 stroke:#233ed9,stroke-width:3px;
linkStyle 14 stroke:#233ed9,stroke-width:3px;

音频具备的信息比文本更加丰富,除了与文本信息相同的语义信息之外,音频中还包括韵律、节拍、音调、情感等多种信息。这些要素为生成的动作序列提供了更丰富的上下文,对生成的动作序列约束更多。

评估指标

  1. 保真度:从自然度、平滑度、可信度等方面评估

    • 生成动作与 Ground-truth 之间计算距离保证准确度。但是 Ground-truth 只有一个,无法提供全面的评估。
    • 通过比较生成的运动流形和真实流形之间的相似度来衡量自然度。在运动空间和特征空间中计算。
    • 确保生成的运动符合物理规则,尤其是脚与地面相互作用的物理规则。
  2. 多样性:避免动作重复

    • 单个运动序列内:计算差异和冻结率,防止动作冻结
    • 不同运动序列间:计算覆盖率和多模态。
  3. 条件一致性

    • 文本—动作:计算多模态空间中的距离

    • 音频—动作:计算节拍、语义一致性

    • 场景—动作:计算非碰撞得分、人与场景的接触

  4. 用户偏好

思考(胡思乱想)

或许是 AIGC 的发展路程大抵类似,我发现生成图片与生成动作的方法都差不多,从早期使用 VAE/VA-VAE 在潜空间中学习生成目标的特征分布,再到使用 GAN 模型通过对抗训练提高生成结果的质量,然后到使用 Diffusion 通过逐步去噪的方式生成结果,提高多样性。其中 CLIP 模型的发展,统一了多模态特征的空间,进一步提升了条件与生成结果之间的一致性。因此对于生成动作的某些挑战,可以参考文生图的方法。

例如,如何提高文本、音频条件与生成动作之间的一致性,可以参考 OpenAI 的 DALLE-3 做法,将文本输入 GPT-4 中,对提示词进行上采样,丰富文本内容,在输入到生成模型中生成动作序列;或者参考 SD3 的做法,使用多个文本编码器获得多个条件嵌入,将它们拼接在一起作为最终的条件控制……至于如何提高生成动作序列的平滑度、自然度,应该可以参考文生视频的方法。

当然以上都是纸上谈兵,方法是否可以迁移需要进行后续的实验验证。

下周计划(粗略版)

这周对动作生成的发展、方法有了粗略的认识,但很多疑问在这篇综述中还是没得到解答。下周我将至少精读一篇动作生成的论文,走一下整个流程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值