news 2026/1/25 9:28:13

Octo论文详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Octo论文详解

论文:Octo:An Open-Source Generalist Robot Policy

1. 引言

机器人领域构建“通用策略模型”面临多重挑战,包括处理不同的机器人结构、传感器设置、动作空间、任务规格和环境条件等,考虑设计和开发一个具备广泛适应性的机器人策略模型,旨在解决传统机器人策略难以泛化的问题。

Octo模型由Transformer架构驱动,在Open X-Embodiment数据集的800k条trajectory上训练,支持多任务、多传感器输入和多动作空间,能够高效微调并适应新领域的机器人任务。

2. Octo模型架构

Octo的核心架构是基于Transformer的通用策略模型,模型设计注重灵活性可扩展性,包括以下三个主要部分:

  • input tokenizers:将任务描述(语言指令或目标图像)和观察(第三人称和腕式相机图像或其他传感器数据)转化为统一的token序列,后续统一输入到transformer

    • 语言输入通过预训练的T5模型(111M参数)进行编码。
    • 观测和目标图像通过浅层卷积网络编码为token。

    输出:将位置编码添加到任务token和观察token,按照 [TT, To1, To2, . . . ]顺序排列

  • Transformer主干网络:输入任务token和观察token,产生embeddings

    Octo的Transformer结构采用了块状的自注意力机制,观察token只能因果地关注来自当前或更早时间步的token和任务token。这种模块化设计可以在微调过程中增加或移除观察和任务输入。

  • Readout Heads:action head接受Readout token,输出动作序列
    readout代表transformer的输出中的[CLS] token。readout标记的作用类似于BERT中的[CLS]标记,充当序列的紧凑向量嵌入。Action Head用于从Transformer输出中生成连续动作,是一个3层 MLP,包含256隐藏单元、残差连接和层归一化

Octo的架构设计是为了在处理多种不同机器人平台、传感器输入以及任务定义时具有灵活性。

这当在下游添加新的任务,不同机器人的动作空间(如末端位姿、关节位置、关节速度)仅需修改Action Head结构,Transformer主干保持完全不变,在特定的任务上进行微调。

例如: 某个场景中, 机器人配备了激光雷达, rgb相机, 红外相机, 目的是完成某些特定零件的摆放和打包, 所以这里observation就变成了rgb图像, 红外图像, 点云, task为文本指令, 以及最终的head预测为 机械臂的末端位姿, 末端执行器的开合状态等.

3. 预训练数据

Octo模型预训练基于Open X-Embodiment数据集,这是一个包含150万机器人操作轨迹的庞大数据集。Octo使用了其中80万条机器人示范数据,覆盖了多种机器人任务和环境。该数据集包括:

  • 多种不同的机器人类型和任务场景;
  • 各种传感器配置(如手腕相机和第三人称相机);
  • 丰富的任务标签,包括语言指令和目标图像。

在数据采样方面,论文采用了加权采样方法,优先选择数据多样性较高的任务和场景,同时避免过度重复的任务对训练产生偏差。此外,为了使不同的数据集之间的动作空间保持一致,研究团队对抓手动作进行了标准化处理。

4. 训练目标与优化方法

Octo采用conditional diffusion decoding head来预测连续的、多模态的动作分布。

具体来说,每个动作预测只执行一次transformer backbone的前向传播,之后,多步去噪过程完全在action head进行。生成动作步骤如下:

  • 采样高斯噪声向量;

  • 将高斯噪声添加到数据集动作

  • 通过条件化网络逐步去噪,生成准确的动作序列。

    xk−1=α(xk−γϵθ(xk,e,k)+N(0,σ2I))x^{k−1}=α(x^k−γ\epsilon_{θ}(x^k,e, k)+N(0,σ^2I))xk1=α(xkγϵθ(xk,e,k)+N(0,σ2I))

    其中,e对应的是transformer的Readout token,作为条件输入到去噪网络

与均方误差(MSE)或离散化动作分布的预测方法相比,扩散解码能够更好地捕捉多模态动作分布,提高策略的精度和灵活性。训练过程中使用了标准的DDPM(去噪扩散概率模型)目标函数,这种方法对处理复杂、多模态的机器人任务非常有效。

训练细节

  • 根据transformer的参数大小, 训练了两个模型Octo-Small(使用VIT-S), Octo-Base(使用VIT-B),
  • 图像使用了2帧历史帧(论文提到只使用1帧历史帧时, 精度反而会轻微下降)
  • 当数据集中没有文本指令时, 只用goal image作为task toke
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/13 17:38:39

基于python+django的学生就业管理的招聘系统(源码+lw+部署文档+讲解等)

课题介绍本课题聚焦校园就业招聘中信息不对称、流程管理低效的痛点,设计并开发基于PythonDjango的学生就业管理与招聘系统。系统以Python作为核心开发语言,依托Django框架搭建高效稳定的后端服务架构,负责处理多角色权限管控、招聘信息发布、…

作者头像 李华
网站建设 2026/1/22 17:04:10

JVM 之 内存溢出实战【OOM? SOF? 哪些区域会溢出?堆、虚拟机栈、元空间、直接内存溢出时各自的特点?以及什么情况会导致他们溢出?并模拟溢出】

实战:OutOfMemoryError异常 除了程序计数器外,堆、虚拟机栈、元空间、直接内存都有发生OOM的可能 下面我们演示下引起各区域OOM的情况,及观察下其异常表现,进而初步总结各异常时的调优策略 JVM调优实例: 堆&#xff1a…

作者头像 李华
网站建设 2026/1/21 11:14:10

磁链观测器实战:从仿真到代码的闭环之旅

磁链观测器(仿真+闭环代码参考文档) 1.仿真采用simulink搭建,2018b版本 2.代码采用Keil软件编译,思路参考vesc中使用的方法,自己编写的代码能够实现0速闭环启动,并且标注有大量注释,方便学习。 …

作者头像 李华
网站建设 2026/1/24 13:15:35

基于TMS320F28335芯片的BUCK双闭环PI DSP代码

基于TMS320F28335芯片的BUCK双闭环(PI)DSP代码搞电力电子的老司机们对BUCK电路都不陌生,但要把双闭环PI控制塞进DSP里跑起来,这事儿还真得跟TMS320F28335的寄存器大战三百回合。今天咱们就扒开这个芯片的"内脏"&#xf…

作者头像 李华
网站建设 2026/1/24 0:25:15

vue基于spring的线上文印店打印店平台设计与实现_61624t38

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/1/20 13:28:38

沉浸式LED显示屏LED电子屏多少钱

沉浸式LED显示屏:价格与选择指南 在当今的数字时代,沉浸式LED显示屏已成为许多行业提升用户体验和视觉效果的重要工具。无论是商业展示、娱乐活动还是教育领域,高质量的沉浸式LED显示屏都能带来非凡的视觉享受。然而,对于初次接触…

作者头像 李华