机器人要理解三维世界,第一件事是看清距离。

人靠两只眼睛的视差就能估计远近。但机器人身上的“眼睛”,远比两只复杂得多。为了兼顾大视野与远距离细节,一台机器人往往同时搭载多种相机:有视野接近180°的鱼眼相机,一眼扫遍四周,画面边缘却严重扭曲;也有针孔相机,横平竖直看得远看得细,视野却窄。

这些相机“说的不是同一种语言”。鱼眼的世界是弯的,针孔的世界是直的。同一面墙在两种相机里呈现出完全不同的几何形态,传统深度估计模型难以直接对齐。

过去的主流方案主要是两条路:要么将鱼眼画面“掰直”再做处理,视野和精度双双折损;要么针对不同相机训练不同模型,各自为政,拼不成一幅完整的三维世界图景。而那些号称能“通吃”所有相机的几何大模型,动辄十几亿参数,跑一帧要小几秒,机器人等不起。

地瓜机器人算法团队近期开源的X-Lens深度估计模型,给出了一个完全不同的答案。

不堆参数,堆设计

不堆参数,堆设计

X-Lens只有4000万参数,约为DepthAnything3-Giant的1/34,MapAnything的1/25。但它能同时处理任意数量的鱼眼与针孔相机混合输入,直接输出带真实尺度的稠密深度图,在地瓜旭日S600芯片上六目混合输入可达20+ FPS,单目鱼眼更是跑到了41 FPS。

打开网易新闻 查看精彩图片

X-Lens效果图1:输入N目鱼眼+针孔的rgb图片,实时输出场景真实尺度点云

大模型用海量参数强行记忆各种相机的差异,但机器人端侧等不起,也跑不动。X-Lens的设计逻辑是:把相机的差异性在输入端用光线表征统一规划,网络只需要学习光线到几何的映射。规划越干净,模型需要强行记忆的东西就越少,这也是0.04B参数能够成立的底层原因。

“带真实尺度”五个字,是X-Lens与大多数深度估计模型最根本的区别。很多模型只能输出相对深度,表示“A比B远”,却说不清远多少。X-Lens输出的是绝对深度,“那面墙离人2.352米”。对机器人来说,这关乎它能不能准确伸手抓住一个杯子、能不能贴着障碍物边缘绕过去。

打开网易新闻 查看精彩图片

图2:X-Lens在室外场景中的实时深度预测结果

这个小模型是怎么做到的?核心设计有三。

1.统一光线表征:不聊像素,聊光线

传统深度估计模型的工作方式是“像素对像素”,把鱼眼图像的第100行第50列与针孔图像的第m行第n列去做匹配。但鱼眼畸变严重,同一个空间点在两种图像里的像素坐标毫无对应关系,这种匹配从根上就是错的。

X-Lens换了一套底层逻辑:把每个像素都翻译成一条三维空间中的光线方向。光线是物理世界的通用语言,不管相机怎么畸变,光线方向由相机位姿和像素位置唯一确定,不会骗人。模型内部所有的推理都在这个“光线空间”里进行,针孔、鱼眼、乃至360°全景相机都能直接喂进来,网络结构一个字不用改

针孔相机输入标准的3x3内参矩阵,鱼眼相机输入逐像素的查找表(LUT),更换相机时只需更换输入,模型权重不用动。

2.多视角校准Token:给鱼眼配“随身翻译”

即便统一到光线空间,鱼眼和针孔仍然存在一个根本差异:鱼眼图像不同区域的畸变程度不同,中心畸变小、边缘畸变大。这种非均匀畸变如果不在模型内部做适配,跨相机匹配的精度会大打折扣。

X-Lens的一个关键设计,是为鱼眼视角单独配备了一组可学习的校准Token,像“随身翻译”一样附着在鱼眼特征上,在每一层网络中悄悄修正畸变带来的偏差。这组Token学习的是鱼眼这类畸变的通用修正方式,而非某一颗镜头的具体参数,具体镜头系数已体现在输入的光线查找表中,因此具备良好的泛化能力。关键是,这组Token只影响鱼眼自己的分支,不干扰针孔那一路的全局特征。

3.雅可比畸变偏置:在注意力里塞一份“畸变说明书”

跨相机匹配时,模型不能只看“长得像不像”。鱼眼边缘被严重压扁的门框,和针孔画面里方正的门框,视觉上差异极大,但几何上却是同一个东西。

X-Lens在注意力机制中引入了一个雅可比畸变偏置:每个位置的光线朝向和局部拉伸程度都被编码进来,作为匹配时的几何约束。模型在判断两个像素是否对应时,同时参考视觉相似性与几何一致性,鱼眼边缘的畸变区域也能与针孔画面精准对齐。

打开网易新闻 查看精彩图片

X-Lens架构图3:先学针孔、再适应鱼眼、最后混合演练

4.三阶段渐进训练

架构设计的实现,需要与之匹配的训练策略才能充分释放潜力。X-Lens采用三阶段渐进式训练

第一阶段:针孔预训练。先用纯针孔数据让模型打好几何深度估计的底子;

第二阶段:鱼眼Token适配。冻结主干网络,只训练那组鱼眼校准Token,让模型学会“翻译”鱼眼的畸变;

第三阶段:异构联合训练。放开所有参数,让针孔和鱼眼分支在统一的光线空间里协同优化。

三步走下来,畸变适应与跨相机融合被彻底解耦,互不干扰。

OmniScene:26.6 万帧的六目异构相机数据集

OmniScene:26.6 万帧的六目异构相机数据集

再好的模型也要有数据喂。但鱼眼+针孔混合相机的训练数据,在业内是稀缺品。

现有的鱼眼数据集大多局限在自动驾驶街景场景,而“多种异构相机同步拍摄、每帧还带稠密深度真值”的基准,此前几乎是空白。真实传感器也给不出完美答案,激光雷达点云是稀疏的,深度相机在强光和远距离下会失效。

既然没有数据,地瓜机器人算法团队便自己动手造了一个。

算法团队设计了一套虚拟六目相机架,四颗180°鱼眼环绕布置,视野互相重叠,实现水平方向的全包围感知;前后两颗针孔负责远距离细节捕捉。六路相机严格同步渲染,每一帧都附带OpenCV规范的内外参,拿来就能用,不需要任何去畸变预处理

打开网易新闻 查看精彩图片

图4:Omniscene 场景数据截取

这个数据集命名为OmniScene,包含26.6万帧像素级精确、零噪声的深度真值,外加有效性掩码和天空标记。后处理管线会剔除相机穿模等退化帧,并做跨视角深度一致性校验。训练/验证/测试集按场景严格隔离,保证评测的都是模型没见过的环境。

对X-Lens而言,仿真数据的几何精度远比视觉真实感更重要。重建方法在白墙等区域会残留微小几何误差,反而污染模型训练。因此OmniScene的首要原则是保证几何绝对准确,墙一定是直的,多视角投影关系一定严格一致,其次才是场景多样性。

OmniScene已在Hugging Face全量开源。

传送门

论文:https://arxiv.org/abs/2607.12993

项目主页(含可交互点云Demo):https://drobotics-xlens.github.io/

代码:https://github.com/zhouhengamerica/XLens

OmniScene数据集:

https://huggingface.co/datasets/henryzhou998/OmniScene/tree/main

实验结果:误差降 25.4%,参数省 97%

实验结果:误差降 25.4%,参数省 97%

更准:在最难的六目混合相机测试OmniScene-Full上,深度误差比最强对手降低 25.4%。同一个场景里,它看得更清楚,撞不上墙的概率更高。

更小:参数量只有 MapAnything 的约 1/25(少 96.7%),比 DepthAnything3-Giant 少97.1%。同一个场景里,它看得更清楚,撞不上墙的概率更高。

更快:单目鱼眼 41 FPS,六目混合输入也有 20+ FPS,真正达到实时。机器人边走边看,每一帧都不耽误。

不偏科:回到传统的纯鱼眼(KITTI360)、纯针孔(ETH3D 等)赛道,依然效果能打。它学的不是套路,而是真正的几何理解能力。

打开网易新闻 查看精彩图片

雷达图5:橙色的 X-Lens 在精度、速度、参数量之间取得了最均衡的六边形

打开网易新闻 查看精彩图片

打开网易新闻 查看精彩图片

打开网易新闻 查看精彩图片

打开网易新闻 查看精彩图片

图6: X-Lens在室内外各场景中的实时深度预测结果

落地与规划:从避障到操作

一切需要“边走边看清距离”的机器,都是X-Lens的适用场景:家里的扫地机器人要知道沙发离自己多远;仓库里的搬运车要绕过障碍物;AR眼镜要把虚拟物体“钉”在真实空间里;自动驾驶的环视系统要实时感知周围环境。

过去它们要么依赖激光雷达(贵),要么忍受大模型的延迟(慢)。X-Lens证明了:一个4000万参数的小模型,就能统一处理异构多目相机,在机器人芯片上实时运行

X-Lens的定位兼顾短期落地与长期积累。短期来看,它解决的是机器人多相机异构输入的实时避障和定位问题,已在VODP+模型上完成部署,为机械臂提供带真实尺度的深度特征,任务流畅性大幅提升。在适配VA模型时,X-Lens的表现也优于VGGT。下一步,团队计划将其用于人形机器人的动态操控(Loco-Manipulation),让机器人更好地理解三维动态世界。

长期来看,X-Lens是算法团队在3D几何理解基础模型上的重要积累。下一步将在深度图基础上输出里程计信息,探索新型SLAM定位方案;其预训练骨干网络也可作为VLA(视觉-语言-行动)等端到端操作模型的特征提取器,为人形机器人动态操控提供几何感知基础。

当行业还在追逐更大的模型、更多的参数时,X-Lens走了一条相反的路:用精巧的架构设计,取代粗暴的参数堆砌。