MonSter

华中科技大学2025

上台之后首先讲清楚自己为什么要做单目深度估计+立体匹配的方式做立体匹配

立体匹配是什么?

立体匹配从校正的立体图像中估计视差图,随后可以将其转换为公制深度。是从相似性匹配中得出差异的,假设两张图像中都有可见的对应关系。

方法大致可分为基于成本筛选的方法和基于迭代优化(局部成本)的方法。

立体匹配效果差在哪?

立体匹配从图像对应中恢复深度。现有方法难以处理匹配线索有限的病态区域,例如遮挡、无纹理区域、重复/薄结构以及像素表示较低的远处对象。

单目深度估计是什么?

与立体匹配不同,单目深度估计直接从单个图像中恢复 3D,不会遇到不匹配的挑战。

单目深度估计的效果差在哪?

虽然单眼深度为立体结构提供了互补的结构信息,但预训练模型通常会产生具有比例和偏移模糊性的相对深度。

即使在全局缩放和移位对齐之后,大量错误仍然存在

image-20250620121158705

红线表示的是理想情况下的视差匹配。蓝色点表示的是实际从单目深度估计得到的视差值。离红线越近的蓝色点,表示该位置的视差估计越准确;而离红线越远的蓝色点,则表示视差估计的误差越大。

  • (a) No Alignment:没有进行任何对齐的情况下,从单目深度估计得到的视差与地面真实视差之间的关系。可以看到,蓝色点分布较为分散,表明视差估计存在较大的误差。
  • (b) Align with GT using global scale and global shift values:使用全局尺度和全局偏移值对单目深度进行对齐后,视差估计与地面真实视差的关系。此时,蓝色点更接近红线,说明对齐操作改善了视差估计的准确性。
  • © Our Shift Refinement:使用每像素偏移精炼(per-pixel shift refinement)后的结果。可以看到,蓝色点进一步靠近红线,表明这种方法能更精确地估计视差,减少与地面真实视差的差距。

摘要

基于置信度的指导自适应地选择可靠的立体声提示以进行单深度音阶偏移恢复。改进的 monodepth 反过来又可以有效地引导 Illposed 区域的立体声。这种迭代相互增强使 MonSter 能够将单深度先验从粗糙的对象级结构发展为像素级几何图形,从而充分释放立体匹配的潜力。

我们提出了 MonSter,这是一种将立体匹配分解为单眼深度估计和每像素尺度偏移恢复的新方法,它完全结合了单眼和立体算法的优势,并克服了缺乏匹配线索的限制。并通过立体引导对齐 (SGA,Stereo Guided Alignment ) 和单声道引导优化 (MGR,Mono Guided Refinement ) 模块自适应地融合它们。SGA 首先通过与立体视差进行全局对齐,将单深度重新缩放为“单眼视差”。然后,它使用条件引导的 GRU 自适应地选择可靠的立体提示,以更新每像素的单眼视差偏移。与 SGA 对称,MGR 使用优化的单眼视差作为条件,自适应地优化匹配失败区域中的立体视差。通过多次迭代,这两个分支有效地相辅相成:

1) 虽然在粗略的对象级别上是有益的,但直接和单向地将单深度融合到立体中受到比例偏移歧义的影响,这通常会在复杂区域(如倾斜或曲面)中引入噪声。使用立体优化单深度可以有效地解决这个问题,确保 MonSter 的稳健性。

2) 改进的单深度反过来为具有挑战性的区域的立体声提供了强有力的指导。例如,由于像素比例较小和匹配难度增加,立体匹配的深度感知能力会随着距离的增加而降低。

性能

在五个最常用的基准上评估了 MonSter:KITTI 2012 [11]、KITTI 2015 [23]、ETH3D [28]、Middlebury [27] 和 Scene Flow [22]。

Scene Flow tate-of-the-art performance with an EPE metric of 0.37.surpassing our baseline [38] by 21.28% and
outperforming the SOTA method [35] by 15.91%.
ETH3D 完整的训练集由 BTS 和 ETH3D 训练集组成ranks 1st.与基线 IGEV 相比,我们在三个报告的指标中分别实现了 58.93%、52.32% 和 41.18% 的改进。图 5 所示的定性比较也显示出类似的趋势。值得注意的是,即使与之前的最佳方法 LoS 相比,我们也将 Bad 1.0 (Noc) 指标从 0.91 提高到 0.46,实现了 49.45% 的改进。
Middlebury 训练集是 BTS 和 Middlebury 训练集的组合. 在 RMSE 度量方面优于所有现有方法。也就是不是全参数最强
但是我也找不到你的名字
KITTI 2015 在 KITTI 2012 和 KITTI 2015 的混合数据集上对 Scene Flow 预训练模型进行了 50k 步的微调。所有指标的最佳性能
KITTI 2012 所有指标的最佳性能

image-20250620124656632

作者特意指出挑战区域的结果

反射区域:我们对 KITTI 2012 基准的反射区域进行了比较。MonSter 在 KITTI 2012 排行榜上的所有反射区域指标中排名第一。如表 3 所示,我们已将现有的 SOTA 提升到一个新的水平。

边缘和非边缘区域:立体匹配在边缘和低纹理区域面临挑战,我们的方法通过利用单眼深度的优势解决了这些问题。为了评估这些区域中的 MonSter,我们按照 [35] 使用 Canny 运算符将 Scene Flow 测试集分为边缘和非边缘区域。如表 4 所示,MonSter 在边缘区域和非边缘区域的表现分别比基线 [38] 高出 14.35% 和 24.39%。

远处背景:立体匹配与远处物体的深度感知无关,我们通过整合 SGA 和 MGR 模块来改进它。如表 2 所示,与 KITTI 2015 基准的基线相比,MonSter 将 D1-bg 指标提高了 18.12%。

方法

image-20250620123738029

MonSter 由 1) 一个单眼深度分支、2) 一个立体匹配分支和 3) 一个相互细化模块组成

单眼深度分支

使用预训练的 DepthAnythingV2 [46] 作为单目深度分支,它使用 DINOv2 [24] 作为编码器,使用 DPT [26] 作为解码器。

立体匹配分支

IGEV [38] 获得初始立体 disp,但是对特征提取分量进行修改,

  1. 如图 4 所示。为了高效、充分利用预训练的单目模型,立体分支与单目分支共享 DINOv2 中的 ViT 编码器,并冻结参数以防止立体匹配训练影响其泛化能力。
  2. ViT 架构以单一分辨率提取特征,而最近的立体匹配方法通常利用四种比例(原始图像分辨率的 1/32、1/16、1/8 和 1/4)的多尺度特征。为了与 IGEV 完全一致,我们采用一堆 2D 卷积层,表示为特征传输网络,将 ViT 特征下采样并转换为金字塔特征的集合 F = {F, F, F, F},其中 F∈ R 22。我们按照 IGEV 构建几何编码卷,并使用相同的 ConvGRU 进行迭代优化。
  3. 为什么是IGEV,因为他也是SOTA:
  4. Our IGEV++ achieves the best performance on the Scene Flow test set across all disparity ranges, up to 768px. Our IGEV++ also achieves state-of-the-art accuracy on the Middlebury, ETH3D, KITTI 2012, and 2015 benchmarks. Specifically, IGEV++ achieves a 3.23% 2-pixel outlier rate (Bad 2.0) on the large disparity benchmark, Middlebury, representing error reductions of 31.9% and 54.8% compared to RAFT-Stereo and GMStereo, respectively. We also present a real-time version of IGEV++ that achieves the best performance among all published real-time methods on the KITTI benchmarks.
  5. image-20250620122736562

相互细化模块

首先执行全局尺度偏移对齐,将单眼深度转换为视差图并将其粗略对齐立体声输出

然后我们迭代地执行双分支优化:

立体引导对齐 (SGA) 利用立体提示来更新单眼视差的每像素偏移;

单声道引导优化 (MGR) 在进一步优化立体视差之前利用对齐的单目深度。

粗略对齐

image-20250620123209747

全局尺度最小二乘对齐

Ω表示立体视差值介于 20% 到 90% 之间的区域,按升序排序,这有助于过滤不可靠的区域,例如天空、极远的区域和近距离异常值。

下面这个D^0_M就是对齐之后的单目深度

立体引导对齐 (SGA)

利用立体匹配中的线索来更新单目深度估计中的每个像素的偏移量,从而更准确地对齐单目深度与立体视差。

img

img

image-20250620125429303

单目引导优化 (MGR)

image-20250620125453877

img

损失函数

image-20250620124109785

使用 L1 损失来监督两个分支的输出。我们将立体声分支前 N 次迭代的差异集表示为 {d}^{N-1}_{i=0},并跟随Raft的思路,随着迭代次数的增加而呈指数级增加权重。总损耗定义为单眼支损耗 Land 与立体支损耗 Las 之和,

训练

NVIDIA RTX 3090 GPU 进行实验。我们使用 AdamW [21] 优化器,

遵循标准 [16, 17, 35],对于大多数实验,我们在 Scene Flow [22] 上预训练 MonSter。为了在 ETH3D 和 Middlebury 上进行微调,我们遵循 SOTA 方法 [16, 17, 35] 从各种公共数据集中创建基础训练集 (BTS) 进行预训练,包括 Scene Flow [22]、CREStereo [16]、Tartan Air [34]、Sintel Stereo [3]、FallingThings [32] 和 InStereo2k [2]。