伯克利曾经提出 DeepMimic框架,让智能体模仿参考动作片段来学习高难度技能。但这些参考片段都是经过动作捕捉合成的高度结构化数据,数据本身的获取需要很高的成本。而近日,他们又更进一步,提出了可以直接模仿 Youtube 视频人物高难度动作的新框架 SFV。

从 YouTube 视频中学习技能的智能体。

通过 SFV 学习到的智能体动作还原度很高,并且有很好的泛化至新环境的能力,例如从平地泛化到不规则地形。当然,仍然存在一些难以模仿的动作,例如某某鬼畜骑马舞。

无论是像洗手这样的日常任务还是惊人的杂技表演,人类都可以通过观察他人来学习一些令人难以置信的技能。随着 YouTube 等开源视频数据的激增,现在我们比以往任何时候都更容易找到感兴趣技能的视频片段。每分钟都会有 300 小时的视频传到 YouTube 上。但是,对机器人来说,从这些海量的视频中学习技能仍是一项非常艰巨的任务。大多数模仿学习方法都需要简洁的表征,比如从动作捕捉(mocap)中记录的表征。但是获取 mocap 数据相当麻烦,通常需要大量仪器。Mocap 系统容易局限于遮挡较小的室内环境,这会限制能够记录的技能类型。所以,如果智能体可以从视频片段中学习技能就再好不过了。

使用 Mocap 捕捉演员动作并复现 3D 角色的动作(电影《指环王》)。

在本文中,我们展示了一个从视频中学习技能的框架(SFV)。通过将计算机视觉领域最先进的技术与强化学习相结合,我们的系统使智能体能够从视频中学习各种技能。给定一个单目视频,视频中有人表演侧手翻或后空翻等动作,我们的智能体能够学习在物理模拟中再现该技能的策略,而无需任何手动姿势注释。

从视频中学习全身动作技能的问题在计算机图形学中受到了一些关注。以前的技术通常依赖于手工制作的控制结构,这些结构对要做的动作加了很大的限制。因此,这些方法限制了可以学习的技能类型,由此产生的动作也看起来非常不自然。最近,深度学习技术在 Atari 游戏和简单的机器人任务中进行视觉模仿取得了不错的结果。但是这些任务在演示和智能体的环境之间通常只有适度的领域变化,且主要是在动态相对简单的任务上进行持续控制。

框架

该框架包括三个阶段:姿势估计、动作重建和动作模仿。输入视频首先接受第一阶段姿势估计的处理,预测每一帧中角色的姿势。接下来,动作重建阶段将姿势估计结果固化为参考动作,并修复姿势估计结果可能带来的失真。最后,将参考动作输入到动作模仿阶段,利用强化学习训练智能体模仿动作。

整个流程包含三个步骤:姿势估计、动作重建及动作模仿。执行特定动作的人物视频片段和智能体模型充当输入,并学习一种控制策略,使智能体能够在物理模拟中再现该动作。

姿势估计

我们在一个给定的视频片段中使用一个基于视觉的姿势估计器来预测动作执行者在每一帧中的姿势 q_t hat。姿势估计器建立在人体网格恢复(human mesh recovery)的基础上,后者使用弱监督对抗性方法来训练姿势估计器以预测单目图像中的姿势。虽然需要姿势相关注释来训练姿势估计器,但一旦训练完毕,姿势估计器就可以应用于没有任何标注的新图像。

基于视觉的姿势估计器用于预测人物在每一帧中的姿势

动作重建

由于姿势估计器针对每个视频帧独立预测人物的姿势,因此各帧之间的预测可能不一致,导致出现抖动噪声。而且,尽管基于视觉的姿势估计器在近些年取得了显著进展,但它们仍然偶尔出一些大错,导致出现一些奇怪姿势。这些噪声可以呈现物理上无法模仿的姿势。因此,动作重建阶段的作用就是减轻这些噪声,以产生一些物理上更加可行的参照,使智能体更加容易模仿。为了做到这一点,我们优化了一种新的参考动作

,以实现以下目标:

公式中的 l_p(Q hat) 使得参考动作与原始姿势预测更加接近,L_sm(Q hat) 使得相邻帧的姿势更加相似,以生成更加连贯的动作。此外,W_p 和 W_sm 是不同损失的权重。

这一过程可以显著提高参考动作的质量,并且可以修复原始姿势预测里的大量噪声。

动作重建前后的参考动作对比。动作重建修复了一些失真,使参考动作更加流畅。

动作模仿

现在我们得到了参考动作

,接下来我们将训练智能体模仿该技能。动作模仿阶段使用与模拟 mocap 数据类似的强化学习方法。奖励函数鼓励策略将每一帧 t 中模仿智能体的姿势和重建参考动作 q^_t 之间的区别最小化,

这种简单的方法效果非常的好,智能体能够学习多种高难度杂技技巧,且每个技巧都仅通过一次视频展示习得。

智能体通过模仿视频片段学习多种技巧。

结果

总之,我们的智能体可以从 Youtube 的多种视频剪辑中学习 20 多种不同的技能。

我们的框架可以从视频演示中学习大量的技能组合。

即使智能体的形态和视频中的人物通常很不相同,其学习到的策略仍然可以重现很多种技能。作为更加极端的形态差异的示例,我们还可以训练一个虚拟的 Atlas 机器人来模仿人类的视频剪辑中的动作。

虚拟仿真机器人(Atlas)可以通过模仿视频剪辑学习多种动作组合。

使用虚拟智能体的一个好处是我们可以利用模仿过程来将其行为泛化到新环境中。这里我们模拟了让智能体学习适应不规则地形的动作,其中原始的视频剪辑记录的是在平地上的人物动作。

智能体在不规则的地形中也能做出模仿动作。

即使新环境和原始视频的环境很不相同,学习算法依然发展出了非常合理的策略来应对新的环境。

总而言之,我们的框架真的仅仅是使用了任何人都能想到用来解决视频模仿问题的明显方法。关键在于将问题分解为更好掌控的组成,为这些组成选择正确的方法,并有效地将它们整合到一起。然而,视频模仿技能仍然是一个极有挑战性的问题,目前仍然有大量的视频剪辑是我们无法重现的。

灵巧的舞步,例如江南 Style,仍然是很难模仿的。

但令人鼓舞的是,仅通过整合已有的技术,我们就能在这个难题上走出一大步。

论文:SFV: Reinforcement Learning of Physical Skills from Videos

  • 项目展示页:https://xbpeng.github.io/projects/SFV/index.html
  • 论文地址:https://xbpeng.github.io/projects/SFV/2018_TOG_SFV.pdf

基于动作捕捉的数据驱动的智能体可以生成高度自然的动作,而且与物理模拟相结合时可以提供对物理干扰、环境变化和形态差异的自然过程响应。动作捕捉仍然是最流行的动作数据来源,但是收集 mocap 数据通常需要配备大量仪器的环境和表演者。在本文中,我们提出了一种方法,使智能体能从视频中学习技能(SFV)。该方法基于深度姿势估计和深度强化学习,允许数据驱动的模仿利用网络上的大量公开视频片段,如 YouTube 上的视频。这有可能通过查询所需动作的视频记录来实现快速而简单的人物控制器设计。所产生的控制器对干扰具有鲁棒性,能够适应新设置,执行基本的对象交互,并能通过强化学习重新定位新形态。我们还进一步证明,该方法可以通过对观察到的姿势进行初始化得到的学习控制器进行正向模拟,进而根据静止图像预测人物的可能动作。我们的框架能够学习各种动态技能,包括运动、杂技和武术。

伯克利推出「看视频学动作」的AI智能体的更多相关文章

  1. 企业网管软件实战之看视频学装Cisco Works 2000

    650) this.width=650;" border="0" alt="125711349.jpg" src="http://img1. ...

  2. 「面向 offer 学算法」笔面试大杀器 -- 单调栈

    目录 前言 单调栈 初入茅庐 小试牛刀 打怪升级 出师试炼 前言 单调栈是一种比较简单的数据结构.虽然简单,但在某些题目中能发挥很好的作用. 最近很多大厂的笔试.面试中都出现了单调栈的题目,而还有不少 ...

  3. 看视频学SignalR—在微软虚拟学院学习SignalR

    SignalR把实时Web功能变得异常简单. 如果您希望在几个小时内对SignalR有一个直观的了解,观看微软虚拟学院(MVA)的视频教学Lighting Up Real-Time Web Commu ...

  4. 看视频学Bootstrap—在微软虚拟学院学习Bootstrap

    Bootstrap 是目前最流行的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB项目. 如果您希望在几个小时内对Bootstrap有一个直观的了解,观看微软虚拟学院(M ...

  5. 学测试,看视频?NONONO,除非这种情况

    001 前言 : 很久没周末写文章了,一个是要睡懒觉.另外一个是,周末写了大家也没有心思看(加班1周了,好不容易周末,你又让我学习 ?先睡个懒觉再说,去TM的学习). 然而,今天早早的5点就起床了,处 ...

  6. iOS模式详解—「runtime面试、工作」看我就 🐒 了 ^_^.

    Write in the first[写在最前] 对于从事 iOS 开发人员来说,当提到 ** runtime时,我想都可以说出来 「runtime 运行时」和基本使用的方法.相信很多开发者跟我当初一 ...

  7. iOS 模式详解—「runtime面试、工作」看我就 🐒 了 ^_^.

    引导 Copyright © PBwaterln Unauthorized shall not be *copy reprinted* . 对于从事 iOS 开发人员来说,所有的人都会答出「runti ...

  8. 「雕爷学编程」Arduino动手做(15)——手指侦测心跳模块

    37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...

  9. 精心整理「服务器Linux C/C++」 成长路程(附思维导图)

    前言 我不是名校毕业,更没有大厂的背景,我只是一个毕业不到 2 年的普普通通的程序员,在摸爬滚打的工作这段时间里,深知了有一个「完整的知识体系」是非常重要的.当事人非常后悔没有在大学期间知道这个道理- ...

随机推荐

  1. HDU 3829

    http://acm.hdu.edu.cn/showproblem.php?pid=2970 P个小朋友喜欢猫讨厌狗,喜欢狗讨厌猫,移除一定数量的猫狗,使开心的小朋友数量最多 二分图最大独立集=顶点数 ...

  2. 20155216 2016-2017-2 《Java程序设计》第五周学习总结

    20155216 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 使用try,catch,finally处理异常 JVM会尝试执行try区块中的程序代码,如果 ...

  3. Java8函数式编程学习笔记(初探)

    编程语言的整个目的就在于操作值,要是按照历史上编程语言的传统,这些值被成为一等值,而编程语言中的其他结构也许有助于表示值的结构,但在程序执行期间不能传递,因此为二等值,比如方法和类等则是二等值,类可以 ...

  4. js模板引擎---jtemplates使用

    昨天记录了如何使用腾讯的模板引擎,今天记录一下jquery的模板引擎jtemplates.官网:http://jtemplates.tpython.com/ 编写模板:需要在页面引入jquery和jt ...

  5. 谨慎使用 FileInfo.Exists 实例方法,而是使用 File.Exists 静态方法替代

    如果你在代码中使用了 FileInfo.Exists 实例方法来判断一个文件是否存在,也许会发现此方法可能错误地判断来一个文件是否真的存在.这是一个坑. 本文将介绍坑的原因,并提供填坑的办法. 本文内 ...

  6. Centos(linux)下的Python

    Centos(linux)下安装python3(python2和python3共存) yum -y install lrzsz 首先安装lrzsz工具,lrzsz是一款在linux里可代替ftp上传和 ...

  7. 给div加滚动条

    <div style="width:175px;height:100px;background:white;overflow:scroll;"> <span> ...

  8. adnanh webhook 框架使用

    adnanh webhook 支持以下功能: 接收请求 解析header 以及负载以及查询变量 规则检查 执行命令 简单测试 使用docker-compose docker-compose 文件 ve ...

  9. oracle C# 访问

    使用oracle的odp.net 进行oracle数据库的访问对于进行oracle数据库的开发来说是比较方便的,使用的方式与ADO.net 是一致的. 一下为使用的测试 1. 安装必要的oracle ...

  10. js 命名空间

        yui的命名空间和继承机制 var YAHOO = window.YAHOO || {};YAHOO.namespace = function(ns) {    if (!ns || !ns. ...