字节跳动机器人研究团队:用大规模视频数据训练GR-1,机器人轻松应对复杂任务

最近 GPT 模型在 NLP 领域取得了巨大成功。GPT 模型首先在大规模的数据上预训练,然后在特定的下游任务的数据上微调。大规模的预训练能够帮助模型学习可泛化的特征,进而让其轻松迁移到下游的任务上。

但相比自然语言数据,机器人数据是十分稀缺的。而且机器人数据包括了图片、语言、机器人状态和机器人动作等多种模态。为了突破这些困难,过去的工作尝试用 contrastive learning [1] 和 masked modeling [2] 等方式来做预训练以帮助机器人更好的学习。

在最新的研究中,ByteDance Research 团队提出 GR-1,首次证明了通过大规模的视频生成式预训练能够大幅提升机器人端到端多任务操作方面的性能和泛化能力。实验证明这种预训练方法可以大幅提升模型表现。在极具挑战的 CALVIN 机器人操作仿真数据集上,GR-1 在 1) 多任务学习 2) 零样本场景迁移 3) 少量数据 4) 零样本语言指令迁移上都取得了 SOTA 的结果。在真机上,经过视频预训练的 GR-1 在未见过的场景和物体的表现也大幅领先现有方法。

方法

GR-1 是一个端到端的机器人操作模型,采用了 GPT 风格的 transformer 作为模型架构。GR-1 首先在大规模视频数据上进行视频预测的预训练。预训练结束后,GR-1 在机器人数据上微调。微调的训练任务包含未来帧的预测和机器人动作的预测。

在这里插入图片描述

GR-1 用来自 Ego4D [3] 数据的 8M 图片来做视频生成式预训练。在预训练阶段,GR-1 的输入包括视频片段和描述视频的文字。文字信息用 CLIP [4] 的文字编码器编码。视频中的图片用 MAE [5] 编码,然后通过 perciever resampler [6] 来减少 token 的个数。输出端 GR-1 在每一个时间戳通过学习 [OBS] token 来输出未来帧的图片。[OBS] 对应的输出通过一个 transformer 来解码成图片。在预训练阶段,GR-1 采用了 mean squared error (MSE) 的损失函数。

在机器人数据微调阶段,GR-1 的输入包括任务语言指令,机器人状态和观测图片。其中机器人状态包括 6 维机器人位姿和夹抓的开闭状态。机器人状态通过 MLP 来编码。输出包括未来帧的图片和机器人动作。语言和图片的编码方式与预训练阶段相同。输出端 GR-1 通过学习 [ACT] token 来预测下一个时间戳机器人的动作。机械臂动作的损失函数采用 smooth L1 loss;夹抓动作的损失函数采用 binary cross entropy loss。

实验

作者在 CALVIN 仿真平台上做了大量实验来验证 GR-1 的性能。CALVIN 是一个极具挑战性的机器人多任务操作仿真平台。其中包括 34 个通过语言指令的操作任务和 A, B, C, D 四个不同的环境。
在这里插入图片描述

在 ABCD->D 实验中,机器人在来自 A, B, C, D 四个环境的数据上训练,并在 D 中测试。在 ABC->D 实验中,机器人在来自 A, B, C 三个环境的数据上训练,并在 D 中测试。这个实验旨在测试 GR-1 应对零样本场景迁移的能力。测试中,机器人需要连续完成 5 个任务。表中展示了不同方法在连续完成 1,2,3,4,5 个任务的成功率和平均完成的任务数量。GR-1 在两个实验中都超过了现有方法并在零样本场景迁移上大幅领先。

在这里插入图片描述

该工作还进行了小数据集的实验以理解 GR-1 在数据比较少的时候的表现。在 10% data 实验中,作者把 34 个任务中的每个任务的训练轨迹控制在 66 条。总轨迹数约为 ABCD->D 实验中的 10%。为了测试 GR-1 应对未知语言的能力,作者用 GPT-4 为每个任务生成了 50 条新的未见过的语言指令来测试。GR-1 在小数据集和未知语言指令的设置中都超越了现有方法。
在这里插入图片描述

GR-1 真机实验包括了移动物体和开关抽屉,如下图所示:
在这里插入图片描述

移动物体实验指令包括将物体移动到盘子 / 桌面上。训练数据中包括移动一个茄子、西兰花和彩椒(如上图最左所示)。作者首先在这些训练数据中见过的物体上做实验。在这个设置下,作者还测试了加入了干扰物和背景变化的实验。

在这里插入图片描述

作者还在训练数据中未见过的物体上做了实验。未见的物体包括未见过的物体实例(一组在训练数据中未见过的茄子、西兰花和彩椒)和未见过的物体种类(西红柿和黄桃)。

在这里插入图片描述

以下为开关抽屉的实验:
在这里插入图片描述

如下表所示,GR-1 在真机实验中大幅领先对比的现有方法。

在消融实验中,作者对比了去掉未来帧预测和保留未来帧预测但去掉预训练的模型的能力。结果表明预测未来帧和预训练两者都对 GR-1 学习鲁棒的机器人操作起到了关键作用。在预测动作的同时加入未来帧的预测能帮助 GR-1 学习根据语言指令来预测未来场景变化的能力。这种能力正是机器人操作中需要的:根据人的语言指令来预测场景中应用的变化能够指导机器人动作的生成。而大规模视频数据的预训练则能帮助 GR-1 学习鲁棒可泛化的预测未来的能力。

结论

GR-1 首次证明了大规模视频生成式预训练能帮助机器人学习复杂的多任务操作。GR-1 首先在大规模视频数据上预训练然后在机器人数据上进行微调。在仿真环境和真机实验中,GR-1 都取得了 SOTA 的结果,并在极具挑战的零样本迁移上表现出鲁棒的性能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【学习笔记】1、数字逻辑概论

1.1 数字信号 数字信号,在时间和数值上均是离散的。数字信号的表达方式:二值数字逻辑和逻辑电平描述的数字波形。 (1) 数字波形的两种类型 数值信号又称为“二值信号”。数字波形又称为“二值位形图”。 什么是一拍 一定的时…

最新ChatGPT网站系统源码+详细搭建部署教程+Midjourney绘画AI绘画

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

Java学习苦旅(二十三)——二叉搜索树

本篇博客将详细讲解二叉搜索树。 文章目录 二叉搜索树概念操作查找插入删除 性能分析 结尾 二叉搜索树 概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -全局异常统一处理实现

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

Packet Tracer - Configure AAA Authentication on Cisco Routers

Packet Tracer - 在思科路由器上配置 AAA 认证 地址表 目标 在R1上配置本地用户账户,并使用本地AAA进行控制台和vty线路的身份验证。从R1控制台和PC-A客户端验证本地AAA身份验证功能。配置基于服务器的AAA身份验证,采用TACACS协议。从PC-B客户端验证基…

LeetCode 2807. 在链表中插入最大公约数【链表,迭代,递归】1279

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

Java多线程技术11——ThreadPoolExecutor类的使用1

1 概述 ThreadPoolExecutor类可以非常方便的创建线程池对象,而不需要程序员设计大量的new实例化Thread相关的代码。 2 队列LinkedBlockingQueue的使用 public class Test1 {public static void main(String[] args) {LinkedBlockingQueue queue new LinkedBlocki…

LeetCode-移动零(283)

题目描述: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 思路: 这里的思路跟以前做过的去重复数字的思路有点像&…

字符输入输出 C语言xdoj16

问题描述: 通过键盘输入5个大写字母,输出其对应的小写字母,并在末尾加上“!”。 输入说明: 5个大写字母通过键盘输入,字母之间以竖线“|”分隔。 输出说明: 输出5个大写字母对应的小写字母&…

多线程模板应用实现(实践学习笔记)

出处:B站码出名企路 个人笔记:因为是跟着b站的教学视频以及文档初步学习,可能存在诸多的理解有误,对大家仅供借鉴,参考,然后是B站up阳哥的视频,我是跟着他学。大家有兴趣的可以到b站搜索。加油…

webpack的性能优化(一)——分包优化

1.什么是分包?为什么要分包? 默认情况下,Webpack 会将所有代码构建成一个单独的包,这在小型项目通常不会有明显的性能问题,但伴随着项目的推进,包体积逐步增长可能会导致应用的响应耗时越来越长。归根结底这…

【Linux】进程信号——进程信号的概念和介绍、产生信号、四种产生信号方式、阻塞信号、捕捉信号、阻塞和捕捉信号的函数

文章目录 进程信号1.进程信号的概念和介绍2.产生信号2.1通过终端按键产生信号2.2 调用系统函数向进程发信号2.3 由软件条件产生信号2.4硬件异常产生信号 3.阻塞信号3.1信号在内核中的表示3.2信号集操作函数3.3sigprocmask 4.捕捉信号4.1内核如何实现信号的捕捉4.2 sigaction 进…

【AI视野·今日Robot 机器人论文速览 第七十一期】Fri, 5 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Fri, 5 Jan 2024 Totally 11 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Machine Learning in Robotic Ultrasound Imaging: Challenges and Perspectives Authors Yuan Bi, Zhongliang Jiang, Felix D…

线性代数 --- 矩阵行列式的性质

Determinant det A|A| 矩阵的行列式是一个数,这个数能够反应一些关于矩阵的信息。行列式只对方阵有效。 若矩阵A为: 则A的行列式为: 性质1: 单位矩阵的行列式等于1 性质2:行与行之间的交换会改变det的正负号 以2x2单位…

Mybatis入门源码二:sql执行

后面开始分析sql执行的源码流程也就是这一部分 一、factory.openSession() 重点关注configuration.newExecutor这个方法,获取事务处理器比较简单,就是获取一个jdbc的事务管理器。 这个方法通过传入的执行器类型来创建不同的执行器,有simp…

x-cmd pkg | trdsql - 能对 CSV、LTSV、JSON 和 TBLN 执行 SQL 查询的工具

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 trdsql 是一个使用 sql 作为 DSL 的强大工具: 采用 SQL 对 CSV、LTSV、JSON 和 TBLN 文件执行查询与 MySQL,Postgresql,Sqlite 的 Driver 协同,可以实现对应数据库的表与文件的 JO…

安全基础~信息搜集3

文章目录 知识补充APP信息搜集php开发学习理解漏洞 知识补充 端口渗透总结 python Crypto报错:https://blog.csdn.net/five3/article/details/86160683 APP信息搜集 1. AppInfoScanner 移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具 使用教程 演示&…

超维空间M1无人机使用说明书——21、基于opencv的人脸识别

引言:M1型号无人机不仅提供了yolo进行物体识别,也增加了基于opencv的人脸识别功能包,仅需要启动摄像头和识别节点即可 链接: 源码链接 一、一键启动摄像头和人脸识别节点 roslaunch robot_bringup bringup_face_detect.launch无报错&#…

解决ImportError: Failed to import test module: sys.__init__

解决ImportError: Failed to import test module: sys.init 背景 学习通过文件夹执行测试脚本时,出现了错误:ImportError: Failed to import test module: sys.__init__ 解决过程 根据报错信息:sys is not a package大胆猜测可能是文件名…

爬虫-1-请求和响应

#无以规矩&#xff0c;不成方圆(&#xff89;_ _)&#xff89; <(_ _)> 请求和响应 案例实现
最新文章