OpenVLA 模型详解

OpenVLA 模型详解

生成日期: 2026-09-30

OpenVLA

基本信息

|--------|-----------------------------------------------------------------------------------|
| 项目 | 内容 |
| 全称 | Open Vision-Language-Action Model |
| 机构 | Stanford / UC Berkeley |
| 论文 | OpenVLA: Open-Source Vision-Language-Action Model(https://openvla.github.io/) |
| 模型规模 | 7B 参数 |
| 架构 | Transformer (基于 Llama 2/3) |
| 动作类型 | 离散 Token(映射自连续动作) |
| 训练方式 | 模仿学习 (Imitation Learning) |

模型架构图

输入图像 ──→ SigLIP Encoder ──→ 图像Embedding ──┐
├──→ LLM Backbone (Llama 2/3) ──→ 动作Logits
文本指令 ──→ Text Embedding ────────────────────────┘
↑
图像和文本拼接

动作Logits ──→ Action Head (256类) ──→ 动作Token ID ──→ 查表 ──→ 连续动作

公式列表

公式 1:图像 SigLIP 编码

I_{emb} = \\text{SigLIP}(I_{raw})

|------------|----------------------------------------------------------|
| 项目 | 内容 |
| **输入** | 原始图像 I_{raw} \\in \\mathbb{R}\^{H \\times W \\times 3} |
| **输出** | 图像嵌入向量 I_{emb} \\in \\mathbb{R}\^{N \\times D} |
| **作用** | 预训练的 SigLIP 把图像转成语义向量 |

场景: 输入一张机械臂相机拍摄的桌面图片

输入: 224, 224, 3 RGB图像
输出: 256个token, 每个token 1024维向量

比喻: 狗能闻气味,人能看语义

• 狗闻到: 面包味、苹果味

• SigLIP 看到: "这是一个桌面,上面有红色积木"

变化:

之前: 像素矩阵 224×224×3 = 150,528 个数值
之后: 语义向量 256×1024 = 262,144 个有意义的数

公式 2:文本Embedding

T_{emb} = \\text{TextEncoder}(text)

|------------|--------------------------------------------------|
| 项目 | 内容 |
| **输入** | 文本字符串 "pick up the red block" |
| **输出** | 文本嵌入向量 T_{emb} \\in \\mathbb{R}\^{M \\times D} |
| **作用** | 把文字转成模型能理解的向量 |

场景: 输入 "pick up the red block"

输入: 4个单词
输出: 每个单词 → 1024维向量,共4个向量

比喻: 查词典

• 每个英文单词 → 中文解释

• 每个文本token → 1024维向量

变化:

之前: "pick up the red block" (20个字符)
之后: 4×1024 的向量序列

公式 3:多模态特征融合

X = \\text{Concat}(I_{emb}, T_{emb})

|------------|------------------------------------------------|
| 项目 | 内容 |
| **输入** | 图像嵌入 I_{emb} + 文本嵌入 T_{emb} |
| **输出** | 拼接后的序列 X \\in \\mathbb{R}\^{(N+M) \\times D} |
| **作用** | 把图像和文本拼成一条序列送给LLM |

场景: 看到图像 + 听到 "pick up the red block"

图像序列: img_1, img_2, ..., img_256 (256个token)
文本序列: pick, up, the, red, block (5个token)
融合后: img_1, ..., img_256, pick, up, the, red, block

比喻: 边看图边听讲解

• 看着幻灯片

• 听着解说词

• 两者结合理解内容

变化:

之前: 图像256×1024 + 文本5×1024 = 两个独立张量
之后: 261×1024 = 一个拼接的大序列

公式 4:动作空间离散化(Action Binning)

a_{discrete} = \\left\\lfloor \\frac{a_{continuous} - a_{min}}{bin\\_size} \\right\\rfloor

bin\\_size = \\frac{a_{max} - a_{min}}{256}

|------------|-------------------------------------------------|
| 项目 | 内容 |
| **输入** | 连续动作 a_{continuous} \\in \\mathbb{R} |
| **输出** | 离散动作ID a_{discrete} \\in \\{0, 1, ..., 255\\} |
| **作用** | 把连续动作分成 256 个 bins |

场景: 机械臂末端位置动作值 0.45678 米

动作范围: 0.0 ~ 1.0 米
bin_size = 1.0 / 256 ≈ 0.0039 米/每bin

Token = floor((0.45678 - 0.0) / 0.0039)
= floor(117.1)
= 117

公式验证:

Token 117 对应的动作范围:
起始: 117 × 0.0039 = 0.4563 米
结束: 118 × 0.0039 = 0.4602 米
原始值 0.45678 在这个范围内 ✓

比喻: 手机音量分级

• 音量范围: 0 ~ 100%

• 手机只有 26 级音量 (0, 4, 8, 12, ..., 100)

• 按一下调 4%,无法调到 37%

变化:

之前: 0.45678 米(精确值)
之后: 117 (离散ID)

公式 5:动作预测(LLM Forward)

P(a_{next}) = \\text{Llama2/3}(X)

|------------|------------------|
| 项目 | 内容 |
| **输入** | 融合后的序列 X |
| **输出** | 下一个动作的 256 维概率分布 |
| **作用** | 根据图像和文本预测动作Token |

场景: 看到图像和文本,预测下一个动作

输入: 图像序列文本序列
↓ Llama2/3 前向传播
输出: 动作Token的概率分布

0.001, 0.001, ..., 0.42(at index 117), ..., 0.001

比喻: 智能联想输入法

• 输入 "今天天气"

• 候选词: "很好"(0.6), "不错"(0.3), "糟糕"(0.1)

• 选择概率最高的候选词

变化:

之前: 输入序列 261×1024
之后: 256个动作的概率 256

公式 6:动作解码(查表)

a_{continuous} = \\text{ActionDecode}(a_{discrete})

a_{continuous} = a_{min} + (a_{discrete} + 0.5) \\times bin\\_size

|------------|---------------------|
| 项目 | 内容 |
| **输入** | 离散 Token ID (0-255) |
| **输出** | 连续动作值 |
| **作用** | 把 Token ID 变回实际动作 |

场景: 预测了 Token 117,需要执行

Token ID: 117
bin_size: 0.0039
动作值: 0.0 + (117 + 0.5) × 0.0039 = 0.45855 米

量化误差分析:

真实需要的动作: 0.45678 米
模型预测的动作: 0.45855 米
误差: |0.45678 - 0.45855| = 0.00177 米 ≈ 1.77mm

比喻: 成绩单换算

• 原始分: 87.5分

• 等级: B+ (对应 85-90 分)

• 换算回百分制: 87.5分

变化:

之前: Token ID = 117
之后: 动作值 = 0.45855 米

公式 7:多任务学习损失

\\mathcal{L} = \\mathcal{L}_{action} + \\lambda \\cdot \\mathcal{L}_{language}

\\mathcal{L}_{action} = -\\log P(a_{discrete} \| I, text)

|------------|------------------|
| 项目 | 内容 |
| **输入** | 预测分布和真实标签 |
| **输出** | 总损失(动作损失 + 语言损失) |
| **作用** | 同时训练动作预测和语言理解 |

场景: 一个样本同时包含动作和文本

输入: 图像 + "close gripper"
动作标签: Token 45
语言标签: "close gripper"

损失 = -log(预测动作概率) + λ × (-log(预测文本概率))

为什么需要语言损失?

• 防止模型只学会动作,忘掉语义

• 让模型同时理解"夹爪闭合"和"close gripper"

变化:

之前: 随机初始化的模型
之后: 损失值反向传播更新权重

完整数据流程

  1. 输入准备
    图像: 224, 224, 3 相机图
    文本: "pick up the red block"

↓ SigLIP编码 (公式1)
2. 图像编码
图像: → 256, 1024 图像嵌入

↓ 文本Embedding (公式2)
3. 文本编码
文本: → 5, 1024 文本嵌入

↓ 特征融合 (公式3)
4. 多模态融合
序列: 256+5, 1024 = 261, 1024

↓ LLM预测 (公式4,5)
5. 动作预测
输出: Token 117 概率最高

↓ 动作解码 (公式6)
6. 执行
Token 117 → 0.45855m → 机械臂移动

公式汇总表

|-------|-----------------------------------------------------------------------|----------|----------|--------------|
| # | 公式 | 输入 | 输出 | 解决什么问题 |
| 1 | I_{emb} = \\text{SigLIP}(I_{raw}) | 像素图像 | 语义向量 | 图像如何被理解 |
| 2 | T_{emb} = \\text{TextEncoder}(text) | 文本字符串 | 文本向量 | 文字如何被理解 |
| 3 | X = \\text{Concat}(I_{emb}, T_{emb}) | 图+文 | 融合序列 | 多模态如何一起输入 |
| 4 | a_{discrete} = \\lfloor (a-a_{min})/bin\\_size \\rfloor | 连续动作 | 0-255 ID | 连续值如何变成Token |
| 5 | P(a_{next}) = \\text{Llama2/3}(X) | 融合序列 | 256维概率 | 下一个动作是什么 |
| 6 | a_{cont} = a_{min}+(a_{discrete}+0.5) \\times bin\\_size | Token ID | 连续动作 | Token变回动作值 |
| 7 | \\mathcal{L} = \\mathcal{L}_{action} + \\lambda \\mathcal{L}_{lang} | 预测/真实 | 损失值 | 如何同时学动作和语义 |

与 RT-2 的区别

|----------------|----------------|-------------------|
| 对比项 | RT-2 | OpenVLA |
| Vision Encoder | ViT (Google自研) | SigLIP (开源) |
| LLM Backbone | PaLM (Google) | Llama 2/3 (开源) |
| 动作bins | 未公开 | 256 bins |
| 开源程度 | 专有 | 完全开源 |
| 训练数据 | RT-1 数据 | Open X-Embodiment |

场景比喻总结

|----------------|----------|-------------|
| 公式 | 生活比喻 | 一句话 |
| 1. SigLIP编码 | 看图说话 | 图片变成语义描述 |
| 2. 文本Embedding | 查词典 | 文字变成词向量 |
| 3. 特征融合 | 边看图边听讲 | 图文拼成一串 |
| 4. 动作离散化 | 手机音量分级 | 连续值分成256档 |
| 5. LLM预测 | 联想输入法 | 看图猜词 |
| 6. 动作解码 | 成绩换算 | Token变回具体数值 |
| 7. 多任务损失 | 又学动作又学语言 | 两手抓两都要 |

相关推荐
Martina_03211 小时前
AI生成3D场景第一次进入总卡一下?用6步排查Shader编译、纹理上传与预加载
图像处理·人工智能·游戏·3d·ai·自然语言处理·游戏策划
DP DPharness1 小时前
dsh-univer-office 报错了?按这个顺序排查
人工智能·dpharness
正经教主1 小时前
【FDE系列】阶段3:Day 57:Promptfoo 实战 — A/B 对比让数据说话
人工智能·fde
YOLO_DATA1 小时前
YOLO27防震锤缺陷检测数据集 防震锤数据集 1000张 防震锤 带标注 voc yolo 2 类 目标检测
人工智能·深度学习·yolo·目标检测·计算机视觉·数据集·无人机
张彦峰ZYF1 小时前
Agent规模化治理与持续运营:从“几十个智能体”迈向企业级控制平面
人工智能·agent·agent registry
沉默王二1 小时前
31岁罗福莉,晋升小米最高职级22级
人工智能·openai·agent
delishcomcn1 小时前
当热烫金膜分切机遇上AI:分切进入智控时代
人工智能·热烫金膜·分切机
Light Gao2 小时前
RNN 原理、架构与一次完整手算
人工智能·rnn·深度学习·神经网络·embedding
weixin_438338512 小时前
CUDA 安装理解
人工智能·深度学习