ECCV'24 | ETH开源GOLMAP:全局SfM比COLMAP快几个数量级?

作者 | Linfei Pan  编辑 | 3D视觉之心

点击下方卡片,关注“自动驾驶之心”公众号

戳我-> 领取自动驾驶近15个方向学习路线

>>点击进入→自动驾驶之心三维重建技术交流群

本文只做学术分享,如有侵权,联系删文

重新审视全局式SfM

运动恢复结构(Structure-from-Motion, SfM)多年来已经形成了两种主要的解决范式:增量式全局式。这两者都以基于图像的特征提取和匹配开始,然后通过两视图几何估计构建输入图像的初始视图图。增量方法从两个视图开始重建,并通过逐步注册附加的相机图像和相关的三维结构来扩展重建。这一过程交替进行绝对相机姿态估计、三角测量和捆绑调整,尽管实现了高精度和鲁棒性,但由于重复的捆绑调整的高成本,限制了其可扩展性。相反,全局方法通过在视图图中联合考虑所有两视图几何,一次性恢复所有输入图像的相机几何。通常,全球估计的相机几何用作三维结构三角测量的初始化,然后进行最终的全局捆绑调整步骤。

ebb51c5c1e4857f1c16ba80b7a17cc06.png

本文介绍的GLOMAP[1]是能够在准确性和鲁棒性方面达到或超过最先进的增量SfM水平的综合系统(例如图1a),同时保持全局方法的效率和可扩展性。

增量SfM与全局SfM之间的准确性和鲁棒性差距的主要原因在于全局平移平均步骤。平移平均描述了从视图图中的相对姿态集合中估计全局相机位置的问题,此前通过旋转平均恢复相机方向。在实践中,这一过程面临三个主要挑战:

  1. 尺度歧义:从估计的两视图几何中得出的相对平移只能确定到尺度。因此,为了准确估计全局相机位置,需要三元相对方向。然而,当这些三元形成歪斜的三角形时,估计的尺度特别容易受到观测中的噪声影响。

  2. 准确分解相对两视图几何为旋转和平移分量需要准确的相机内部参数的先验知识。如果没有这些信息,估计的平移方向通常会出现较大误差。

  3. 在几乎共线运动时,会导致退化的重建问题。这种运动模式在顺序数据集中尤其常见。这些问题共同导致相机位置估计的不稳定性,严重影响了现有全局SfM系统的整体准确性和鲁棒性。

受平移平均困难的启发,许多研究致力于解决这一问题。许多最近的方法具有一个共同特点,即在问题公式中引入了图像点。基于这一见解,该全局SfM系统直接将相机位置和三维结构的估计结合在一个全局定位步骤中。

GLOMAP与以前的全局SfM系统相比,其核心区别在于全局定位步骤。不是先执行不适定的平移平均然后进行全局三角测量,而是进行联合相机和点位置估计。GLOMAP在鲁棒性和准确性方面达到与最先进的增量SfM系统相当的水平,同时保持全局SfM管道的效率。与大多数以前的全局SfM系统不同,我们的方法可以处理未知的相机内参(例如,网络照片中常见的情况)并能鲁棒地处理顺序图像数据。

  • 项目主页:https://lpanaf.github.io/eccv24_glomap/

  • 论文链接:https://demuc.de/papers/pan2024glomap.pdf

  • 代码地址:https://lpanaf.github.io/eccv24_glomap/

技术贡献

图2是该方法为改进全局 SfM 的最新技术并在稳健性和准确性方面缩小与增量 SfM 的差距而做出的关键技术贡献。

0fe5d4952b7b2f3a5da3e7d3e138332f.png

特征轨迹构建

为了实现准确的重建,特征轨迹必须被精心构建。首先只考虑通过两视图几何验证产生的内点特征对应。在这一步,区分两视图几何的初始分类:如果单应性矩阵  最能描述两视图几何,使用  来验证内点。同样的原则也适用于基本矩阵  和基础矩阵 。进一步通过执行正负性测试来过滤掉外点。匹配点如果接近任一极点或具有小三角测量角度,也会被移除,以避免由于大的不确定性导致的奇点。在所有视图图边进行成对过滤后,通过连接所有剩余的匹配点来形成特征轨迹。

全局相机和点定位

1367525da3f6f3477211f839c7a8732e.png

此步骤旨在联合恢复点和相机位置(见图3)。不进行平移平均再进行全局三角测量,而是直接执行联合全局三角测量和相机位置估计。与大多数以前的工作不同,目标函数无需初始化,并在实践中始终收敛到一个良好的解决方案。在标准的增量和全局SfM系统中,特征轨迹通过重投影误差进行验证和优化,以确保可靠和准确的三角测量。然而,跨多个视图的重投影误差高度非凸,需要仔细的初始化。此外,误差是无界的,因此对外点不鲁棒。

为克服这些挑战,使用归一化方向差异作为误差度量。原始公式是针对相对平移提出的,我们舍弃了相对平移约束,只包括相机射线约束。具体来说,问题被建模和优化为:

d6587a0c23268a083a00e70bea16bdc4.png

其中,  是观察点  的全局旋转相机射线,来自相机 ,而  是一个归一化因子。使用Huber作为鲁棒化函数 ρ ,并使用Ceres中的Levenberg–Marquardt作为优化器。所有点和相机变量通过在 [-1, 1] 范围内的均匀随机分布初始化,而归一化因子初始化为 。将涉及未知内部参数的相机的权重减半,以减少它们的影响。

与重投影误差相比,这有几个优点。首先是鲁棒性。虽然重投影误差是无界的,上述误差严格限制在 [0, 1] 范围内。因此,外点不会严重偏向结果。其次,正如我们在实验中所展示的,由于其双线性形式,目标函数在随机初始化下可靠地收敛。

与经典的平移平均相比,在优化中舍弃相对平移项有两个关键优势。首先,我们的方法适用于相机内部参数不准确或未知的数据集以及不遵循预期针孔模型的退化相机(例如,处理任意互联网照片时)。这是因为解决相对平移问题需要准确的内部参数知识。当它们偏离预期值时,估计的两视图平移误差很大。由于平移平均固有的不适定性,未知尺度使得从噪声和外点污染的观测中恢复相机位置具有挑战性,特别是在较长基线时相对平移误差加剧。我们的提出的框架依赖于仔细过滤的两视图几何,并根据相机射线定义误差。因此,差的相机内部参数只会偏向单个相机的估计,而不会偏向其他重叠的相机。其次,我们的方法在共线运动场景中的适用性,这是平移平均的已知退化情况。与成对相对平移相比,特征轨迹约束多个重叠的相机。因此,提出的框架在常见的前向或侧向运动场景中更可靠

全局捆绑调整

全局定位步骤为相机和点提供了鲁棒的估计。然而,准确性有限,尤其是在相机内参未知的情况下。作为进一步的精炼,使用Levenberg-Marquardt和Huber损失作为鲁棒器进行多轮全局捆绑调整。在每轮调整中,首先固定相机旋转,然后与内参和点共同优化。这样的设计对于重建序列数据特别重要。在构建第一个捆绑调整问题之前,基于角度误差对三维点观测进行预过滤,同时允许未校准相机有更大的误差。随后,基于图像空间中的重投影误差对轨迹进行过滤。当过滤轨迹的比例低于0.1%时,迭代停止。

相机聚类

对于从互联网收集的图像,非重叠图像可能会错误地匹配在一起,从而导致不同的重建结果混合成一个。为了解决这个问题,通过执行相机聚类来对重建结果进行后处理。首先,通过计算每对图像之间的可见点数来构建共视图图 。对于少于5个可见点的图像对将被丢弃,因为在这种情况下无法可靠地确定相对姿态,并使用剩余对的中值来设定内点阈值 τ。然后,通过在  中找到强连通分量来找到受约束良好的相机集群。这些分量仅通过连接具有超过 τ 个可见点的图像对来定义。之后,如果两个强分量之间至少有两个边具有超过 τ 的可见点数,将尝试将它们合并。递归地重复这个过程,直到不再有集群可以合并。每个连通分量作为一个单独的重建结果输出。

方法流程

流程由两个主要部分组成:对应搜索全局估计

  1. 在对应搜索方面,它从特征提取和匹配开始。从匹配中估计两视图几何,包括基本矩阵、基本矩阵和单应性矩阵,几何上不可行的匹配会被排除。然后,对几何验证的图像对进行视图图校准。更新相机内参后,估计相对相机姿态。

  2. 对于全局估计,全局旋转通过平均化进行估计,不一致的相对姿态通过阈值化角距离来过滤。然后,通过全局定位联合估计相机和点的位置,随后进行全局捆绑调整。可选地,可以通过结构细化进一步提高重建的准确性。在此步骤中,使用估计的相机姿态重新三角测量点,并进行多轮全局捆绑调整。还可以应用相机聚类以实现一致的重建。

实验效果

c70ba5e53d28ca64ecd0350f26092421.png 7925fc4492aceca1be2ab0cd142204f2.png 598c2cc4c569596a3cd84b39463b87e8.png 193f4785da5fc603613db1cf9207c71d.png 820b7a10e1ad2f64ce046636c6fceae9.png b81fca29f4b9703dd49755e65084ea3b.png 27edb7f793961cec8d38004c9bb2a47c.png

总结一下

GLOMAP是一种新的全局SfM框架。以前的全局SfM系统被认为更高效但鲁棒性较差,关键在于在优化中使用点。将相机位置的估计与不适定的平移平均和单独的三维结构点三角测量合并到一个全局定位步骤中。该系统在准确性和鲁棒性方面与最先进的增量方法相当或更优,同时速度快了几个数量级。该代码已作为开源项目在商用友好的许可证下发布。

限制:仍然存在一些失败的情况,主要原因是旋转平均失败,例如由于对称结构。在这种情况下,可以与现有方法如Doppelganger结合使用。此外,由于我们依赖传统的对应搜索,错误估计的两视图几何或无法匹配图像对(例如由于剧烈的外观或视点变化)将导致结果恶化,最坏情况下会导致灾难性失败。

参考

[1] Global Structure-from-Motion Revisited

投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!重磅,自动驾驶之心科研论文辅导来啦,申博、CCF系列、SCI、EI、毕业论文、比赛辅导等多个方向,欢迎联系我们!

946ad65f10289284c052aaac3ccc8104.jpeg

① 全网独家视频课程

BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测车道线检测轨迹预测在线高精地图世界模型点云3D目标检测目标跟踪Occupancy、cuda与TensorRT模型部署大模型与自动驾驶Nerf语义分割自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

f30da0c217368fd3b2b3b12b87d702eb.png

网页端官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频

c511eeb22b7898e1eca973f44caa28c2.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

11a776262591c45619667f53e4387eb8.jpeg

④【自动驾驶之心】全平台矩阵

6bf6ecd772913cac85df7557e57a5ffd.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容介绍 项目结构: Controller层:使用Spring MVC来处理用户请求,负责将请求分发到相应的业务逻辑层,并将数据传递给视图层进行展示。Controller层通常包含控制器类,这些类通过注解如@Controller、@RequestMapping等标记,负责处理HTTP请求并返回响应。 Service层:Spring的核心部分,用于处理业务逻辑。Service层通过接口和实现类的方式,将业务逻辑与具体的实现细节分离。常见的注解有@Service和@Transactional,后者用于管理事务。 DAO层:使用MyBatis来实现数据持久化,DAO层与数据库直接交互,执行CRUD操作。MyBatis通过XML映射文件或注解的方式,将SQL语句与Java对象绑定,实现高效的数据访问。 Spring整合: Spring核心配置:包括Spring的IOC容器配置,管理Service和DAO层的Bean。配置文件通常包括applicationContext.xml或采用Java配置类。 事务管理:通过Spring的声明式事务管理,简化了事务的处理,确保数据一致性和完整性。 Spring MVC整合: 视图解析器:配置Spring MVC的视图解析器,将逻辑视图名解析为具体的JSP或其他类型的视图。 拦截器:通过配置Spring MVC的拦截器,处理请求的预处理和后处理,常用于权限验证、日志记录等功能。 MyBatis整合: 数据源配置:配置数据库连接池(如Druid或C3P0),确保应用可以高效地访问数据库。 SQL映射文件:使用MyBatis的XML文件或注解配置,将SQL语句与Java对象映射,支持复杂的查询、插入、更新和删除操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值