科研学术分享(分享科研成果) ypxx.net

今天介绍一篇视觉里程计方向的新工作:马克视觉里程计。

在此之前,山东济南胡凌翔团队、英国伦敦大学、哈尔滨工程大学、美国加州大学伯克利分校特雷弗·达雷尔团队、德国图宾根大学安德烈亚斯·盖格团队、美国丰田研究院阿德里安·盖东团队、英国牛津大学菲利普·托尔团队,以及美国英伟达研究院扬·考茨团队等,都围绕视觉里程计、深度视觉同步定位与建图、学习型匹配和三维几何优化提出过相关工作。可以说,视觉里程计正在从传统手工特征和几何优化,逐渐走向“学习匹配 + 视觉基础模型 + 可微分位姿估计”的新阶段。而马克视觉里程计正是在这个背景下提出的,它试图通过学习匹配不确定性,让相机轨迹估计在复杂场景中更加稳定。

这里的“马克”是对方法缩写的音译。从技术含义上看,它更准确地说是一种度量感知协方差视觉里程计。

这篇文章关注的问题很实际:

在双目视觉里程计中,系统不仅要知道两个图像点是否匹配,还要知道这个匹配到底有多可靠。

因为视觉里程计的核心,就是通过连续图像之间的匹配关系,估计相机在三维空间中的运动。如果匹配点质量高,轨迹估计就稳定;如果匹配点里混入了大量错误或不可靠点,后端几何优化就容易被带偏。

为什么视觉里程计里的“不确定性”很重要?

传统视觉里程计通常会先提取关键点,再进行匹配,最后通过几何优化估计相机位姿。

但不同关键点的质量其实是不一样的。

有些点位于纹理丰富的角点、边缘或者稳定结构上,匹配比较可靠;有些点位于弱纹理区域、反光区域、动态物体或者遮挡边界附近,匹配就很容易出错。

过去很多方法会根据纹理强度、角点响应或者匹配距离来判断一个点是否可靠。

但这些判断不一定真正反映三维几何里的误差。

比如一个点在图像上看起来很明显,但如果它的深度不稳定,或者左右目匹配存在空间偏差,那么它对位姿估计仍然可能是有害的。

马克视觉里程计想解决的就是这个问题:

不只是判断一个点看起来好不好,而是学习它在真实三维几何中到底有多不确定。

核心思路:学习“度量感知协方差”

这篇文章最核心的概念是度量感知协方差。

听起来有点抽象,可以先拆开理解。

“协方差”可以理解为不确定性。

如果一个匹配点的不确定性很小,说明模型很相信它;如果不确定性很大,说明这个点可能不可靠。

“度量感知”则表示这种不确定性不是随便定义的,而是要和真实空间里的几何误差有关。

换句话说,马克视觉里程计希望模型学到:

这个点在三维空间里可能偏多少?它在不同方向上的误差是否一样?它能不能可靠地用于位姿估计?

这比简单给每个点一个置信度更细。

普通置信度可能只是一个数,比如“这个点可靠度 0.8”。

但协方差可以表达更丰富的信息,比如某个点在水平方向误差小,在深度方向误差大;或者不同方向之间还存在相关性。

这对于几何优化很有价值。

方法第一步:用不确定性筛选关键点

马克视觉里程计首先把学习到的不确定性用于关键点筛选。

传统方法喜欢选择纹理丰富的点,因为这些点容易检测和匹配。但纹理丰富不代表几何上一定可靠。

马克视觉里程计的思路是:

选择那些不确定性更低、几何一致性更好的点。

也就是说,它不是单纯看图像纹理,而是看这个点在整体匹配和三维注册中的可靠程度。

这样一来,一些看起来明显但几何不稳定的点会被过滤掉;一些对位姿估计更有帮助的点会被保留下来。

这一步的作用很直接:

让前端输入后端的点更干净。

方法第二步:用协方差给残差加权

关键点筛选之后,系统还要进行位姿图优化。

位姿图优化可以理解为:系统把很多帧之间的相对运动约束放在一起,通过优化让整体轨迹更加一致。

在这个过程中,每个匹配点都会产生一个几何残差。

问题是,不同残差不应该同等对待。

如果某个匹配点很可靠,它的残差就应该被更重视;如果某个匹配点不确定性很高,它的残差就应该被降低权重。

马克视觉里程计把学习到的协方差信息放进优化里,用来给残差加权。

通俗地说就是:

可靠的点多听一点,不可靠的点少听一点。

这其实非常符合直觉。

做轨迹估计就像听很多人给你指路。有些人很靠谱,有些人可能看错了方向。一个聪明的系统不应该把所有人的意见平均对待,而应该更相信可靠信息。

方法第三步:建模空间误差和方向相关性

这篇文章和一些普通学习型不确定性方法不同。

很多方法只预测一个简单的对角权重,也就是默认不同方向的误差互不相关。

但真实三维几何里,误差往往不是这么简单。

比如一个点在图像平面上的误差、深度方向的误差、左右目注册误差,可能彼此有关。某些方向上误差更大,某些方向上误差更小。

马克视觉里程计设计的度量感知协方差模型,就是为了更好地捕捉这种空间误差和不同轴之间的相关性。

这让后端优化更细致。

不是简单说“这个点好”或者“这个点坏”,而是说:

这个点在哪些方向上可靠,在哪些方向上不可靠。

这样的信息对相机位姿估计非常有帮助。

为什么这对复杂环境有用?

视觉里程计在真实场景里经常会遇到各种问题。

比如光照变化、弱纹理、运动模糊、快速转向、重复结构、特征密度不均匀等。

在这些情况下,传统方法容易把一些不稳定特征也纳入优化,导致轨迹估计变差。

马克视觉里程计的优势在于,它不是盲目相信所有匹配,而是让模型主动估计每个匹配的不确定性。

当环境复杂时,模型可以自动降低低质量匹配的影响,从而提高整体鲁棒性。

所以它的关键不是“找到更多点”,而是“知道哪些点该信”。

和传统视觉里程计有什么不同?

传统视觉里程计更依赖人工设计的规则。

比如关键点强度高就保留,匹配距离小就认为可靠,残差大就当作外点处理。

这些规则在很多场景下有效,但它们不一定能准确表达真实三维误差。

马克视觉里程计则更偏学习型方法。

它通过学习得到匹配不确定性,再把这种不确定性用于前端关键点选择和后端优化。

这让系统从“手工判断可靠性”,变成“学习判断可靠性”。

也就是说,它不是只学习一个匹配网络,而是把学习到的不确定性真正嵌入几何优化流程里。

实验说明了什么?

论文在公开视觉里程计基准上进行了实验,结果显示马克视觉里程计在复杂环境中表现出较强的鲁棒性。

尤其是在光照变化、特征密度变化和运动模式复杂的场景中,学习到的协方差可以帮助系统更好地选择关键点,并更合理地加权几何残差。

论文还强调,这种协方差图本身也有意义。

它不仅能帮助估计相机位姿,还能告诉系统当前估计结果是否可靠。

这对自动驾驶、机器人和无人机非常重要。

因为真实系统不仅需要一个轨迹结果,还需要知道这个结果到底能不能信。

这篇文章的亮点在哪里?

我觉得它的亮点主要有三个。

第一,它把“不确定性”放到了视觉里程计的核心位置。

过去很多方法关注如何提取更强特征、如何匹配更多点、如何设计更好的优化器。而马克视觉里程计关注的是:这些点到底有多可靠。

第二,它把学习模块和几何优化结合得比较自然。

学习模型负责估计匹配不确定性,几何后端负责利用这些不确定性进行位姿优化。两者不是割裂的,而是服务于同一个目标。

第三,它的协方差不仅用于后端加权,也用于前端关键点筛选。

这说明它不是把不确定性当作一个附加输出,而是贯穿整个视觉里程计流程。

我的看法

我个人感觉,这篇文章最有价值的地方在于,它没有只追求“匹配更多点”,而是强调“匹配点是否值得相信”。

这对视觉里程计非常关键。

因为轨迹估计不是点越多越好。如果很多点质量差,反而会把优化带偏。真正重要的是找到那些几何上可靠、对位姿估计有帮助的点。

马克视觉里程计的思路很务实:

前端用学习到的不确定性筛掉低质量点;后端用协方差加权残差;最后让整条轨迹估计更稳定。

这代表了学习型视觉里程计的一个重要方向:

不只是学习特征和匹配,还要学习几何不确定性。

不足在哪里?

当然,马克视觉里程计也不是没有局限。

首先,它是双目视觉里程计,需要双目相机输入。相比单目方法,它更容易获得尺度,但硬件要求也更高。

其次,它依赖学习到的不确定性。如果训练数据和真实应用场景差异很大,协方差预测是否仍然可靠,需要进一步验证。

第三,它主要解决的是视觉里程计中的匹配可靠性和位姿优化问题,但对于强动态物体、长期回环、全局地图一致性和语义理解等问题,还需要其他模块配合。

第四,协方差建模虽然更细致,但也会带来额外计算和系统复杂度。在实时机器人平台上,如何平衡精度、速度和资源占用,仍然是实际部署时要考虑的问题。

总结

马克视觉里程计可以用一句话概括:

它让视觉里程计不仅会找匹配点,还会判断每个匹配点在三维几何中到底有多可靠。

它通过学习度量感知协方差,把匹配不确定性同时用于关键点筛选和位姿图优化。

这种设计让系统在复杂环境中可以更聪明地选择信息来源:可靠的点多用,不可靠的点少用。

对于机器人、无人机和自动驾驶来说,这类方法很有意义。因为真实世界里的视觉信息并不总是干净可靠,系统必须知道自己该相信什么。

从这个角度看,马克视觉里程计代表了一种趋势:

未来的视觉里程计不只是要“看得见”和“匹配上”,还要知道“哪些匹配值得相信”。