0.04B 通吃异构相机,与地瓜机器人隋伟谈 X-Lens 取舍逻辑

鱼眼相机看得广但画面边缘是畸变弯曲的,针孔相机看得直但视野窄。

一台机器人身上往往同时挂着这两种相机,用于感知环境深度,而像 DAC、MapAnything 等深度估计模型,几乎没有既能同时适配好这两种相机,又能端侧跑起来的方案。

对此,地瓜机器人联合东京大学、苏州大学于 7 月 15 日发布技术报告《X-Lens: Real-Time Metric Depth Estimation with Heterogeneous Cameras》,并推出用于端侧推理的轻量深度模型 X-Lens。该模型仅有 0.04B,在边缘端输入异构相机数据,直接输出带物理尺度的深度。

论文中谈到 X-Lens 的效果,H100 上六视图跑到 22 FPS,单视图 41 FPS。且在异构相机设置下,绝对相对误差压到了 0.102,比此前 MapAnything(1.23B)的 AbsRel 低了 41.6%。

至此,相信你们也抱有以下相似的好奇和疑问:

  • 现有的方法里,鱼眼镜头和针孔相机画面是什么样的融合方案,它的痛点在什么地方?也就是为何需要 X-Lens。

  • 怎么做到「促进跨相机一致性」?提到的光线空间而非像素空间,像素空间就是图像的像素点,那这里的光线空间如何理解?即关于 X-Lens 的核心方法。

  • 在地瓜机器人 S600 上的实际表现,能否帮助迭代地瓜机器人的数据闭环?即 X-Lens 模型与地瓜自己产品的协同适配。

为此,我们采访到了这篇论文的作者之一,同时也是地瓜机器人算法副总裁隋伟,一起聊了聊这篇论文。

地瓜机器人构建了 26.6 万帧的 OmniScene 六视图合成数据集,把 0.04B 的 X-Lens 放在鱼眼、针孔、异构三种环境中,十几个基线上做了全面对照。结合隋伟的采访和技术报告,得出上述问题的简要结论:

  • 现有方案要么去畸变丢视野且无法实时,要么鱼眼针孔各跑各的导致尺度对不齐,要么通用大模型参数太大在边缘端跑不动。没有一种模型能同时保住视野、尺度和实时性。

  • 光线空间是按「它接收的光来自三维空间哪个方向」来标记,这样鱼眼和针孔虽然画面畸变不同,但描述同一面墙的光线方向是一样的,天然统一了两种相机的语言。

  • 六视图异构在地瓜自家 S600 单核上跑到 11 FPS,够用。同时,X-Lens 不依赖传统数据闭环,但合理的三段式训练结构让每次场景适配只需微调阶段 2、3,不动针孔相机底子,迭代成本是大模型全量微调的零头。

整理一下,X-Lens 用光线空间把异构相机的差异归一化在输入端,能直接得到具体物理尺度(深度距离等),结合轻量化特点,如果把它的几何特征作为侧挂编码器接入 VLA,模型不需要再从有限的动作数据里间接猜距离,会更接近部署的真需求。

从 H100 到 S600,0.04B 小模型够用吗?

隋伟对 X-Lens 的能力表示了满意和自信,他称「0.04B 参数的 X-Lens 的效果并不弱于 1B 以上的大模型。」

文中直接上了最直观的雷达图。下图分别是 X-Lens 与 MapAnything、DA3、VGGT 等模型在纯鱼眼(KITTI-360)、纯针孔(ETH3D)和跨相机场景(OmniScene-Full 六视图:4 鱼眼+2 针孔)的表现。

可以看到,其他模型各有长短,有的专精针孔但鱼眼表现掉得厉害,有的能处理鱼眼但异构场景下的尺度漂移明显,而 X-Lens 是唯一在三个方向上都接近外环的模型。

论文里也定量提到,X-Lens 的 Scale AbsRel 指标在 ETH3D 上是 0.12,在 OmniOcc 上是 0.067,MapAnything 在 OmniOcc 上是 0.205,差了三倍。Scale AbsRel 是指预测的全局物理尺度,不单单让模型介绍物体哪个深,更要求模型告诉深度是多少,所以对于一个需要抓取或避障的机器人来说,这个 Scale 信息是硬需求。

从更定性的生成图像看,上图对比了 OmniScene 中,各模型在两个场景的同一帧里的鱼眼视图和针孔视图。DAC 和 UniDAC 作为单目方法,各视图独立推理导致同一面墙在两个视角的深度颜色对不上;MapAnything 虽然做多视图融合但异构处理偏弱,远距离结构有明显偏差。X-Lens 的近场鱼眼和远场针孔会在深度色阶上保持了一致。

如上图,当研究人员把深度预测反投影成 3D 点云后,差异更直观。DAC 和 UniDAC 的点云在相机交界处出现了肉眼可见的错位和分层,X-Lens 的点云在标注出的 11.02m、17.34m、31.79m 等距离上与 GT (真实值)高度吻合,说明 X-Lens 是真的通过视觉感知环境的深度,以供后续机器人的导航等行为。

当然了,论文归论文,以上这些是在 H100 上的表现。众所周知,随着去年 11 月发布旭日 S600 芯片,地瓜机器人真正的落脚点和竞争力出现在边缘端。

隋伟透露,团队做完论文后第一时间在 S600 上做了量化部署,六视异构(4 鱼眼+2 针孔)在 S600 单核上能跑到 11 FPS。

事实上,对于室内服务机器人或者仓储 AGV,这些机器人配合 SLAM 和局部规划,该刷新率已经进入「可用」区间。而且这是单核跑出来的数字,或许多核并行还有优化空间。

另外,关于落地,隋伟提到,在 VODPP(地瓜机器人的多视图感知栈)上部署时,X-Lens 相比 VGGT 体现出了两个层面的优势。

第一是数据结果的可用性,X-Lens 直接输出带物理单位的深度和统一坐标系下的融合点云,而 VGGT 输出的是相对深度。真实物理尺度的信息,对机械臂在真实世界里的抓取任务还是有影响的。第二是资源占用,0.04B 对 1.26B,模型小了,机械臂做任务时的流畅性将大幅提升。

当然,隋伟也回应了地瓜机器人在论文中提到的一些不足和改进方向。比如,文中提到模型严格依赖传入的相机参数、泛化能力受训练数据的内参分布约束、极端偏离的镜头类型(比如折反射相机)会出现仿真到真实的 gap。

从中可以看出,X-Lens 的训练还是依靠数据分布里的相机内参,不同相机的适配依然会导致不可避免的误差。

对此,X-Lens 的工程应对是每次同步输出一张置信度图,把模型「自认不靠谱」的区域标出来,这样下游模块会知道该谨慎处理哪些像素。

光线空间作为「统一语言」

说完效果和工程落地,再往回倒一步——异构相机为什么需要专门做一个模型?

隋伟把现有鱼眼相机和针孔相机的融合方案归成了三类,每类都在「精度、视野、统一性」里至少牺牲了一样。

第一类,最直接地去畸变再当针孔用。鱼眼画面重投影「掰直」,套用现成针孔深度模型。问题是鱼眼 180° 的视野在这个过程中被裁剪,边缘严重拉伸。等于把鱼眼最值钱的「看得广」扔掉了。而且每次去畸变浪费好几秒,决定了这条路不可能实时。

第二类,各管各的、后期拼接。 鱼眼一个模型、针孔一个模型,各自输出深度再用外参拼起来。然而,两个单目模型对「一米有多长」理解不一致,拼出来的点云在相机交界处出现墙面错层、地面断裂。即两倍的模型、两倍的维护成本。

第三类,通用几何大模型。 DA3、MapAnything、VGGT 这一类什么图都能用,但训练数据和位置编码基本围绕针孔设计。鱼眼的强畸变要么让精度骤降,要么还得先做去畸变。而且参数动辄十几亿,「机器人上一帧推理接近一秒,实时控制等不起。」

X-Lens的解法是既然在像素空间里鱼眼和针孔「语言不通」,那就换一个空间。

补充一点,传统深度模型用针孔内参矩阵K(一个 3×3 矩阵)描述图像坐标和 3D 射线的对应关系。这个设定在鱼眼镜头下直接失效,鱼眼的投影由一组非线性畸变系数控制,写不进 3×3 矩阵。

这里便引出了关键概念叫光线空间(ray space)。

隋伟给了一个形象的描述:「同一面墙,在针孔画面里是平直的,在鱼眼画面边缘是弯的。但在光线空间里,它们本来就是同一面墙。」

X-Lens 的具体做法是**不用内参 K 矩阵,改用一张通用的反投影查找表 G,G 本身包括焦距、主点、畸变系数,即畸变被隔离在输入端的 G 函数里。**每个像素不再用 (u, v) 坐标来表达,而翻译成「这条光线从相机光心出发时,指向三维空间中的哪个方向」,即一条单位方向向量。

有了统一的「语言」,后续网络主干还要学会在这种语言下的跨相机交流。跨相机几何一致的实现主要靠的是多视图标定 token 和雅可比偏置两层架构关键设计。而这两层设计恰好让模型不需要海量参数就能工作。

0.04B 是结构减法,而非压缩

X-Lens 最值得注意的数字是 0.04B 参数量。VGGT 1.26B,MapAnything 1.23B,DA3-Giant 1.36B,X-Lens 比它们少了 96% 到 97%。

隋伟把话挑得很明,「选小模型是被部署场景倒逼的。扩参数在语言模型上走得通,但物理AGI需要的是端侧部署和实时反馈。深度模型都往几B推,还怎么在物理世界里做实时反馈?」

论文也给出了数据佐证。如图,在异构场景 OmniScene-Full 上,X-Lens 用 0.04B 参数压制了 1.23B 的 MapAnything,AbsRel(预测深度误差) 0.102 低于 0.175,Scale AbsRel(对齐后的深度误差) 0.118 低于 0.370,RMSE(绝对距离误差) 1.60m 低于 2.18m。关键是速度上 22 FPS 远高于 5 FPS。

同时,如上表,在 RoboTwin2 的 Scan-Object 任务上,VO-DPP 用 X-Lens 的几何特征替换 DINOv3-Base 作为视觉编码器,任务成功率从 50% 提到 72%,VGGT 同条件下是 67%,验证了 X-Lens 的任务实用性和在 VO-DPP 上的适配性。

自然会有疑问,X-Lens 的 0.04B 是结构必然还是聪明地压参数?

隋伟的解释指向了前者:「大模型用海量参数去记住各种相机、各种场景的模式,相机差异靠数据多样性硬盖。X-Lens 把相机差异在输入端就用光线表征归一化掉,网络只需要学光线到几何这一件事。」

上图为 X-Lens 的异构投影 Transformer 核心架构,其中有两个关键设计。

一个是多视图标定 token。该做法非常轻量,即在 Transformer 的每一层,额外塞进一小串可学习的标定 token,专门帮鱼眼视图「自我矫正」。这些 token 只在鱼眼那边生效,针孔侧完全不管;每一层用完就清零,下一层换一组新的。

可以粗略理解成,主干始终在学「光线到几何」这件通用的本事,而标定 token 负责把鱼眼的畸变画面变成主干能理解的格式。并且,多视图标定 token 不是某个特定型号的参数,所以换个焦段、换颗同类型鱼眼,不需要重新训练。

另一个关键设计是雅可比畸变偏置。标定 token 管视图内部的畸变校正,雅可比偏置则负责跨视图之间的「翻译」。

为了建立鱼眼和针孔相机之间的几何对应,X-Lens 从反投影的雅可比矩阵中提取了一个九维相对描述符该描述符编码了四类几何关系:光线夹角、局部尺度的对数差、光线位移,以及雅可比相关性。

这个描述符随后被送入一个小型 MLP,其输出作为加性偏置注入到跨视图注意力中。即 X-Lens 在跨视图注意力里额外塞了一条几何提示,让每两个像素做注意力计算时,除了比较它们「长得像不像」,还会参考它们各自对应的3D光线方向靠不靠近、局部被鱼眼拉伸了多少。

正如隋伟所说,「所有视角的预测最终反投影到同一个世界坐标系,由同一个全局尺度头约束。跨相机几何一致性不是事后拼接出来的,在网络内部就被强制成立了。」

上图更直观地验证了这个设计,也体现了雅可比偏置校正的幅度分布:鱼眼图像边缘(高畸变区域)呈现显著的暖色信号,中心区域和针孔图像上的校正整体冷色且空间均匀。该校正幅度分布也符合物理事实,鱼眼镜头的畸变在边界最严重,需要的几何修正最大;针孔投影近似线性,不需要剧烈的空间变化校正。

所以当换个相机时,隋伟的回答是「网络权重一个字节都不用动,推理时换个标定就行」。原因是假如唯一的边界情况出现,即训练分布之外的全新畸变家族(比如极端折反射相机),这时也只需要冻结主干、轻量微调那组标定 token。

OmniScene:26.6 万帧背后的数据哲学

异构相机深度模型长期缺数据。没有同步的鱼眼与针孔多视图的稠密真实值数据,模型想学也无从学起。

OmniScene 便是为填这个坑造的。

OmniScene 数据集包含 103 个场景,564 条运动序列,约 26.6 万帧六视图同步数据,折合超过 170 万张独立图像。每帧固定四鱼眼(Kannala-Brandt,180° FOV)加两针孔相机,504×798 分辨率,附带逐像素稠密深度真值、有效性掩码和天空标记。还有 12 个场景不参与训练,用于模型能力测试。

具体来看,OmniScene 的数据来源分两块。室内场景部分使用了酷家乐(Kujiale)的数据资产,但隋伟强调这只是一个小来源,更多场景来自 Unreal Engine 等专业渲染管线。选传统渲染的核心考量是真值的物理精确性。

部分场景的六视图如上,包括公寓、办公楼、购物中心、工业仓库,也有神庙和热带雨林等。隋伟提到,考虑到泛化性,X-Lens 的训练数据覆盖了生活中能见到和不能见到的大部分场景类别。

如上图,X-Lens 也确实能在真实世界 OmniOcc 和鱼眼场景等没见过的真实场景上能直接工作,印证了其泛化性。

当然,随着目前仿真和仿真数据资产的重要性日益突出,对于 AIGC 生成的数字资产,隋伟也发表了其观点:

「这会是未来机器人数据的一大来源。地瓜现在有在做相关研究,今年在 ECCV 上的 TabletopGen 就是做数字资产生成。」

并且,他判断 AI 生成资产技术的成熟会进一步降低 OmniScene 管线加新场景的边际成本,以往加新相机模型、新场景类型、新传感器模态的边际成本很低,把 OmniScene 作为数据侧基础设施持续演进,会是明确的方向。

写在最后

客观来看,还有一个值得关注的方向是时序。即 X-Lens 目前是逐帧前向,没有帧间记忆,无法处理快速移动物体。隋伟也预告团队下一步方向,「若下游需要的是动态物体的速度和轨迹,超出了单帧深度模型的任务边界,应该由接在 X-Lens 之后的时序模块(SLAM/跟踪)完成。」

采访里一个有意思的细节,隋伟被问到开源以后「护城河在哪」时的反应。

他的原话是,开源出去的是模型结构和一版权重,留在体系内的是三样更难复制的东西。

第一,数据生产管线。OmniScene 放 26.6 万帧成品,但虚拟相机架设计、轨迹采样器、一致性校验这条「造数据的流水线」在团队手里持续迭代。——数据集会过时,产线不会。

第二,软硬协同。X-Lens 与地瓜 S600 等 BPU 的量化适配、编译优化,与感知栈 VODPP 的深度集成,这些工程上的协同不在论文里,却让地瓜本身的软硬件基础设施天然形成护城河。

第三,迭代优化的先发优势。隋伟提到,现在 X-Lens 是一篇很新的工作,明年可能就不是。但既然他们先做出了这份工作,就会更懂得怎么优化它,怎么把它作为主干和下游任务协同耦合。

以上恰好也符合 X-Lens 这篇工作的核心气质。相比于在某个 benchmark 上刷到第一,它趋向于工程思维里的取舍。

取的是异构相机的原生统一表征和边缘端可部署的参数量,舍的是全景图转换、辅助重建目标和超大参数规模。在几何基础模型集体「做大」的当下,这种「做小」的选择本身构成了 X-Lens 的主要贡献。