一句话定位
RVT 把点云重渲染成围绕机器人工作空间的多个虚拟正交视角图像,喂给一个多视角 Transformer 联合处理,逐视角预测 heatmap 反投影出 3D keypose 动作——用这条”渲染再多视角”的路线绕开体素化的立方级算力开销:18 个 RLBench 任务/249 变体上比 PerAct 高 26% 相对成功率(62.9% vs 49.4%),训练时间从 16 天砍到 1 天(36 倍),推理速度 11.6 fps 对 4.9 fps(2.3 倍)。
背景与定位
C2F-ARM 与 PerAct 代表了”体素化 3D”这条范式:把点云离散成多分辨率体素网格、用 3D 卷积或 Perceiver Transformer 处理,3D 推理能力强,但体素数量随分辨率立方增长,训练极慢(PerAct 在 8×V100 上训练 18 个任务需 16 天/3072 GPU-hours)。另一条范式是纯视角式方法(Image-BC、RT-1),直接吃传感器 RGB(-D) 图像,训练快但 3D 推理能力弱,在 RLBench 这类需要精确 3D 定位的任务上成功率不到 2%。
RVT 的核心思路是把两条路线的优点拼在一起:不直接喂传感器相机图像,而是先用传感器 RGB-D 重建点云,再用 PyTorch3D 把点云重渲染成围绕机器人底座、彼此解耦于物理相机的虚拟正交视角图像,交给多视角 Transformer 联合处理。这种”渲染解耦”带来几个好处——可以在任意有利位置(如正上方俯视)重渲染而不受真实相机布置约束;可以用正交投影(保物体尺寸不受距离影响)而非传感器天然的透视投影;可以在渲染前对点云做 3D 旋转/平移增强;即使只有单个物理相机也能合成多视角。同一时期(2023-06)解决同一问题的另一条路线是 Act3D 的”幽灵点”(ghost point)连续 3D 特征场检测——两者都放弃了体素网格,但 Act3D 走的是采样候选点做相对 3D 注意力打分,RVT 走的是渲染视角图像做 2D 风格的 heatmap 检测。基于 NeRF 优化的 MIRA 也用新视角图像表示 3D 场景,但需要为每个场景在线优化神经辐射场,推理慢得多。RVT 后续被同团队的 RVT-2(RSS 2024,同一 GitHub 仓库承载)用自定义 point-renderer 替换 PyTorch3D 并进一步提升精度。
模型架构
渲染管线:给定一个或多个 RGB-D 传感器相机拍到的图像,先重建场景点云;点云再从锚定在机器人底座坐标系的一组虚拟视角重渲染(用 PyTorch3D)。每个视角渲染 3 张图共 7 个通道:RGB(3 通道)+ 深度(1 通道)+ 世界坐标系下的 (x,y,z) 坐标(3 通道,用于跨视角对应点匹配,帮网络免于自己学习跨视角对应关系)。消融确定的最佳配置是围绕立方体的 5 个视角(Fig. 3(a)),虚拟图像分辨率 220×220;3 视角(front, top, left)次优,单视角(仅 front,第三维靠 TransporterNet 式偏移回归)明显更差。渲染统一用正交投影(比透视投影平均高 22.7 个绝对点)。
联合 Transformer:虚拟图像切成 20×20 patch,过 MLP 得到图像 token(ViT 风格);语言用预训练 CLIP(ResNet-50 变体) 编码器,每个词一个 token;夹爪开合状态过 MLP 后拼接进图像 token;所有 token 加位置编码。共 8 层自注意力:前 4 层每个图像 token 只允许在同一张图像内部做注意力(先各自理解单视角),之后拼接所有视角 token 与语言 token,后 4 层做跨视角+跨语言的联合注意力。
动作头:8 维动作 = 6-DoF 末端执行器目标位姿(3 平移 + 3 旋转)+ 1 维夹爪开合 + 1 维运动规划器避障标志位。平移:每个视角出一张 heatmap(真值为 GT 3D 位置 2D 投影处的截断高斯分布,交叉熵监督),跨视角反投影到覆盖工作空间的离散 3D 点集合上打分,取得分最高点为平移预测。旋转:跟随 PerAct 用欧拉角、每个轴离散成 5° 一格的 bin 分类。旋转/夹爪/避障标志位靠全局特征 G 预测——G 由”逐视角特征按平移 heatmap 加权求和”与”逐视角特征最大池化”两部分拼接而成。
配置数字:8 层自注意力(4 单视角内 + 4 联合);patch 20×20;虚拟图像 7 通道、220×220 分辨率;5 个虚拟视角;语言 token 用 CLIP ResNet-50;参数量论文未披露。仅支持单臂 Franka Panda 平行爪,无跨本体(cross-embodiment)设计。
数据
仿真(RLBench):与 PerAct 相同的 18 个任务、249 个变体(含拾放、工具使用、开抽屉、高精度插销等),每任务 100 条专家示范,共 1800 条示范。4 个无噪声 RGB-D 传感器相机(前/左肩/右肩/腕部),128×128 采集分辨率。数据增强:平移扰动 ±0.125m(xyz 三轴),旋转扰动绕 z 轴(竖直)±45°(在渲染前对点云做)。关键帧/keypose 动作标注沿用 PerAct 协议。
真实世界:单个静态 Azure Kinect RGB-D 相机(第三人称视角)+ Franka Panda 平行爪,标定相机-机器人外参后把点云转到机器人底座坐标系。5 个任务、13 个变体(stack blocks / press sanitizer / put marker in mug or bowl / put object in drawer / put object in shelf),人类通过运动学示教(kinesthetic teaching)采集,共 51 条示范(约 10 条/任务)。仿真与真实数据分开训练各自的单一多任务模型,不做联合 co-training。
训练方法
纯行为克隆(behavior cloning),不涉及 RL。损失:平移 heatmap 用逐视角交叉熵(真值为截断高斯);旋转用逐欧拉角交叉熵;夹爪开合与避障标志位用二值交叉熵。
仿真训练:优化器 LAMB(与 PerAct 一致),batch size 24,初始学习率 2.4×10⁻⁴,cosine 学习率衰减 + 2K 步 warm-start,共训练 100k 步。
真实世界训练:同样的优化器/batch/学习率调度,训练 10K 步。
动作执行:预测出的目标末端执行器位姿交给与 PerAct/C2F-ARM 相同的采样式运动规划器(sim 中为 RLBench 内置规划器,真实世界用 FrankaPy)生成关节空间轨迹去执行。
Infra(训练 / 推理工程)
- 训练硬件:与 PerAct 严格同硬件对比——8× NVIDIA Tesla V100(GitHub README FAQ 补充说明每卡 16GB 显存)。论文 Table 1 报告训练耗时 1.0 天(PerAct 同硬件需 16.0 天/3072 GPU-hours);按此推算 RVT 约 192 GPU-hours(8 卡×24 小时,为按论文披露数字换算得出,非论文原文直接给出的数字)。
- 推理硬件:单张 NVIDIA RTX 3090,RVT 11.6 fps vs PerAct 4.9 fps(2.3 倍)。
- 并行策略/精度:论文未披露(未提及混合精度或模型/数据并行细节)。
- 渲染开销:推理时仍需实时跑 PyTorch3D 点云重渲染生成虚拟视角图像,这部分开销已包含在上述 fps 数字内。
评测 benchmark
RLBench 18 任务多任务平均(Table 1,PerAct 官方发布的最终 checkpoint 复评,RVT 及消融模型均在相同 25 个未见变体×5 次随机种子上评测):
| 方法 | 平均成功率 | 平均 Rank | 训练时间(天) | 推理速度(fps) |
|---|---|---|---|---|
| Image-BC (CNN) | 1.3 | 3.7 | - | - |
| Image-BC (ViT) | 1.3 | 3.8 | - | - |
| C2F-ARM-BC | 20.1 | 3.1 | - | - |
| PerAct | 49.4 | 1.9 | 16.0 | 4.9 |
| RVT | 62.9 | 1.1 | 1.0 | 11.6 |
RVT 在 16/18(88.9%)任务上超过 PerAct;比 C2F-ARM 高 42 个绝对点(213% 相对提升),比 PerAct 高 13 个绝对点(26% 相对提升)。部分任务对比(成功率 %,mean±std,PerAct → RVT):Close Jar 55.2±4.7→52.0±2.5(RVT 落后)、Drag Stick 89.6±4.1→99.2±1.6、Insert Peg 5.6±4.1→11.2±3.0、Open Drawer 88.0±5.7→71.2±6.9(RVT 落后)、Place Wine 44.8±7.8→91.0±5.2、Put in Cupboard 28.0±4.4→49.6±3.2、Put in Drawer 51.2±4.7→88.0±5.7、Screw Bulb 17.6±2.0→48.0±5.7、Stack Cups 2.4±2.0→26.4±8.2、Push Buttons 92.8±3.0→100.0±0.0。
消融(18 任务平均成功率,相对完整模型 62.9 的跌幅):虚拟图像分辨率 100(vs 220)→51.1(-11.8);去掉跨视角对应通道→59.7(-3.2);去掉深度通道→60.3(-2.6);不分先单视角后联合两阶段处理→58.4(-4.5);透视投影(vs 正交)→40.2(-22.7);去掉旋转增强→60.4(-2.5);3 视角(vs 5 视角)→60.2(-2.7);单视角(front-only + 偏移回归)→35.8(-27.1);相机绕桌面旋转 15°→59.9(-3.0);直接用真实传感器相机图像(透视投影,无旋转增强)→10.4(-52.5);真实传感器相机图像但用正交投影(无旋转增强)→22.9(-40.0)。
真实世界(单一模型,5 任务/13 变体,51 条示范;成功率区分含/不含 marker 任务):Stack Blocks 100%/100%;Press Sanitizer 80%/80%;Put Marker in Mug/Bowl 0%/–;Put Object in Drawer 50%/100%;Put Object in Shelf 50%/50%;全部任务平均 56%(含 marker)/ 82.5%(不含 marker)。Marker 任务失败主要归因于细长物体点云稀疏且噪声大。
创新点与影响
贡献:(1)提出”重渲染解耦”——把网络输入的虚拟视角图像与物理传感器相机图像分离,从而能用正交投影、任意有利视角位置、点云 3D 增强、跨视角对应通道,即使只有单个物理相机也能合成多视角输入;(2)用”先单视角内注意力、再跨视角联合注意力”的两阶段 Transformer 设计证明比直接联合处理更好;(3)证明纯 2D 风格的多视角 heatmap 检测(配合虚拟正交渲染)可以达到甚至超过体素化 3D 方法的精度,同时把训练成本从体素方法的立方级开销降到接近视角式方法的平方级开销。
改变了什么:把体素化 3D 操作策略的”精度—算力”权衡打破——18 任务上同时刷新精度(+26% 相对)与训练效率(36 倍)的 SOTA,证明”渲染再多视角”是体素化之外另一条可行的通往精确 3D 操作的路径;这条思路被同团队的 RVT-2(RSS 2024)沿用并进一步优化渲染器与精度,两版共享同一 GitHub 仓库和权重发布渠道。同一时期的 Act3D 走的是不同的”幽灵点检测”路线解决同一问题,两条路线此后各自被延伸(Act3D→3D Diffuser Actor 系;RVT→RVT-2)。
作者自陈局限(论文第 5 节):(1)仅初步探索了视角配置(相机位置/数量),发现一个跨任务通用的较好选项,但视角设计本身是否可学习/可优化仍是待解决方向;(2)与体素化方法(PerAct、C2F-ARM)一样,RVT 仍需要相机到机器人底座的外参标定,不像原生视角式方法那样免标定,作者认为消除这一限制是值得探索的扩展方向。真实世界实验中还观察到细长/反光的 marker 类物体因点云稀疏噪声大而表现差,作者建议用腕部相机或类似 C2F-ARM 的局部放大视角来缓解。
原始链接
- arXiv:https://arxiv.org/abs/2306.14896 (PDF:https://arxiv.org/pdf/2306.14896)
- 项目页:https://robotic-view-transformer.github.io/
- 代码:https://github.com/NVlabs/RVT (官方仓库,同时承载 RVT 与后续 RVT-2 的实现,可复现两者结果)
- 预训练权重:https://huggingface.co/ankgoyal/rvt (仅权重文件,README 为空、无正式 model card 内容)
一手源存档(sources/)
- rvt—project-page — 项目主页快照(含摘要与视频实验列表,fetched 2026-07-16)
- rvt—github-readme — GitHub
NVlabs/RVTREADME 快照(含训练/评测命令与 FAQ,fetched 2026-07-16) - 论文全文见上述 arXiv 链接(arXiv 原文 PDF,不入 git;已读 v1 全文 HTML,含正文与附录)