浅谈DM-VIO中的延迟边缘化问题

简介

对于DM-VIO系统进行解析需要了解作者团队以往的工作DSO和VI-DSO,本篇主要的创新点也是比较有意思的地方主要有两个,一个是延迟边缘化的概念,另外是基于延迟边缘化提出维护两个因子图的思路。

整个算法跟踪似乎还是以DSO中的直接法前端为主,因此对于帧间跟踪可以达到97FPS的处理速度,然后加入了对关键帧延迟边缘化的一些处理,关键帧的处理设计到优化等操作,处理速度大概在20FPS。
在这里插入图片描述

1.延迟边缘化

根据作者提供的示意图进行描述,主要是图a)和图b)。在DM-VIO中会同时维护两个因子图,main因子图和second因子图,这里简称他为主图和从图。

主图维持一个由Nf个关键帧(图示中Nf=4,实际算法中Nf=8)组成的滑动窗口。

再说从图,这里就引入了延迟边缘化以及延迟帧数d的概念。从示意图上看,前面在主图中依次对位姿P1,P2,P3,P4进行了边缘化,当主图完成第4个位姿P4的边缘化后对应的因子图和从图中尚未进行边缘化的因子图使用虚线箭头进行连接,然后主图中对第5个位姿进行边缘化后的因子图和从图中完成第1个位姿P1边缘化后的因子图使用箭头进行连接。这时差不多可以看出来延迟边缘化是怎么个延迟法了,就是从图中对位姿边缘化时落后于主图d个图像帧,真实情况下d=100,也就是可以维持97个位姿的因子。

2.主图和从图之间的关系

下面加粗的这段话摘自https://blog.csdn.net/qq_42257666/article/details/128560691

延迟图中的边缘化与原始图中的边缘化具有相同的运行时间:延迟图包含与原始图相同的光度因子,并且点同时被边缘化。这意味着延迟图中的每个线性化光度因子都恰好连接到Nf=8生成相应因子时处于活动状态的关键帧。通过保持边缘化顺序,延迟图中的马尔可夫毯始终与原始图中的马尔可夫毯具有相同的大小。因此,舒尔补的运行时间是相同的。这意味着即使对于任意大的延迟,延迟边缘化的开销也非常小,因为它只相当于每个延迟图的额外边缘化过程。

大概是对这一部分的理解。

首先是延迟图包含与原始图相同的光度因子
根据图a和图b,主图中每一个位姿的光度因子都被保留在了从图中(就是对于每一个线性点对应的连线),如在图a中的第一个因子图,对于当前活跃的观测和位姿p0,p1,p2,p3产生了约束关系,同样的这种约束关系被保留在了下面的从图中;然后图a中第三个因子图,此时的活跃观测和位姿p0,p5,p6,p7存在约束关系,则这种约束关系也在从图中进行了体现。

并且点同时被边缘化。
这个就是正常的边缘化操作,即在延迟图中某个位姿被边缘化时,该位姿对应的观测也会被相应的进行边缘化处理。

这意味着延迟图中的每个线性化光度因子都恰好连接到Nf=8生成相应因子时处于活动状态的关键帧。
延迟图包含与原始图相同的光度因子对应,在延迟边缘化的因子图中,主图每次边缘化对应的光度线性化因子都在从图中保留。

通过保持边缘化顺序,延迟图中的马尔可夫毯始终与原始图中的马尔可夫毯具有相同的大小。
从图对位姿的边缘化顺序和主图中的边缘化顺序相同,比如主图依次对p1,p2,p3,p4进行边缘化,从图也按照该顺序进行边缘化。因为边缘化的顺序相同,对于每个线性化因子来说其马尔可夫毯也就是连接关系也是相同的。

舒尔补的运行时间是相同的
因为对于每个线性化因子,其连接关系在主图还是次图都是相同的,所以舒尔补计算边缘化的时间也是相同的。这也就是说需要计算两次边缘化,只不过时间上都相差不大罢了。因为主图滑窗中的关键帧数量也是有限的(8个),就像p0一样,虽然和p5,p6,p7同样也存在这约束关系,但是等到将p0进行边缘化时,其边缘化产生的先验也不过是对567三帧形成约束。

3.延迟图是怎么对主图进行反馈的

对于上述内容只是介绍了延迟边缘化的概念,在论文中所述延迟边缘化是为了解决边缘化过程中线性化点早期固定带来的不一致问题以及导致hesian矩阵变得稠密。

在进行IMU初始化时,会首先将IMU的预积分数据(速度和偏置信息)填充到因子图中(见图c),然后完成IMU的初始化(主要是对尺度、重力方向,速度进行位姿图BA优化)。

据我猜测(待验证!!!!),根据图c中所显示的,目前从图已经完成p1帧的边缘化,主图完成了p1,p2,p3,p4帧的边缘化。Hence, marginalizing step by step is significantly faster than marginalizing all variables at once这句话大概是讲,在从图完成IMU的初始化之后按照主图边缘化的顺序依次对p2,p3,p4进行边缘化(这个过程只更新先验信息并不进行优化操作),同时因为已经引入了IMU的预积分数据,所以这时的边缘化先验信息包括了视觉和惯性的因子。

从图的边缘化先验信息对主图的反馈应该是在Marginalization Replacement部分进行了描述。
在IMU完成初始化后会根据尺度因子的变化程度决定是否执行边缘化替代操作。

对于线性化点不一致的问题,在进行逐步边缘化时没有优化只是不断得更新了边缘化因子的信息,不涉及到优化和状态变量的更新,也就不存在线性化点不一致性的问题了???另外又想到在b图中对p1进行边缘化时,这时的p1相关的线性化因子已经被固定了,即处于非活跃状态,这样也不会出现线性化点不一致的问题???

猜你喜欢

转载自blog.csdn.net/guanjing_dream/article/details/129289178