CREStereo 论文总结
论文标题:Practical Stereo Matching via Cascaded Recurrent Network with Adaptive Correlation
作者:Jiankun Li, Peisen Wang, Pengfei Xiong, Tao Cai, Ziwei Yan, Lei Yang, Jiangyu Liu, Haoqiang Fan, Shuaicheng Liu
单位:Megvii Research、Tencent、电子科技大学
会议:CVPR 2022
文章目录
- [CREStereo 论文总结](#CREStereo 论文总结)
-
- [1. 研究背景与动机](#1. 研究背景与动机)
-
- [1.1 实际场景中的三大挑战](#1.1 实际场景中的三大挑战)
- [1.2 本文的解决方案](#1.2 本文的解决方案)
- [2. 网络架构总览](#2. 网络架构总览)
- [3. 各模块详细原理](#3. 各模块详细原理)
-
- [3.1 自适应群组相关层(Adaptive Group Correlation Layer, AGCL)](#3.1 自适应群组相关层(Adaptive Group Correlation Layer, AGCL))
-
- [3.1.1 局部特征注意力(Local Feature Attention)](#3.1.1 局部特征注意力(Local Feature Attention))
- [3.1.2 2D-1D 交替局部搜索(2D-1D Alternate Local Search)](#3.1.2 2D-1D 交替局部搜索(2D-1D Alternate Local Search))
- [3.1.3 可形变搜索窗口(Deformable Search Window)](#3.1.3 可形变搜索窗口(Deformable Search Window))
- [3.1.4 群组相关(Group-wise Correlation)](#3.1.4 群组相关(Group-wise Correlation))
- [3.2 级联循环网络(Cascaded Recurrent Network)](#3.2 级联循环网络(Cascaded Recurrent Network))
-
- [3.2.1 循环更新模块(Recurrent Update Module, RUM)](#3.2.1 循环更新模块(Recurrent Update Module, RUM))
- [3.2.2 级联细化(Cascaded Refinement)](#3.2.2 级联细化(Cascaded Refinement))
- [3.3 推理阶段:堆叠级联架构(Stacked Cascades for Inference)](#3.3 推理阶段:堆叠级联架构(Stacked Cascades for Inference))
- [3.4 损失函数](#3.4 损失函数)
- [4. 新合成训练数据集](#4. 新合成训练数据集)
-
- [4.1 形状多样性](#4.1 形状多样性)
- [4.2 光照与纹理多样性](#4.2 光照与纹理多样性)
- [4.3 视差分布设计](#4.3 视差分布设计)
- [5. 实验结果](#5. 实验结果)
-
- [5.1 消融实验(表 1,Middlebury + ETH3D)](#5.1 消融实验(表 1,Middlebury + ETH3D))
- [5.2 与 SOTA 方法对比](#5.2 与 SOTA 方法对比)
- [5.3 实用性能评估](#5.3 实用性能评估)
- [6. 关键设计总结](#6. 关键设计总结)
- [7. 结论与局限性](#7. 结论与局限性)
1. 研究背景与动机
1.1 实际场景中的三大挑战
现有立体匹配算法在合成数据集上取得了显著进展,但在消费级设备(如智能手机)拍摄的真实图像上仍面临以下三大障碍:
挑战一:细节结构恢复困难
- 消费级相机拍摄的高分辨率图像中,细线结构(如铁丝网、猫须、电线)的视差恢复极为困难
- 现有方法往往在细节区域产生过度平滑,导致散景渲染等应用中出现不自然的效果
挑战二:非理想极线校正(Non-ideal Rectification)
- 真实双目相机(尤其是智能手机双目模组)常配备广角镜头和长焦镜头,焦距和畸变参数各异
- 校正后的立体图像对中,对应点往往不严格在同一扫描线上,存在轻微的垂直偏移(< 2 像素)或 3D 空间中的小旋转
- 假设完美校正的现有方法在此类情况下极易失效
挑战三:训练数据泛化性不足
- 现有合成数据集(如 SceneFlow、Falling Things)物体形状变化有限、视差分布受限
- 难以覆盖无纹理、重复纹理、反光等真实世界中的困难场景
1.2 本文的解决方案
提出 CREStereo(Cascaded REcurrent Stereo matching network),包含三项核心创新:
-
自适应群组相关层(Adaptive Group Correlation Layer, AGCL):采用 2D-1D 交替局部搜索策略 + 可形变搜索窗口,应对非理想校正问题
-
级联循环网络(Cascaded Recurrent Network):层级式粗到精的迭代视差更新,兼顾鲁棒性与细节保留;推理阶段采用堆叠级联(Stacked Cascades)处理高分辨率输入
-
新的合成训练数据集:针对真实世界困难场景精心设计,含丰富形状、光照、纹理变化,显著提升跨域泛化能力
2. 网络架构总览
CREStereo 的整体流程(参见论文图 2):
左图 I_1 ──┐
├── 共享权重特征提取网络 ──→ 3 级特征金字塔(1/4、1/8、1/16)
右图 I_2 ──┘ │
│(I_1 特征金字塔同时提供上下文信息)
↓
┌─────────────────────────────────────┐
│ 级联循环网络(训练阶段) │
│ │
│ 第 1 级(1/16 分辨率) │
│ 视差初始化为 0 │
│ → RUM(循环更新模块)× n 次迭代 │
│ → 输出视差 d_1(上采样) │
│ │
│ 第 2 级(1/8 分辨率) │
│ 视差初始化 = 上采样(d_1) │
│ → RUM × n 次迭代 │
│ → 输出视差 d_2(上采样) │
│ │
│ 第 3 级(1/4 分辨率) │
│ 视差初始化 = 上采样(d_2) │
│ → RUM × n 次迭代 │
│ → 最终视差(凸上采样至输入分辨率) │
└─────────────────────────────────────┘
推理阶段(高分辨率):堆叠级联(Stacked Cascades)
→ 将图像降采样构建图像金字塔
→ 低分辨率结果作为高分辨率的初始化,多阶段推理
每个 RUM 内部核心操作:AGCL(自适应群组相关层)
3. 各模块详细原理
3.1 自适应群组相关层(Adaptive Group Correlation Layer, AGCL)
AGCL 是 CREStereo 的核心创新之一,解决两个关键问题:非理想校正和遮挡/无纹理区域的匹配歧义。
3.1.1 局部特征注意力(Local Feature Attention)
在第一级级联的相关计算之前,加入一个注意力模块来聚合全局上下文信息:
- 参考 LoFTR,对骨干网络输出添加位置编码(Positional Encoding),增强特征的位置依赖性
- 对左右特征分别计算自注意力与交叉注意力(交替进行),使用线性注意力层降低计算复杂度
- 注意力模块仅在第一级级联使用,后续级别的 RUM 不再重复执行
目的:在局部相关计算之前,将全局上下文信息融入单张或跨图的特征图中。
3.1.2 2D-1D 交替局部搜索(2D-1D Alternate Local Search)
传统方法(如 RAFT-Stereo):
- 全对相关(All-Pairs):对两个 C × H × W C \times H \times W C×H×W 特征图做矩阵乘法,输出 H × W × H × W H \times W \times H \times W H×W×H×W 的 4D 相关体或 H × W × W H \times W \times W H×W×W 的 3D 相关体,显存和计算量极大
- 局部相关:只在固定 1D 搜索窗口内匹配,不适应非理想校正情况
CREStereo 的策略 :只在局部搜索窗口内计算相关,输出体积仅为 H × W × D H \times W \times D H×W×D( D D D 远小于 W W W),节省显存与计算量。
给定重采样并经注意力处理的特征图 F 1 \mathbf{F}_1 F1 和 F 2 \mathbf{F}_2 F2,在位置 ( x , y ) (x, y) (x,y) 的局部相关定义为:
Corr ( x , y , d ) = 1 C ∑ i = 1 C F 1 ( i , x , y ) F 2 ( i , x ′ , y ′ ) (1) \text{Corr}(x, y, d) = \frac{1}{C} \sum_{i=1}^{C} \mathbf{F}_1(i, x, y) \mathbf{F}_2(i, x', y') \tag{1} Corr(x,y,d)=C1i=1∑CF1(i,x,y)F2(i,x′,y′)(1)
其中 x ′ = x + f ( d ) x' = x + f(d) x′=x+f(d), y ′ = y + g ( d ) y' = y + g(d) y′=y+g(d), f ( d ) f(d) f(d) 和 g ( d ) g(d) g(d) 分别为水平和垂直方向的固定偏移。
搜索策略:
- 1D 搜索模式 (标准极线搜索): g ( d ) = 0 g(d) = 0 g(d)=0, f ( d ) ∈ [ − r , r ] f(d) \in [-r, r] f(d)∈[−r,r], r = 4 r = 4 r=4,仅在水平方向搜索
- 2D 搜索模式 (处理非理想校正):使用以当前预测偏移为中心的 k × k k \times k k×k 网格(膨胀系数 l l l)进行搜索, k = 2 r + 1 k = \sqrt{2r+1} k=2r+1 ,保证输出相关图与 1D 搜索形状一致
两种搜索模式的结果按通道维度拼接,形成最终相关体。
2D-1D 交替搜索的意义:
- 1D 搜索利用极线约束,高效精确
- 2D 搜索处理轻微垂直偏移(非理想校正),作为传播模块,让网络学会用更准确的邻域像素替换当前位置的有偏预测
- 两者交替使用,互为补充
3.1.3 可形变搜索窗口(Deformable Search Window)
受可形变卷积启发,对于遮挡或无纹理区域,固定搜索窗口计算的相关性往往不可靠。因此引入内容自适应搜索窗口:
网络学习额外的偏移量 d x dx dx 和 d y dy dy,新的相关公式变为:
Corr ( x , y , d ) = 1 C ∑ i = 1 C F 1 ( i , x , y ) F 2 ( i , x ′ ′ , y ′ ′ ) (2) \text{Corr}(x, y, d) = \frac{1}{C} \sum_{i=1}^{C} \mathbf{F}_1(i, x, y) \mathbf{F}_2(i, x'', y'') \tag{2} Corr(x,y,d)=C1i=1∑CF1(i,x,y)F2(i,x′′,y′′)(2)
其中 x ′ ′ = x + f ( d ) + d x x'' = x + f(d) + dx x′′=x+f(d)+dx, y ′ ′ = y + g ( d ) + d y y'' = y + g(d) + dy y′′=y+g(d)+dy。
偏移量 o ∈ R 2 × ( 2 r + 1 ) × h × w o \in \mathbb{R}^{2 \times (2r+1) \times h \times w} o∈R2×(2r+1)×h×w 由 GRU 块更新后输入到 AGCL 中。
图 4(论文原图)展示了 2D 和 1D 两种情况下偏移如何改变标准局部搜索窗口的形态。
3.1.4 群组相关(Group-wise Correlation)
受 GwcNet 启发,将特征图沿通道维度分成 G \mathcal{G} G 组,逐组计算局部相关,将 G \mathcal{G} G 个相关体(每个 D × H × W D \times H \times W D×H×W)在通道维度拼接,得到 G D × H × W \mathcal{G}D \times H \times W GD×H×W 的输出相关体。
群组相关相比单一相关能够捕获更多的特征通道信息,提升匹配准确性。
3.2 级联循环网络(Cascaded Recurrent Network)
3.2.1 循环更新模块(Recurrent Update Module, RUM)
RUM 基于 GRU 块和 AGCL 构建(参见论文图 3 左侧):
RUM 的工作流程:
- 在每次迭代时,用当前视差预测 f k f_k fk 对群组化特征(Grouped Features)采样(Sampler),得到右图采样特征
- 将采样后的特征输入 AGCL,计算局部相关(Grouped Correlation)
- AGCL 输出当前相关体,与左图特征、当前视差预测拼接
- GRU 块利用上述输入更新隐状态,输出残差视差 Δ f \Delta f Δf
- 更新当前视差: f k + 1 = f k + Δ f k f_{k+1} = f_k + \Delta f_k fk+1=fk+Δfk
- GRU 块输出新的偏移(offset),用于下一次迭代的 AGCL 可形变搜索
共享权重:所有层级的 RUM 共享相同的权重,减少参数量并提升泛化能力。
其中 { f 1 , ... , f n } \{f_1, \ldots, f_n\} {f1,...,fn} 为 n n n 次迭代的中间预测,以初始视差 f 0 f_0 f0 为起点。
3.2.2 级联细化(Cascaded Refinement)
训练阶段使用固定分辨率的三级特征金字塔(1/16、1/8、1/4)进行层级式细化:
- 第 1 级 (1/16 分辨率):视差初始化为全零( d 0 = 0 d_0 = 0 d0=0)
- 第 2 级(1/8 分辨率):视差初始化 = 上一级输出的上采样结果
- 第 3 级(1/4 分辨率):视差初始化 = 上一级输出的上采样结果
- 最终输出:最后一级 RUM 输出后,通过凸上采样(Convex Upsampling,参考 RAFT)得到输入分辨率的视差图
设计原理:
- 低分辨率/高语义层级:感受野大,语义信息丰富,对无纹理或重复纹理区域的匹配更鲁棒
- 高分辨率/低语义层级:保留细节信息,恢复细线结构等精细深度
- 层级式级联将两者优势结合,从粗到精逐步细化,同时避免单纯下采样导致小目标大位移区域的特征退化
3.3 推理阶段:堆叠级联架构(Stacked Cascades for Inference)
训练时使用固定的三级金字塔(1/16、1/8、1/4),但对于高分辨率输入图像,直接下采样至 1/4 分辨率可能导致:
- 特征感受野不足(需要更多下采样来扩大感受野)
- 高分辨率图像中小目标大位移区域特征退化
解决方案:推理时,提前将图像对降采样构建图像金字塔,依次以不同分辨率作为输入喂入同一训练好的特征提取网络,利用多层级上下文。
堆叠级联架构如论文图 2 右侧所示,包含以下几种配置:
- 单阶段(Single stage):直接以某一分辨率输入
- 两阶段(Two stages):低分辨率运行一遍 → 结果作为高分辨率的初始化,再运行一遍
- 三阶段(Three stages):进一步扩展到三个分辨率层级
各阶段的 RUM 权重与训练时共享,无需额外微调。低分辨率阶段的输出视差经上采样后作为高分辨率阶段的初始化。同一阶段中,所有 RUM 与上一高分辨率阶段的最后一个 RUM 共同使用。
消融实验(论文表 2)表明:
- 单阶段(1024×1536):Middlebury Bad 2.0 = 6.00
- 两阶段(1536×2048):Bad 2.0 = 4.53(显著提升)
- 三阶段(1536×2048):Bad 2.0 = 4.58(与两阶段相近)
3.4 损失函数
对特征金字塔的每个层级 s ∈ { 1 / 16 , 1 / 8 , 1 / 4 } s \in \{1/16, 1/8, 1/4\} s∈{1/16,1/8,1/4},将 n n n 次迭代的输出序列 { f 1 s , ... , f n s } \{f_1^s, \ldots, f_n^s\} {f1s,...,fns} 通过上采样算子 μ s \mu_s μs 调整到完整预测分辨率,然后计算指数加权 L1 损失(与 RAFT 相同, γ = 0.9 \gamma = 0.9 γ=0.9):
L = ∑ s ∑ i = 1 n γ n − i ∥ d g t − μ s ( f i s ) ∥ 1 (3) \mathcal{L} = \sum_s \sum_{i=1}^{n} \gamma^{n-i} \|\mathbf{d}_{gt} - \mu_s(f_i^s)\|_1 \tag{3} L=s∑i=1∑nγn−i∥dgt−μs(fis)∥1(3)
其中 d g t \mathbf{d}_{gt} dgt 为真值视差,指数权重使靠后迭代的预测权重更大,鼓励网络快速收敛。
4. 新合成训练数据集
为弥补现有合成数据集(SceneFlow、Falling Things)的不足,CREStereo 提出并发布了一个新的合成数据集,特点如下:
4.1 形状多样性
场景主体内容来自三个来源:
- ShapeNet:40,000+ 种常见物体的 3D 模型
- Blender 树苗生成插件:生成精细、杂乱的视差图
- Blender 内部基础形状 + 网格修改器:生成含孔洞和开放结构的挑战性场景
4.2 光照与纹理多样性
- 在场景内不同位置放置多种颜色和亮度的随机光源,营造复杂光照环境
- 使用真实世界图像作为物体和背景纹理,特别关注含有重复纹理、反光表面等困难情况
- 利用 Blender Cycles 渲染器的光线追踪能力,将物体随机设置为透明或金属反光,以覆盖此类真实场景
4.3 视差分布设计
- 在相机视锥体形成的截锥形空间(frustum-shaped space)内随机放置物体
- 每个物体的确切位置从概率分布中随机采样,然后根据其到相机的距离按比例缩放
- 生成随机可控的视差分布,覆盖不同基线设置
如图 6 所示,在相同大小(35K 对)训练集的对比实验中,使用本文新数据集训练的模型在 ETH3D 和 Middlebury 验证集上均取得更低的训练 loss 和更好的泛化性能。
5. 实验结果
5.1 消融实验(表 1,Middlebury + ETH3D)
相关类型对比(上半部分,公共数据集训练,不含 Middlebury/ETH3D):
| 方法 | Middlebury Bad 2.0 | Middlebury AvgErr | ETH3D Bad 1.0 | ETH3D AvgErr |
|---|---|---|---|---|
| 2D 全对相关 | 47.38 | 5.62 | 6.17 | 0.38 |
| 1D 全对相关 | 44.41 | 4.93 | 6.03 | 0.38 |
| 1D 局部 | 19.87 | 3.03 | 3.13 | 0.28 |
| 2D 局部 | 20.70 | 2.99 | 3.33 | 0.29 |
| 1D+2D 局部 | 19.23 | 3.01 | 3.05 | 0.28 |
| 1D 局部,2 级 | 13.84 | 2.24 | 2.35 | 0.23 |
| 2D 局部,2 级 | 14.07 | 2.15 | 2.09 | 0.23 |
| 1D+2D 局部,2 级 | 12.48 | 1.99 | 2.20 | 0.22 |
| 1D+2D 局部,3 级 | 12.67 | 1.80 | 2.01 | 0.21 |
AGCL 关键组件对比(下半部分,全数据集训练):
| 方法 | Middlebury Bad 2.0 | Middlebury AvgErr | ETH3D Bad 1.0 | ETH3D AvgErr |
|---|---|---|---|---|
| 无可形变搜索 & 群组 & 注意力 | 6.86 | 1.11 | 1.26 | 0.19 |
| 无可形变搜索 | 6.84 | 1.08 | 1.22 | 0.19 |
| 无群组相关 | 6.82 | 1.07 | 1.20 | 0.18 |
| 无注意力 | 6.49 | 1.07 | 1.22 | 0.18 |
| 完整方法 | 6.46 | 1.05 | 1.03 | 0.17 |
5.2 与 SOTA 方法对比
Middlebury 2014 基准(表 3):
| 方法 | Bad 2.0 | Bad 2.5 | AvgErr | RMS | A95 |
|---|---|---|---|---|---|
| RAFT-Stereo | 4.74² | 9.37² | 1.27² | 8.41³ | 2.29² |
| LEAStereo | 7.15¹⁸ | 20.8⁴⁰ | 1.43¹ | 8.11² | 2.65³ |
| AANet++ | 15.4⁶⁶ | 25.5⁵¹ | 6.37⁹⁴ | 23.5¹⁰³ | 48.8¹¹² |
| CREStereo (Ours) | 3.71¹ | 8.25¹ | 1.15¹ | 7.70¹ | 1.58¹ |
(上标为排名,第一名加粗)
ETH3D 基准(表 4):
| 方法 | Bad 1.0 | Bad 0.5 | AvgErr | RMSE |
|---|---|---|---|---|
| RAFT-Stereo | 2.44⁵ | 7.04⁴ | 0.18⁴ | 0.36⁵ |
| GwcNet | 3.66²⁵ | 12.04³⁹ | 0.29⁴⁰ | 0.67⁵² |
| AANet | 5.01⁵² | 13.16⁴⁵ | 0.31⁴⁵ | 0.68³⁷ |
| CREStereo (Ours) | 0.98¹ | 3.58¹ | 0.13¹ | 0.28² |
在 ETH3D 上,CREStereo 超越已发布 SOTA 方法 59.84%(Bad 1.0 指标)。
KITTI 2012/2015 :在 KITTI 上超越 LEAStereo 9.47%(Out-Noc,2 像素误差阈值)。
5.3 实用性能评估
Holopix50K 真实数据集(图 9):
- 在多种真实场景下视觉质量显著优于 AANet、HSMNet、GwcNet、LEAStereo、RAFT-Stereo
- 尤其在细线结构(猫须、铁丝网)上有明显优势
干扰鲁棒性测试(ETH3D,图 10):
- 对图像模糊、色变、色度噪声、透视变换、垂直偏移、畸变等 7 类干扰
- CREStereo 平均误差在所有干扰类型下均低于对比方法
智能手机照片(表 5,400 张手机拍摄场景):
| 方法 | mxIoU | mxIoUBd |
|---|---|---|
| RAFT-Stereo | 94.58% | 69.26% |
| AANet | 91.02% | 63.70% |
| LEAStereo | 92.38% | 58.06% |
| CREStereo (Ours) | 97.50% | 72.61% |
6. 关键设计总结
| 设计 | 解决的问题 | 核心机制 |
|---|---|---|
| AGCL 局部特征注意力 | 首级缺乏全局上下文 | LoFTR 风格自/交叉注意力 + 位置编码 |
| 2D-1D 交替搜索 | 非理想校正的垂直偏移 | 交替使用水平 1D 和二维网格搜索 |
| 可形变搜索窗口 | 遮挡/无纹理区域匹配歧义 | GRU 输出偏移调整搜索位置 |
| 群组相关 | 特征通道信息利用不足 | 分组计算相关后拼接 |
| 级联循环网络 | 鲁棒性与细节难以兼顾 | 粗到精三级层级式迭代更新 |
| 堆叠级联(推理) | 高分辨率输入的感受野不足 | 图像金字塔 + 多阶段堆叠推理 |
| 新合成数据集 | 合成到真实的泛化性不足 | 丰富形状/光照/纹理/视差分布设计 |
7. 结论与局限性
主要贡献
-
AGCL:通过局部注意力、2D-1D 交替搜索、可形变窗口、群组相关,有效处理非理想校正和困难匹配区域
-
级联循环网络 + 堆叠级联推理:在鲁棒性(低分辨率粗估计)和细节恢复(高分辨率精估计)之间取得平衡,支持任意高分辨率推理
-
新合成训练数据集:覆盖真实场景困难情况,提升跨域泛化能力
-
性能突破:在 ETH3D、Middlebury 基准均排名第一,在真实世界手机照片上也展现出明显优势
局限性
- 模型推理效率尚不足以支持移动端实时运行
- 未来方向:针对移动端设备(手机等便携设备)的网络轻量化与加速优化