论文阅读笔记——OpenVLA: An Open-Source Vision-Language-Action Model

devtools/2025/3/11 6:08:29/

OpenVLA 论文
在这里插入图片描述

OpenVLA 是一种具有 70 亿参数的开源视觉-语言-动作模型(Vision-Language-Action, VLA),旨在将视觉感知、语言理解和机器人动作控制无缝结合。其核心是一个预训练的视觉条件语言模型Vision-Conditioned Language Model),通过在 Open-X Embodiment 数据集上进行微调,该数据集包含了 970k 条多样化的机器人操作轨迹,涵盖了广泛的场景和任务。OpenVLA 的架构和训练方法使其在机器人操作和多模态任务中展现出强大的潜力。

与 Octo 等先前的工作不同,OpenVLA 采用了一种更为端到端的方法。Octo 等模型通常由预训练的组件(如语言嵌入或视觉编码器)组成,并与从头初始化的附加模型组件结合,在策略训练过程中学习如何将这些组件“拼接”在一起。相比之下,OpenVLA 直接对视觉-语言模型(VLM)进行微调,通过将机器人动作视为语言模型词汇中的 token 来生成机器人动作。这种方法不仅简化了模型架构,还增强了多模态任务中的一致性和泛化能力。
在这里插入图片描述
最近的 VLM 架构一般涵盖:

  1. 一个视觉编码器,将图像输入映射为多个“图像块嵌入”
  2. 一个投影器,将视觉编码器的输出嵌入映射到语言模型的输入空间
  3. 一个大型语言模型LLM骨干

作者将机器人动作预测问题重新表述为一个“视觉-语言”任务。具体来说,模型接收观察图像和自然语言任务指令作为输入,并将其映射为一串预测的机器人动作。为了实现这一目标,作者将连续的机器人动作离散化,映射到语言模型的分词器所使用的离散 token 上,从而将动作预测问题转化为语言模型的输出空间问题。
动作离散化方法
为了使视觉-语言模型(VLM)的语言模型骨干能够预测机器人动作,作者采用了一种基于分位数的离散化方法。对于每个动作维度,作者将训练数据中动作的第 1 分位数到第 99 分位数之间的区间均匀划分为若干“箱子”。与 Brohan 等人使用的最小-最大边界方法不同,这种基于分位数的方法能够有效忽略数据中的异常动作,避免异常值过度扩展离散化区间,从而保持动作离散化的有效粒度
通过这种方法,作者将一个 N 维的机器人动作表示为 N 个离散整数,每个整数的取值范围为 [ 0 , 255 ] [0, 255] [0,255]。然而,OpenVLA 使用的语言模型骨干(Llama 分词器)在微调期间仅保留了 **100 个“特殊词”**用于新引入的词,这远不足以覆盖 256 个动作 token

分词器词汇的调整
为了解决这一问题,作者借鉴了 Brohan 等人的方法,选择了一种简单而有效的策略:用动作 token 覆盖 Llama 分词器词汇中使用频率最低的 256 个词(即词汇表中最后的 256 个词)。这种方法既避免了分词器词汇的扩展,又确保了动作 token 的有效表示。

最终使用Open X-Embodiment dataset对模型进行微调,使用lora finetune且发现微调vision encoder可以帮忙捕捉机器人数据的细粒度空间细节。

性能表现

在这里插入图片描述
结果显示,OpenVLA在大多数任务中表现最强,并且在通用策略中具有最高的总体成功率。RT-2-X也表现良好,优于RT-1-X和Octo(RT-1-X和Octo在这些泛化任务中通常遇到困难),但不如OpenVLA


http://www.ppmy.cn/devtools/166200.html

相关文章

运行OpenManus项目(使用Conda)

部署本项目需要具备一定的基础:Linux基础、需要安装好Anaconda/Miniforge(Python可以不装好,直接新建虚拟环境的时候装好即可),如果不装Anaconda或者Miniforge,只装过Python,需要确保Python是3.…

删除或替换 Word 中的首页、尾页以及其它指定范围的页

我们经常在处理 Word 文档的时候会碰到需要删除 Word 页面或者替换 Word 文档页面的场景,比如将 Word 文档的最后一页删除、比如 Word 文档的封面错误或者过时需要替换为新的封面等等,那遇到这种场景的时候大家都是怎样做的呢?今天就给大家介…

Leetcode 3478. Choose K Elements With Maximum Sum

Leetcode 3478. Choose K Elements With Maximum Sum 1. 解题思路2. 代码实现 题目链接:3478. Choose K Elements With Maximum Sum 1. 解题思路 这一题思路上就是一个有序数组,我们首先将数组1有序排列,然后依次考察其每一个位置上的元素…

【五.LangChain技术与应用】【9.LangChain ChatPromptTemplate(上):高级对话模板设计】

LangChain ChatPromptTemplate完全攻略(上):让AI对话拥有导演思维 (全文约6000字,实战代码占比40%,建议搭配Jupyter Notebook阅读) 凌晨三点的办公室,你盯着刚写完的客服对话系统,AI回复总是把"我要投诉!“处理成"我要投喂~”。同事小李凑过来瞥了一眼代…

一文讲懂Go语言如何使用配置文件连接数据库

一文讲懂Go语言如何使用配置文件连接数据库 viper1. viper简介2. viper 读取.toml配置文件定义Go语言结构体编写与Go语言结构体对应的.toml配置文件定义初始化函数定义get函数 连接数据库1. 定义数据库对象2. 定义初始化函数3. 定义 get 函数4. 定义 main 函数, 连接数据库 配置…

JAVA通过SSE实现消息推送

JAVA通过SSE实现消息推送 1.什么是SSE?2.SSE技术的基本原理3.SSE和Socket的区别4.编写SSE服务,来进行创建链接和发送消息5.前端实现消息监听 1.什么是SSE? SSE(Server-Sent Events)是一种用于实现服务器主动向客户端推…

蓝桥杯 字符串拼接【省模拟赛】

问题描述 给定四个字符串 a,b,c,da,b,c,d,请将这四个字符串按照任意顺序依次连接拼成一个字符串。 请问拼成的字符串字典序最小是多少? 输入格式 输入四行,每行包含一个字符串。 输出格式 输出一行包含一个字符串,表示答案。 样例…

React基础之组件

在React中一个组件就是首字母大写的函数&#xff0c;内部存放了组件的逻辑和视图UI&#xff0c;渲染组件只需要把组件当作标签书写即可 //定义组件 // function Button(){ // return <button>click me&#xff01;</button> // } //也可以使用箭头函数来定义 co…