Unifying Flow, Stereo and Depth Estimation论文阅读

1. 序言

上篇文章中我们提到了一种在线标定光学防抖主摄和ToF方法。其中使用RAFT作为光流估计网络来进行密集匹配,本文我们来介绍一种更新的光流估计算法GMFlow,其被CVPR2022接收为Oral。同时也将介绍其续作Unimatch,一种整合光流估计,立体匹配和双目深度估计的统一网络。这是一种全新的光流估计范式。

2. 背景

光流描述了两个视频帧像素之间的相对运动,是计算机视觉领域的一个经典问题。光流预测通常是从一对时间相关的图像对中,估计出第一张图像中各个像素点在相邻图像中的位置。

3. GMFlow

3.1. 导读

这篇论文讨论了一种 learning-based 的光流估计方法。目前光流估计主流的方法是使用基于代价体素(cost volume)构建相关,使用2D或者3D卷积进行光流回归。但受限于卷积的局部相关特性,这种方法在处理大的位移时存在困难。为了解决这个问题,现有代表性技术框架RAFT通过使用大量的迭代细化来逐渐提高预测质量,但是这样会增加推理时间。为了在精度和效率之间取得平衡,该论文提出了一种新的光流估计方法GMFlow:它将光流估计任务表示为全局匹配问题,通过直接比较特征相似性来得到匹配关系,直接输出光流。具体来说,GMFlow由三个主要部分组成:一个Transformer用于全局特征增强,一个相关性和softmax层用于全局特征匹配,一个self-attention层用于光流传播。此外,还提出了一种细化步骤,在更高的特征分辨率下复用GMFlow进行残差光流预测。该新框架仅使用一次细化,在具有挑战性的Sintel基准测试中的性能就优于31次细化的RAFT,且运行得更快,这表明这是一种新的精确和高效光流估计的范式。

3.2. 研究背景

FlowNet的相关计算

近年来,深度学习在许多领域展现出了巨大的潜力,它的快速发展也使得直接从数据中学习光流成为可能。FlowNet作为深度学习光流估计的先驱,直接将两张视频帧作为输入,输出稠密的光流。这类方法的主要就是借鉴传统视觉算法中,找图像匹配的思想,为了目标图像在参考图像中对应得位置,在目标图像对应像素位置周围依次滑动,做相关运算,如上图FlowNet网络所示,在第三层的Feature Map上,选取上图的一个坐标点,在下图选取对应的点以及其周围的邻域做相关运算,得到的值在输出Feature Map通道方向上依次排开。相关运算的输出通道数为441,再通过后续的网络得到回归得到光流。

这个方法的问题就是受限与计算量、效率等,邻域不能过大,在面对大运动的估计场景时,效果有限

后须一系列方法都是在其基础上进行改进,比如通过堆叠多个FlowNet(如上图所示)来提升精度,这类方法中最具代表性的就是ECCV2020的best paper RAFT。其通过优化相关性计算,以及采用RNN来取代简单的堆叠模块达到显著的性能提升。但是本质上这些方法都是通过序列化方式增加模块,迭代地增大邻域感受野,达到Coarse-to-Fine的效果

尽管具有出色的性能,但如此大量的顺序迭代的模块带来了线性增加的推理时间,这使得速度优化变得困难,并阻碍了其在实际应用程序中的部署。这就提出了一个问题:有没有可能在不需要大量迭代细化的情况下实现高精度和高效率的光流估计?

3.3. 动机

SuperGlue稀疏匹配

上面提到,现有的光流估计很难应对大幅度运动的场景,此时作者想到光流估计的本质就是回归得到当前帧中像素移动到下一帧的移动量,即找到第二帧的对应的像素。因此作者鉴在现有稀疏匹配算法(如SuperGlue和LoFTR)中常见的Transformer来推提取征描述符之间的相关关系,将光流回归问题转换为一个匹配问题。

GMFlow与现有方法的对比

这篇论文提出了一种GMFlow框架来实现光流的全局匹配,具体来说:

  • 将光流重新定义为一个全局匹配问题。彻底改进了主流的baseline,有效地解决了长期存在的大位移的挑战。

  • 提出了一个GMFlow框架来实现全局匹配范式。它由三个主要部分组成:用于特征增强的Transformer,用于全局特征匹配的correlation和softmax,以及用于解决遮挡,实现光流传播的self-attention。

  • 一个精细步骤来进一步增强模型性能。利用更高分辨率的特征,重用相同的GMFlow框架来进行残差光流估计,融合得到精度更高的光流。

在具有挑战性的Sintel基准测试上,GMFlow优于31次细化的RAFT,而只使用了一次细化步骤,运行速度更快,这为准确和高效的光流估计提供了一种新的范式。

3.4. 方法

GMFlow框架

论文首先利用权重共享卷积网络从两个输入的视频帧中提取1/8分辨率层级的降采样密集特征。然后将这些特征输入到一个改进的swin transformer中以进行特征增强。接下来,通过关联所有成对的特征来比较特征的相似性,并通过一个可微的softmax获得光流。引入另一个自注意层,通过考虑特征的自相似性,将匹配像素的高质量流预测传播到不匹配像素,解决遮挡问题。最后得到的光流根据任务需求可以进一步可以利用1/4分辨率的残差特征,通过一个与前面共享CNN、Transformer layer和 self-attention layer权重的GMFlow进行进一步精细化。

3.4.1. 特征增强

给定两个连续的视频帧和

利用权重共享卷积网络得到8倍降采样密集特征F_1F_2

由于F_1F_2只是两组特征,它们没有空间位置的概念,但是像素是有一定的位置关系的,故在Attention计算时,需要考虑这些像素的位置关系。借鉴DETR思路,论文首先计算得到固定位置编码(position embedding),添加到特征中,来作为后面transformer encoder的输入。

使用一个swin transformer来增强特征。叠加6个layer,包含self-attentions, cross-attentions and feed-forward network(FFN)层来增强图像特征。self-attention用来对图上下文建模,cross-attention用来对两张图的相关关系建模。与swin transformer不同的是论文将特征分割为固定数量的局部窗口,以使窗口大小与特征大小自适应,在每个局部窗口内独立执行self-attention和cross-attention,可以做到速度与精度的权衡。

3.4.2. 全局匹配

论文通过一个简单的矩阵乘法配合一个可微softmax,计算增强后的特征的相关性来比较F_1中每个像素相对于F_2中所有像素的特征相似性,从而得到匹配的概率来进行全局匹配:

# global correlation  
b, c, h, w = feature0.shape  
feature0 = feature0.view(b, c, -1).permute(0, 2, 1)  # [B, H*W, C]  
feature1 = feature1.view(b, c, -1)  # [B, C, H*W]  
correlation = torch.matmul(feature0, feature1).view(b, h, w, h, w) / (c ** 0.5)  # [B, H, W, H, W]  
  
# flow from softmax  
init_grid = coords_grid(b, h, w).to(correlation.device)  # [B, 2, H, W]  
grid = init_grid.view(b, 2, -1).permute(0, 2, 1)  # [B, H*W, 2]  
correlation = correlation.view(b, h * w, h * w)  # [B, H*W, H*W]  
prob = F.softmax(correlation, dim=-1)  # [B, H*W, H*W]  

3.4.3. 光流传播

光流遮挡是一个光流估计中常见的问题,遮挡区域通俗一些理解就是某块区域在下一帧突然消失或者突然出现了的部分,这些情况容易引起错误的光流损失。同时与纯粹的密集匹配问题不同,光流需要计算所有的像素的匹配情况,因此光流需要处理这些被遮挡和超出边界的像素。

为缓解这一问题,结合立体匹配中的代价聚合思路,同时一些相关工作也证明光流场与图像本身具有较高的结构相似性,作者提出通过特征的自相似性将匹配区域的高质量光流估计结果传播到未匹配区域。这个操作可以通过一个简单的 self-attention 层实现。

3.5. 实验

3.5.1. 全局匹配 vs 局部相关性+卷积

GMFlow作为一种新的光流估计范式,与之前方法最大的区别就是用Transformer和全局匹配来代替基于局部相关性的cost volume和CNN的方法,因此首先先对比下两种baseline堆叠不同数量的卷积残差块或者Transformer块来观察性能的变化,结果如下表:

两张baseline对比

与基于cost volume和CNN方法相比,论文方法性能较之前的方法显著提高,2个Transformer块的方法已经可以超过8个卷积块。同时在大运动 (s40+)场景下性能表现更为优异。这验证了这种新范式的有效性。

3.5.2. GMFlow vs RAFT

GMFlow vs RAFT

在Sintel数据集上,GMFlow只需一次精细化,即可超过RAFT 31次精细化的结果,同时推理速度更快,特别是在大运动(s40+)场景上。

4. Unimatch

很自然的,大家都会想到既然GMFlow借鉴了立体匹配的思路,是不是也可以用于立体匹配任务?因此作者趁热打铁,将GMFlow应用到立体匹配和多视角深度估计任务中。下面我们继续介绍这个大一统模型,看看怎么作者是怎么把GMFlow应用到其他任务中的。

4.1. 导读

统一模型

这篇文章提出了一个统一的模型UniMatch来整合三个运动估计和三维感知任务:光流估计,立体匹配和多视角深度估计。这些几何和运动估计任务的本质上都是特征对应关系的估计问题,因此,与以往针对每个特定任务的设计一个专门网络不同,作者将所有三个任务表述为一个统一的显式特征密集匹配问题,直接比较特征相似性得到匹配信息,用一个单一模型来解决三个问题

这就需要提取到任务无关的、判别能力强的特征来完成密集匹配。因此作者使用GMFlow的Transformer进行特征增强,这大大提高了提取的特征的质量。由于特征提取网络结构和参数在不同任务之间是共享的,因此可以很自然地支持跨任务之间的迁移。在10个流行的光流、立体匹配和深度数据集上,UniMatch都优于或者与state-of-the-art方法相当,同时在模型设计和推理速度方面更简单、更高效。

4.2. 研究背景

光流估计、立体匹配和深度估计是计算机视觉中常见的任务,即通过多视角的场景的稠密特征匹配从一组二维图像中理解三维场景结构和运动。传统方法通常使用优化方法来解决这些任务,例如光流的变分方法、立体视觉的半全局匹配(Semi-Global Matching)、从SFM中的光束平差法(Bundle Adjustment)。虽然经典方法取得了重要进展,但它们在无纹理区域和细结构等具有挑战性的情况下仍然存在困难。深度学习和大规模数据集的快速发展也使得可以使用复杂的深度神经网络直接对几何和运动进行前馈推理。目前基于学习的方法正在benchmark上占主导地位。

作者认为现有的方法大多是通过设计特定于任务的模型来独立解决每个任务,直观的想法是能否存在一个网络同时解决光流估计,立体匹配和深度估计这三个比较接近的几何问题。为了实现这一目标,作者首先确定了阻碍先前模型普遍适用性的主要障碍:先前的方法主要将任务特定的cost volume作为模型中间组件,并使用后续卷积网络进行光流/差异/深度回归。由于cost volume是任务相关的(例如,光流的cost volume通常基于2D邻域相关,而立体匹配网络通过1D相关而深度估计是3D相关),这就需要任务相关的卷积网络用于cost volume的后处理,参数并不共享。此外,卷积网络的类型也可能相当不同(2D,3D或Conv-GRU)。这给统一这些任务的pipeline中引入了额外的挑战。

4.3. 动机

这篇论文的关键见解是,这些任务可以统一为明确的几何特征密集匹配问题,通过直接比较特征相似性来解决。统一模型自然地实现了跨任务迁移,因为每个任务都使用完全相同的可学习参数来进行特征提取。例如,在没有任何微调的情况下,预训练的光流模型可以直接用于立体匹配任务和深度估计任务。而且,当使用预训练的光流模型作为初始化进行微调时,既可以得到更快训练速度,而且还可以取得更好的性能。

这项工作是GMFlow的重大扩展,其中新的贡献如下:

  • 统一光流估计/立体匹配/深度估计任务。GMFlow的目的是证明其是RAFt这类迭代架构的在光流估计任务中的有效替代方案,而这项工作统一了三个密集匹配估计任务,将GMFlow扩展到立体匹配和深度估计,并进行了大量实验

  • 复用预先训练的光流模型来研究跨任务迁移行为

  • 引入额外的后处理步骤,进一步提高了原始GMFlow的性能

在10个流行的数据集上论文展示了最先进的或高度有竞争力的性能

4.4. 方法

不同视点之间的密集匹配关系是光流、立体匹配和深度估计任务的核心。为了统一这三个任务,本文的关键思想是使用一个显式的密集匹配方法,它通过直接比较特征相似性来识别匹配,因此需要一个较强的特征。因此作者使用上文GMFlow的Transformer来提取用于匹配的强特征。请注意,匹配层是根据每个任务的不同约束设计的,因此是特定于任务的。但是,匹配层是无参数的,因为它们只比较特征相似性。所有三个任务的可学习参数完全相同,因此可以复用进行跨任务迁移。

两个图像I_1I_2作为输入。可以是用于光流的视频帧,用于立体匹配的对齐的立体对,或者用于深度估计的未校正的立体像对(已知相机内参和外参)。首先利用权重共享卷积网络提取8倍降采样密集特征,然后通过任务无关的GMFlow的Transformer来进行特征增强得到F_1F_2。然后输入光流匹配、立体匹配和深度估计各自的无参数任务特定匹配层

4.4.1. Flow Matching

光流表示两个视频帧之间的运动,可以通过在图像二维平面上寻找二维像素密集匹配来计算。为了实现这一点,直接进行全局匹配,比较F_1中每个位置与F_2中所有位置的特征相似性。

计算一个二维匹配相关性矩阵

使用可微的softmax,得到匹配分布情况

与像素网格的二维坐标G_{2D}加权平均得到亚像素匹配

计算相应的像素坐标之间的差值,可以得到光流

4.4.2. Stereo Matching

立体匹配的目的是找到立体对之间沿水平扫描线的像素视差即一维对应(原匹配图像对做了极线校正),这可以看作是二维光流的一种特殊情况。不像上面光流中的二维全局匹配,我们只需要考虑沿着一维水平方向的匹配。

计算一个一维匹配相关性矩阵

使用可微的softmax,得到匹配分布情况

与水平位置分布P = [0, 1, 2, \cdots, W - 1] \in R^W加权平均得到亚像素匹配

计算相应的像素坐标之间的水平方向的差值,可以得到视差

4.4.3. Depth Matching

对于末进行极线矫正的双目深度估计, 作者假设图像I_1I_2的相机内参和外参K_1K_2E_1E_2

是已知的。

离散化深度范围[d_{min}, d_{max}]: [d_1, d_2, \cdots, d_N],然后对于每个深度候选,与世界坐标系中的像素网格的二维坐标G_{2D}进行wrap,得到相机系的2D坐标对应关系

使用\hat{G_{2D}}F_2进行双线性插值采样, 得到深度候选d_iF_i^2,然后计算它们的相关性为

concat得到的所有候选深度的相关性

使用可微的softmax,得到匹配分布情况

通过计算所有候选深度的匹配分布加权平均值,可以得到深度

分别将上述光流、立体匹配和深度估计的模型分别命名为GMFlow、GMStereo和GMDepth

4.4.4. 细化(后处理)

前文提出的方法(使用1/8像素的特性)已经实现了具有竞争力的性能,简单且高效,接下来为了适应不同的任务,论文探索了两种类型的细化方法来进一步提升性能。

层次匹配细化: 层次匹配细化使用的就是前文的基于Transformer+softmax的全局匹配思路,因此是与任务无关的。该统一全局匹配方法在1/8的特征分辨率下进行,并获得了1/8的光流/视差/深度预测。为了提高性能和细粒度细节,这里采用全局加局部特征融合的思路,即将1/8的光流/视差/深度预测进行上采样到1/4分辨率,作为GMFlow中第一个CNN的输出,同时wrap得到第二个CNN的输出,两者输入到GMFlow的Transformer层进行特征增强,再通过一个local match的方式得到预测的光流/视差的残差添加到之前通过全局匹配获得的上采样流/视差预测中。可以注意到,在1/8和1/4的层次匹配阶段,论文的方法共享了Transformer和self-attention权重,因为除了不同的范围(全局和局部)外,它们基本上执行了非常相似的匹配过程。这不仅减少了参数,而且提高了泛化性。

局部回归细化:

Global vs. local matching

前文的结果显示,统一模型加一个任务无关的层次匹配细化,能够超过31次的细化的RAFT,这证明了基于全局匹配的范式的有效性。如上图所示,我们的统一全局匹配方法在大运动的情况下更具优势。但是对于小的运动,可能不需要执行全局匹配,在这种情况下,局部回归(cost volume + conv)是有利的。为了实现最佳的性能,一个简单的方法是结合这两种光流估计方法的优点。也就是说,局部回归方法被用作我们的统一模型的后处理步骤。这进一步改善了细粒度的细节和难以匹配的区域。

这种局部回归是任务相关的:

  • 对于光流,论文使用二维correlation;对于校正的立体匹配,论文也使用correlation,因为论文发现虽然存在一些冗余,但它的表现优于一维correlation;对于未校正的深度估计,论文使用由当前深度预测和相对位姿转换构造的二维correlation。这种细化架构是特定于任务的,而不是在任务之间共享的

  • 对于不同的任务,附加迭代细化的可选数量也有所不同,论文根据经验选择这个数字。对于光流,在层次匹配细化后,论文在1/4特征分辨率下使用6个额外的细化步骤;对于修正的立体匹配,论文在层次匹配细化后,使用了1/4特征分辨率的3个额外的细化步骤;对于未修正的深度估计,论文使用1个额外的细化步骤

4.5. 实验

前文已经有基于Transformer全局匹配的相关实验以及光流估计相关的实验,这里继续进行双目立体匹配和深度估计的实验结果展示,以及跨任务迁移的有效性证明

4.5.1. 双目立体匹配

Visual comparisons on Middlebury test set
Stereo performance on KITTI 2015 test set.
Stereo performance on Middlebury test set
Stereo performance on ETH3D two-view stereo test set

与光流估计任务类似,论文使用额外的特定于任务的基于local match的局部回归细化来进一步提高性能。虽然校正后的立体匹配是一维匹配任务,但作者发现在“cost volume + 卷积”的回归方法中,二维相关性优于一维相关性。因此,最终的模型除了在1/4特征分辨率下的1个层次匹配细化外,还使用了3个额外的细化。与RAFTStereo 和CRETStereo相比,论文的最终模型所需的改进次数要小得多,归功于强大的特征增强。最终结果如上图所示,论文的方法在多个数据集取得最先进或者高度竞争力的性能,同时在模型设计和推理速度方面更简单、更高效。

4.5.2. 深度估计

Depth performance on ScanNet test set
Depth performance on RGBD-SLAM, SUN3D and Scenes11 test datasets

论文在1/8的特征分辨率下使用了一个额外特定于任务的基于local match的局部回归细化,这进一步提高了性能同时保持较快的推理速度。最终结果如上图所示,本文方法在多个数据集取得最先进或者高度竞争力的性能,同时在模型设计和推理速度方面更简单、更高效。

4.5.3. 跨任务迁移

Flow to stereo transfer
Flow to depth transfer

论文的统一模型的还有一个独特好处是,它很自然地支持跨任务迁移,因为所有的任务的可学习参数都是完全相同的。更具体地说,可以直接使用预先训练好的光流模型,并将其应用于立体匹配和立体深度估计任务。如上图所示,其预训练光流模型的性能明显优于随机初始化模型。

finetune

值得注意的是,以往没有光流模型可以直接用于未校正的立体深度估计,而所提模型取得了良好的结果,如上图所示。预训练的流模型可以进一步细化立体和深度任务,不仅可以加快训练速度,而且比随机初始化获得更好的性能

5. 总结

针对光流估计、校正的立体匹配和未矫正的深度估计,作者提出了统一的范式和模型。通过将这三个任务表述为一个统一的密集匹配问题,利用Transformer和softmax实现全局匹配,并结合self-attention处理遮挡问题,证明了它们都可以用一个统一的模型来解决。同时也支持跨任务迁移。利用三个任务相关的细化后处理,最终的模型在10个流行的光流/立体匹配/深度数据集上实现了最先进的或具有高度竞争力的性能,同时在模型设计和推理速度方面更简单、更高效。

猜你喜欢

转载自blog.csdn.net/xhtchina/article/details/128751239
今日推荐