视觉-语言-动作模型(VLA)深度解析:当 AI 学会“看、读、动”

如果说过去十年计算机视觉的核心命题是"让机器看懂世界",大语言模型的核心是"让机器理解人类指令",那么下一个十年的星辰大海无疑是------让机器根据视觉信息和语言指令,自主完成物理世界中的操作任务

这正是视觉-语言-动作模型(Vision-Language-Action Model,VLA) 要做的事。

想象这样一个场景:你对家庭机器人说"把茶几上的蓝色杯子放到厨房的第二个抽屉里",机器人环顾四周,识别出茶几、蓝色杯子、厨房位置、第二个抽屉,规划出移动路径,抓取杯子,打开抽屉,放置,关上抽屉------整个过程无需任何预编程动作,全靠模型对视觉场景的理解和对自然语言指令的解析。

VLA 正是实现这一愿景的关键技术。它统一了视觉感知、语言理解和动作生成三大能力,被视为具身智能(Embodied AI)和人形机器人的"大脑"。

本文将带你系统了解 VLA 模型的技术脉络、核心原理、代表性工作及未来趋势。

VLA 是什么?

2.1 基本定义

VLA 模型是一种多模态基础模型,输入通常包含:

  • 视觉观测(Vision):来自相机、深度传感器等的图像或视频流;

  • 语言指令(Language):自然语言描述的任务目标(如"打开冰箱门");

输出是:

  • 动作序列(Action) :机器人末端执行器(如机械臂)在笛卡尔空间或关节空间中的运动轨迹,或更抽象的操作原语(如 pick(blue_cup))。

与传统的视觉-语言模型(VLM,只能输出文本)不同,VLA 的最终输出是可执行的控制指令,因此它必须内化物理世界的动态规律和操作常识。

2.2 VLA 与 VLM、LLM 的关系

模型类型 输入模态 输出模态 典型任务
LLM 文本 文本 对话、写作、推理
VLM 图像+文本 文本 图像描述、视觉问答
VLA 图像+文本 动作序列 机器人操作、导航

可以通俗地理解:VLM 让 AI 会"看"会"说",而 VLA 进一步赋予了 AI 会"做"的能力。

VLA 的技术演进路线

3.1 早期尝试:从 RT-1 到 RT-2

RT-1(Robotics Transformer 1) 是 Google 于 2022 年发布的机器人 Transformer 模型。它首次将 Transformer 架构应用于真实机器人的多任务学习,在 700 多个任务上训练,展现了一定的泛化能力。但 RT-1 的局限在于:它仍是一个"机器人专用"模型,语言理解能力较弱,动作空间是离散的。

RT-2(Robotics Transformer 2) 在 2023 年横空出世,核心创新是将视觉-语言模型(VLM)微调为视觉-语言-动作模型。Google 团队直接拿预训练好的 PaLI-X(55B 参数)或 PaLM-E(12B 参数)VLM,把原本输出文本的"语言头"替换为"动作头",然后用少量机器人数据进行微调。

结果令人惊叹:RT-2 不仅在已知任务上表现更好,还涌现出对未见过的物体、背景、甚至抽象指令的泛化能力。例如,训练时从未见过"把可乐罐推倒"这个动作,但 RT-2 能根据"推倒可乐罐"的指令,结合对"推倒"这个动词的语义理解,自主推理出大致正确的动作序列。

3.2 里程碑:从 VLM 到 VLA 的范式转移

RT-2 的成功揭示了一个关键洞见:互联网规模的视觉-语言预训练已经为机器人控制打下了坚实的语义基础。VLM 中的"知识"可以零样本迁移到动作生成任务上。

自此,VLA 研究进入快车道。后续工作可大致分为两条技术路线:

  1. 基于 VLM 微调:继续以 RT-2 为代表,利用已有 VLM 的视觉-语言对齐能力,只需少量机器人数据即可适配;

  2. 端到端 VLA 预训练 :直接在包含视觉、语言、动作三元组的大规模机器人数据集上从头训练 VLA 模型,代表工作如 OctoOpenVLA

3.3 代表性 VLA 模型一览

模型 发布方 参数规模 核心特点
RT-2 Google DeepMind 12B~55B 首个从 VLM 微调成功的 VLA
Octo UC Berkeley / Stanford / CMU 27M~93M 开源、轻量,支持多机器人平台
OpenVLA Stanford / UC Berkeley 7B 基于 Llama 2 + DINOv2,完全开源
π0(Pi Zero) Physical Intelligence 3B 原生多模态架构,直接输出连续动作
RDT-1B 清华 / 上海期智研究院 1B 面向双臂操作,国内开源代表

其中,OpenVLAOcto 是目前社区最活跃的两个开源项目,适合开发者上手实践。

VLA 的技术原理深度剖析

4.1 架构设计

以典型的 VLA 架构(如 OpenVLA)为例,其组件主要包括:

复制代码
[视觉输入] → 视觉编码器(如 DINOv2/SigLIP)
[语言输入] → 大语言模型(如 Llama 2)
    ↓
多模态融合模块(Cross-Attention / 特征拼接)
    ↓
动作解码器(输出关节角度、末端位姿等)
  • 视觉编码器:负责将高维图像压缩为语义丰富的视觉特征(通常为 patch tokens 或全局向量)。常用骨干网络包括 DINOv2、CLIP、SigLIP。

  • 大语言模型 :负责理解自然语言指令,并输出高层次的"任务表征"。LLM 在这里不仅是语言理解器,还承担了规划与推理的角色。

  • 融合模块:将视觉特征与语言特征对齐,常见方式包括交叉注意力(Cross-Attention)或直接将视觉 token 插入 LLM 的输入序列(类似 Flamingo 架构)。

  • 动作解码器:通常是一个多层感知机(MLP)或一个小型 Transformer,将融合后的特征映射为具体动作。动作可以是离散的(如夹爪开/闭)或连续的(如 6D 位姿)。

4.2 动作表示

VLA 的输出动作有多种表示形式,直接影响模型泛化能力和训练难度:

表示方式 优点 缺点 典型应用
离散化动作 训练稳定,与 VLM 输出 token 天然兼容 精度受限,动作不连续 RT-2(早期版本)
连续动作回归 动作平滑,精度高 训练难度大,需特殊损失函数 π0、扩散策略
动作码本(Action Chunking) 平衡离散与连续,预测未来一段序列 计算量稍大 ACT、Octo

目前主流趋势是动作分块预测:模型一次性预测未来 N 步的动作序列(如 N=10),通过执行部分动作后重新规划来保证实时闭环控制。

4.3 数据来源与训练策略

VLA 模型的训练数据来源主要有三类:

  1. 互联网图文数据:用于预训练 VLM 基础能力(已由上游模型完成,如 Llama 2 的文本语料);

  2. 机器人操作数据集:如 Open X-Embodiment 数据集,包含来自 20+ 个机器人平台、100 万+ 条真实机器人轨迹,是目前最大的机器人学习数据集合;

  3. 仿真数据:在模拟器(如 MuJoCo、Isaac Sim)中生成大量合成数据,弥补真实数据的稀缺性。

训练策略通常分为两阶段:

  • 阶段一(对齐预训练):在大规模机器人数据集上训练 VLA 模型,学习视觉-语言-动作的联合分布;

  • 阶段二(下游微调):针对特定机器人平台和任务,用少量高质量真实数据进行微调(Fine-tuning)或 LoRA 适配

    快速上手:基于 OpenVLA 的实战演示

    环境要求:Ubuntu 20.04+,Python 3.10+,NVIDIA GPU(显存 ≥ 16GB 推荐)

    5.1 安装 OpenVLA

    OpenVLA 官方提供了便捷的 Pip 安装方式:

    bash 复制代码
    # 创建虚拟环境
    conda create -n openvla python=3.10 -y
    conda activate openvla
    
    # 安装 PyTorch(需根据 CUDA 版本调整)
    pip install torch==2.2.0 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
    
    # 安装 OpenVLA
    pip install openvla

    5.2 加载预训练模型并推理

    下面示例演示如何输入一张图像和一段语言指令,让 OpenVLA 输出 7 自由度的动作(包括夹爪状态):

    python 复制代码
    import torch
    from PIL import Image
    from openvla import OpenVLA, OpenVLAProcessor
    
    # 加载模型与处理器(使用 Hugging Face Hub)
    model = OpenVLA.from_pretrained("openvla/openvla-7b", torch_dtype=torch.bfloat16)
    model.to("cuda")
    processor = OpenVLAProcessor.from_pretrained("openvla/openvla-7b")
    
    # 准备输入:一张图像 + 自然语言指令
    image = Image.open("robot_view.jpg").convert("RGB")
    instruction = "pick up the red cube and place it into the bowl"
    
    # 处理输入
    inputs = processor(images=image, text=instruction, return_tensors="pt").to("cuda", torch.bfloat16)
    
    # 推理
    with torch.no_grad():
        outputs = model.generate(**inputs, max_new_tokens=50, do_sample=False)
    
    # 解析动作(输出为归一化的关节角度或末端位姿)
    actions = processor.decode_actions(outputs)
    print("预测动作序列:", actions.shape)  # 例如 (horizon, 7)

    小贴士:实际部署时需要配合机器人控制接口(如 ROS 或 PyBullet)将预测动作发送给执行器,这部分因硬件平台而异,本文不展开。

    5.3 在自己的数据集上微调

    OpenVLA 支持 LoRA 高效微调,只需几百条高质量轨迹即可适配新任务:

    python 复制代码
    from openvla import OpenVLAForActionPrediction
    from peft import LoraConfig, get_peft_model
    
    # 加载基础模型
    model = OpenVLAForActionPrediction.from_pretrained("openvla/openvla-7b")
    
    # 配置 LoRA
    lora_config = LoraConfig(
        r=16,
        lora_alpha=32,
        target_modules=["q_proj", "v_proj"],
        lora_dropout=0.05,
        bias="none",
        task_type="CAUSAL_LM"
    )
    
    model = get_peft_model(model, lora_config)
    model.print_trainable_parameters()  # 通常仅训练 1%~3% 的参数

    完整微调代码可参考 OpenVLA 官方 GitHub

相关推荐
AiTop1002 小时前
跨数据中心的创新:Moonshot AI与清华大学提出PrfaaS架构
人工智能·ai·架构
深藏功yu名2 小时前
大模型推理加速实战技术
人工智能·python·ai·pycharm
GISer_Jing2 小时前
AI时代前端开发者成长计划
前端·人工智能
Swilderrr2 小时前
学术研读报告:Mem0 面向生产级 AI 智能体的可扩展长期记忆架构
人工智能·学习
云烟成雨TD2 小时前
Spring AI Alibaba 1.x 系列【30】Nacos Skill Registry 的底层设计与实现
java·人工智能·spring
Zzj_tju2 小时前
大语言模型部署实战:从 Ollama、vLLM 到 SGLang,本地服务到底怎么搭?
人工智能·语言模型·自然语言处理·vllm
不会学习的小白O^O2 小时前
使用可识别的CNN进行茶花检测和拔出点识别
人工智能
byzy2 小时前
【论文笔记】Vehicle-to-Everything Cooperative Perception for Autonomous Driving
论文阅读·深度学习·计算机视觉·自动驾驶
CS创新实验室2 小时前
AI推理进化史:从GPT到推理模型,AI的“思考能力”如何突破?
人工智能·gpt