AI for Animation开源库介绍

AI for Animation开源库介绍

【博物纳新】是UWA旨在为开发者推荐新颖、易用、有趣的开源项目,帮助大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果,并探索将其应用到自己项目的可行性。很多时候,我们并不知道自己想要什么,直到某一天我们遇到了它。

更多精彩内容请关注:lab.uwa4d.com


导读

AI for Animation是一个用来实现流畅而又真实的四足动物的运动动画和人类的运动动画的AI开源项目。本文主要介绍相对更为复杂的四足动物运动。由于现有的架构并不能让原作者团队感到满意,对此,他们提出了一种新型架构来实现这一目标。

请输入图片描述

开源库链接:https://lab.uwa4d.com/lab/5b86874c02004fb659791c62


一、前言

目前四足动物的动画是计算机动画中最具提升空间的话题之一。

一般在动画中出现四足动物时,动画师往往要经过特殊的设计与调试之后,才能设计出四足动物各种复杂的动作。这种复杂性来自于四足动物的动作具有多种形态模式,例如步行、小跑、慢跑和疾驰,而且任意两种模式的转换过程中,会出现更复杂的变化。

请输入图片描述

即使用动作捕捉也无法完全解决这一问题。目前还没有完全用数据来系统地驱动四足动画的成熟模式。关于这点的原因,一方面源于上面提到的复杂性,另一方面四足动物与人类不同,真人动捕演员会按指导做各种规定动作,而动物不能。 最终从四足动物身上捕获的数据往往不够系统化和结构化,它们往往是一个接一个地执行各种随机动作。在设计此类角色的动画时,工程师需要手动/半自动地从数据中提取步态周期和过渡,将它们拼接在一起,并调整运动树和有限状态机的参数。


二、MANN架构

在这个开源库中,作者提出了一种称之为“自适应神经网络”(Mode-Adaptive Neural Networks,简称MANN)的新型网络架构。

MANN由运动预测网络和门控网络组成,能够从拥有大量非结构化四足动作捕获数据中,通过深度学习来改进运动控制器。在给定前一帧中的状态和用户提供的控制信号的情况下,运动预测网络会在每帧计算当前帧中的角色状态;而门控网络会通过选择和混合权重来动态更新运动预测网络的权重,每个权重专门针对特定的运动。

作者开发的端到端学习架构可以从大量非结构化运动捕获数据中学习。与以往的其他四足动画不同的是,MANN架构在两个模式相互切换的过程中,并非去找到固定的权重解,而是在优化的同时将一组两个权重混合到(第三个)神经网络中。然后动态地组合门控网络的混合系数,使得该混合系数适应当前的运动状态。

再将运动预测网络中使用所生成的速率作为指标,来产生期望的动作或运动,使得动画明显地平滑起来。


三、Demo效果展示

该项目提供了Demo供演示、使用和学习。

Demo中为使用一小时的四足动作捕捉数据,并通过随机梯度下降来训练。

请输入图片描述

在训练之后,用户可以使用简单的键盘指令来切换各种运动模式,实时地控制角色。地面上的红色和绿色箭头表示运动控制信号,用于估计用户想要导航的未来轨迹。

请输入图片描述

下面的上图展示了由给定速度产生的不同运动模式的脚步,下图显示了每层神经元在适应当前运动状态时产生的周期性改变。

请输入图片描述
请输入图片描述

下图中,我们可以看到各种运动过程中八种不同混合系数的激活曲线。

门控网络的输出神经元学会专门针对不同的运动阶段转换和动作。

每个运动具有不同的输出神经元,产生不同的循环函数。

通过调节所需的速度,不同运动模式之间的过渡也会趋向于自然。

即便角色的操作灵敏度比较高,不同动作之间的过渡依旧是非常流畅的。

请输入图片描述
请输入图片描述
请输入图片描述
请输入图片描述

在某些混合的特定视角下,可能一些动作或动作间的过渡会被禁用。比如在这种情况下无法继续左转(右转并不受影响)。

请输入图片描述

在给定路线之后,运动也会沿着既定路线,同时计算合适的速度,保持运动的自然。

请输入图片描述
请输入图片描述

当需要瞬时左转或右转时,与其他项目相比,MANN系统可以更快地对给定的控制信号做出反应。

与其他的神经网络系统相比,MANN系统的动作也明显更加自然。

请输入图片描述


四、简评

从最后的直观表现上来看,MANN的操作反馈迅速,动画流畅自然。

从结构本身来看,MANN具有灵活性,可以在各种非周期性动作和未标记的周期性步态类型中学习一致的特征。这个框架可以解放开发者们,让他们不再苦于相位标记的繁琐和困难。

从更加宏观的角度来看,MANN对Machine Learning的使用方式,也可以从某种程度上给与其他开发者一些启发。

Machine Learning作为AI的一种应用,不同于传统的工程方式,它使系统能够自主地学习数据。通过向系统提供信息并观察和搜索合适的模式,对未来结果进行预测。更广泛地说,系统学习所需的输入-输出映射后,将能够选择下一步要执行的最佳操作,优化运行的结果。

当然,Machine Learning在刚开始上手的阶段必然会有一定的上手难度和门槛,不可避免地需要开发者克服。但在未来的开发中,Machine Learning的使用频率应该也会越来越高,对Machine Learning的了解和使用对于未来的开发一定会有帮助。


五、Machine Learning相关开源库与Unity blog推荐

在Machine Learning相关领域下,目前的Unity已经有了越来越好的支持。

UWA开源库中也还有不少相关的开源项目,小编在此也推荐一些:

Machine Learning Agents Toolkit

Unity Neural Network

Self-driving Car Simulator

Evolutionary Artificial Neural Networks

还有一些Unity Blog相关的文章可供浏览,按时间发布先后:

Unity AI Themed blog entries

Unity AI – Reinforcement Learning with Q-Learning

Introducing: Unity Machine Learning Agents Toolkit

Using Machine Learning Agents Toolkit in a real game: a beginner’s guide

Solving sparse-reward tasks with Curiosity

Obstacle Tower Challenge: Test the limits of intelligence systems

Unity ML-Agents Toolkit v0.8: Faster training on real games

快用UWA Lab合辑Mark好项目!

请输入图片描述

今天的推荐就到这儿啦,或者它可直接使用,或者它需要您的润色,或者它启发了您的思路......

请不要吝啬您的点赞和转发,让我们知道我们在做对的事。当然如果您可以留言给出宝贵的意见,我们会越做越好。