让 3D 动画小人做一套丝滑的动作,需要手动渲染多久?
现在交给 AI,输入几句话就能搞定(不同颜色代表不同动作):
看向地面并抓住高尔夫球杆,挥动球杆,小跑一段,蹲下。
此前,AI 控制的 3D 人体模型基本只能“每次做一个动作”或“每次完成一条指令”,难以连续完成指令。
现在,无需剪辑或编辑,只需按顺序输入几条命令,3D 人物就能自动完成每一套动作,全程丝滑无 bug。
这只新 AI 的名字叫 TEACH,来自马普所和古斯塔夫・艾菲尔大学。
网友们脑洞大开:
这样以后拍 3D 动画电影,是不是只用剧本就能搞定了?
显然,游戏和仿真行业可以考虑一下了。
那么,这样的 3D 人物动作神器是怎么来的呢?
用编码器“记住”前一个动作
TEACH 的架构,基于团队不久前提出的另一个 3D 人体运动生成框架 TEMOS。
TEMOS 基于 Transformer 架构设计,利用人体真实运动数据进行训练。
它在训练时会采用两个编码器,分别是动作编码器(Motion Encoder)和文本编码器(Text Encoder),同时通过动作解码器(Motion Decoder)输出。
但在使用时,原本的动作编码器就会被“扔掉”、只保留文本编码器,这样模型直接输入文本后,就能输出对应的动作。
与其他输入单一文本、输出确定性动作的 AI 不同,TEMOS 能通过单一文本,生成多种不同的人体运动。
例如“人绕圈”和“站着走几步路停下来”这种单一指令,就能生成好几种不同的运动方式:
△ 转圈方式、走路步幅都不一样
TEACH 的架构正是基于 TEMOS 设计,动作编码器直接就从 TEMOS 那儿搬了过来。
但 TEACH 重新设计了文本编码器,其中包括一个名叫 Past Encoder 的编码器,它会在生成每一个动作时,提供前一个动作的上下文,以增加动作与动作之间的连贯性。
如果是一系列指令中的第一个动作,就禁用 Past Encoder,毕竟没有前一个动作可以学了。
TEACH 在 BABEL 数据集上进行训练,这是一个时长 43 小时的动捕数据集,包含过渡动作、整体抽象动作、以及每一帧的具体动作。
在训练时,BABEL 的这一系列动捕数据会被切分成很多个子集,每个子集中包含一些过渡动作,让 TEACH 能学会过渡并输出。
至于为什么不用另一个数据集 KIT 进行训练,作者们也给出了自己的看法。
例如在动词类型上,BABEL 出现要比 KIT 更具体,相比之下 KIT 更喜欢用 do / perform 这种“模糊的”词汇。
研究人员将 TEACH 与 TEMOS 就连续动作生成效果进行了对比。
比 TEMOS 效果更好
先来看看 TEACH 生成一系列动作的效果,连续不重样:
随后,研究人员将 TEMOS 与 TEACH 进行了对比。
他们使用两种方法对 TEMOS 模型进行了训练,并分别将它们称之为 Independent 和 Joint,区别在于训练用的数据上。
其中,Independent 直接用单个动作训练,在生成时将前后两个动作用对齐、球面线性插值等方式融合在一起;Joint 直接用动作对和分隔开的语言标签作为输入。
Slerp 是一种线性插值运算,主要用于在两个表示旋转的四元数之间平滑插值,让变换过程看起来更流畅。
以生成“挥挥右手,举起左手”连续两个动作为例。
Independent 的表现效果最差,人物当场坐下了;Joint 效果好一点,但人物并没有举起左手;效果最好的是 TEACH,在挥动右手后又举起了左手,最后才放下。
在 BABEL 数据集上测试表明,TEACH 的生成误差是最低的,除此之外 Independent 和 Joint 的表现都不太好。
研究人员还测了测使用上一个动作的最佳帧数,发现当使用前一个动作的 5 帧时,生成的过渡动作效果最好。
作者介绍
Nikos Athanasiou,马普所在读研究生,研究方向是多模态 AI,喜欢探索人类行动和语言背后的关系。
Mathis Petrovich,在古斯塔夫・艾菲尔大学(Université Gustave Eiffel)读博,同时也在马普所工作,研究方向是基于标签或文字说明产生真实的、多样化人体运动。
Michael J. Black,马克思・普朗克智能系统研究所主任,如今谷歌学术上论文引用次数达到 62000 + 次。
Gul Varol,古斯塔夫・艾菲尔大学助理教授,研究方向是计算机视觉、视频特征学习、人体运动分析等。
目前 TEACH 已经开源,感兴趣的小伙伴们可以戳下方地址体验了~
GitHub 地址:
https://github.com/athn-nik/teach
论文地址:
https://arxiv.org/abs/2209.04066
标签: AI