机器人大模型GR2——在大规模视频数据集上预训练且机器人数据上微调,随后预测动作轨迹和视频(含GR1详解)

news2024/11/6 7:14:36

前言

上个月的24年10.9日,我在朋友圈看到字节发了个机器人大模型GR2,立马去看了下其论文(当然了,本质是个技术报告)

这次也是我头一次看paper,不看正文,而是直奔其References,​看有没有我预想中的文献,说明咱看paper的能力相比去年强很多了那天之后,我就一直想解读这个GR2来着

然,意外来了,如此文《OmniH2O——通用灵巧且可全身远程操作并学习的人形机器人(其前身H2O是HumanPlus的重要参考)》开头所说

由于我司「七月在线」自今年年初以来,一直在针对各个工厂、公司、客户特定的业务场景,做解决方案或定制开发,所以针对每一个场景,我们都会反复考虑“用什么样的机器人、什么样的技术方案”做定制开发

  1. 于此,便不可避免的追踪国内外最前沿的机器人技术进展,本来准备在上一篇博客《VLM驱动机器狗——从UMI on Legs到Helpful DoggyBot:分别把机械臂装到机器狗背上、夹爪装到机器狗嘴里》之后,解读今天上午看到的字节刚发的机器人大模型GR2

    当时,还发微博说,“头一次看paper不看正文,而是直奔其References:​看有没有我预想中的文献,说明咱看paper的能力相比去年强很多了”
  2. 没想到晚上,一在上海一机器人公司的朋友,又发我了一个链接:OmniH2O: Universal and Dexterous Human-to-Humanoid Whole-Body Teleoperation and Learning,并说这个挺可以的

在字节机器人大模型GR2之前,故先解读这个OmniH2O及其前身H2O

  1. 可在解读OmniH2O的过程中,发现了MDM这个方法挺有用的,包括后续的RobotMDM,加之还有朋友私我UCSD的Exbody相关的问题,故又去写了这篇文章
    从MDM、RobotMDM到UCSD的Exbody——人体运动扩散模型:赋能机器人的训练
  2. 后来,再考虑到想阐述清楚GR2,则得先阐述好通过学习人类视频训练机器人的方法,于是又去写了这篇(其实在SeeDo之前,我写了对OpenAI o1的解读,我可太忙了,^_^)
    从视频中学习的SeeDo:VLM解释视频并生成规划、代码(含通过RGB视频模仿的人形机器人OKAMI、DexMV)
  3. 然机器人领域实在是发展太快了,我自己在视频号上看到了iDP3(且友人丁研究员也和我说了这个iDP3),于此便有了本文
    iDP3——改进3D扩散策略以赋能人形机器人的训练:不再依赖相机校准和点云分割(含DP3、Diff-Control、ControlNet详解)
  4. 再后来,又和友人丁研究员在交流UMI、fastumi的过程中,聊到了清华高阳团队的一篇论文
    于此,又有了这篇文章
    机器人领域中的scaling law:通过复现斯坦福机器人UMI——探讨数据规模化定律(含UMI的复现关键)
  5. 最后,昨天看到了UC伯克利的HIL-SERL,于此,又有了这篇对HIL-SERL的解读
    HIL-SERL——UC伯克利提出的通用灵巧机器人框架:结合视觉和人类示教与纠正的RL方法(可组装电脑主板和插拔USB)

真是疯狂的10月份,一方面我和项目组各种疯狂推进我司各个大模型项目的开发(继论文审稿、翻译、修订之后,正在推进论文对话、idea提炼,以及针对视频的字幕生成、视频总结、视频VLM问答),一方面我疯狂解读各个paper

好在如今总算可以写字节的这个GR2

第一部分 GR-2:具备网络规模知识的生成式视频-语言-动作模型

1.1 GR1

之前的工作GR-1[5]中利用大规模文本-视频数据进行视频生成预训练。他们的动机是他们相信视频包含有关环境动态以及环境应如何根据文本描述演变的宝贵信息,而这些信息可以在下游策略学习中促进动作预测

与GR-1[5]相比,GR-2将预训练视频的数量从800万扩展到3800万,从而在各种未见过的场景中提升了泛化能力

// 待更

1.2 GR2的两阶段训练与其在真实机器人上的部署

1.2.1 GR2的两阶段训练:视频生成预训练和机器人数据微调

由于在视频生成上进行预训练可以有效地将视频中的有价值知识转移到策略学习中,从而提高动作预测能力

他们在一个广泛的视频数据集上对GR-2进行了预训练,该数据集涵盖了不同背景下(家庭、户外、工作场所、休闲等)的多样化日常人类活动。主要的预训练目标很简单:给定一个文本描述和一个视频帧,模型根据文本预测后续帧。通过掌握这一自回归预测任务,可以让模型用于捕捉关键的时间动态和语义信息

如下图所示,GR-2 经过两个训练阶段:视频生成预训练和机器人数据微调

最终,通过对机器人轨迹的微调,GR-2展示了学习多种操作任务并适应新场景的能力,包括新的背景、环境、物体和任务。值得注意的是,GR-2能够高效地从仅有5,000条轨迹的数据集中学习超过100项任务(平均每项任务50条轨迹)

且R-2基于GR-1 [5]进行了几个关键改进

  1. GR-2在3800万条文本-视频数据(超过500亿个token)上进行了预训练,能够完成超过100项操作任务,并执行超过100个物体的抓取任务。它显著扩大了预训练数据和任务的数量
  2. 开发了一种新颖的模型架构,使得从预训练中获得的知识可以无损地无缝转移到下游微调。该模型在处理多任务和具有挑战性的泛化环境中表现出强大的可扩展性
  3. 为了在真实机器人上进行部署,他们引入了一种全身控制(WBC)算法,该算法结合了轨迹优化和实时运动跟踪

具体来说,他们希望训练一个通用策略\pi,它将语言指令l、环境观察序列\mathbf{O}_{t-h: t}和机器人状态序列\mathbf{S}_{t-h: t}作为输入,该策略以端到端的方式输出一个动作轨迹\mathbf{a}_{t: t+k}

\mathbf{a}_{t: t+k}=\pi\left(l, \mathbf{o}_{t-h: t}, \mathbf{s}_{t-h: t}\right)

其中,hk分别表示观测历史和动作轨迹的长度

1.2.2 模型与训练

如之前所述,GR-2是一种以语言为条件的GPT风格视觉操作策略模型(包含230M个参数,其中95M是可训练的),训练过程分为两个阶段:视频生成预训练和机器人数据微调

在预训练阶段,在一个精心挑选的大规模视频数据集上训练GR-2。之后,在机器人数据上微调GR-2,以同时预测动作轨迹和视频

\pi\left(l, \mathbf{o}_{t-h: t}, \mathbf{s}_{t-h: t}\right) \rightarrow \mathbf{o}_{t+1}, \mathbf{a}_{t: t+k}

GR-2的输入包括语言指令、一系列视频帧和一系列机器人状态,过程中,他们

  1. 使用一个冻结的文本编码器 [Learning transferable visual models from
    natural language supervision,说白了,就是CLIP,关于CLIP的介绍详见此文的第一部分] 来对语言指令进行tokenize
    对于视频中的图像帧,使用 VQGAN [7] 将每个图像转换为离散的token
    VQGAN 在大量互联网数据以及领域内的机器人数据上进行训练,并在训练过程中保持冻结。这种方法有助于快速训练并支持生成高质量的视频

    机器人状态包含末端执行器的位置和旋转,以及二元夹持器状态。这些状态通过线性层进行编码,这些层在微调阶段是可训练的
  2. 在预训练阶段的目标是让GR-2具备预测未来视频的能力。这使得模型能够建立一个强大的先验知识,用于预测未来事件,从而提高其进行准确动作预测的能力

    该模型基于GPT风格的Transformer构建,接受经过tokenized的文本和图像序列作为输入,并输出未来图像的离散token,未来的图像则通过VQGAN解码器从这些token中解码出来
  3. 其中的预训练数据集包括常用的人类活动公共数据集,例如Howto100M、Ego4D、Something-Something V2、EPIC-KITCHENS和Kinetics-700
    此外,为了将预训练数据定制化用于机器人操作任务,他们精心建立了一个数据处理流程,包括手动过滤和重新标注。此外,还包含了公开可用的机器人数据集,例如RT-1和Bridge。总共用于预训练的视频片段数量为3800万,相当于大约5000亿个token

    下图便是他们整理的预训练数据集中的示例视频和动词分布。底部图表的 y 轴是高频词的对数频率

  4. 随后,GR-2可以在大规模预训练后无缝微调机器人数据
    与预训练数据中的视频只有单一摄像头视角不同,机器人数据通常包含多个视角。GR-2被设计为优雅地处理多视角

    它的输入包括tokenized的语言指令、从多个视角捕获的图像序列以及机器人状态序列。输出包括每个视角的未来图像和一个动作轨迹。动作轨迹是通过条件变分自编码器(cVAE)生成的
    通过实验证明,生成动作轨迹而不是单步动作对于轨迹平滑和实时性能都至关重要

1.2.3 真实机器人系统与部署

他们的真实机器人系统由一个7自由度的Kinova Gen3机械臂和一个Robotiq 2F-85夹爪组成

此外,他们使用了两台摄像头:一个静态头部摄像头提供工作空间的概览;另一台安装在末端执行器上的摄像头提供夹爪与环境之间交互的特写视图

  1. GR-2在笛卡尔空间中生成一个动作轨迹
    为了确保机器人手臂准确地跟随这一轨迹,且他们开发了一种全身控制(WBC)算法,该算法采用轨迹优化来进行运动跟踪 [20]
    生成的轨迹首先经过优化,以提高其平滑性和连续性
  2. 随后,WBC算法将笛卡尔轨迹转换为低级关节动作,并以200 Hz的频率在真实机器人上执行。此过程将碰撞约束和可操作性整合到优化框架中

1.3 实验与效果论证:现实世界中的多任务学习

1.3.1 微调数据集:5000条轨迹、每个任务大约50条轨迹

他们通过远程操作收集了105个桌面任务的人类演示。这些任务涵盖了8种不同的技能,即拾取、放置、打开盖子、盖上盖子、打开、关闭、按压和倒液,如下图所示

总共,他们收集了大约40,000条轨迹,平均每个任务有400条轨迹。在经过精心挑选的大规模视频数据集上预训练的模型基础上,他们进一步使用该数据集微调了GR-2

  1. 此外,为了评估在数据稀缺情况下的性能,使用大约1/8的完整数据集训练GR-2(即5000条轨迹),这相当于每个任务大约50条轨迹

    为了更好地推广到未见过的场景,他们在微调期间通过在场景中添加新物体和/或更改背景来进行数据增强
    \rightarrow  且为了将新物体插入场景,他们还训练了一个扩散模型 [22],该模型结合了自收集的物体数据集和开放图像数据集 [23]。该模型使我们能够在指定区域插入特定物体
    \rightarrow  为了更改背景,利用了Segment Anything Model (SAM) [24]来提取与背景对应的区域
  2. 最后,使用了一个视频生成模型 [25,即 Latte: Latent diffusion transformer for video generation,详见此文的第一部分 Sora爆火之前,上海人工智能实验室一团队推出Latte],该模型依赖于原始视频和修复后的帧来生成增强视频,同时保留机器人的运动

1.3.2 基本设置、泛化设置、及实验结果

在基本设置上,如下图最左侧所示

首先在两个基本设置下评估GR-2:简单和干扰。在简单设置中,测试环境与训练数据相似。在干扰设置中,在场景中添加了一些干扰物。这变得具有挑战性,因为1)干扰物,尤其是那些与目标物体颜色和/或形状相似的干扰物,可能会使机器人产生混淆,以及2)环境变得更加杂乱,有时需要避免碰撞以完成任务

在泛化设置上,如上图右侧的三个部分所示。为了进一步研究GR-2在未见场景中的能力,他们引入了三个更具挑战性的设置:未见背景、未见环境和未见操作

  • 在未见背景中,通过添加两块与训练数据集中原始简单背景非常不同的桌布来改变背景,如上图图3所示
  • 对于未见环境,在两个未见的厨房环境中进行评估。除了改变背景,这些环境还包含场景相关干扰项
  • 最后,对于未见过的操作,指示机器人执行在其训练数据中未见过的操作。这包括操控未见过类别的物体和未见过的物体实例。由于机器人在训练数据中从未见过这些物体,这种设置极具挑战性。而且,针对未见过类别物体的操作指令进一步增加了难度

定性结果如下图左侧所示

定量结果如下图右侧所示

  1. 在简单设置下,GR-2在105个任务中达到了97.7%的成功率,展示了其强大的多任务学习能力。它还能稳健地处理干扰因素,并正确关注目标对象
  2. 在所有设置中,它提高了GR-1的成功率。值得注意的是,它在未见过的背景和未见过的环境中分别达到了71.4%和71.7%的成功率,是GR-1的两倍。通过引入数据增强,GR-2w/ DA能够实现更具竞争力的泛化性能,在未见过的环境中取得了87.0%的成功率

    并在所有三个泛化设置中获得了74.7%的平均成功率。在每个任务仅用50条轨迹进行训练时,GR-2在简单设置下仍能实现73.9%的成功率
  3. 在所有三种泛化设置中,GR-2的表现均优于GR-1。这展示了GR-2在高效适应新任务和环境方面的强大潜力。最终,GR-2在未见过的操作中达到了55.8%的成功率

    典型的失败情况包括1) 未能拾取新形状的未见过的物体,以及2) 在被指示拾取未见过的物体时错误地选择了错误的物体

1.3.3 CALVIN基准测试

CALVIN是一个模拟基准,旨在针对长时间跨度的语言条件下的机器人操作[21]。它包括34个任务,并结合了不受限制的语言指令

作者在ABCD-D分割上进行实验,该分割包含超过20,000个针对34种不同操作任务的专家演示。根据[21],对1,000个独特的指令链序列进行评估

对于每个序列,GR-2被指示连续执行5个任务。下图图10显示了连续完成1、2、3、4和5个任务的成功率以及平均长度

  1. 平均长度是一个综合评价指标,显示了机器人在1,000个评估序列中能够按顺序完成的任务的平均数量
    他们与五种最先进的基线方法进行了比较:RT-1 [15]、MT-ACT [26]、HULC [27]、RoboFlamingo [28]和GR-1 [5]

    \rightarrow  RT-1 [15]是一种语言条件多任务策略,通过FiLM层对语言条件进行编码
    \rightarrow  MT-ACT [26]同样使用FiLM层注入语言条件,并利用动作分块transformer解决动作数据中的多模态问题
    \rightarrow  HULC [27]是一种分层方法,首先在潜在空间中预测计划,并使用预测的计划生成动作
    \rightarrow  RoboFlamingo [28]在机器人数据上微调了一个大型预训练视觉语言模型,以执行语言条件操控

    最终,GR-2建立了新的技术标准。它在成功率和平均长度方面优于所有比较的基线方法。它将GR-1的1个任务成功率从94.9%提高到98.6%,5个任务成功率从73.1%提高到85.9%。平均长度从4.21增加到4.64

1.3.4 自回归视频生成

GR-2在大量多样化的视频上进行了预训练,使其能够预测图像空间内的未来状态。因此,这种视频生成能力可以有效地作为动作生成的规划器

也就是说,在生成视觉轨迹之后,可以基于视觉轨迹推断出动作轨迹

为了进一步研究这一设计的有效性,对视频预测结果进行了可视化,并与相应的实际展开进行了比较。他们展示了多任务学习「比如下图图12,其中体现了视频预测 (Pred) 和真实值 (GT) 的展示 13」、端到端箱子拾取(图14 15)和CALVIN(图16 17)的展开可视化

GR-2能够生成高质量的视频及其对应的动作。作者强调生成的视频能够忠实地与真实世界中的展开过程保持一致。这表明预测的动作正在尝试“重现”预测视频中的轨迹。这个特性带来了一个简单的方法,通过迭代改进视频生成来持续改进动作预测

// 待更

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2230322.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PCB电源层布线信号

在印刷电路板(PCB)的设计过程中,电源层通常被视为电源分配网络(PDN)的核心。电源层和接地层通常是通过平面铜层来实现的,旨在确保系统稳定性。然而,随着电路板复杂性的增加,尤其是在多层电路板中,设计师可能面临在电源层上布置信号线路的需求。虽然这种做法可以节省空…

【大数据学习 | kafka】producer的参数与结构

1. producer的结构 producer:生产者 它由三个部分组成 interceptor:拦截器,能拦截到数据,处理完毕以后发送给下游,它和过滤器不同并不是丢弃数据,而是将数据处理完毕再次发送出去,这个默认是不…

Java基本语法和基础数据类型——针对实习面试

目录 Java基本语法和基础数据类型标识符和关键字有什么区别?Java关键字有哪些?Java基本数据类型有哪些?什么是自动装箱和拆箱?自动装箱(Autoboxing)自动拆箱(Unboxing) 自动装箱和拆…

自动化测试工具Ranorex Studio(十九)-其他编辑选项

失败继续运行和禁用 表中列出的每个Action条目,都可以设置为禁用或 “失败继续运行”。 设置action条目为“失败继续运行”时,如果遇到错误,模块不会停在那个位置,而是继续执行。 您可以通过右键菜单或属性窗口设置这两个选项。 设…

知识见闻 - Workday公司介绍

人力资源“一哥”Workday的前世今生 01 Duffield 既然要聊Workday,我们首先要认识一个人。David Duffield,又一位企业软件服务行业的绝对大神。 大卫杜菲尔德(David Duffield)出生于1941年。 40岁,很多职场人都已经认命…

VS2022配置调试Qt源代码

需要保证源代码和项目使用的版本匹配,符号需要注意是64位还是32位,并且用msvc。 1. 设置源代码路径 2. 设置调试PDB路径 这里最好把4个地方都加进去,防止某些不常用PDB被漏掉。 D:\Qt\5.15.2\msvc2019_64\bin D:\Qt\5.15.2\msvc2019_64\lib…

利用腾讯元器构建商业化AI智能体——【快递100 AI智能体实战教学】

写在开头 随着人工智能技术的不断进步,腾讯元器作为一项强大的工具,使得构建商业化的AI智能体变得更加便捷和高效。本文将带你深入了解如何利用腾讯元器搭建快递100 AI智能体的全过程,从前期规划到最终实现,为你提供一份详尽的实…

「C/C++」C++ 设计模式 之 单例模式(Singleton)

✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

【前端基础】CSS基础

目标:掌握 CSS 属性基本写法,能够使用文字相关属性美化文章页。 01-CSS初体验 层叠样式表 (Cascading Style Sheets,缩写为 CSS),是一种 样式表 语言,用来描述 HTML 文档的呈现(美化内容&#…

【Oracle】空格单字符通配符查询匹配失败

问题 在进行模糊查询的时候,通过全局任意字符串匹配出含有两个字刘姓的人,但是通过刘_不能匹配出结果。 解决 检查后发现,姓名中包含空格 SELECT * FROM student WHERE TRIM(sname) LIKE 刘_;第一种解决方案就是查询的时候进行去空格处理&a…

查看多个通道32bit音频pcm数据

本文分析一个32位多通道pcm数据,一方面简单解释一下pcm数据格式,另外一方面看清楚实际数据的精度是多少。 说明:这是一个alsa采集到的10路32bit的pcm数据。 使用bc打开,16进制数据显示如下图: 图中左边是一个10通道32…

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割!

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割! 【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割! 文章目录 【语义分割|代码解析】CMTFNet-2: …

Webpack 配置module.css报错Uncaught TypeError: Cannot read properties of undefined

我的项目结构如下: 入口文件是index.jsx,组件Button.jsx使用了样式button.module.css .btn {background-color: #4CAF50;border: none;color: white; padding: 15px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin:…

Redis(2):内存模型

一、Redis内存统计 工欲善其事必先利其器,在说明Redis内存之前首先说明如何统计Redis使用内存的情况。 在客户端通过redis-cli连接服务器后(后面如无特殊说明,客户端一律使用redis-cli),通过info命令可以查看内存使用情…

Docker打包自己项目推到Docker hub仓库(windows10)

一、启用Hyper-V和容器特性 1.应用和功能 2.点击程序和功能 3.启用或关闭Windows功能 4.开启Hyper-V 和 容器特性 记得重启生效!!! 二、安装WSL2:写文章-CSDN创作中心https://mp.csdn.net/mp_blog/creation/editor/143057041 三…

python如何安装扩展包

1、扩展包 Python安装额外的扩展包,一般使用anconda进行管理。 1、1安装命令 一般我们在anconda中通过pip install 包名 的方式进行安装,不过由于这些包在国外下载,因此需要配置合适的镜像促使其下载更快。 1、2 镜像源配置 1、2、1 一次…

【风冷换热器设计及计算

某空气调节工程需要将33.3kg/s的空气,由干球温度t123℃、相对湿度ψ160%,冷却到干球温度t212℃、相对湿度ψ290%,冷凝器出口为40℃的饱和液体,制冷剂采用R22,试设计一台直接蒸发式空气冷却器。 …

LabVIEW程序员赚钱不仅限于上班

LabVIEW程序员拥有多种途径来实现财富增值,而不仅仅局限于传统的全职工作。以下是一些他们可以利用自身技能和专业知识实现更高财务收益的方法: 1. 专注领域的自由职业与合同工作 制造、科研、医疗技术等行业都需要LabVIEW的专业知识。通过自由职业&…

C++ shared_ptr 动态内存

C shared_ptr 动态内存 智能指针 为了更加容易的使用动态内存,新的标准库提供了智能指针,用来管理动态对象,智能指针的行为类似常规指针,重要的区别是他负责自动释放所指的对象。新标准库提供的智能指针的区别在于管理底层指针的…

动态代理:面向接口编程,屏蔽RPC处理过程

RPC远程调用 使用 RPC 时,一般的做法是先找服务提供方要接口,通过 Maven把接口依赖到项目中。在编写业务逻辑的时候,如果要调用提供方的接口,只需要通过依赖注入的方式把接口注入到项目中,然后在代码里面直接调用接口…