CVPR2021:推广到开放世界的在线自适应深度视觉里程计

技术讨论 hello_uncle ⋅ 于 2周前 ⋅ 91 阅读

作者丨Amber
来源丨3D视觉工坊
编辑丨极市平台

Generalizing to the Open World Deep Visual Odometry with Online Adaptation CVPR2021:推广到开放世界的在线自适应深度视觉里程计

摘要

近些年,基于学习的视觉里程计已经展现出了较为可观的结果,但预训练网络在未知环境中很容易失效。在这篇论文中,提出一个用于深度VO的在线自适应网络(借助场景不可知的几何计算和贝叶斯推理的辅助)。与基于学习的位姿估计不同,论文的苏阿女法从深度和光流中解算出位姿,同时通过在线学习新观测的不确定性不断提高单证图像的深度估计。另外,通过差分高斯牛顿层,一种在线学习光度不确定性算法也被用于进一步的深度和位姿估计。论文提出的算法在KITTI室外数据集和TUM室内数据集上得到了验证,实验证明,我们的算法在自监督VO算法中实现了最佳的泛化能力(泛化能力:机器学习算法对新样本的适应能力)。

主要内容

经典的SLAM/VO算法由于依赖底层特征因此在弱纹理、动态环境下表现性差,而深度神经网络可以提取高级特征和并通过学习进行端到端的推断,许多基于学习的VO算法已打破了经典VO的限制。在这些算法中,自监督VO算法能通过最小化光度误差同时学习相机位姿、深度和光流。然而基于学习的VO当遇到与预训练环境不同的场景时,表现性能较差,因此预训练网络需要以自监督的方式实现在线自适应。

为提高未知场景下VO的在线自适应能力,论文提出了一种自监督的架构,结合了深度学习和几何计算的优点。主要贡献:

  1. 提出一个泛化的深度VO,其使用场景未知几何公式和贝叶斯推断来加速自监督在线自适应性;

  2. 估计的深度不断被贝叶斯融合网络优化,后续用于训练深度和光流

  3. 引入在线学习的深度和光流不确定度以实现精度更高的深度估计和差分高斯牛顿优化。

整体结构

系统框架图

首先,FlowNet网络估计关键帧和当前帧之间的稠密光流,同时估计光流不确定度映射。另外,使用DepthNet网络估计关键帧的深度均值和不确定度(为当前场景几何提供先验)。通过本质矩阵或PNP从被选择的匹配图像中求解位姿。在线自适应阶段,首先通过可微三角化算法重建了的稀疏深度。然后先验关键帧深度通过贝叶斯更新网络的深度估计得到进一步的提高。接着,差分高斯牛顿层最小化了和的光度损失。最后,优化后的深度和光流作为伪真值来监督DepthNet和FlowNet的在线学习。

【从光流中进行位姿恢复】

使用RAFT学习关键帧和当前帧之间的稠密光流,关键帧和上一帧之间的光流作为先验来初始化当前光流估计。选择鲁棒的对应关系(),设定这个对应关系有较好的前后光流一致性和适度的流动幅度:

通过用RANSAC算法求解本质矩阵来计算关键帧和当前帧之间的位姿:

通过PNP算法,最小化重投影位姿来计算相机的位姿:

【深度模型】

论文提出在一个统一的贝叶斯网络中建模深度估计和更新。由于逆深度遵循高斯分布且比目标距离更具有鲁棒性,因此使用逆深度进行建模。将好的逆深度测量值建模为围绕真值的高斯分布,而不好的逆深度视为观测噪声,均匀分布于:

在线推导阶段,我们在每个时间戳上寻找的最大后验估计,可用的高斯分布和贝塔分布来近似:

DepthNet中关键帧的深度通过单张图像估计和逆深度的不确定度来进行初始化:

在自适应过程中,DeepNet在线学习新的场景几何的先验知识。此外,学习到的不确定性还可以用来衡量概率深度融合的可靠性。

【在线深度优化】

关键帧的深度估计可进一步通过双视图三角化进行计算:

其中,dis()表示距离。中点三角化是差分的,是的我们的VO架构可以实现端到端的在线学习。在线自适应过程中,用于更新先验深度估计从而获得MAP估计,如下图:

【学习不确定度的光度误差】

已知估计的位姿和优化后的深度,可通过转换到来合成:

然而视场合成是建立在光度一致性假设下,实际中可能并不适用。为了缓解这种情况,我们将这种情况视为观测噪声并使用深度神经网络来对每个RGB像素估计一个后验概率分布。通过将观测噪声设想为拉普拉斯形式,在线学习过程可以被建模为最小化负对数,从而来转换光度损失:

【差分高斯牛顿优化】

进一步,论文提出使用差分高斯牛顿层来最小化,从而实现优化深度和位姿。计算两个关键帧中每一个像素的权重光度损失:

计算关于和的一阶偏导:

得到当前估计的增量:

高斯-牛顿算法是自然可微的,我们实现它作为一个层的神经网络。在实践中,我们发现它只在3次迭代内收敛

【损失函数】

论文提出使用下列的损失函数来以自监督的形式在线学习DepthNet和FlowNet。

  1. Smoothness loss

为了加强局部平滑,我们引入了深度和光流的边缘感知损失:

  1. Depth Loss

  1. Flow Loss

优化后的深度和位姿可用于合成光流,在在线自适应过程使用来监督FlowNet:

  1. Photometric Loss

在之前定义过光度损失,因此总的损失函数为:

实验

对于DepthNet网络,使用与Monodepth同样的架构,并在输出时增加一个5*5的卷积层来估计深度不确定度映射;光流网络是基于RAFT的,在输出时增加了一个5*5的卷积层和Sigmoid层来估计光流不确定度。FlowNet和DepthNet先以自监督的方式进行进行预训练,Adam优化器使用的参数。在在线自适应阶段,我们在每一个时间戳进行两次迭代重新训练FlowNet和DepthNet。

论文的实验方面,是在Cityscapes数据集上进行预训练的,在KITTI数据集上进行测试。比较了当前较好的自监督VO:GeoNet, Vid2Depth, Zhan, SAVO, Li以及经典算法ORB-SLAM2和VISO2。另外对比了Zhao和DF-VO,这两种算法都结合了预训练网络和经典的VO过程。

上图是在KITTI数据集上测试的深度估计结果,得益于论文提出的三角化过程和多帧深度优化,算法在边缘估计上得到了较好的表现能力。

结论

在本文中,我们提出了一个基于场景不可知几何计算和贝叶斯推理的深度VO在线自适应框架。利用贝叶斯深度滤波器对观测数据进行改进,得到了预测的单视图深度。同时,为了处理观测噪声,我们对深度和光度的不确定性进行了显式建模。利用可微高斯-牛顿层优化的位姿、深度和光流进行在线自我监监督。大量的环境变化实验表明,我们的方法比目前最先进的基于学习的VO方法有更好的泛化能力。

本文仅做学术分享,如有侵权,请联系删文。

导读

使用上下文注意力来进行深度图像修复。

今天,我们将深入探讨深度图像修复的一个突破,上下文注意力。通过使用上下文注意力,我们可以有效地从遥远的空间位置借用信息来重建局部缺失的像素。这个想法实际上或多或少和上一篇的复制-粘贴是一样的。让我们看看是如何做到的。

回顾

在之前的文章中,我介绍了使用shift连接层将未缺失区域生成的特征作为参考来恢复缺失区域,可以让我们得到更好的修复结果。在这里,我们假设生成的特征是对ground truth的合理估计,并根据已知区域的特征与缺失区域内生成的特征之间的相似性来确定合适的参考。

动机

在图像修复任务中,CNN的结构不能有效地模拟缺失区域与遥远空间位置给出的信息之间的长距离相关性。熟悉CNN的人应该知道,在卷积层,核的大小和膨胀率控制着感受野,网络需要越深入,才能看到整个输入图像。这意味着,如果我们想捕捉图像的上下文,我们必须依赖于更深的层次,但我们丢失了空间信息,因为更深层次的特征的空间大小总是更小。因此,我们必须找到一种方法,在不用太加深网络的情况下,从遥远的空间位置借用信息(即理解图像的上下文)。如果你还记得什么是膨胀卷积,你就会知道膨胀卷积是一种在早期的层中增加感受野而不添加额外参数的方法。然而,膨胀卷积有其局限性。它跳过连续的空间位置,以扩大感受野。请注意,跳过的连续空间位置对于填充缺失的区域也很关键。

介绍

这项工作与我们以前讨论过的网络架构、损失函数和相关技术类似。对于该体系结构,所提出的框架由两个生成器网络和两个判别器网络组成。这两个生成器在全卷积网络的基础上使用了膨胀卷积。一个生成器用于粗重建,另一个用于细化。这被称为标准的从粗到细的网络结构。这两个判别器同时在全局和局部看完整的图像。全局判别器以整个图像作为输入,而局部判别器以填充区域作为输入。对于损失函数,简单地说,他们还使用了对抗损失(GAN损失)和L1损失(为了像素级重建精度)。对于L1损失,他们使用一个spatially discounted L1 loss,其中为每个像素差分配一个权值,权值基于像素到其最近的已知像素的距离。对于GAN损失,他们使用WGAN-GP损失,而不是我们所介绍的标准的对抗损失。他们声称,这种WGAN对抗性损失也是基于L1距离度量,因此网络更容易训练,训练过程也更稳定。在这篇文章中,我将专注于提出的上下文注意力机制。因此,我简要地介绍了从粗到细的网络架构、WGAN对抗损失和上面的加权L1损失。

方案

本文提出了上下文注意力机制,有效地从遥远的空间位置借用上下文信息来重建缺失的像素。将上下文注意力应用到二次精细化网络中。第一个粗重建网络负责对缺失区域进行粗估计。与前面一样,使用全局和局部判别器来鼓励生成的像素获得更好的局部纹理细节。

贡献

图1,该模型在自然场景、人脸和纹理图像上的修复效果实例。

本文最重要的思想是上下文注意力,它允许我们利用来自遥远空间位置的信息来重建局部缺失的像素。其次,使用对抗性损失和加权L1损失提高了训练的稳定性。此外,本文提出的修复框架在自然场景、人脸、纹理等各种数据集上都获得了高质量的修复结果,如图1所示。

方法

图2,所提出修复方法的网络架构

图2显示了所提出修复框架的网络架构,如前所述,它由两个生成器两个鉴别器组成。

上下文注意力

以下是这篇文章的主要关注点。让我们来看看上下文注意力层是如何设计来借用遥远空间位置已知区域给出的特征信息来生成缺失区域内的特征的。

图3,上下文注意力层的图形说明

图3显示了上下文注意层的图形说明。运算是可微且全卷积的。

图4,更多关于注意力注意力层的具体例子

图4是上下文注意层的一个更详细的示例。如图3所示,前景是指在缺失区域内生成的特征,背景是指从已知区域中提取的特征。与复制粘贴方法类似,我们首先要对缺失区域内生成的特征与缺失区域外的特征进行匹配。以图4为例,生成的缺失区域内的特征大小为64×64×64,假设缺失区域外的特征分为128个小特征patch,大小为64×3×3。注意,本例中特征的通道大小是64。然后,我们将128个小的feature patch与缺失区域内生成的feature进行卷积,得到大小为128×64×64的feature map。在本文中,该操作描述为:其中{fx,y}为前景patches的特征, {bx'y'}为背景patches的特征。sx,y,x',y'是缺失区域特征和已知区域特征之间的相似性。实际上,这是一个标准的余弦相似度计算过程。
当我们沿着通道维数看时,128个元素代表了所有已知patches和缺失区域内特定位置之间的相似性。这反映了128个已知patches对该位置的贡献。然后,我们沿着通道维度对特征映射执行Softmax归一化,如图4中的蓝色区域所示。在Softmax归一化后,沿通道尺寸的每个位置之和应为1。

与上一篇文章中提到的Shift-Net相比,你可以看到,这一次我们给每个已知特征的patch分配了权重,来表示重建的时候每个特征位置对于缺失区域的重要性(软分配),而不是对于缺失区域的每个位置找一个最相似的(硬分配)。这也是为什么提出的上下文注意力是可微的。

最后,以注意力特征图为输入特征,以已知的patches为核,通过反卷积的方法重建缺失区域内生成的特征。

注意力传播

注意力传播可以看作是注意特征图的微调。这里的关键思想是,邻近的像素通常有更接近的像素值。这意味着他们会考虑周围环境的注意力值来调整每个注意力分数。例如,如果我们考虑左邻居和右邻居的注意力值,我们可以使用上面列出的公式更新当前的注意力值。注意,_k_控制要考虑的邻居的数量。
作者声称,这可以进一步提高修复结果,这也可以通过与单位矩阵卷积作为核来实现。关于注意力机制的另一点是,采用了两种技术来控制提取的已知特征块的数量。i) 以较大的步长提取已知的特征patch,以减少kernel数量。ii) 操作前先对特征图大小进行向下采样,获取注意力图后再进行上采样。

网络中的注意力

图5,在第二个细化网络中嵌入上下文注意力层的图解

图5显示了作者如何将建议的上下文注意层整合到第二个细化网络中。你可以看到,又引入了一个分支来应用上下文注意力,然后将两个分支连接起来以获得最终的修复结果。注意力图的颜色编码是注意力图的可视化方法。例如,白色意味着像素集中在自己身上,粉色是左下角区域,绿色是右上角区域,等等。你可以看到,这个例子有一个充满粉红色的注意力图。这意味着填充区域从左下角区域借用了很多信息。

实验

作者首先比较了我们之前介绍的先前最先进的技术。

图6,比较提出的基线模型和GLCIC,从左到右,输入图像,GLCIC结果,基线结果

图6显示了使用建议的基线模型和以前最先进的GLCIC[2]进行修复的结果。提出的基线模型如图2所示,上下文注意力分支。很明显,基线模型在局部纹理细节方面优于GLCIC模型。请放大看清楚些。

图7,对比基线和完整模型的修复结果。从左到右,ground truth,输入图像,基线结果,全模型结果,全模型注意图

图7显示了在Places2数据集上使用基线模型和完整模型(带有上下文注意)的定性结果。可见,完整模型具有较好的局部纹理细节,提供了较好的修复效果。这反映了上下文注意力层可以有效地从遥远的空间位置借用信息来帮助重建缺失的像素。请放大以便更好地观看,特别是注意力图。

表1,不同方法在Places2数据集上的定量比较

表1列出了一些客观的评价指标,供参考。如前所述,这些指标不能完全反映修复结果的质量,因为有许多可能的解决方案来填补缺失的区域。你可以看到,建议的完整模型提供最好的L1, L2损耗和PSNR。对于电视丢失,PatchMatch提供更低的电视丢失,因为它直接复制原始图像patch来填补漏洞。供参考的全模型参数为2.9M。对于大小为512×512的图像,GPU上每张图像需要0.2秒,CPU上每张图像需要1.5秒。

消融研究

注意力机制并不是一个新概念,文献中有几个注意力模块。作者们用不同的注意力模块做了实验。

图8,通过使用不同的注意力模块进行修复。从左到右:输入,使用空间变换网络的结果,使用外观流的结果,以及使用提出的上下文注意力的结果

比较了文献中两个著名的注意力模块,即空间变换网络和外观流。简单来说,对于外观流,使用卷积层代替上下文注意力层,直接预测二维像素偏移量作为注意力。这意味着我们添加一个卷积层来预测已知像素到缺失像素的移动。在图8中,你可以看到使用外观流(中间)为不同的测试图像提供类似的注意力图的结果。这就意味着注意力图对于给予我们想要的“注意力”是没有用的。你也可以观察到空间变换网络(左)不能为图像修复任务提供有意义的注意力图。一个可能的原因是空间变换网络预测全局仿射变换的参数,这并不足以帮助填补缺失的区域,也需要局部信息。这里我没有深入讲解不同的注意力模块。图像修复中GAN损失的选择。作者实验了不同的GAN损失,如WGAN损失,典型的对抗性损失,和最小平方GAN。他们通过经验发现WGAN损失提供了最好的修复效果。重要的重建损失。在不使用L1损失的情况下训练了细化网络。他们发现L1损失对于确保像素级重建精度是必要的,L1损失也会使修复结果变得模糊。因此,L1损失对于保证完整图像更好的内容结构至关重要。感知损失,风格损失,TV损失。我们将很快说到感知损失和风格损失。一个简单的结论是,这三种损失并没有给修复效果带来明显的改善。因此,他们的模型只使用加权L1损失和WGAN损失进行训练。

总结

显然,本文的核心思想是上下文注意力机制。上下文注意力层嵌入到第二个细化网络中。注意,第一个粗重建网络的作用是对缺失区域进行粗略估计。这种估计用于上下文注意力层。通过匹配缺失区域内生成的特征和缺失区域外生成的特征,我们可以知道缺失区域外所有特征对缺失区域内每个位置的贡献。注意,上下文注意力层是可微的和完全卷积的。

要点

你可能会发现,我们正越来越深入到深度图像修复领域。我在上一篇文章中介绍了Shift连接层,它以硬分配的形式在CNN中嵌入了复制-粘贴的概念。本文以软分配的形式构造了一个上下文注意力层,该层是可微的,并且可以端到端学习,无需修改梯度的计算。希望大家能够掌握本文提出的上下文注意力层的核心思想,特别是图3和图4所示的上下文注意力层公式。

英文原文:https://towardsdatascience.com/a-breakthrough-in-deep-image-inpainting-review-generative-image-inpainting-with-contextual-1099c195f3f0

大叔

成为第一个点赞的人吧 :bowtie:
回复数量: 0
暂无回复~
您需要登陆以后才能留下评论!