VIMA: General Robot Manipulation with Multimodal Prompts

news2025/1/19 3:22:00

Paper name

VIMA: General Robot Manipulation with Multimodal Prompts

Paper Reading Note

URL: https://arxiv.org/pdf/2210.03094.pdf
Project URL: https://vimalabs.github.io/
ICLR review URL: https://openreview.net/forum?id=hzjQWjPC04A

TL;DR

  • ICLR 2023 在投论文,斯坦福和 NVIDIA 的工作。允许多模态的 prompts (比如文字+图片/视频),交织文本和视觉 tokens 来进行机器人操作任务,另外提出了一个仿真数据集(VIMA-BENCH),所有实验都在该仿真数据集中进行

Introduction

背景

  • 基于提示的学习已经成为自然语言处理中的一种成功范例,其中单个通用语言模型可以被指示执行输入提示所指定的任何任务
  • 然而,机器人技术中的任务规范有多种形式,比如模仿一次性演示,遵循语言指令,以及达到视觉目标。它们通常被认为是不同的任务,由专门的模型来处理
  • 机器人如果能接受多模态的指令能极大降低交互难度:
    • 设想一个负责家务的个人机器人,我们可以通过简单的自然语言指令让机器人给我们送一杯水,如果我们需要更多的特异性,我们可以指示机器人“带给我<杯子的图像>”
    • 对于需要新技能的任务,机器人应该能够更好地从一些视频演示中学习任务应该如果进行
    • 需要与不熟悉的物体进行交互的任务可以通过一些图像示例来解释,为新概念奠定基础
    • 为了确保安全部署,可以进一步指定视觉约束,如“不进入 room”
  • 本文工作表明可以用多模态提示,交织文本和视觉标记来表达广泛的机器人操作任务

本文方案

  • 本文设计了一个基于 transformer 的通用机器人 agent: VIMA,VIMA 直接接受多模态提示,并自回归输出电机动作来控制机器人
    • 为了训练和评估VIMA,开发了一个新的模拟基准,其中包含数千个带有多模态提示的程序生成桌面任务,600K+ 专家轨迹用于模仿学习,以及四个级别的评估协议用于系统泛化性测试
    • VIMA 在模型容量和数据大小方面都具有很强的可伸缩性
    • 在相同的训练数据下,它在最难的 zero-shot generalization 设置中优于先前的 SOTA 方法,任务成功率高达 2.9 倍。在训练数据减少 10 倍的情况下,VIMA 的性能仍然比顶级竞争方法好 2.7 倍

Dataset/Algorithm/Model/Experiment Detail

实现方式

在这里插入图片描述

  • 不同的机器人可以基于多模态的 prompts 来进行操控,输入的模态可以包括
    • 自然语言
    • 自然语言 + 图片
    • 自然语言 + 视频序列

多模态 prompt 任务规范

  • Simple object manipulation:put into
  • Visual goal reaching:操作对象以达到目标配置,比如 rearrangement
  • Novel concept grounding:提示符包含不熟悉的单词,如“dax”和“blicket”,它们通过提示图像解释,然后立即在指令中使用
  • One-shot video imitation:观看视频演示,并学习为特定物体重现相同的运动轨迹
  • Visual constraint satisfaction:机器人必须小心操作物体,避免违反(安全)约束
  • Visual reasoning:需要推理技能的任务,如外观匹配“将与具有相同纹理的所有对象移动到容器中”,视觉记忆 “将放入容器中,然后恢复到原始位置” 等

评测协议 VIMA-BENCH (BENCHMARK FOR MULTIMODAL ROBOT LEARNING)

  • 通过 Ravens robot simulator 构建数据集
  • 17 个具有多模态提示模板的代表性元任务
    • 每个元任务都属于上面提到的 6 种任务规范方法中的一个或多个。VIMA-BENCH 可以通过脚本
      化的 oracle 代理生成大量的模仿学习数据
  • 数据集:
    • 利用预编程的 oracles 来生成一个大型的离线专家轨迹数据集,用于模仿学习
    • 数据集包括每个元任务50K个轨迹,总共650k个成功轨迹
    • 17 个任务中有 4 个用于测试 zero-shot generalization
  • 以下 4 个层次难度的评估协议
    在这里插入图片描述

VIMA: VISUOMOTOR ATTENTION MODEL

在这里插入图片描述

  • 具有以对象为中心设计的极简多任务编码器-解码器架构
    • 通过一个冻结的预训练语言模型对提示进行编码,并通过交叉注意层对编码提示进行解码
  • Tokenization
    • 三种原始输入形式:text, image of a single object, image of a full tabletop scene (例如,对视频帧进行重排或模仿)
      • text:使用 pre-trained T5 tokenizer 和 word embedding 获取 word tokens
      • images of full scenes: Mask R-CNN 提取物体,基于一个 a bounding box encoder 和 ViT 获取 object tokens
      • images of single objects:与 images of full scenes 基本一样,只是输入一个覆盖全图的 dummy bounding box
    • 通过将生成的 token sequence 传递给 pre-trained T5 tokenizer 模型来产生提示编码。positional embedding 是可学习的和绝对的
  • Robot Controller:机器人控制器(译码器)由提示序列P和轨迹历史序列H之间的一系列交叉注意层以提示序列P为条件,该设计优点:
    • 加强与提示的联系
    • 与原始提示充分交互
    • 更好的计算效率
  • 参考 Video Pretraining (VPT) 的工作,将预测的动作映射到机械臂的离散姿态
  • Training:
    • 遵循标准的行为克隆,通过最小化预测动作的 negative log-likelihood 来训练模型
    • 为了使VIMA对检测不准确性和故障具有鲁棒性,我们通过随机注入假阳性检测输出来应用对象增强

实验结果

对比 baseline

  • Gato:引入了一个仅解码器的模型,该模型通过使用观察和操作子序列提示模型来解决来自多个域的任务,其中任务是通过指定的。为了公平对比,这里直接给 VIMA 计算的 multimodal embedded prompt
  • Flamingo:一个视觉语言模型,学习生成文本补全以响应多模态提示。它通过 percepver Resampler 模块将可变数量的提示图像嵌入到固定数量的标记中,并通过交叉注意对已编码的 prompts 进行语言解码。本文将 Flamingo 输出层替换为机器人动作头来支持决策
  • Decision Transformer (DT):是最早将RL问题重新解释为 transformer 序列建模的作品之一。在视觉 RL 领域,如 Atari 游戏,DT 会根据期望的奖励值提示,并根据 RGB 观察嵌入自回归地输出动作。本文将 DT 的初始奖励提示替换为 VIMA 的多模式任务提示嵌入,并删除所有后续奖励 tokens

对比结果

  • VIMA 小模型精度就能很高,对于数据增加能获得更大精度收益
    在这里插入图片描述
  • Progressive Generalization,在测试更难的数据时掉点更少
    在这里插入图片描述

消融实验

  • Ablation on visual tokenizers:Mask R-CNN 检测相比于 GT 掉点不多, ViT 相比于 Perceiver(Perceiver: General Perception with Iterative Attention,将图片中检测的不同数量的物体转换为固定数目的 tokens) 有较大涨点,而且越难的任务涨点幅度越大
    • 重要的是将对象的可变 token 序列直接传递给机器人控制器,而不是向下采样到固定数量的 tokens
      在这里插入图片描述
  • Prompt conditioning: 小模型下本文设计的 xattn 精度更高,大模型下基本一致。本文的猜想是,交叉注意有助于控制器在每个交互步骤中更好地专注于提示指令
    • gpt-decoder: 将提示符P和交互历史记录H连接到一个大序列中,然后像 GPT 一样应用 decoder-only transformer 来预测 actions
      在这里插入图片描述

Thoughts

  • 看了下 ICLR 2023 的 review,基本认可在本文 setting 下的实验结果,但整体看评分并不高,主要有以下质疑点:
    • Mask-RCNN 在新场景下不方便 finetune 怎么办?
    • 作为机器人任务,只做拾取和放置任务太简单,而且还是仿真环境下做的,对象非常清晰
    • 实验的场景和现实场景差异太大:例如,“novel councept grounding” 似乎只是在定义上加上一个标签。“one shot video imitiation” 似乎是对一个精确轨迹的精确再现——这是一个比通常所说的模仿学习要弱得多的定义
    • 文章对多模态的优越性解释不到位。比如多模态的 prompts 如何来源?如果需要来源于人的语音指令,人却并不能在语音中插入图片和视频

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

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

相关文章

动态 json 转化序表

【问题】Hi,I have a problem very similar tohttp://community.jaspersoft.com/questions/844023/need-help-looping-throu…,but I can’t just change the json file as done by the person asking that question.Any help would be greatly appreciated.----I am trying to…

深入学习IO多路复用select/poll/epoll实现原理

这里写自定义目录标题参考概述1. Linux 怎样处理网络请求1.1 阻塞 IO1.2 非阻塞 IO1.3 IO 多路复用2. 详解 select、poll、epoll 实现原理2.1 select 实现原理2.2 poll 实现原理3. 总结参考 深入学习IO多路复用select/poll/epoll实现原理 概述 Linux 服务器处理网络请求有三…

Java基础算法每日5道详解(4)

101. Symmetric Tree 对称树 Given the root of a binary tree, check whether it is a mirror of itself (i.e., symmetric around its center). Example 1: Input: root [1,2,2,3,4,4,3] Output: trueExample 2: Input: root [1,2,2,null,3,null,3] Output: falseleetco…

Linux常用命令——nl命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) nl 在Linux系统中计算文件内容行号 补充说明 nl命令读取 file 参数&#xff08;缺省情况下标准输入&#xff09;&#xff0c;计算输入中的行号&#xff0c;将计算过的行号写入标准输出。在输出中&#xff0c;n…

牛啊~ 长这么大还是头一次见24W字的SpringBoot从入门到实战文档

牛啊&#xff01;长这么大还是头一次见24W字的SpringBoot从入门到实战文档&#xff01; 不服还真不行&#xff0c;因为这份文档包含的内容是又全又新&#xff0c;而且还特别高深&#xff0c;从入门到实战的内容全都有&#xff01;&#xff01; 继续往下看&#xff1a; 本文档从…

EMQ设定ACL规则来控制客户端对主题的订阅权限

实现原理&#xff1a;EMQ可以通过制订ACL规则&#xff0c;校验客户端每个发布(Publish)/订阅(Subscribe) 的权限 本次采用的是EMQ Mnesia ACL。使用 EMQ X 内置的 Mnesia 数据库存储 ACL 规则 测试过程&#xff1a; 1本次实验环境&#xff0c;1个服务端&#xff08;发布1个主…

NumPy一维数组、二维数组与Pandas的Series、DataFrame行列结构和横纵方向的统一说明

最近在这个问题上耽误了一些时间&#xff0c;原因是之前个人理解上出了一些偏差&#xff0c;又受到错误文章的误导&#xff0c;把这个问题搞复杂了&#xff0c;现在统一梳理一下。在展开之前&#xff0c;先明确说明的是&#xff1a;NumPy的二维数组与Pandas的DataFrame&#xf…

7、Javaweb_tomcatservlet

web相关概念 1. 软件架构 1. C/S&#xff1a;客户端/服务器端 2. B/S&#xff1a;浏览器/服务器端 2. 资源分类 1. 静态资源&#xff1a;所有用户访问后&#xff0c;得到的结果都是一样的&#xff0c;称为静态资源.静态资源可以直接被浏览器解析 * 如&am…

2023年最全盘点 | 16款跨平台应用程序开发框架

近年来小程序技术被微信及其生态应用带的如火如荼的&#xff0c;开发者的世界里&#xff0c;小程序的技术非常受关注&#xff0c;特别在流量承接及跨端开发方面&#xff0c;均受到不同规模的企业关注及积极实践。 2023年&#xff0c;小程序依然很火&#xff0c;但却有了一些不…

元宇宙产业委MCC|于佳宁:加密资产摆脱不了周期性规律

2022年&#xff0c;加密行业面临寒冬&#xff0c;加密货币市场总价值大量缩水&#xff0c;降逾1.45万亿美元&#xff0c;期间多家加密公司接连倒塌&#xff0c;引发市场连锁效应。 加密货币总市值降逾1.45万亿美元 根据CoinMarketCap数据&#xff0c;加密货币总市值(Total Cry…

【服务器数据恢复】某品牌DS系列服务器RAID5数据恢复案例

服务器数据恢复环境&#xff1a; 某单位一台某品牌DS系列服务器连接4个扩展柜&#xff1b; 50块磁盘组建两组RAID5&#xff0c;其中一组由27块磁盘组建的RAID5存放的是Oracle数据库文件&#xff1b; 上层一共划分11个卷。 服务器故障&#xff1a; 磁盘故障导致存放Oracle数据库…

JavaScript类和对象

1、面向对象与面向过程 1.1 面向过程编辑POP(Process-oriented programming) 面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候再一个一个的依次调用就可以了。面向过程&#xff0c;就是按照我们分析好的步骤&…

20张图带你了解JVM运行时数据区

运行时数据区总览 内存是非常重要的系统资源&#xff0c;是硬盘和CPU的中间仓库及桥梁&#xff0c;承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略&#xff0c;保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管…

C 程序设计教程(11)—— 字符数据的输入与输出

C 程序设计教程&#xff08;11&#xff09;—— 字符数据的输入与输出 该专栏主要介绍 C 语言的基本语法&#xff0c;作为《程序设计语言》课程的课件与参考资料&#xff0c;用于《程序设计语言》课程的教学&#xff0c;供入门级用户阅读。 目录C 程序设计教程&#xff08;11&…

【2004NOIP普及组】T2.花生采摘 试题解析

【2004NOIP普及组】T2.花生采摘 试题解析 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。 鲁宾逊先生…

Android---Chip

Chip Chip 代表一个小块中的复杂实体&#xff0c;如联系人。它是一个圆形按钮&#xff0c;由一个标签&#xff0c;一个可选的芯片图标和一个可选的关闭图标组成。如果 Chip 可检查&#xff0c;则可以点击或切换Chip 。 style"style/Widget.MaterialComponents.Chip.Action…

疫情在家搭建的简单易学的SLAM建图机器人

1 简介 Easy_mqOS 是我仿照ROS 搭建的基于MQTT的简易机器人分布式开发框架,是一种轻量级并且十分容易上手的框架&#xff0c;支持多个节点的主题的订阅和单topic发布,节点之间独立、解耦合。没有复杂的文件配置&#xff0c;一定的make编程基础&#xff0c;像正常启动服务一样&a…

Redis未授权访问漏洞(四)SSH key免密登录

前言 系列文章 Redis未授权访问漏洞(一)先导篇 Redis未授权访问漏洞(二)Webshell提权篇 Redis未授权访问漏洞(三)Redis写入反弹连接定时任务 SSH key免密登录 实战实验 环境准备 实验前我们先来复习一遍ssh-key免密登录的流程 攻击机&#xff1a; Centos7 IP:192.168.142.44 靶…

局部变量的特点以及成员变量的区别

1. 概念在上面的章节中&#xff0c;其实已经跟大家介绍了局部变量的概念。即&#xff1a;局部变量是在定义形参、方法或代码块内部的变量&#xff0c;该变量只在当前方法、代码块中有效。2. 特点局部变量具有如下特点&#xff1a;● 局部变量声明在方法、构造方法或者代码块、形…

Mask RCNN网络源码解读(Ⅴ) --- Mask R-CNN论文解读环境配置以及训练脚本解析

目录 1.源码地址 2.项目配置 2.1 环境配置 2.2 文件结构 2.3 预训练权重下载地址&#xff08;下载后放入当前文件夹中&#xff09; 2.4 数据集&#xff1a;本例程使用的有COCO2017数据集和Pascal VOC2012数据集 2.4.1 COCO2017数据集 2.4.2 Pascal VOC2012数据集 2…