VLA/VLM 视觉语言模型
人形机器人的”大脑”正在经历从规则编程到大模型的根本性变革。VLA(Vision-Language-Action)和 VLM(Vision-Language Model)模型让机器人能够理解自然语言指令、感知视觉环境、并输出精确动作。本文深入解析具身智能时代的核心技术。
一、从传统控制到端到端学习
1.1 传统机器人控制架构
传统控制架构(模块化)
┌─────────────────────────────────────┐
│ 自然语言指令 │
│ "把桌子上的红色积木放到蓝色盒子里" │
└──────────────┬──────────────────────┘
▼
┌─────────────────────────────────────┐
│ 语言理解模块(NLP) │
│ 解析:物体 (红色积木)、目标 (蓝色盒子) │
└──────────────┬──────────────────────┘
▼
┌─────────────────────────────────────┐
│ 视觉感知模块(CV) │
│ 检测:红色积木位置、蓝色盒子位置 │
└──────────────┬──────────────────────┘
▼
┌─────────────────────────────────────┐
│ 任务规划模块 │
│ 规划:抓取→移动→放置 │
└──────────────┬──────────────────────┘
▼
┌─────────────────────────────────────┐
│ 运动控制模块 │
│ 计算:关节角度、轨迹、力控 │
└──────────────┬──────────────────────┘
▼
┌─────────────────────────────────────┐
│ 执行器 │
└─────────────────────────────────────┘
问题:
- 误差累积:每个模块的错误会传递到下一级
- 泛化能力差:新场景需要重新编程
- 开发成本高:需要多领域专家协作
1.2 端到端学习架构
端到端架构(VLA 模型)
┌─────────────────────────────────────┐
│ 多模态输入 │
│ - 图像/视频(摄像头) │
│ - 语言指令(麦克风) │
│ - 本体感知(关节角度、力传感器) │
└──────────────┬──────────────────────┘
▼
┌─────────────────────────────────────┐
│ VLA 大模型 │
│ - Vision Encoder(视觉编码) │
│ - Language Encoder(语言编码) │
│ - Action Head(动作输出) │
└──────────────┬──────────────────────┘
▼
┌─────────────────────────────────────┐
│ 动作输出 │
│ - 关节扭矩/位置 │
│ - 末端执行器控制 │
└─────────────────────────────────────┘
优势:
- 端到端优化:整体损失函数,减少误差累积
- 泛化能力强:零样本/少样本适应新场景
- 开发简化:统一模型,减少模块集成
二、VLM:视觉语言模型基础
2.1 VLM 核心架构
graph LR
subgraph 输入
A[图像] --> C[Visual Encoder]
B[文本] --> D[Language Encoder]
end
subgraph 融合
C --> E[Projection Layer]
D --> E
E --> F[LLM Backbone]
end
subgraph 输出
F --> G[文本生成]
F --> H[视觉问答]
F --> I[图像描述]
end
2.2 代表性 VLM 模型
| 模型 | 机构 | 发布时间 | 特点 |
|---|---|---|---|
| CLIP | OpenAI | 2021.01 | 对比学习,图像 - 文本对齐 |
| Flamingo | DeepMind | 2022.04 | 少样本视觉问答 |
| LLaVA | UW-Madison | 2023.04 | 开源,指令跟随 |
| GPT-4V | OpenAI | 2023.09 | 商业最强,多模态理解 |
| Gemini | 2023.12 | 原生多模态 | |
| Qwen-VL | 阿里 | 2023.08 | 中文优化 |
2.3 CLIP:开山之作
核心思想:对比学习,将图像和文本映射到同一向量空间
# CLIP 简化架构
class CLIP(nn.Module):
def __init__(self):
self.image_encoder = ViT() # Vision Transformer
self.text_encoder = Transformer()
self.projection = nn.Linear()
def forward(self, image, text):
# 编码
image_features = self.image_encoder(image)
text_features = self.text_encoder(text)
# 投影到同一空间
image_embeds = self.projection(image_features)
text_embeds = self.projection(text_features)
# 归一化
image_embeds = F.normalize(image_embeds)
text_embeds = F.normalize(text_embeds)
# 计算相似度
similarity = image_embeds @ text_embeds.T
return similarity
训练方式:
- 输入:(图像,文本) 对
- 损失:对比损失,匹配的对相似度高,不匹配的对相似度低
- 数据:4 亿图像 - 文本对(网络爬取)
2.4 LLaVA:开源标杆
架构:
LLaVA 架构
├── Visual Encoder:CLIP ViT-L/14
├── Projection:2 层 MLP
└── Language Model:Vicuna(Llama 微调)
训练两阶段:
- 预训练:冻结视觉和语言模型,训练投影层
- 指令微调:使用视觉指令数据微调
数据:
- LLaVA-Instruct-150K:15 万视觉指令数据
- 涵盖对话、推理、OCR、图表理解等
三、VLA:具身智能的突破
3.1 VLA 核心定义
VLA(Vision-Language-Action) = VLM + Action Head
VLA 模型公式
输出 = VLA(视觉输入,语言指令,本体状态)
其中:
- 视觉输入:RGB 图像、深度图、点云
- 语言指令:自然语言任务描述
- 本体状态:关节角度、速度、力传感器
- 输出:关节扭矩、末端位置、抓取指令
3.2 RT 系列:Google 的探索
RT-1(2022)
架构:
RT-1 架构
├── EfficientNet-B3:视觉编码
├── 语言嵌入:SentencePiece
├── Transformer:决策
└── Action Token:离散化动作
训练数据:
- 130 万条机器人操作轨迹
- 388 个任务,涵盖办公室、厨房场景
- 13 台机器人,17 个月数据收集
能力:
- 零样本泛化:新物体、新位置
- 语言理解:“把可乐拿给我”vs”把最近的饮料拿给我”
- 长序列任务:多步骤操作
RT-2(2023)
核心进步:
- 基础模型:基于 PaLI(视觉语言)+ PaLM(语言)
- 网络规模训练:互联网规模数据 + 机器人数据
- 涌现能力:推理、数字理解、人类意图识别
RT-2 训练数据构成
├── 互联网数据:95%
│ ├── 图像 - 文本对
│ └── 纯文本
└── 机器人数据:5%
├── 操作轨迹
└── 视觉 - 语言 - 动作三元组
涌现能力示例:
- 推理:“把会融化东西放进冰箱”→ 理解冰激凌需要冷藏
- 数字:“把饮料分给 3 个人”→ 平均分配
- 人类意图:“我渴了”→ 主动递水
3.3 OpenVLA:开源 VLA
背景:
- 2024 年发布,斯坦福主导
- 基于 Llama 2 + DINOv2
- 开源模型权重和训练代码
架构:
OpenVLA 架构
├── Visual Encoder:DINOv2 ViT-L
├── Language Model:Llama 2 7B
├── Projection:2 层 MLP
└── Action Head:离散化动作 token
训练数据:
- Open X-Embodiment:22 个数据集,50 万轨迹
- 涵盖多种机器人、多种任务
性能:
- 在 12 个基准测试中超越 RT-1
- 零样本迁移到新环境
- 推理速度:10Hz(单 A100)
3.4 Tesla VLA:端到端实践
Tesla 技术路线:
Tesla FSD → Optimus VLA 技术迁移
├── Occupancy Network:3D 环境建模
├── 端到端神经网络:视频→动作
├── 视频演示学习:人类示范→模仿
└── 强化学习:自我改进
关键特点:
- 纯视觉:8 个摄像头,无激光雷达
- 时序建模:视频输入,理解动态
- 大规模数据:FSD 数百万辆车数据迁移
Gen-3 演示能力:
- 自主分类电池
- 折叠衬衫
- 使用工具(螺丝刀)
- 多人协作任务
四、VLA 训练方法
4.1 数据收集策略
机器人数据收集方法
├── 遥操作(Teleoperation)
│ ├── VR 设备控制
│ ├── 主从机械臂
│ └── 优点:高质量,缺点:成本高
├── 人类演示(Human Demonstration)
│ ├── 动作捕捉
│ ├── 视频录制
│ └── 优点:自然,缺点:需要映射到机器人
├── 程序生成(Programmatic)
│ ├── 规则生成轨迹
│ └── 优点:大量,缺点:多样性差
└── 自监督学习(Self-supervised)
├── 机器人自主探索
└── 优点:无限数据,缺点:效率低
4.2 动作表示
离散化 vs 连续:
| 方式 | 优点 | 缺点 | 代表 |
|---|---|---|---|
| 离散 Token | 可用 CrossEntropy,训练稳定 | 精度受限,需要精细量化 | RT-2、OpenVLA |
| 连续回归 | 精度高,自然 | 训练不稳定,需要特殊损失 | ACT、Diffusion |
离散化示例:
# 动作离散化
def discretize_action(action, bins=256):
"""
action: [-1, 1] 连续值
bins: 离散化桶数
"""
# 归一化到 [0, bins-1]
discrete = ((action + 1) / 2) * (bins - 1)
return discrete.round().long()
# 输出 7 维动作:[x, y, z, roll, pitch, yaw, gripper]
# 每个维度 256 个 token,总 action space = 256^7
4.3 训练技巧
行为克隆(Behavior Cloning)
# BC 损失函数
def bc_loss(predicted_action, expert_action):
# 交叉熵损失(离散动作)
loss = CrossEntropyLoss(predicted_action, expert_action)
return loss
# 或 MSE 损失(连续动作)
def bc_loss_continuous(pred, target):
loss = F.mse_loss(pred, target)
return loss
问题:
- 分布偏移:训练数据和测试数据分布不同
- 误差累积:一步错,步步错
扩散策略(Diffusion Policy)
核心思想:用扩散模型生成动作序列
扩散策略流程
┌─────────────────────────────────────┐
│ 噪声动作序列 │
│ a_T ~ N(0, I) │
└──────────────┬──────────────────────┘
▼
┌─────────────────────────────────────┐
│ 去噪网络 │
│ a_{t-1} = denoise(a_t, obs, t) │
└──────────────┬──────────────────────┘
▼
┌─────────────────────────────────────┐
│ 重复去噪 T 步 │
└──────────────┬──────────────────────┘
▼
┌─────────────────────────────────────┐
│ 干净动作序列 │
│ a_0 │
└─────────────────────────────────────┘
优势:
- 多模态输出:可以生成多种可行方案
- 长序列:生成未来 8-16 步动作
- 平滑性:时间一致性更好
强化学习微调
RL 微调流程
├── 阶段 1:行为克隆预训练
│ └── 学习专家演示
├── 阶段 2:RL 微调
│ ├── 环境交互
│ ├── 奖励信号
│ └── PPO/SAC 算法优化
└── 阶段 3:持续学习
└── 在线更新策略
奖励设计:
- 任务成功:+1(完成目标)
- 稠密奖励:距离减少、对齐程度
- 安全惩罚:碰撞、超限
五、Sim2Real:仿真到现实
5.1 为什么需要仿真
实机训练 vs 仿真训练
实机训练问题:
├── 硬件损耗:机器人寿命有限
├── 时间成本:部署、调试耗时
├── 安全风险:可能损坏设备或伤人
└── 数据效率:无法并行
仿真训练优势:
├── 无限试错:无硬件损耗
├── 并行加速:同时运行数千环境
├── 安全:虚拟环境无风险
└── 标注自动:无需人工标注
5.2 主流仿真平台
| 平台 | 机构 | 特点 | 适用场景 |
|---|---|---|---|
| Isaac Sim | NVIDIA | 物理逼真、GPU 加速 | 工业、人形 |
| MuJoCo | 物理引擎精确 | 研究、控制 | |
| PyBullet | CMU | 开源、易用 | 教育、研究 |
| Habitat | Meta | 室内场景 | 导航、交互 |
| SAPIEN | 清华 | 语义丰富 | 操作、交互 |
5.3 Domain Randomization
核心思想:在仿真中随机化参数,提高泛化能力
# Domain Randomization 示例
def randomize_environment():
return {
'lighting': random_color(), # 随机光照
'texture': random_texture(), # 随机纹理
'friction': random.uniform(0.5, 1.5), # 随机摩擦
'mass': random.uniform(0.8, 1.2), # 随机质量
'camera_pos': random_offset(), # 随机相机位置
'distractors': random_objects(), # 随机干扰物
}
效果:
- 仿真训练的模型可以直接部署到现实
- 无需现实数据微调(Zero-shot Sim2Real)
5.4 Sim2Real Gap 缩小技术
| 技术 | 原理 | 效果 |
|---|---|---|
| Domain Randomization | 仿真参数随机化 | 基础方法 |
| Domain Adaptation | 对抗训练对齐分布 | 提升 20-30% |
| Reality Augmentation | 现实数据增强仿真 | 需要少量实机数据 |
| System Identification | 辨识真实系统参数 | 物理一致性更好 |
六、应用场景
6.1 工业操作
任务类型:
- 零件抓取与放置
- 装配操作(螺丝拧紧、卡扣安装)
- 质量检测(视觉检查)
案例:Figure 在 BMW 工厂
Figure 01 任务
├── 零件搬运:从料箱到传送带
├── 质量检测:视觉检查零件缺陷
└── 包装:将成品放入包装盒
性能指标:
├── 成功率:95%+
├── 节拍时间:30 秒/件
└── 连续工作:4 小时
6.2 家庭服务
任务类型:
- 物品整理(衣物折叠、玩具收纳)
- 清洁(桌面擦拭、地面清扫)
- 烹饪辅助(食材处理、餐具摆放)
挑战:
- 物体多样性:家庭物品种类繁多
- 非结构化环境:布局不固定
- 安全要求:与人近距离接触
6.3 物流仓储
任务类型:
- 包裹分拣
- 货架整理
- 订单拣选
案例:Agility Digit 在 Amazon
Digit 工作流程
├── 接收订单:从 WMS 系统
├── 导航:移动到目标货架
├── 识别:视觉定位包裹
├── 抓取:吸取或夹取
├── 搬运:移动到包装区
└── 放置:放入对应容器
6.4 医疗护理
任务类型:
- 药品配送
- 器械传递
- 康复辅助
特殊要求:
- 卫生标准:无菌操作
- 力控精度:与人接触安全
- 认证:医疗器械认证
七、技术挑战与未来
7.1 当前局限
VLA 模型局限性
├── 数据效率
│ └── 需要数万 - 数十万轨迹,收集成本高
├── 长程任务
│ └── 超过 10 步的任务成功率显著下降
├── 精细操作
│ └── 穿针、倒水等精细动作仍困难
├── 泛化能力
│ └── 跨场景迁移仍需微调
├── 安全性
│ └── 黑盒模型,行为不可预测
└── 实时性
└── 大模型推理延迟 100ms+
7.2 研究方向
世界模型(World Model)
核心思想:学习环境的动力学模型,预测未来状态
世界模型架构
├── 编码器:obs → latent
├── 动力学模型:latent_t + action → latent_{t+1}
├── 解码器:latent → obs
└── 规划器:在 latent 空间搜索最优动作
优势:
- 样本效率:在模型中”想象”,减少实机试错
- 长程规划:预测多步后的结果
- 反事实推理:如果做 X 会怎样
多机器人学习
思路:多个机器人共享数据,加速学习
多机器人学习架构
├── 机器人 1:收集数据 → 云端
├── 机器人 2:收集数据 → 云端
├── 机器人 3:收集数据 → 云端
├── 云端:聚合数据 → 训练全局模型
└── 下发:更新所有机器人模型
挑战:
- 异构性:不同机器人硬件不同
- 通信:带宽限制
- 隐私:数据所有权
人机协作
方向:
- 意图理解:预测人类下一步动作
- 安全交互:力控、避障
- 教学学习:人类示范→机器人学习
7.3 技术路线图
timeline
title VLA 技术演进
section 2023-2024
BC 预训练 : 行为克隆为主
单任务 : 单一场景任务
section 2025-2026
RL 微调 : 强化学习优化
多任务 : 跨场景泛化
section 2027-2030
世界模型 : 预测与规划
通用 AI : 类人推理能力
八、实践建议
8.1 入门路径
VLA 学习路线
├── 阶段 1:基础
│ ├── 深度学习基础(PyTorch)
│ ├── Transformer 架构
│ └── VLM 原理(CLIP、LLaVA)
├── 阶段 2:进阶
│ ├── 强化学习基础
│ ├── 机器人学基础(运动学、控制)
│ └── 仿真工具(Isaac、MuJoCo)
├── 阶段 3:实战
│ ├── OpenVLA 复现
│ ├── 实机部署
│ └── 参与开源项目
8.2 开源资源
| 资源 | 链接 | 说明 |
|---|---|---|
| OpenVLA | GitHub | 开源 VLA 模型 |
| LeRobot | HuggingFace | 机器人学习库 |
| Isaac Sim | NVIDIA | 仿真平台(免费学术) |
| Bridge Data | UC Berkeley | 公开数据集 |
| Open X-Embodiment | 大规模机器人数据 |
8.3 硬件建议
入门配置:
- GPU:RTX 4090(24GB 显存)
- 机器人:Dynamixel 机械臂(¥5000)
- 相机:Intel RealSense D435(¥1500)
研究配置:
- GPU:A100/H100(云端)
- 机器人:Franka Emika(¥10 万+)
- 动作捕捉:OptiTrack(¥20 万+)
九、总结
9.1 核心要点
- VLA 是具身智能核心技术:让机器人理解语言、感知视觉、执行动作
- 端到端是趋势:从模块化到统一大模型
- 数据是关键:大规模、高质量机器人数据
- Sim2Real 是必经之路:仿真训练 + 现实部署
9.2 技术成熟度
| 技术 | 成熟度 | 预计商用时间 |
|---|---|---|
| VLM 视觉理解 | ⭐⭐⭐⭐⭐ | 已商用 |
| VLA 基础模型 | ⭐⭐⭐⭐ | 1-2 年 |
| 长程任务规划 | ⭐⭐⭐ | 2-3 年 |
| 世界模型 | ⭐⭐ | 3-5 年 |
| 通用具身智能 | ⭐ | 5-10 年 |
9.3 未来展望
VLA 模型正在经历GPT-3 时刻:
- 2023-2024:技术验证,小规模应用
- 2025-2026:商业化加速,场景落地
- 2027+:通用具身智能,进入家庭
VLA 是人形机器人的”iPhone 时刻”。就像大语言模型改变了人机交互,VLA 模型将改变机器人与物理世界的交互方式。未来 5 年,谁能掌握 VLA 核心技术,谁就能在具身智能时代占据先机。
参考资料:
- RT-1/RT-2论文(Google)
- OpenVLA 论文(Stanford)
- Tesla AI Day 2023
- LLaVA 论文(UW-Madison)