伯克利、斯坦福和CMU面向具身智能端到端操作联合发布开源通用机器人Policy,可支持多种机器人执行多种任务

不同于LLM或者MLLM那样用于上百亿甚至上千亿参数量的大模型,具身智能端到端大模型并不追求参数规模上的大,而是指其能吸收大量的数据,执行多种任务,并能具备一定的泛化能力,如笔者前博客里的RT1。目前该领域一个前沿工作是Octo: An Open-Source Generalist Robot Policy,该工作由美国Robot Learning顶尖高校(UC Berkeley,Stanford University,Carnegie Mellon University)联合推出,性能超过RT1,值得关注。值得注意的是该工作目前还处于ongoing状态,意味着还在推进中,并不成熟,有很大的提升空间。
octo模型

项目目标和主要贡献

本工作目标为研发一个开源、广泛使用和通用的机器人操作模型打基础,为此本工作首先在Open X-Embodiment数据集上的800k条机器人轨迹数据上进行预训练。Octo具有高度灵活性:支持多RGB输入;可控制多种机械臂;可通过语言或者图像目标进行引导。更重要的是,Octo Transformer backbone的模块化注意力结构使其可被高效地微调适配拥有新传感器配置、动作空间和形态的机器人。

主要贡献包括:

  1. 预训练好的27M和93M参数量的权重;
  2. 微调到新目标领域(target domains)的脚本;
  3. 完整的预训练流程,包括高效的数据加载器以及相关工具链等,以方便研发人员follow。

octo模型架构

octo【英文全称是octopus,八爪鱼】模型可简单划分为三大部分:输入encoder,输出head和Transformer backbone。
输入encoder:使用一个浅层的CNN网络对图像进行编码,使用t5 base预训练语言encoder对文本进行编码,以及一个可学习的readout。更多细节:
模型架构

图像编码

  1. 使用了一个浅层的CNN patch encoders,然后将编码之后的embeddings输入给transformer主干网络中进行学习,相对比于其他大型的image encoder,这样的好处是能够将大部分的数据信息都集中在可扩展的transformer里面训练,有利于网络能够学习到更多的信息,参考(Early Convolutions Help Transformers See Better)
  2. 如果训练过程是需要使用到目标图像(goal image)作为condition来训练网络,这里采用ViNT的方案将目标图像和观测进行提前融合,然后再将融合的patch token输入到transformer中进行训练,相当于提供一个目标与观测之间的关系信息的网络。
  3. 对比发现,使用ImageNet等非机器人相关的图像数据训练的权重与不加载权重,最终的效果都是一样的。【与RT1的结论相反】
    语言编码
  4. Language encoder用的是t5-base的模型,模型参数111M,T5的全称为Text to Text Transfer Transformer,是谷歌提出的预训练语言模型领域的通用模型,该模型将所有自然语言问题都转化成文本到文本的形式,并用一个统一的模型解决。为了得到大一统的高质量预训练语言模型,T5不可避免地走上了“大力出奇迹”的道路,使用了更大的模型和更多的数据,但是模型和数据规模只是T5通往最强模型的手段之一,T5最核心的理念是:使用前缀任务声明及文本答案生成,统一所有自然语言处理任务的输入和输出。
    Readout
  5. 它在进入序列之前会处理观测和任务tokens,但并不会被任务观测和任务tokens所处理,因此它们(观测和任务tokens)只能被动地读取和处理内在的embeddings,而不能影响他们;
  6. 有点类似ViT里的cls token,用来作为其他token的汇总,可以认为是summary。

输出head

  1. 一个轻量级的“action head”被应用到与readout tokens相对应的embeddings上,用于产生所需的输出和计算扩散损失。

Transformer Backbone

  1. 使用一个Transformer对输入的task和observation tokens进行处理,其注意力pattern是block-wise masked:观测tokens只会和来自同一时刻或者之前时刻的观测tokens或者任务tokens发生关联,不存在的观测则会被完全mask(比如没有语言指令的数据集),这种设计使得可以方便地在微调期间增加或者减少观测或者任务。

预训练数据以及数据处理

数据

训练混合数据包括来自各种机器人demonstration、场景和任务的数据。这些数据集不仅在机器人类型方面是异构的,而且在传感器(例如,包括或不包括腕式相机)和标签(例如,包括或不包括语言指令)方面也是异构的。数据处理主要包括数据过滤、数据平衡以及数据padding:
数据处理

Data Filter
1,滤除那些不含图像观测和没有使用机械臂末端位姿变化量作为action的数据;
2,然后根据多样性和任务相关性将剩下的数据集进行排序,去除重复性较高的冗余数据、图像分辨率太低的数据和过于小众任务的数据;
data balance
3,根据任务和环境将剩余数据粗略地划分为“更多样性”和“少多样性”数据集,在训练期间将前者的权重加倍,同时降低具有许多数据点的几个大数据集的权重。
图像padding和夹爪动作对齐

  1. 使用zero-padding的方式对缺失的相机数据进行处理;
  2. Gripper的指令1代表着open,0代表close。

实验

验证目标

  1. Octo是否可以控制多个机器人本体,并且可以开箱即用式地解决语言和图像引导的任务?
  2. Octo是否可以作为一个强大的基石微调到新的任务和机器人?并比重新训练和常用的其他预训练表征更好?
  3. Octo的设计是否支持微调到新的观测和动作空间?

评测任务
评测任务

我们在3所机构的6个真实机器人系统上对Octo进行了评估。我们的评估涵盖了各种物体交互(例如“WidowX BridgeV2”)、较长任务long task horizons (例如“Stanford Coffee”)以及精确操作(例如“Berkeley Peg Insert”)。我们评估了Octo在不使用任何预训练数据的情况下,对机器人在环境内的控制能力,以及在使用少量目标域数据(~100 demonstrations)的情况下,对机器人进行高效微调以适应新任务和环境的能力。我们还测试了在使用新观测值(“Berkeley Peg Insert”中的力矩输入)和动作空间(“Berkeley Pick-up”中的关节位置控制)的情况下进行微调的能力。

实验结论一:octo具有一定的zero-shot能力,能在某些任务上开箱即用,由于SOTA的RT1-X和RT2-X
实验一

实验结论二:可以在新领域实现高效学习
实验二

讨论和结论

存在的问题和可能的解决方法:

  1. 当前的Octo模型难以处理手腕相机信息,通常只使用第三视角相机微调时结果更强时,一个可能的原因是预训练数据缺乏腕部相机:只有27%的数据包含腕部相机信息,使得腕部摄像头编码器很可能训练不足。添加更多的腕部相机数据或者和第三人称相机编码器共享权重也许能提高表现;
  2. 我们发现language-conditioned策略与image goal conditioned策略的表现有很大差异,只有56%的预训练数据包含语言注释,这可能会降低language-conditioned策略的性能。除了在预训练组合中添加更多的语言注释数据外,也可以关注语言信息的融合策略,比如设计observation与language之间的cross attention。

将来计划

  1. 更好地language conditioned;
  2. 支持腕部相机;
  3. 使用更多更好的专家演示数据。

附录:一些消融尝试

有改进的尝试

  1. Using action chunking: We found it helpful to use “action chunking”to predict multiple actions into the future, for getting more coherent policy movements. We did not find temporal ensembling of future actions to provide additional benefits in the finetuning tasks we tested. 使用action chunking可以取得更好的预测结果
  2. Decreasing patch size Tokenizing images into patches of size 16 × 16 led to improved performance over patches of size 32 × 32, particularly for grasping and other fine-grained tasks. This does add compute complexity (the number of tokens is 4×), so understanding how to balance compute costs and resolution remains a problem of interest. 图像patches的设计影响也很大,16x16优于32x32
  3. Increasing shuffle buffer size: Loading data from 25 datasets in parallel is a challenge. Specifically, we found that achieving good shuffling of frames during training was crucial — zero-shot performance with a small shuffle buffer (20k) and trajectory-level interleaving suffered significantly. We solved this issue by shuffling and interleaving frames from different trajectories before decoding the images, allowing us to fit a much larger shuffle buffer (up to 500k). We also subsample at most 100 randomly chosen steps from each training trajectory during data loading to avoid “over-crowding” the shuffle buffer with single, very long episodes.

无改进的尝试

  1. MSE Action Heads: i.e., replacing our diffusion decoding head with a simple L2 loss, lead to “hedging” policies that move very slowly and e.g., fail to rotate the gripper in Bridge evals.
  2. Discrete Action Heads: i.e., discretizing actions into 256 bins per dimension and training with cross-entropy loss; lead to more “decisive” policies, yet often observe early grasping issues.
  3. ResNet Encoders: train faster as they compress the image into fewer tokens, but attain worse zero-shot performance.
  4. Pretrained Encoders: ImageNet pretrained ResNet encoders did not provide benefit on zero-shot evals, though may be confounded with ResNet architectures underperforming as mentioned above.
  5. Relative Gripper Action Representation: when aligning the gripper action representations of the different datasets, we tried (A) absolute gripper actions, i.e.,17 actions are +1 when the gripper is open and -1 if it is closed, and (B) relative gripper actions, i.e., gripper action is +1/-1 only in the timestep when the gripper opens/closes. We found that the latter tends to open/close grippers less often since most of the training data represents “do not change gripper” actions, leading to a slightly higher grasp success rate. At the same time, the relative representation led to less retrying behavior after a grasp failed, which was ultimately worse.
  6. Adding Proprioceptive Inputs: resulting policies seemed generally worse, potentially due to a strong correlation between states and future actions. This might be due to a causal confusion between the proprioceptive information and the target actions。
  7. Finetuning Language Model: In order to improve the visuo-lingual grounding of Octo we experimented with: i) varying sizes of the T5 encoder small (30M), base (111M), large (386M) and ii) finetuning the last two layers of the encoder. While using the base model resulted in better language-conditioned policies, we did not find improvements when using even larger encoders or finetuning the encoder. This might be due to the lack of rich, diverse, free-form language annotations in most of the datasets.

个人观点

octo首次向研究者展示了具身智能端到端操作大模型的理想范式:支持多种观测、多种condition输入,也支持多种action输出,且可在少量数据上实现高效率学习,支持控制多种不同型号的机器人,这个工作放在将来来看很可能是一个milestone,但目前还有着许多技术和理论问题待解决,具身智能的scaling law还在研究探索中,尤其是跨场景和跨机器人本体泛化性问题【该问题是通用具身智能需要的,在很多工业场景并不怎么需要,所以沿途下蛋还是有希望的】,这种可插拔式的架构设计有望成为具身智能端到端操作大模型的典范。

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

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

相关文章

51单片机基础11——蓝牙模块控制亮灭

串口初试——蓝牙模块 蓝牙模块的使用1. 软硬件条件2. 蓝牙模块3. 代码(分文件处理之后的代码) 蓝牙模块的使用 1. 软硬件条件 单片机型号:STC89C52RC开发环境:KEIL4烧录软件串口通信软件:stc-isp蓝牙模块:HC-04LED模块(高电平点…

【unity实战】Unity中使用A*寻路+有限状态机制作一个俯视角敌人AI

最终效果 文章目录 最终效果前言A*寻路插件介绍下载导入AI插件生成寻路网格节点的类型障碍物寻路测试A*只打印报错信息 代码控制寻路动画配置敌人状态机各种状态脚本效果完结 前言 前面做过有限状态机制作一个敌人AI:【unity实战】在Unity中使用有限状态机制作一个…

通过代理服务器连接 huggingface下载数据集或模型

有些huggingface的数据集或者模型在镜像网站("https://hf-mirror.com")上不存在,因此在国内只能通过代理服务器来下载,下面是下载的代码示例: import os os.environ["http_proxy"] "http://127.0.0.1:…

improved-diffusion-main代码理解

目录 一、 TimestepEmbedSequential二、PyTorch之Checkpoint机制三、AttentionBlock四、use_scale_shift_norm 和nanoDiffusion-main相比,improved-diffusion-main代码是相似的,但有几个不是很好理解的地方记录一下。 一、 TimestepEmbedSequential 代码…

【C++题解】1413. 切割绳子

问题:1413. 切割绳子 类型:贪心,二分,noip2017普及组初赛 题目描述: 有 n 条绳子,每条绳子的长度已知且均为正整数。绳子可以以任意正整数长度切割,但不可以连接。现在要从这些绳子中切割出 m…

Open3D 在点云中构建八叉树

目录 一、概述 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2构建后点云 一、概述 八叉树(Octree)是一种树状数据结构,用于递归地将3D空间分割成较小的立方体。八叉树特别适用于3D计算机图形学、点云处理和空间…

TreeMap、HashMap 和 LinkedHashMap 的区别

TreeMap、HashMap 和 LinkedHashMap 的区别 1、HashMap2、LinkedHashMap3、TreeMap4、总结 💖The Begin💖点点关注,收藏不迷路💖 在 Java 中,TreeMap、HashMap 和 LinkedHashMap 是三种常用的集合类,它们在…

昇思Mindspore学习25天打卡Day16:热门LLM及其他AI应用|基于MindeNLP+MusicGen生成自己的个性化音乐

昇思Mindspore学习25天打卡Day16:热门LLM及其他AI应用|基于MindeNLPMusicGen生成自己的个性化音乐 1 下载模型2 生成音乐2.1 无提示生成2.2 文本提示生成2.3 音频提示生成 3 生成配置 &训练结束打上标签和时间 MusicGen是来自Meta Al的Jade Copet等人提出的基于…

连锁店收银系统源码

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 私有化独立部署/全开源源码,系统开发语言: 核心开发语言: PHP、HTML…

hnust 1816: 算法10-9:简单选择排序

hnust 1816: 算法10-9:简单选择排序 题目描述 选择排序的基本思想是:每一趟比较过程中,在n-i1(i1,2,…,n-1)个记录中选取关键字最小的记录作为有序序列中的第i个记录。 在多种选择排序中,最常用且形式最为简单的是简单选择排序。…

ingress-nginx控制器证书不会自动更新问题

好久没更新了,正好今天遇到了一个很有意思的问题,在这里给大家分享下,同时也做下记录。 背景 最近想做个实验,当k8s集群中secret更新后,ingress-nginx控制器会不会自动加载新的证书。我用通义千问搜了下,…

windows 7 安装IPP协议,支持Internet打印

1 windows 7 安装IPP协议,支持Internet打印 #控制面板--打开或关闭Windows功能 3 复制Printers 文件夹 到 c:\inetpub\wwwroot\,复制msw3prt.dll到c:\windows\system32\ 4 打开IIs管理器 #报错:模块列表中不存在此处理程序所需的指定模块。如果您添加脚本映射处理程序映射&…

AndroidKille不能用?更新apktool插件-cnblog

AndroidKiller不更新插件容易报错 找到apktool管理器 填入apktool位置,并输入apktool名字 选择默认的apktool版本 x掉,退出重启 可以看到反编译完成了

网络基础:IS-IS协议

IS-IS(Intermediate System to Intermediate System)是一种链路状态路由协议,最初由 ISO(International Organization for Standardization)为 CLNS(Connectionless Network Service)网络设计。…

数据结构——(双)链表

文章目录 1. 定义 2. 双链表和单链表的区别 3. 代码示例 3.1 双链表节点和结构定义 3.2 初始化双链表 3.3 返回双链表的长度 3.4 在指定位置插入元素 3.5 在末尾插入元素 3.6 删除指定位置的元素并返回被删除的元素 3.7 删除末尾元素 3.8 获取指定位置的元素 3.9 修…

磁盘分区工具 -- 傲梅分区助手 v10.4.1 技术员版

软件简介 傲梅分区助手是一款功能强大的磁盘分区工具,它专为Windows系统设计,帮助用户更高效地管理他们的硬盘。该软件支持多种分区操作,包括创建、格式化、调整大小、移动、合并和分割分区。此外,它还提供了复制硬盘和分区的功能…

C++:Level3阶段测试

1、黑客小知识: (1)常用的黑客头文件有____和____。 (2)创建文件的函数叫做________。 (3)我更新了____个黑客头文件。 (4)万能头文件包含的黑客头文件是________。 …

速刷edurank(1)

python安全开发 python安全开发 python安全开发前言一、平台edu二、使用步骤1.引入库2.功能**完整代码**完整代码 总结 前言 目的:想快速的搜集edu的域名 一、平台edu https://src.sjtu.edu.cn/rank/firm/0/?page2 二、使用步骤 1.引入库 代码如下&#xff08…

气压传感器在自动驾驶汽车还有哪些应用场景

气压传感器在近年来被广泛应用于各种新兴领域,以下是其中几个最新的应用: 1、自动驾驶汽车:自动驾驶汽车需要精确的气压传感器来监测道路上的气压变化,帮助车辆进行准确的定位和导航。气压传感器可以提供高精度、可靠的气压数据&…

实验3-Spark基础-Spark的安装

文章目录 1. 下载安装 Scala1.1 下载 Scala 安装包1.2 基础环境准备1.3 安装 Scala 2. 下载安装 Spark2.1 下载 Spark 安装包2.2 安装 Spark2.3 配置 Spark2.4 创建配置文件 spark-env.sh 3. pyspark 启动4. 建立/user/spark文件夹 1. 下载安装 Scala 1.1 下载 Scala 安装包 下…