枢纽
机器人CALVIN simulation benchmark
上真机
实时
输入模态vision,language

RoboFlamingo:把「看图说话」的 VLM 改造成「看图干活」的机器人策略

Xinghang Li, Minghuan Liu 等(ByteDance Research + 清华 + SJTU + NUS)。arXiv:2311.01378v3, 2024-02。 foundation modelsVLA 线索language-conditioned

🧠 一句话心智模型:与其像 RT-2 那样把 VLM 「重炼」成一个昂贵的机器人策略(要在海量 web 数据上联合微调 + 私有模型),不如只复用 VLM 的「单帧看懂」能力,把「记住历史 + 输出动作」交给一个小 policy head。这就像把一位博学的画像师请到工厂——他不重学画图,只在旁边接个机械臂按他的理解动手。

🎯 为什么重要:VLM 进机器人有「三条路」,RoboFlamingo 选了最便宜的一条

大模型时代,所有人都在想:「VLM 既然懂图、懂话,能不能直接当机器人脑?」但 VLM 是为「静态图文对」训练的,机器人要的是「连续视频 → 控制信号」。论文 Fig.1 把当时的方案分成三类,并给出第四条路:

① From Scratch 从头训一个 VL 策略 RT-1 (35M) · 视觉/语言编码器  从头训 · 不借力 web 预训练 ❌ 浪费了 VLM 红利 ② LLM Planning LLM 当规划师 SayCan · LLM 输出文本计划 · 还要另配底层技能 · VLM 不直接控动作 ⚠️ 不解决低层控制 ③ Co-Fine-Tune RT-2 / PaLM-E(端到端) · VLM 直接吐动作 token · web 数据 + 机器人  联合微调 · 私有模型 + 海量算力 💰 普通人玩不起 ④ RoboFlamingo ✅ 开源 VLM + 小策略头 · OpenFlamingo(开源) · VLM 处理单帧理解 · policy head 记历史 · 单 GPU 服务器可训 ✅ 高性价比 + 开放
图 1(依论文 Fig.1 重绘):RoboFlamingo 的定位——「不重训 VLM,不依赖规划师,加个 policy head 就够了」。
核心矛盾:VLM 输出的是文本 token,机器人要的是7-DoF 连续动作。RT-2 的解法是「把动作也变 token,让 VLM 吐出来」——但需要私有 55B(PaLI-X)模型 + 海量协同微调。RoboFlamingo 的解法是解耦:VLM 只负责「单帧看懂」,动作回归交给独立的小 head,VLM 主体甚至冻结

💡 核心思想:VLM 当「眼睛 + 嘴」,policy head 当「手 + 记忆」

Flamingo 类 VLM 原本是为「单图 + 文本」设计的——给它一张图问「这是啥」,它答一句话。但机器人是时序的:要看连续视频,要记刚才做了啥。RoboFlamingo 的关键设计是「VLM 单帧化 + policy head 序列化」

第三视角图 I_t 夹爪视角图 G_t 语言指令 l ViT 视觉编码 + Perceiver Resampler N → N_r 个 token Feature Fusion Decoder × L 层 gated cross-attn(可训) frozen LLM 自注意 X_t = 视-语联合嵌入 Max-Pool token → 1 向量 Policy Head LSTM / GPT / MLP 吃 h_{t-1} 记历史 输出 7-DoF 动作 a^pose, a^gripper hidden state h_{t-1} 回环(仅 LSTM/GPT 版)
图 2(依论文 Fig.2 重绘):前向数据流。视觉 + 语言 → Flamingo backbone 出 VL 嵌入 → pooling → policy head(带记忆)→ 7-DoF 动作。蓝色路径每帧重算,绿色 head 极轻量。

关键巧思:「时序」不在 VLM 里做,而在 policy head 里做。理由是 Flamingo 预训练只见过单图-单句,强行让它处理历史帧反而更差(论文 §5.4.1 的 MLP w hist 实验验证了这点)。把时序交给小 LSTM,既保留 VLM 的「理解力」,又给它配了「记性」。

🛠️ 怎么做:四步把 VLM 改成机器人策略

步骤具体操作为什么这么设计
① 选开源底座OpenFlamingo(Alayrac et al. 2022 的开源复刻):ViT 视觉编码 + Perceiver Resampler + 冻结 LLM(MPT/GPT-Neox/LLaMA)+ gated cross-attn避免 RT-2 那种「私有 + 55B」的不可复现;OpenFlamingo 已在 web 图文上预训练好对齐能力
② 单帧前向每步把 $(I_t, G_t, l)$ 喂入 Flamingo,得到 VL 联合嵌入 $X_t^L$;只在 token 维 max-pool 成一个向量VLM 只见「一张图 + 一句话」,落在它预训练的舒适区
③ policy head 接管时序三种 head 对比:MLP(无历史)/ GPT / LSTM(默认);输入当前 pooled 向量 + 上一步隐状态 $h_{t-1}$把「记历史」这个 Flamingo 没学过的能力,下放到一个极小的可训模块
④ 部分参数微调只训 resampler + gated cross-attn + policy head;冻结 ViT 和 LLM 主体单 GPU 服务器可训;避免在小规模机器人数据上把 VLM 知识「灾难性遗忘」

训练目标极简:动作的 7-DoF 用 MSE 回归,夹爪开/关用 BCE 分类。

$$\ell = \sum_t \text{MSE}(a_t^{\text{pose}}, \hat a_t^{\text{pose}}) + \lambda_{\text{gripper}} \, \text{BCE}(a_t^{\text{gripper}}, \hat a_t^{\text{gripper}})$$
🔮 直觉:为什么「冻结 LLM 主体」反而能赢?
两个理由:(1) CALVIN 的语言指令只标注了全量数据的 1%(~24k 条轨迹),这点数据训不动 LLM 主体,只会把它原本的语言对齐能力「冲掉」;(2) 真正需要适配机器人的是「视觉如何对齐到语言」这一层——也就是 cross-attention,这部分可训就够。这正是 Flamingo 原文「gated cross-attn 是少样本适配关键」结论的延伸。

📊 关键结果:CALVIN 上「2×」SOTA,且开源可复现

评估在 CALVIN(长程序列基准,34 任务,5 步链式指令)上完成。指标是「连续完成 1/2/3/4/5 个任务的 Success Rate」与「平均链长 Avg Len」。

设置方法S1S2S3S4S5Avg Len
ABCD→D
(全数据训练)
MCIL0.3730.0270.0020.0000.0000.40
HULC(前 SOTA)0.8890.7330.5870.4750.3833.06
RT-10.8440.6170.4380.3230.2272.45
RoboFlamingo0.9640.8960.8240.7400.664.09
ABC→D
(视觉 zero-shot)
HULC0.4180.1650.0570.0190.0110.67
RT-10.5330.2220.0940.0380.0130.90
RoboFlamingo0.8240.6190.4660.3310.2352.48
维度结论(PDF 溯源)
整体提升ABCD→D 上 Avg Len 4.09 vs HULC 3.06(+34%),相对 RT-1 提升 ~1.7×;论文摘要称之为「2× performance improvement
视觉泛化ABC→D(未见环境)Avg Len 2.48 vs RT-1 0.90,约 2.7×——VLM 预训练带来的视觉理解红利
语言泛化用 GPT-4 给每任务生成 50 条同义指令做评测;freeze embedding 后 Avg Len 2.12(Enriched D)
数据效率只用 10% 语言标注数据时,M-9B 的 Avg Len 0.83 远超 M-3B 的 0.05——模型越大越数据高效
部署灵活性支持 open-loop:一次推理吐「stacked actions」省去逐帧 VLM 推理,但需用 jump-step 数据重训
局限论文明确说「未上真机」,仅在 CALVIN 仿真验证
关键洞察:在 5 步链式任务上,越往后越难(初始状态依赖前序结果)。RoboFlamingo 在 S5(第 5 步连续成功)的 0.66 vs RT-1 的 0.227,几乎 3×——说明 VLM 的视语对齐能力对「长程累积误差」特别有效。

🌐 在领域中的位置

RT-1(从头训 VLA) SayCan / PaLM-E(LLM 当规划师) RT-2(VLM 端到端联合微调,55B 私有) RoboFlamingo(开源 VLM + 小 head)⭐ OpenVLA / TinyVLA(开源 VLA 进一步轻量化)

RoboFlamingo 是「开源界对 RT-2 的回应」——证明「VLM 进机器人」不必依赖 55B 私有模型和海量 co-fine-tune,解耦 + 部分微调就能在 CALVIN 上刷新 SOTA。它的「policy head 解时序」思路,被后续 TinyVLA 等「轻量 VLA」工作继承,推动了开源 VLA 生态。

❓ 常见误区

RoboFlamingo 是 RT-2 的复现吗?

不是。RT-2 把动作变成 token 让 VLM 「吐」出来,是端到端。RoboFlamingo 明确反对这种「重训 VLM」的路线——VLM 只输出 VL 嵌入,动作由独立的 policy head 回归。论文 Fig.1 把两者画成不同范式。

它做了真机实验吗?

没做。论文 §6 明确说「Due to the lack of real-robot data, this paper does not deploy on real-world robotics」。所有结果都在 CALVIN 仿真上。作者把真机留给「未来工作」。

VLM 主体都冻结了,怎么还能学到机器人策略?

关键在 gated cross-attention 这一层是可训的——它正是 Flamingo 论文里「适配下游任务」的开关。再加上 policy head 完全可训,加起来约 1B 可训参数(占总参数三分之一),对机器人数据来说已经足够。

既然 policy head 这么小,为什么不直接套在 ResNet 上?

论文 §5.4.2 做了「No VL Pre-train」消融:去掉 OpenFlamingo 的 cross-attn/resampler 预训练权重后性能大幅下降。说明预训练的视语对齐能力才是红利,policy head 只是个轻量适配器。