【光流深度立体匹配统一模型】Unifying Flow, Stereo and Depth Estimation:Unimatch

摘要

我们提出了一种统一的公式化框架和模型,用于解决三项运动估计与三维感知任务:光流计算、校正后的立体匹配以及基于位姿图像的非校正立体深度估计。与以往针对各特定任务采用的专用架构不同,我们将上述三个任务统一表述为密集的对应点匹配问题,并通过直接比较特征相似性,利用单一模型即可求解。这种统一框架要求具备判别性的特征表示,我们通过 Transformer(特别是交叉注意力机制)来实现这一目标。我们证明,交叉注意力机制能够通过跨视角交互整合来自另一幅图像的知识,从而显著提升提取特征的質量。由于模型架构和参数在各任务间共享,我们的统一模型自然地实现了跨任务迁移。在极具挑战性的 Sintel 数据集上,我们的统一模型性能优于 RAFT;而在最终模型中引入少量任务特定的细化步骤后,该模型在十个流行的光流、立体匹配和深度估计数据集上的表现优于或至少媲美近期的最先进方法,同时在模型设计和推理速度方面更为简洁高效。

1 INTRODUCTION

理解由一组2D图像构成的3D场景结构和运动,一直是计算机视觉领域的长期目标 1, 2。这是许多实际应用的基石,例如从互联网照片重建3D城市 3、基于光流的动作识别 4、增强现实 5 以及自动驾驶 6

经典方法通常通过优化技术解决能量最小化问题来处理这些任务。例如,光流的变分方法 7、立体视觉的半全局匹配 8 以及运动恢复结构(Structure-from-Motion)中的光束平差法 9。尽管经典方法取得了显著进展,但在无纹理区域和细结构等具有挑战性的场景中,它们往往仍然难以应对。

深度学习的快速进步 10 以及大规模数据集的出现,也使得使用高容量深度神经网络直接进行几何和运动的自回归推断成为可能。在过去几年中,针对不同任务提出了不同的网络架构(例如,用于光流的 FlowNet 11 和用于多视图立体视觉的 MVSNet 12)。网络架构的进一步发展推动了几何和运动任务的稳步进展,基于学习的方法目前在流行基准测试排行榜上占据主导地位 6, 13, 14, 15

然而,现有工作大多致力于设计针对特定任务的模型以独立解决各任务,因此提出了大量不同的网络架构 16, 17, 18, 19, 20, 21, 22,忽略了这样一个事实:许多多视图几何和运动任务本质上都是相关的对应估计问题。这种针对特定任务的设计哲学不可避免地导致了需要处理的架构种类繁多,并在现实世界应用的模型部署或更新中引入了额外的复杂性。此外,当孤立地研究不同任务的预训练模型时,它们无法被复用(例如,跨任务迁移)。

图 1:三个运动和3D感知任务的统一模型。我们将光流、校正立体匹配和未校正立体深度估计 formulated 为一个统一的密集对应匹配问题,可以通过直接比较特征相似度来解决。为了获得用于匹配的判别性特征,我们使用 Transformer,特别是交叉注意力机制。我们证明,交叉注意力可以通过跨视图交互整合来自另一视图的知识,从而极大地提高了提取特征的质量。这是基于经典卷积骨干网络(各自独立处理每个视图)所无法实现的。

本文旨在开发一个单一的统一模型,以解决三个密集感知任务:光流、校正立体匹配以及基于姿态图像的未校正立体深度估计,如图1所示,这些是理解运动(光流)和3D(深度)的基本构建模块。为实现这一目标,我们首先确定了阻碍先前模型具有普遍适用性的主要障碍。具体而言,先前方法大多将任务特定的几何归纳偏差(例如,不同形状的代价体积 17, 23)编码为模型的中间组件,并使用随后的卷积网络进行光流/视差/深度回归。由于几何归纳偏差依赖于任务(例如,光流的代价体积通常基于2D相关性 11,而立体匹配网络通过1D相关性 19 或特征拼接 24 构建代价体积),这导致了用于后处理代价体积的任务特定卷积架构。此外,卷积网络的类型可能非常不同(2D 17, 19、3D 24, 25 或 ConvGRU 21, 26),这给在这样的管道下统一这些任务带来了额外挑战。

我们的关键见解是,这些任务可以在显式的密集对应匹配公式中统一,它们可以通过直接比较特征相似度来解决。因此,任务简化为学习用于匹配的强任务无关特征表示,为此我们使用 Transformer 27,特别是交叉注意力机制来实现。我们证明,交叉注意力可以通过跨视图交互整合来自另一张图像的知识,从而极大地提高了提取特征的质量。在我们的方法中,每个任务的几何归纳偏差通过最终输出处的无参数任务特定匹配层进行建模,这不仅没有引入任务特定的可学习参数,还证明了一旦拥有强特征,几何和运动估计任务中的代价体积后处理并非总是必要的。这与 Perceiver IO 28 不同,后者直接回归光流而不考虑任何几何归纳偏差,在模型参数量方面效率较低(我们的少8倍)和推理速度方面较慢(我们快4倍)。这也与 IIB 29 不同,后者在输入处注入几何归纳偏差,使得后续网络层成为任务特定的。我们的公式隐含地假设对应像素在两张图像中都是可见的,因此可以通过比较特征相似度进行匹配。为了处理未匹配(遮挡和超出边界)区域,我们引入一个简单的任务无关自注意力层,通过测量特征自相似度 30, 31 将高质量预测传播到未匹配区域。

我们的统一模型自然实现了跨任务迁移,因为每个任务使用完全相同的可学习参数进行特征提取。例如,无需任何微调,预训练的光流模型可直接用于校正立体匹配和未校正立体深度估计任务。此外,当使用预训练的光流模型作为初始化进行微调时,我们不仅享受到了立体和深度更快的训练速度,还取得了更好的性能,这由我们的实验证实(表10)。

我们统一的模型仅需一个任务无关的分层匹配细化步骤,在具有挑战性的 Sintel 13 数据集上优于具有31个细化步骤的 RAFT 21,同时运行速度更快(图5和表3),证明了我们方法的有效性和效率。我们最终的模型使用少量额外的任务特定细化步骤,在10个流行的光流/立体/深度数据集(KITTI Flow 14, Sintel 13, Middlebury 15, KITTI Stereo 14, ETH3D Stereo 32, Argoverse Stereo 33, ScanNet 34, SUN3D 35, RGBD-SLAM 36 和 Scenes11 37)上的表现优于或优于近期最先进的方法,同时在模型设计和推理速度方面更简单、更高效。

本工作是对我们此前 CVPR 2022 会议论文 GMFlow 38 的重大扩展,新贡献总结如下:

  • (1) 初始工作 GMFlow 38 旨在证明 RAFT 21 迭代架构在光流任务上的成功替代方案,而本工作提出了更全面的视角,统一了三个密集对应估计任务。
  • (2) 我们将 GMFlow 扩展至校正立体匹配和基于姿态图像的未校正立体深度估计,并进行了大量实验。
  • (3) 我们通过重用预训练模型研究了跨任务迁移行为。

我们的项目页面位于 haofeixu.github.io/unimatch,代码和模型可在 github.com/autonomousvision/unimatch 获取。

现有的大多数光流、校正立体匹配以及未校正立体深度估计方法,主要侧重于为每个特定任务设计专门的架构,而缺乏对统一模型的追求。在本节中,我们将首先独立回顾每个任务的发展历程,然后从统一模型和多任务学习的角度探讨它们之间的关系。

2.1 光流 (Optical Flow)

光流问题传统上采用变分方法进行处理 2, 7, 39, 40, 41, 42,通常将其转化为一个由亮度恒定项和正则化项组成的能量最小化问题。深度学习的进步也使得直接从数据中学习光流成为可能。开创性的基于学习的方法 FlowNet 11 提出了一种卷积神经网络,直接以两幅图像为输入并回归出光流场。网络架构和训练策略的进一步发展 16, 17, 21, 31, 43-53 使得基于学习的方法取得了稳步进步,如今这些方法在包括 Sintel 13 和 KITTI 6, 14 在内的基准测试中大幅超越传统方法,并占据主导地位。

然而,仔细观察现有的基于学习的方法会发现,其底层架构原则自 FlowNet 11 以来变化不大,即通过卷积从局部相关性(即代价体积)中回归光流。这种局部回归方法在估计大位移时,受到代价体积大小的限制,需要在两者之间进行权衡。为了缓解这一问题,两种流行的策略------由粗到细 17, 43 和迭代细化 21, 44 方法,通过多个阶段增量地估计大位移。然而,由粗到细的方法如果分辨率过低,往往会遗漏运动较快的小物体,并可能受到误差传播问题的影响 54。相比之下,像 RAFT 21 这样的迭代方法由于需要大量的顺序细化步骤,导致处理时间线性增加。与之不同,我们将光流重新表述为一个全局匹配问题,通过直接成对比较特征相似度来识别密集对应关系,从而显著改善了大位移的估计效果。

2.2 立体匹配 (Stereo Matching)

典型的立体匹配方法通常遵循四步流程 23:匹配代价计算、代价聚合、视差计算和视差细化。同样,早期基于优化的方法 55, 56 已被现代基于深度学习的方法 19, 24, 25, 57-61 所取代。目前代表性的立体匹配方法大致可分为两类:基于 3D 卷积的方法和基于 2D 卷积的方法。它们的关键区别在于代价体积的构建方式。基于 3D 卷积的方法 22, 24, 25, 60 通常使用特征拼接,而 2D 方法 19, 58 使用特征相关性。这些方法通常在一个预定义的搜索空间(通常为 192 像素 59)内构建局部代价体积,最终视差预测是通过计算所有视差候选值的加权和获得的。因此,输出始终受限于预定义的视差范围,这使得这些方法在处理高分辨率图像或新相机设置等无约束设置时缺乏灵活性。例如,为了使此类架构适应更大的视差范围,必须通过设置新的预定义最大视差来重新训练整个模型。相比之下,我们直接沿扫描线执行全局匹配,对视差范围不做任何假设,并能处理任意图像分辨率。

像 RAFT-Stereo 26 和 CREStereo 62 这样的近期迭代 2D 方法,主要遵循光流模型 RAFT 21 的高层设计,同时引入了一些特定于任务的组件(例如 1D 相关性),以使该方法适用于立体匹配任务。相比之下,我们表明,基于匹配的方法视角使得我们可以对光流和立体匹配使用相同的模型,且拥有完全相同的可学习参数。此外,我们的模型效率更高,因为我们不依赖任何 3D 卷积或大量的顺序细化。另一方面,虽然 MC-CNN 57 也试图学习用于匹配的强特征,但 MC-CNN 中的特征是独立通过卷积网络提取的,没有考虑跨视图交互。然而,正如我们的结果所证明的那样,跨视图交互对于获得强且具区分性的特征至关重要(见表 1 和表 2a)。

可能与我们的工作最相关的立体匹配研究是 STTR 63,它也使用 Transformer 和基于匹配的视差计算。然而,STTR 依赖于复杂的最佳传输匹配层,且不产生被遮挡像素的预测,而我们使用更简单的 softmax 运算和简单的流传播层来处理遮挡。后来的 CSTR (Context-Enhanced Stereo Transformer) 64 试图通过新的 Transformer 架构提高 STTR 的性能,但它仍然受到 STTR 的局限性困扰。此外,STTR 专为解决立体匹配任务而设计,而我们正在寻求一种适用于三种不同密集对应关系估计任务的统一模型。

2.3 深度估计 (Depth Estimation)

基于学习的深度估计方法大致可分为单视图和多视图方法。单视图方法 65-70 以单幅图像为输入,并使用 ResNet 71 等通用网络架构来预测密集深度图;而多视图方法 12, 20, 37, 72-77 通常侧重于如何将几何归纳偏差(如代价体积、扭曲等)编码到网络架构中。与单视图方法相比,多视图深度估计能更好地利用来自额外视角的信息,通常能带来更好的性能 78。由于多视图信息(如视频序列)在许多应用中通常易于获取,因此我们在本文中考虑多视图深度估计。一种流行的多视图深度处理流程是使用平面扫描立体 72, 79 方法,即测试不同深度平面的正确性。然而,就像校正立体匹配一样,当前最先进的方法通常由基于 3D 卷积的方法 72, 73 主导,这相应地引入了立方级的计算复杂度。在本文中,我们从显式的基于匹配的视角来处理这一任务,并使用 Transformer 获取用于匹配的强特征,在完全不依赖任何 3D 卷积的情况下实现了极具竞争力的性能。这与近期的工作 TransMVSNet 80 不同,后者仍然依赖 3D 卷积进行代价体积后处理,且 Transformer 仅用于代价体积构建阶段之前。因此,我们的方法更简单、更轻量。

2.4 统一模型 (Unified Model)

统一模型旨在使用与任务无关的架构来解决不同的任务。一个 notable 的工作是 Perceiver IO 28,它为不同领域的不同问题提出了一种通用的 Transformer 架构。Perceiver IO 已被应用于光流任务,其中两幅输入图像的直接拼接被输入到 Transformer 中,并在不使用任何归纳偏差的情况下回归光流。尽管其架构简单,但为了模型性能,引入了更多的参数(是 ours 的 8 倍)和额外的计算复杂度(是 ours 的 4 倍慢)。Perceiver IO 也被用于解决未校正立体深度估计任务 29,其中几何归纳偏差作为额外输入馈送到网络中。与 Perceiver IO 不同,我们的设计动机源于统一视角,旨在为几何和运动任务的密集对应匹配学习强特征表示。在我们的方法中,几何归纳偏差在最终无参数的匹配层中得到良好保留,这没有引入任何特定于任务的_learnable_ 参数。这与用于光流和立体深度估计的 Perceiver IO 不同。另一项相关工作是 HD3 18,它提出了一种同时适用于光流估计和立体匹配任务的模型。然而,HD3 依赖任务特定的相关性(2D 或 1D)作为中间网络组件,从而导致后续解码器中包含任务特定的可学习参数,使得预训练模型在不同任务之间的迁移变得困难。 我们也注意到,本文提出的统一模型与多任务联合训练方法 81--85 有所不同。多任务方法通常部署多个任务特定的网络架构,并对其进行联合训练。相比之下,我们的统一模型专注于设计一个单一的网络结构,使其能够通用地适用于多种任务,且不包含任何任务特定的可学习参数。

3 方法

图2:我们统一模型的概述。我们考虑两个图像作为输入,这些输入可以是用于光流估计的视频帧、用于校正后立体匹配的立体图像对,或用于未校正立体深度估计的具有已知姿态的图像。我们首先使用一个共享权重的卷积网络从两个输入图像中提取8倍下采样的密集特征。随后,这些特征被输入到一个Transformer中进行特征增强。接下来,我们采用无参数的任务特定匹配层进行特征匹配,从而生成对应于不同任务的光流、视差或深度输出。此外,我们引入一个与任务无关的自注意力层,通过测量特征自相似性,将高质量的预测结果传播到未匹配区域。

不同视角之间的稠密对应关系是光流、校正立体匹配以及未校正立体深度估计任务的核心。为了统一这三个任务,我们的核心思想是采用一种显式的稠密对应匹配公式,该公式通过直接比较特征相似性来识别解。这种公式需要具有判别力的特征,为此我们采用 Transformer,特别是交叉注意力机制来实现这一目标。交叉注意力能够通过跨视角交互从另一幅图像中整合知识,从而大幅提升特征质量,这是仅在单个视角上独立操作的卷积所无法实现的 57。图 2 概述了我们提出的方法。我们首先从两幅输入图像中提取稠密特征,然后通过一个无参数的匹配层获得预测结果。最后,使用一个自注意力层,通过测量特征自相似性,将高质量预测传播到未匹配区域。 接下来,我们首先为光流、校正立体匹配和未校正立体深度估计构建可微分的匹配层,然后提出一种统一的基于 Transformer 的模型以提取用于匹配的强特征。请注意,匹配层的设计考虑了各任务的不同约束,因此它们是特定于任务的。然而,由于匹配层仅比较特征相似性,因此它们是无需参数的。三个任务的可学习参数完全相同,因此可以复用以实现跨任务迁移。

为光流、校正立体匹配和未校正立体深度估计构建可微分的匹配层

3.1 Flow Matching

光流表示两个视频帧之间的视运动,可以通过在图像平面上寻找二维像素级的稠密对应关系来计算。为了实现这一点,我们通过计算相关系数(即全局匹配),直接比较特征图 F1 中每个位置相对于特征图 F2 中所有位置的特征相似性。这可以通过简单的矩阵乘法高效实现:

3.2 Stereo Matching

校正立体匹配旨在在经校正的立体图像对之间,沿水平扫描线(一维对应关系)逐像素地求解视差,这可以视为二维光流的一种特例。与式 (1) 中光流的二维全局匹配不同,我们只需考虑沿一维水平方向的匹配。

CdispC_{disp}Cdisp​ 是什么? 它是一个三维张量,存储了参考图中每个像素与目标图中同一行所有可能像素的相似度。

形状 H×W×W 的含义:

H: 高度维度,独立处理每一行。

第一个 W: 参考图像素的位置。

第二个 W: 搜索空间(视差候选项对应的目标图像素位置)。

计算方式: 本质上是沿水平轴的特征点积(Correlation),相比光流的 H×W×H×W,它减少了维度,因为只在一维(水平方向)上搜索对应关系。

因此,CdispC_{\text{disp}}Cdisp 是一个三维张量,其形状表示为:

(H,W,W) (H, W, W) (H,W,W)

  • 索引 (h,w1,w2)(h, w_1, w_2)(h,w1,w2) 表示:左图中位于 (h,w1)(h, w_1)(h,w1) 的像素,与右图中位于 (h,w2)(h, w_2)(h,w2) 的像素之间的特征相似度。
  • 由于校正后极线水平,只有当 w2≈w1−Dw_2 \approx w_1 - Dw2≈w1−D 时才可能有对应关系。

计算 CdispC_{\text{disp}}Cdisp公式本质上是一个沿水平方向的一维互相关(1D Correlation)

假设:

  • F1∈RH×W×CF_1 \in \mathbb{R}^{H \times W \times C}F1∈RH×W×C:左图(参考图)的特征图,CCC 是通道数。
  • F2∈RH×W×CF_2 \in \mathbb{R}^{H \times W \times C}F2∈RH×W×C:右图(目标图)的特征图。

计算步骤如下:

方法 A:基于矩阵乘法的高效实现(类似光流,但限制方向)

虽然光流使用全局 H×W×H×WH \times W \times H \times WH×W×H×W,但在立体匹配中,我们可以利用"仅水平方向"的特性。

对于高度 hhh 固定,我们可以分别处理每一行:

  1. 提取左图第 hhh 行的特征向量序列 F1h,:,:∈RW×CF_1h, :, : \in \mathbb{R}^{W \times C}F1h,:,:∈RW×C。
  2. 提取右图第 hhh 行的特征向量序列 F2h,:,:∈RW×CF_2h, :, : \in \mathbb{R}^{W \times C}F2h,:,:∈RW×C。
  3. 计算相关矩阵:
    Ch=F1h,:,:⋅F2h,:,:T∈RW×W C_{h} = F_1h, :, : \cdot F_2h, :, :^T \in \mathbb{R}^{W \times W} Ch=F1h,:,:⋅F2h,:,:T∈RW×W
    • Chw1,w2C_hw_1, w_2Chw1,w2 就是左图 (h,w1)(h, w_1)(h,w1) 和右图 (h,w2)(h, w_2)(h,w2) 的特征相似度。
  4. 将所有高度的 ChC_hCh 堆叠起来,得到最终的 CdispC_{\text{disp}}Cdisp:
    Cdisp=stack(C0,C1,...,CH−1)∈RH×W×W C_{\text{disp}} = \text{stack}(C_0, C_1, ..., C_{H-1}) \in \mathbb{R}^{H \times W \times W} Cdisp=stack(C0,C1,...,CH−1)∈RH×W×W

4. 为什么要掩码(Masking)?

在公式 (6) 和 (7) 之前,文中提到:

"mask the upper triangle of the W x W slices... to avoid unnecessary matches."

因为视差 DDD 必须是非负的(在标准立体几何中,右图像素通常在左图像素的右侧,即 wright<wleftw_{right} < w_{left}wright<wleft,所以 D=wleft−wright≥0D = w_{left} - w_{right} \ge 0D=wleft−wright≥0)。

  • 这意味着 w2w_2w2 (右图列) 必须小于或等于 w1w_1w1 (左图列) 吗?
    • 注意:通常定义视差 DDD 为正数,对应关系是 pright=pleft−Dp_{right} = p_{left} - Dpright=pleft−D。
    • 如果 w2w_2w2 代表右图的列索引,w1w_1w1 代表左图的列索引。
    • 若 w2>w1w_2 > w_1w2>w1,则意味着 DDD 为负,这在物理上通常是不可能的(除非图像翻转)。
    • 因此,相关性矩阵中 w2>w1w_2 > w_1w2>w1 的部分(通常指上三角或下三角,取决于坐标定义方向)应被掩码设为 −∞-\infty−∞(在 Softmax 前),使其权重为 0。

3.3 Depth Matching

对于未校正的立体深度估计,我们假设图像 I1 和 I2 的相机内外参(K1, E1, K2, E2)已知(即已知位姿的图像)。

为了估计深度,我们采用一种类似于经典平面扫掠立体匹配方法 88 的思路。更具体地说,我们首先将一个预定义的范围 d_min, d_max 离散化为 d_1, d_2, · · · , d_N(在我们的实现中,我们对逆深度域进行离散化,但此处使用深度符号以简化记号)。然后,对于每个深度候选值 d_i(i = 1, 2, · · · , N),

我们根据当前深度值计算在特征图 F2 中的二维对应点坐标

最后,通过将匹配分布 M_{depth} 与所有深度候选值 Gdepth=d1,d2,⋅⋅⋅,dN∈RNG_{depth} = d_1, d_2, · · · , d_N \in \mathbb{R}^NGdepth=d1,d2,⋅⋅⋅,dN∈RN 进行加权平均,估计出深度图:

3.2 特征提取

我们公式化方法的关键在于获取高质量、具有判别力的特征,以用于匹配。为此,我们将常见的卷积神经网络(CNN)与Transformer 27 结合,作为特征提取器。更具体地说,我们首先使用权重共享的ResNet 71 提取降采样8倍的特征,以保持计算的可处理性,这一做法与之前的光流方法 17, 21 类似。然而,来自CNN的两个特征是独立提取的,尚未考虑它们之间的相互关系。如稀疏匹配方法 89 所证明的,从另一幅图像中的潜在匹配候选者中整合知识,可以直观地增强特征的独特性并克服歧义。这可以通过交叉注意力机制自然实现,该机制能够通过测量跨视图特征相似度,有选择地聚合来自另一幅图像的信息。我们还使用自注意力层,通过考虑比卷积层更广泛的上下文,进一步提升特征质量;并在Transformer 27 原始设计的启发下,使用一个两层前馈网络(FFN,即MLP)来进一步增强网络的容量。自注意力、交叉注意力和FFN共同构成一个Transformer块;我们的最终Transformer架构由六个Transformer块堆叠而成,能够逐步提升性能(见表1)。

3.3 传播

基于匹配的公式隐含地假设,对应的像素在两张图像中均可见,因此可以通过比较它们的相似度来进行匹配。然而,对于被遮挡和超出边界的像素,这一假设将不再成立,从而在这些区域产生不可靠的结果(见图3)。为了弥补这一缺陷,我们观察到光流/视差/深度场与图像本身具有高度的结构相似性 30, 31,因此提出通过度量特征自相似度,将高质量的光流/视差/深度预测传播到未匹配区域。这一操作可以通过单个自注意力层高效实现(如图2所示):

V^=softmax(F1F1TD)V∈RH×W×2,(15) \hat{V} = \text{softmax}\left(\frac{F_1 F_1^T}{\sqrt{D}}\right) V \in \mathbb{R}^{H \times W \times 2}, \quad (15) V^=softmax(D F1F1T)V∈RH×W×2,(15)

其中,VVV 是第 3.1 节中softmax匹配层输出的光流/视差/深度预测。请注意,我们并没有显式地区分已匹配和未匹配的像素,而是利用真实光流的监督信号来学习这种传播过程。图3表明,该策略能够有效校正未匹配区域中的误差。

我们当前的估计位于下采样8倍的特征分辨率上。为了得到原始图像分辨率的预测,我们采用RAFT的上采样方法 21,该方法将每个像素的全分辨率光流/视差/深度计算为其粗分辨率邻近3×3网格像素的加权组合。组合权重通过一个简单的两层卷积网络进行学习,该网络的输出通道数为 8×8×3×38 \times 8 \times 3 \times 38×8×3×3,以支持8倍上采样。图2展示了我们统一模型的整体概览。

3.4 细化(Refinement)

目前提出的方法(基于 1/8 分辨率特征)在保持简单高效的同时,已取得了具有竞争力的性能。通过引入额外的细化步骤,可以进一步提升性能,从而在速度与精度之间实现不同的权衡。在本文中,我们探索了两种类型的细化策略:基于高分辨率(1/4)特征的分层匹配细化,以及基于卷积的局部回归细化。需要指出的是,分层匹配细化利用了我们基于匹配的公式,因此是任务无关的(task-agnostic);而局部回归细化则是特定于任务的,但它是可选的。因此,它可以被视为一种后处理步骤,用于进一步提升我们统一方法的性能。

3.4.1 分层匹配细化

我们的统一全局匹配是在 1/8 分辨率特征上执行的,并由此获得 1/8 分辨率的光流/视差/深度预测。使用更高分辨率(1/4)的特征进行匹配可以进一步提升性能和细粒度细节,同时由于采用了基于匹配的公式,不会引入任何特定于任务的可选学习参数。然而,我们发现该方法在未校正立体匹配深度估计中的提升效果不如光流和立体匹配显著,因此我们决定不在深度任务中执行 1/4 分辨率的分层匹配。

具体而言,对于光流和校正后立体匹配任务,我们首先将 1/8 分辨率的光流/视差预测上采样至 1/4 分辨率,然后利用上采样后的光流/视差对第二个 CNN 特征进行形变(warp)。这样,剩余的任务转化为原始第一个 CNN 特征与形变后的第二个 CNN 特征之间的匹配。因此,图 2 中所示的相同模型可以在 1/4 分辨率下,但以局部范围用于细化。具体来说,对于光流,我们执行 9×9 的局部窗口匹配;对于立体匹配,我们执行长度为 9 的一维水平局部匹配(其公式与第 3.1.1 节和第 3.1.2 节类似,但限于局部范围)。随后,预测得到的光流/视差残差将被加到通过全局匹配获得的先前上采样光流/视差预测上。

对于 Transformer 模型,我们在注意力计算中将 1/4 特征图划分为 8×8 的局部窗口(每个窗口对应原始图像分辨率的 1/32),以建模局部范围内的交互。接下来,我们执行 3×3 的局部窗口自注意力操作,用于光流/视差的传播(其公式与第 3.3 节类似,但限于局部范围)。最后,获得 1/4 分辨率的光流/视差预测,并将其上采样至全分辨率。

需要注意的是,我们在 1/8 和 1/4 分层匹配阶段共享 Transformer 和自注意力的权重,因为除了范围不同(全局 vs. 局部)外,两者执行的匹配过程基本相似。这不仅减少了参数量,还提高了泛化能力,正如原始 GMFlow 38 论文所示。为了生成 1/4 和 1/8 分辨率的特征,我们采用了与 TridentNet 92 类似的方法。具体而言,我们首先通过 CNN 获得 1/4 分辨率的特征图,然后附加一个权重共享的 3×3 卷积,分别使用步长 1 和 2 来生成 1/4 和 1/8 分辨率的双分支特征。这种权重共享设计比使用特征金字塔网络(Feature Pyramid Network, FPN)93(参见 GMFlow 38 论文)具有更少的参数量和更好的性能。

3.4.2 局部回归细化

迄今为止,我们仅使用一种任务无关的分层匹配细化的统一模型,其性能已优于使用 31 次迭代的 RAFT 21,且运行速度更快(见图 5 和表 3),这证明了我们要基于全局匹配的公式的有效性和高效性。然而,我们基于匹配的方法也可以与之前的成本体积和基于卷积的局部回归方法互补。我们观察到,我们统一的匹配方法主要在存在大运动时表现出优势(表 1 和表 3)。对于小运动,可能无需执行全局匹配(表 2c),在这种情况下,局部回归更具优势。为了达到最佳的系统级性能,一种直接的方法是结合这两种光流估计方法的优势。也就是说,将局部回归方法作为我们统一模型的后处理步骤。这进一步提升了细粒度细节和难以匹配区域的性能。

具体来说,我们采用 RAFT 的迭代细化来进行进一步提升。在每次细化中,我们基于当前预测产生一个更新。该更新通过局部相关性使用卷积进行回归。局部相关性是特定于任务的:对于光流,我们使用二维相关性;对于校正后立体匹配,我们也使用二维相关性,因为我们发现其效果优于二维相关性(表 6),尽管存在一定冗余;对于未校正的立体深度估计,我们使用由当前深度预测和相对相机变换构建的二维相关性。此类细化架构是特定于任务的,并不在任务间共享。可选的其他迭代细化次数也因任务而异,我们通过经验确定该数值。具体来说,对于光流,我们在分层匹配细化后,在 1/4 特征分辨率上使用 6 个额外的细化步骤;对于校正后立体匹配,我们在分层匹配细化后,在 1/4 特征分辨率上使用 3 个额外的细化步骤;对于未校正的立体深度估计,我们在 1/8 特征分辨率上使用 1 个额外的细化步骤,且不进行分层匹配。

需要注意的是,得益于我们更强的基础模型,作为后处理部分的细化步骤数量远少于先前的纯迭代架构(例如,RAFT 21 及其近期变体 31, 50, 51 中的 31 次细化)。

3.5 训练损失(Training Loss)

我们使用真实值(ground truth)对所有预测(包括中间网络输出和最终输出)进行监督:

L=∑i=1NγN−iℓ(Vi,Vgt),(16) L = \sum_{i=1}^{N} \gamma^{N-i} \ell(V_i, V_{gt}), \quad (16) L=i=1∑NγN−iℓ(Vi,Vgt),(16)

其中 NNN 是预测的总数,γ\gammaγ(设置为 0.9)是权重,旨在遵循 RAFT 21 的做法,使后期预测获得指数级增加的更高权重。

损失函数 ℓ\ellℓ 的定义遵循先前方法。具体来说,对于光流,我们使用 L1 损失 21;对于校正后立体匹配,我们使用平滑 L1 损失 19;对于未校正的立体深度估计,我们对逆深度使用 L1 损失 37

遵循 73 的做法,我们还对未校正立体深度使用额外的梯度损失:

Lgrad=∑i=1NγN−i(ℓ(∂xVi,∂xVgt)+ℓ(∂yVi,∂yVgt)),(17) L_{grad} = \sum_{i=1}^{N} \gamma^{N-i} (\ell(\partial_x V_i, \partial_x V_{gt}) + \ell(\partial_y V_i, \partial_y V_{gt})), \quad (17) Lgrad=i=1∑NγN−i(ℓ(∂xVi,∂xVgt)+ℓ(∂yVi,∂yVgt)),(17)

其中 ℓ\ellℓ 为 L1 损失。深度任务的总损失是逆深度损失和梯度损失的组合,组合权重均为 20。

深度梯度loss

未校正立体深度估计(Unrectified Stereo Depth Estimation)任务中,为了优化网络训练而引入的梯度损失(Gradient Loss)

以下是对该公式及背景的详细解读:

1. 为什么要引入梯度损失?

在传统的逆深度(Inverse Depth)回归中,通常直接最小化预测值与真实值之间的差异(如 L1 损失)。然而,仅仅最小化像素级的数值误差有时会导致恢复出的深度图在边缘(Edges)纹理丰富区域不够锐利,或者在深度变化剧烈的地方出现伪影。

梯度损失的核心思想是:

不仅要求预测的深度值(或逆深度值)接近真实值,还要求预测结果的空间变化率(即梯度)与真实结果的空间变化率保持一致。这有助于保持深度图的结构完整性,特别是在深度突变的地方(如物体边缘)。

2. 公式拆解

Lgrad=∑i=1NγN−i(ℓ(∂xVi,∂xVgt)+ℓ(∂yVi,∂yVgt)) L_{grad} = \sum_{i=1}^{N} \gamma^{N-i} (\ell(\partial_x V_i, \partial_x V_{gt}) + \ell(\partial_y V_i, \partial_y V_{gt})) Lgrad=i=1∑NγN−i(ℓ(∂xVi,∂xVgt)+ℓ(∂yVi,∂yVgt))

  • ViV_iVi : 第 iii 次预测的输出(通常是逆深度图)。
  • VgtV_{gt}Vgt : 第 iii 次对应的真实逆深度图(Ground Truth)。
  • ∂x\partial_x∂x 和 ∂y\partial_y∂y : 分别表示在**水平方向(x轴) 垂直方向(y轴)**上的偏导数(即梯度算子,通常使用 Sobel 算子或简单的差分近似来计算)。
    • ∂xVi\partial_x V_i∂xVi: 预测图中水平方向的梯度。
    • ∂yVi\partial_y V_i∂yVi: 预测图中垂直方向的梯度。
    • ∂xVgt\partial_x V_{gt}∂xVgt: 真实图中水平方向的梯度。
    • ∂yVgt\partial_y V_{gt}∂yVgt: 真实图中垂直方向的梯度。
  • ℓ(⋅,⋅)\ell(\cdot, \cdot)ℓ(⋅,⋅) : 损失函数,这里指定为 L1 Loss(平均绝对误差)。即计算预测梯度和真实梯度之间的差值的绝对值。
  • ∑i=1NγN−i\sum_{i=1}^{N} \gamma^{N-i}∑i=1NγN−i : 这是加权求和项。
    • NNN: 总的预测层数(包括中间层和最终输出)。
    • γ\gammaγ: 衰减系数(文中设为 0.9)。
    • 这意味着越靠后的预测层(越接近最终输出),其梯度损失的权重越大;早期的粗预测权重较小。这是为了强调最终结果的精确性。

通俗解释:

这个公式计算的是:预测出的深度图的"边缘形状"与真实深度图的"边缘形状"有多像。如果预测图的边缘很模糊或者位置偏移,那么它的梯度(边缘处的变化率)就会和真实值的梯度不一致,从而产生较大的 LgradL_{grad}Lgrad 损失。

3. 总损失函数

文中提到:"深度任务的总损失是逆深度损失和梯度损失的组合,组合权重均为 20。"

假设 LdepthL_{depth}Ldepth 是基础的逆深度 L1 损失(即直接比较 VVV 和 VgtV_{gt}Vgt),那么总损失 LtotalL_{total}Ltotal 可以表示为:

Ltotal=w1⋅Ldepth+w2⋅Lgrad L_{total} = w_1 \cdot L_{depth} + w_2 \cdot L_{grad} Ltotal=w1⋅Ldepth+w2⋅Lgrad

根据文中描述:

  • w1=20w_1 = 20w1=20
  • w2=20w_2 = 20w2=20

所以:

Ltotal=20⋅Ldepth+20⋅Lgrad L_{total} = 20 \cdot L_{depth} + 20 \cdot L_{grad} Ltotal=20⋅Ldepth+20⋅Lgrad

4. 总结与直观理解
  1. 目的 :提升深度图的结构一致性边缘清晰度
  2. 机制 :惩罚那些虽然平均深度值可能接近真实值,但在细节结构(如物体轮廓、深度突变边界)上与真实值不符的预测。
  3. 效果:通过引入梯度约束,网络被迫学习更平滑且边缘清晰的深度估计,特别是在未校正图像这种几何关系复杂的场景下,能有效减少深度伪影。

简单来说: 普通 L1 损失管的是"深度数值对不对",梯度损失管的是"深度变化趋势对不对"。两者结合,既保证数值准确,又保证边缘锐利。

总结

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