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

CLIPort:把「语义大脑」和「空间小脑」缝在一起

Mohit Shridhar, Lucas Manuelli, Dieter Fox(University of Washington + NVIDIA)。CoRL 2021 / arXiv:2109.12098。 项目页 · 开源 · imitationlanguage-conditioned

🧠 一句话心智模型:CLIP 像「大脑」——网上看了几亿张图+文字,认识「什么是咖啡豆、什么是粉色」,但不知道该抓哪;Transporter 像「小脑」——能精准地把某个像素拎起来放到另一个像素,但不认字、也不懂颜色。CLIPort 把两者缝成一个双流网络:CLIP 负责「听懂指令、找到是哪个物体(what)」,Transporter 负责「精确地抓哪儿、放哪儿(where)」。

🎯 为什么重要:精准操作和语义泛化,鱼和熊掌

2021 年机器人操作分两派,各管一头:

两难
· 端到端 Transporter——能精准抓放,但没语义。换个目标颜色就得重训;让它「pack the pink block」,它根本不懂 pink 是啥。
· CLIP 等视觉-语言大模型——语义强、能泛化到未见类别,但没空间精度。问它「抓哪儿」它答不出像素坐标,更别提厘米级放置。

论文标题就是答案——「What and Where Pathways」,借用了认知心理学的双流假说(ventral 腹侧通路认「是什么」,dorsal 背侧通路认「在哪」)。作者把这个脑科学类比直接搬进网络架构。

CLIP(语义 / what) 网上一亿对图文预训练 ✅ 认得 pink / coffee bean ✅ 听懂语言指令 ✅ 泛化到未见类别 ❌ 不知道抓哪个像素 ❌ 没深度信息(RGB only) Transporter(空间 / where) 从零训练的 ResNet ✅ 像素级 pick-place 精度 ✅ 用 RGB-D(含深度) ✅ 平移/旋转等变 ❌ 不认字、不懂颜色 ❌ 换目标就得重训 CLIPort(双流融合) 语义流注入语言 + 空间流注入深度 ✅ 精度(where) ✅ 泛化(what) ✅ 语言条件 两个都要 ✅
图 1:CLIPort = CLIP(语义)+ Transporter(空间)。两者各自恰好补对方的短板。

💡 核心思想:动作 = pick + place,两个 affordance 图

CLIPort 把所有桌面任务统一成「pick 一个位置 → place 到另一个位置」的原语(无论是 packing、stacking、folding、sweeping)。关键在于它不预测物体,而是预测动作——这就是 Transporter 的「action-centric」思想:绕开目标检测/分割,直接对每个像素问「在这儿 pick 合理吗?」

RGB-D top-down heightmap 📜 "pack all the blue blocks in the box" 语义流 (Ventral) 冻结 CLIP ResNet50 + 句编码器 空间流 (Dorsal) 从零训练 RGB-D ResNet(hourglass) 语言 1024 维 → 逐元素乘注入 横向融合 1×1 卷积 + skip + 加法 / concat Q_pick ∈ ℝ^{H×W} 每像素 pick 得分 → argmax = 抓哪儿 Q_place:query ⊗ key 在 T_pick 裁 c×c patch → 与全图 key 互相关 → 36 个旋转里挑最佳放哪儿 一个动作 = (T_pick, T_place) ∈ SE(2) 训练:用专家 demo 的 one-hot 像素标签做交叉熵 c = 64(patch 大小), k = 36(离散旋转数), d = 3(特征通道) 单 GPU 训 2 天(单任务);多任务 6 GPU 天
图 2:CLIPort 的双流架构(对应论文 Fig.2)。语义流(冻结 CLIP)+ 空间流(训练 Transporter)横向融合,输出 pick / place 两张 affordance 图。

两个工程细节非常关键:

  • 语言怎么注入? 把 CLIP 句编码(1024 维)下采样到通道维,tile(铺成 H×W 大小),再与解码器特征逐元素乘(Hadamard 积)。这复用了 CLIP 训练时的「图文点积对齐」性质,同时保持空间维度不丢。
  • 横向连接(lateral):空间流在每个解码层把特征 concat 进语义流,再用 1×1 卷降维。这让语义流不丢失 RGB-D 的几何细节。

🛠️ 实验设计:10 仿真任务 + 9 真机任务 + 见/未见切分

维度设置(PDF 溯源)
仿真平台Ravens(PyBullet)+ UR5e + 吸夹;3 个相机 640×480 重建 top-down RGB-D heightmap
10 个仿真任务packing-box-pairs、packing-seen/unseen-google-objects(seq / group)、separating-piles、stack-block-pyramid、towers-of-hanoi、align-rope、assembling-kits、put-blocks-in-bowl 等(Fig.1)
「seen vs unseen」切分颜色:seen={yellow,brown,gray,cyan} / unseen={orange,purple,pink,white},共用 {red,green,blue};物体:56 个 Google Scanned Objects 拆 37 seen + 19 unseen
训练规模n ∈ {1, 10, 100, 1000} demo;单任务 200K iter(2 GPU 天),多任务 600K iter(6 GPU 天);batch size 1;k=36 离散旋转
真机Franka Panda,9 个真实任务,仅 179 个 image-action 对训练一个多任务模型
评估指标Ravens 0–100 分(含部分分数,如装对 3/5 → 60 分);每配置 100 次评估;真机每任务 5–10 次测试

对照基线(剥离子实验)

变体结构意义
Transporter-only只用空间流(RGB-D),不给语言测「没有语义能蒙到多少」
CLIP-only只用语义流(RGB + 语言),无深度测「没有空间精度能做到多少」
RN50-BERTResNet50 + BERT(替代 CLIP)验证 CLIP 预训练对齐的必要性
CLIPort (single)双流,每个任务训一个主模型
CLIPort (multi)双流,10 个任务训一个测多任务共享
CLIPort (multi-attr)多任务模型,在其他任务的 seen+unseen 上训,只把目标任务的 unseen 留作泛化测试测「跨任务属性迁移」(如在其他任务见过 pink,能否迁移到 packing pink)

📊 关键结果(PDF Table 1 / Table 2 / Fig.3)

对比饱和点(seen 平均,n=1000)含义
Transporter-only~50%不用语言,只能蒙训练时最常见的动作
CLIP-only~76%有语义但无深度/空间精度,「最后一公里」放不准
CLIPort (single)>90%双流合起来才能跨过 90% 门槛
🔮 直觉:为什么 CLIP-only 卡在 76%?
CLIP 是在 RGB 图文对上训的,没深度,也没厘米级空间感。它能告诉你「抓那个蓝色方块」,但放的时候差几个像素就崩——尤其是 stacking、assembling-kits 这种要精度的任务。Transporter 那条 RGB-D + 等变卷积的流恰好补这一刀。

多任务 vs 单任务

CLIPort(multi) 在 Table 1 共 72 个评估配置里,有 41/72 = 57% 的配置胜过单任务模型——共享数据 + 语言条件让「pink 在一个任务里见过,迁移到另一个任务」成为可能。

跨任务属性迁移(CLIPort multi-attr)

任务CLIPort(multi)CLIPort(multi-attr)提升
put-blocks-in-bowls-unseen-colors (n=1000)45.875.7+29.9
towers-of-hanoi-seq-unseen-colors (n=1000)68.796.9+28.2
packing-box-pairs-unseen-colors (n=1000)71.480.3+8.9

真机(Table 2,179 demo 训一个多任务模型)

任务训练样本测试次数成功率
Stack Blocks5 (13)1070.0%
Put Blocks in Bowl5 (10)1065.0%
Pack Objects10 (31)1060.0%
Move Rook4 (29)1070.0%
Fold Cloth9 (9)1057.0%
Read Text2 (26)1055.0%
Loop Rope4 (12)1060.0%
Sweep Beans5 (23)560.6%
Pick Cherries4 (26)575.0%
关键洞察:CLIPort 的胜利不是「某个 trick 调得好」,而是把互联网预训练的语义先验,免费嫁接到机器人操作上。179 个真机 demo 就能撑起 9 个任务——这在 2021 年是惊人的样本效率。后续 RT-1/RT-2 等工作把这个思路推到更大规模。

🌐 在领域中的位置

目标检测 + pose 估计(需类别级数据) Transporter(动作中心,但无语义) CLIPort(CLIP 语义 + Transporter 空间)⭐ RT-1 / RT-2(端到端 VLA) VoxPosser / π0(大模型给空间 affordance)

CLIPort 是 「互联网大模型先验」首次干净地注入机器人操作的样板——证明了「冻结 CLIP + 小机器人头」这条路 work。它和 PerAct、RVT 等「预训练感知 + 操作头」一脉相承,也间接启发了后来 VLA 把整条管线压进一个 transformer 的思路。

❓ 常见误区

CLIPort 训练了 CLIP 吗?

CLIP 完全冻结,只用它的预训练权重做特征提取(视觉 ResNet50 和句编码器都不更新)。可训练的是解码器 + Transporter 的空间流 + 融合层

为什么不用 CLIP 直接输出动作?

因为 CLIP 没见过深度、没经过动作监督。它的图像特征是 RGB 上的语义,不是 SE(2) 等变的——同一个物体平移一下,特征就变。Transporter 的 FCN 通过卷积天然等变,才能精准对应到像素坐标。论文 §4.2 的 CLIP-only 基线(76% 饱和)就是直接证据。

「action-centric」具体什么意思?

Transporter 不检测「物体」,而是直接检测「动作」——对每个像素问「在这 pick 合理吗」。这绕开了实例分割、pose 估计这些中间表示,对颗粒物(咖啡豆堆)、可变形物(绳子、布)这类没清晰物体边界的场景特别有用。

它和 BC 行为克隆什么关系?

CLIPort 就是模仿学习——从专家 demo 学。它的贡献不是「新的模仿学习算法」,而是新的网络架构(双流)+ 新的先验来源(CLIP),让 BC 在语言条件下能泛化到未见语义。

局限?

(1) 只支持 pick-and-place 原语,非桌面 / 非 top-down 场景不适用;(2) 长程任务(如 align-rope)多任务训练时覆盖率不足,反而比单任务差;(3) 真机性能仍受 demo 数量限制——论文估计要 50–100 demo 才能稳;(4) oracle 终止条件,实际部署还得另接终止判定。