OneCanvas: 3D Scene Understanding via Panoramic Reprojection¶
会议: NeurIPS2026 Spotlight(任务提供的录用元数据)
arXiv: 2606.19253
论文: 项目主页
代码: https://github.com/baranowskibrt/onecanvas
领域: 视觉语言推理
关键词: 全景特征重投影、空间推理、度量位置嵌入、连续视觉 token、空间课程学习
一句话总结¶
OneCanvas 将多视角图像的 patch 特征提升到 3D 后,作为独立连续 token 放到统一全景坐标系,用原生 RoPE 表达角度与帧序、用加性嵌入表达度量位置,再以合成空间课程预训练和真实问答适配,在 SQA3D、VSI-Bench、SPBench 分别取得 65.3、71.3、72.1。
研究背景与动机¶
视觉语言模型(VLM)能识别视频里有什么,却不一定能回答物体相隔多远、从指定位置看哪个物体在左边。普通视频输入把房间拆成多个局部画面,同一物体因相机移动而出现在不同图像位置;模型既要匹配跨帧实体,又要恢复统一参考系。给模型增加点云编码器、深度位置编码或几何特征融合,是一种补救路线;VLM-3R、SpaceMind 等方法已经证明其有效性,但代价是新模块对齐与训练。另一条路线是扩大空间问答数据,如 SenseNova-SI、Cambrian-S,却需要大量高质量监督。
更深的问题是,即便输入了几何,模型也可能不用它。门的典型高度、浴室的典型大小、某类问题的常见答案,都能成为捷径;在带偏置的数据上,直接学习这些先验比真正读取坐标更容易。OneCanvas 因而同时修改输入的组织方式和训练信号:先让跨帧观察拥有共同的空间位置,再用答案由摆放几何决定的课程建立几何读取能力,而不是寄希望于真实场景问答自然教会模型这一点。
全景的作用不是把房间画成一张新的 RGB 图片,而是给已有视觉特征一个共享的角度地址。视觉编码器仍处理熟悉的透视图像;重投影发生在编码之后,可以保留共线、遮挡及重复观察。核心 idea:以连续全景坐标组织原有 patch token,以独立的内容通道补足度量深度,并用去类别捷径的合成课程先教会 VLM 读取这种表示。
方法详解¶
整体框架¶
推理输入是多视角 RGB、深度、相机内参与位姿,以及文本问题;输出仍是 VLM 生成的答案。流程依次为 3D 提升 → 连续全景 token → 加性度量嵌入,之后交给 Qwen3-VL 原有语言模型注意力层读取。两阶段空间训练则在训练时建立这种读取能力,不是推理时运行的额外模块。
全景原点和朝向可以按任务指定。SQA3D 使用被提问者的位置与朝向,SPBench 单图问题使用所查询相机的位姿,其他情形通常使用相机位置的质心。原点改变后,同一世界点会得到不同角度地址与局部度量坐标,模型因此能直接在问题需要的参考系中读取场景,而不必先从语言描述推导视角变换。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["RGB、几何与问题"] --> B["3D 提升"]
B --> C["连续全景 token"]
C --> D["加性度量嵌入"]
D --> E["原生 VLM → 答案"]
D -. "仅训练时使用相同表示" .-> F["两阶段空间训练"]
G["合成课程监督<br/>真实场景问答监督"] -.-> F
F -. "得到推理权重" .-> E
关键设计¶
1. 3D 提升:把图像位置变成共享世界位置
Qwen3-VL 的视觉编码器保持冻结,分别编码原始透视帧。对每个特征网格 patch,读取对应深度,将相机内参缩放到特征图分辨率,然后反投影并用相机到世界位姿变换。其关键变换是:
这里 \(T_k\) 表示刚体变换,相机采用 OpenCV 的右、下、前坐标约定。得到的不是融合点云特征,而是一组各自保留世界位置、原始视觉特征和来源帧索引的 patch。来源帧索引后续仍有独立用途:它使同一表面的不同时间观察不因空间对齐而失去首次出现信息。
这种组织方式把几何对齐交给明确的输入变换,而不是新增一个需要与语言模型共同学习的重型 3D 编码器。相应代价是深度和位姿误差会直接影响 token 的位置;它不是无需几何的纯 RGB 方法。
2. 连续全景 token:只换地址,不渲染或合并观察
设全景原点为 \(\mathbf{c}\)、朝向为 \(R\),先把世界点变换到全景局部坐标,再计算经纬度:
负号使纬度向上为正。每个 patch 保留为一个独立 token,处在连续的经纬位置上,而不是被写入某个离散全景像素。两个点即使落在同一方向,也不会平均、按深度选一个或被最后一次写入覆盖:同一射线上的不同表面与重叠帧中的观察都留给注意力层处理。这里没有 z-buffer 可见性筛选,也没有再次编码 RGB 全景。
Qwen3-VL 的原生三轴 RoPE 算法不变,只替换位置 ID 的内容:\(W\) 使用经度,\(H\) 使用纬度,\(T\) 仍使用来源帧索引;三轴分别线性缩放到 \([0,100]\)。因此“3D-RoPE”不意味着把三个笛卡尔米制坐标塞进 RoPE:空间轴承载角度,时间轴承载帧序。该设计尽量保留预训练位置机制的语义,并让跨视角关系在一个共同角度平面内变得可读。
3. 加性度量嵌入:在内容通道保留被角度投影丢掉的深度
只看角度无法区分同方向的近物体和远物体,也不能可靠估计米制距离。OneCanvas 对全景局部偏移的三个轴做正余弦编码:每轴使用 16 个对数间隔频率,范围为 \([0.1,100]\) rad/m,同时保留原始坐标。再对总半径和水平半径各使用 8 个频率,范围为 \([0.1,10]\) rad/m,最后拼接原始单位射线方向。半径直接暴露距离和水平尺度信息,避免要求模型完全从逐轴编码中自行组合这些量。
上述编码为 136 通道,经隐藏宽度 64 的两层 MLP 投影后,通过可学习标量门加到视觉特征上。按原文机制可概括为:
此式是机制概括,而不是新增的作者公式编号。度量位置走的是特征内容路径,角度和时间走的是 RoPE 路径,二者不能混为一谈。这样既保留原生位置编码,也让注意力按内容读取真实尺度,并区分角度共位但深度不同的观察。
4. 两阶段空间训练:先学几何读取,再适配真实场景答案
第一阶段不是把真实房间搬到空画布上。默认课程在空画布中程序化放置合成盒子,每个盒子的 patch 都携带从真实视觉激活池中抽取的同一个特征;问题用该特征的内联副本引用盒子,而不是用“门”“椅子”等类别名。激活池来自 ScanNet、ScanNet++、ARKitScenes 的训练来源场景,盒子特征独立抽样,不携带当前合成场景的身份。内联副本使用所在文本位置的 MRoPE ID,而非画布上的经纬 ID,并同样获得加性 3D 位置嵌入。
这让“哪个盒子”由内容匹配确定,“它在哪里、多大、相隔多远”则由采样几何确定。大多数样本另加 6–12 个不被引用的干扰盒,防止“画布上唯一对象”或特征异常值泄露答案;地板面积任务不加干扰盒。与真实类别对象课程相比,默认方案主动切断类别与典型尺度的关系,而不是只追求视觉真实感。
课程包含六个任务族:度量测量、自我中心方向、多次转向导航、可观测性、计数、多目标 3D 包围盒读取。六族在每个 minibatch 中等权,族内任务也等权,并控制答案分布。测量使用表面到表面的距离和非矩形地板面积;导航覆盖 1–4 次转向;首次出现任务显式控制 \(T\) 轴起始帧;视线任务则由合成遮挡几何确定,不是时序任务。它们分别迫使模型利用尺度、方向、帧序与对象绑定,而不是单一模板先验。
第一阶段训练秩 256 的语言模型 LoRA 和度量嵌入;结束后将 LoRA 合并回基座并冻结该更新,第二阶段再训练全新的秩 64 LoRA。较低秩并非证明不会遗忘,而是作者用于限制真实问答适配偏离几何读取能力的设计。视觉编码器和 token 嵌入在两个阶段均冻结。
一个完整示例¶
以“站在指定位置、面向指定方向,哪件家具在左侧”的问题为例,先编码各透视帧,把家具相关 patch 按深度和位姿放回世界坐标。画布随后以提问者的位姿为原点和朝向,因此家具的全景经度已经反映相对于该人的方向。不同帧看到同一家具的 token 仍各自存在,来源帧信息也保留。
若同一方向还出现更远的家具,连续全景地址可以相同或接近,但加性度量嵌入不同;模型不会在输入构造时被迫丢掉其中一个。语言模型结合问题与全部 token 生成答案。训练中的合成盒子课程只是预先教会它读取方向和位置,不会在这个真实场景的推理过程中重新生成盒子;本例为机制说明,不是论文报告的单独成功案例。
损失函数 / 训练策略¶
训练围绕课程任务答案和下游问答监督展开,原文强调不引入额外辅助损失或专用 3D 编码器。附录中的“回归目标”描述了数值标签,不能据此自行补写独立的 MSE 损失。主干为 Qwen3-VL-8B,LoRA 作用于语言模型的注意力与 MLP 投影。
第一阶段 LoRA 秩 256、缩放系数 512、dropout 0.05,有效 batch 16,学习率 \(2\times10^{-5}\),余弦调度与 3% warmup。度量嵌入学习率是基础学习率的 50 倍,每次前向将其范数缩放为视觉特征平均范数的一半,使这一阶段主要学习方向而非幅度。每个样本最多 200 个放置 patch,每个盒子至少 8 个。第二阶段从同一幅度初始化门,再允许其自由学习。
第二阶段 LoRA 秩 64、缩放系数 128、dropout 0.05,训练 10,000 步,有效 batch 32,其余学习率与调度相同。VLM-3R-VSIBench、SQA3D、ViCA 的采样权重约为 70/15/15;这些不是数据量比例。训练输入分辨率为 \(320\times240\),训练时随机改变画布位置和 yaw。测试 SQA3D 使用 \(320\times240\),VSI-Bench 和 SPBench 使用 \(640\times480\);场景视频通常均匀采样 32 帧,SPBench 的预测几何实验使用每题实际提供的视图数。
实验关键数据¶
主实验¶
主结果优先使用数据集提供的真值深度和位姿;少数损坏的真值轨迹使用重建估计替代。下表的 DA3 列是同一检查点在推理时完全改用 RGB 预测深度、位姿和内参,不重新训练,也不使用额外视图或真值几何。SPBench 的“零样本”仅表示没有使用 SPBench 训练数据,并不表示没有其他空间问答训练。
| 数据集与指标 | 本文,真值几何协议 | 本文,DA3 预测几何 | 最强既有结果 | 真值协议提升 |
|---|---|---|---|---|
| SQA3D,EM@1 | 65.3 | 64.9 | Ross3D,63.0 | +2.3 |
| VSI-Bench,八任务平均 | 71.3 | 70.0 | SpaceMind,69.6 | +1.7 |
| SPBench,零样本 Overall | 72.1 | 71.3 | SpaceMind,67.3 | +4.8 |
SQA3D 的 EM@R1 为 68.4;逐题型仍使用严格 EM@1。VSI-Bench 的路线规划为 60.8,明显高于 SenseNova-SI 的 48.5;绝对距离 62.3、相对距离 73.1、房间大小 76.8。并非所有子任务都领先:相对方向 88.0 低于 SpaceMind 的 88.4,计数 68.9 也低于 SpaceMind 的 73.3。SPBench 多视图平均为 81.5、单图平均为 62.8,不能由 Overall 的领先推断每个数值题子项都领先。
消融实验¶
下表来自 VSI-Bench 的组件消融。单阶段变体使用秩 256 LoRA,以控制适配容量;完整模型则使用合并的第一阶段秩 256 更新加第二阶段秩 64 适配器,因此不能理解为只切换一个开关且所有优化历史完全相同。
| 配置 | 平均 | 绝对距离 | 房间大小 | 相对方向 | 路线规划 |
|---|---|---|---|---|---|
| 完整模型 | 71.3 | 62.3 | 76.8 | 88.0 | 60.8 |
| 完整模型去掉度量 3D 嵌入 | 70.4 | 58.1 | 71.3 | 88.6 | 66.0 |
| 全景 + 度量 3D 嵌入,无第一阶段 | 68.5 | 56.6 | 74.1 | 91.6 | 45.4 |
| 仅全景,无第一阶段 | 65.3 | 54.8 | 56.9 | 87.4 | 45.3 |
| 多视图基座,无本文组件 | 65.5 | 53.2 | 68.6 | 77.4 | 43.9 |
课程带来的路线提升是 45.4 → 60.8;但去掉度量嵌入后路线升到 66.0,不能声称每个组件对每项任务都单调增益。度量嵌入更稳定的证据是完整模型中的绝对距离 62.3 → 58.1、房间大小 76.8 → 71.3。
附录还直接测试了“连续 token”和“RGB 全景”是否可互换,必须按各自协议解读:
| 分析协议 | 配置 | VSI-Bench | 证据边界 |
|---|---|---|---|
| 同检查点,仅推理替换 | 连续 token,9,600 token | 71.1 | 附录表 8 的基线,不改成主表 71.3 |
| 同检查点,仅推理替换 | 栅格 \(181\times362\),7,144 token | 68.2 | 网格单元均值池化,未重新训练 |
| 同检查点,仅推理替换 | 栅格 \(45\times90\),1,563 token | 65.8 | 更强压缩,不等于训练后的网格模型上限 |
| 匹配的 2,000 步短训练 | 特征画布 | 60.8 | 与下行匹配,不是完整训练结果 |
| 匹配的 2,000 步短训练 | z-buffer RGB 全景 | 52.1 | 同时改变可见性保留和视觉塔输入 |
原文表 8 的连续基线 71.1 与主表 71.3 不同,且首次出现分数为 62.6 而主表为 65.7;缓存没有明确解释,保留各表原值而不强行统一。最细栅格使首次出现降至 39.8,说明丢失每单元内多帧观察是主要风险;每单元改选原始 patch 后平均为 68.6,也不能消除这一问题。
关键发现¶
- 参考系选择与问题语义有关:同一 SQA3D 检查点,人物位姿原点 EM@1 为 65.3,场景中心为 61.2,场景外为 59.8;Which 从场景中心的 56.7 升到人物位姿的 72.6。该收益不是更换模型或额外训练。
- 几何替代的结论有范围:DA3 的三项平均结果分别下降 0.4、1.3、0.8 个点,支持对这一特定前馈估计器的稳健性,不证明任意重建失败都无害。
- 随机种子结果不是主结果的替换值:三个完整训练复现实验,VSI-Bench 为 70.4 ± 0.6,SQA3D 为 65.1 ± 0.9,SPBench 为 73.2 ± 0.3;这些量只反映固定方案下的种子波动。
- 低算力结论需要限定比较对象:8 张 A6000 共约 64.8 小时、518 原始 GPU-hours,解析归一化为 259 A100-equivalent GPU-hours。SpaceMind 为 4,800,SenseNova-SI 为 27,648;VLM-3R 却为 240,略低于本文。归一化依据峰值 BF16 吞吐,不是实测跨硬件加速比。
亮点与洞察¶
- 全景是一种地址空间,而不是必须被渲染的图像。只重排位置、不重新编码像素,避免了让透视图像预训练的视觉塔读取扭曲全景,并保留相机看过但当前全景视角遮挡的表面。
- 角度、度量位置、观察时间各司其职。原生 RoPE 表达方向与帧序,特征中的小型度量编码表达真实尺度;这一分工比笼统声称“加入 3D 位置编码”更能解释组件消融。
- 课程与表示共享读取路径。合成盒子不追求真实类别外观,而是用真实 patch 分布建立对象绑定,再让几何决定标签;这种做法可启发其他容易被类别先验支配的空间任务。
局限与展望¶
- 依赖深度、内参和位姿;DA3 推理替代缩小了真值几何与纯 RGB 应用的距离,但没有覆盖强遮挡、重建崩溃等全部失效情形。应进一步测试这些误差如何传播到角度地址和度量嵌入。
- 全局画布未融合重复观察,保留信息的同时保留了 token 成本;大规模或室外场景的精细结构与可扩展性仍是作者承认的限制。栅格化压缩不能直接替代连续表示而不付出代价。
- 经度是周期量,RoPE 位置 ID 却不周期连续。附录固定对象、只改变 seam 位置的 15° 距离探针,误差由 0.14 m 增至 1.23 m;可旋转画布避开关注区域,或研究周期感知编码,但本文没有彻底解决该问题。
- 课程任务生成器由人工设计,增加新的空间能力需要编写新的生成规则。ERNIE 的 2,000 步、无课程短实验仅支持表示可移植性(40.2 → 46.3),不能证明非 Qwen 模型完整方案的性能。
相关工作与启发¶
- vs VLM-3R / SpaceMind:这些方法显式融合几何编码器输出;本文把几何更多用于 token 地址与轻量度量嵌入,保留原有视觉编码路径。简化的是几何对齐架构,不是取消几何输入。
- vs PanoGrounder / LiftProj:渲染或拼接全景像素需要处理可见性与重采样;本文保留原透视帧特征以及共位、遮挡观察。2,000 步对照同时涉及可见性与视觉输入两种差异,不能将 8.7 点收益单独归因于其中一个。
- vs SenseNova-SI / Cambrian-S:扩大空间问答监督提升能力;本文则让共享表示支持程序化、受控标签的几何课程。二者并不互斥,但应检验更多真实数据是否会重新引入类别与答案先验。
评分¶
- 新颖性: 4/5。连续全景地址、内容侧度量嵌入与去类别捷径课程形成了明确的统一方案。
- 实验充分度: 4/5。包含三基准、组件与原点消融、RGB 预测几何和附录控制,但部分跨骨干比较仅为短训练。
- 写作质量: 4/5。v2 对表示与对照边界解释清楚,附录和主表少量数值差异仍需进一步说明。
- 价值: 4/5。为已有 VLM 提供较轻量的空间适配路径,实际价值仍受几何可靠性与场景规模约束。