引言:立体匹配的范式转变
立体匹配是计算机视觉中的经典问题:给定两张从不同视角拍摄的图像,找出像素对应关系,恢复场景深度。几十年来,这个领域的发展主线可以概括为一条清晰的轨迹:
- 1980s-2000s:基于手工设计特征和动态规划的经典方法
- 2010s-2018:基于CNN和3D卷积的深度学习时代(GCNet、PSMNet等)
- 2020s至今:Transformer引领的新范式
而STTR(STereo TRansformer)正是这场范式转变的标志性工作。它由约翰霍普金斯大学的研究团队在2021年提出,发表于ICCV,首次将Transformer架构完整地应用于立体匹配任务,用序列到序列的视角重新审视这个经典问题。
一、传统方法的三大困境
1.1 固定视差范围的限制
传统深度学习方法(如PSMNet、GwcNet)依赖**代价体(Cost Volume)**来存储匹配信息。代价体的尺寸为H×W×DH \times W \times DH×W×D,其中DDD是预设的最大视差。为了保证计算可行性,DDD通常被限制在192像素以内。
这意味着:如果视差超过192,模型根本无法预测。在自动驾驶中,近处物体的视差可能高达300-400,这是一个致命缺陷。
1.2 遮挡区域的盲区
在双目图像中,有些区域只能被一侧相机看到(如物体边缘)。这些遮挡区域理论上没有有效的视差值。但大多数深度学习方法仍然会"强行"输出一个视差,导致错误估计。
1.3 唯一性约束的缺失
一个基本几何事实:左侧图像中的像素最多只能匹配右侧图像中的一个像素。这种唯一性约束在传统动态规划方法中是被严格遵循的,但在基于深度学习的匹配中往往被忽略,导致匹配歧义。
二、STTR的核心思想:序列到序列匹配
STTR的核心洞察是:将立体匹配问题重新定义为序列到序列的对应问题。
传统视角:构建代价体 → 3D卷积正则化 → 回归视差
STTR视角:特征序列 → 注意力匹配 → 直接输出对应关系
这个转变带来了三个根本性优势:
- 不预设视差范围 :匹配是全局的,不受DDD限制
- 天然处理遮挡:匹配概率低的区域自然被视为遮挡
- 强制唯一性约束:通过最优传输理论实现
三、网络架构详解
STTR的整体架构包含三个主要模块:特征提取网络、Transformer匹配模块、上下文调整层。
3.1 特征提取网络
STTR使用一个沙漏形(Hourglass)的CNN作为特征提取器:
- 编码路径:残差网络 + 空间金字塔池化(SPP),用于捕获多尺度上下文
- 解码路径:转置卷积 + Dense Block,恢复空间分辨率
最终输出特征图与输入图像分辨率相同。记左、右图像的特征描述子为FL,FR∈RH×W×CeF_L, F_R \in \mathbb{R}^{H \times W \times C_e}FL,FR∈RH×W×Ce,其中CeC_eCe是特征通道数。
3.2 Transformer匹配模块
这是STTR的核心创新。模块结构采用交替的**自注意力(Self-Attention)和交叉注意力(Cross-Attention)**层:
- 自注意力:在同一图像内建立像素间的长程依赖,帮助理解结构上下文
- 交叉注意力:在左右图像之间建立对应关系,是匹配的核心
3.2.1 多头注意力机制
STTR使用标准的Transformer注意力机制。设每个像素的特征描述子被分到NhN_hNh个头,每个头的维度为Ch=Ce/NhC_h = C_e / N_hCh=Ce/Nh。对于每个头hhh:
Qh=FhQ(e),Kh=FhK(e),Vh=FhV(e) \mathcal{Q}_h = \mathcal{F}_h^Q(e), \quad \mathcal{K}_h = \mathcal{F}_h^K(e), \quad \mathcal{V}_h = \mathcal{F}_h^V(e) Qh=FhQ(e),Kh=FhK(e),Vh=FhV(e)
其中FQ,FK,FV\mathcal{F}^Q, \mathcal{F}^K, \mathcal{F}^VFQ,FK,FV是可学习的线性映射。
注意力权重计算为:
αh=softmax(QhT⋅KhCh) \alpha_h = \text{softmax}\left( \frac{\mathcal{Q}_h^T \cdot \mathcal{K}_h}{\sqrt{C_h}} \right) αh=softmax(Ch QhT⋅Kh)
输出值为:
Vo=∑hαh⋅Vh \mathcal{V}_o = \sum_h \alpha_h \cdot \mathcal{V}_h Vo=h∑αh⋅Vh
最后使用残差连接:
eout=ein+Vo e_{\text{out}} = e_{\text{in}} + \mathcal{V}_o eout=ein+Vo
3.2.2 相对位置编码
这是STTR解决弱纹理区域匹配的关键创新。
在标准Transformer中,位置编码通常是绝对位置的函数。但这在立体匹配中存在问题:匹配应该依赖于像素间的相对位置关系,而非绝对坐标。
STTR提出的相对位置编码 方案:对于像素iii和jjj,相似度计算为:
αij=softmax((ei+ep,i)T(ej+ep,j)Ch) \alpha_{ij} = \text{softmax}\left( \frac{(e_i + e_{p,i})^T (e_j + e_{p,j})}{\sqrt{C_h}} \right) αij=softmax(Ch (ei+ep,i)T(ej+ep,j))
其中ep,ie_{p,i}ep,i是位置编码。展开后得到四项:
eiTej+eiTep,j+ep,iTej+ep,iTep,j e_i^T e_j + e_i^T e_{p,j} + e_{p,i}^T e_j + e_{p,i}^T e_{p,j} eiTej+eiTep,j+ep,iTej+ep,iTep,j
STTR的关键创新是只保留前三项,去掉第四项 ,因为第四项完全依赖于绝对位置,与像素相似性无关。进一步地,将绝对位置编码替换为相对位置编码ep,i−je_{p,i-j}ep,i−j,使匹配真正依赖于像素间的相对关系。
3.3 最优传输与唯一性约束
这是STTR最具数学深度的地方。
传统方法中,匹配是"硬"的:每个左图像素选择最相似的右图像素。但这不可微分,且不满足唯一性约束。
STTR采用**熵正则化的最优传输(Optimal Transport)**来解决。对于代价矩阵M∈RH×WM \in \mathbb{R}^{H \times W}M∈RH×W(由交叉注意力输出),目标是找到最优的匹配矩阵τ\tauτ:
minτ⟨M,τ⟩−ϵ⋅E(τ) \min_{\tau} \langle M, \tau \rangle - \epsilon \cdot E(\tau) τmin⟨M,τ⟩−ϵ⋅E(τ)
其中E(τ)E(\tau)E(τ)是熵正则化项,ϵ\epsilonϵ控制正则化强度。这个优化问题可以通过Sinkhorn算法高效求解。
最终得到的τ\tauτ满足:
- 每行和为1(左图每个像素有匹配)
- 每列和≤1(右图每个像素最多匹配一个左图像素)
这正是唯一性约束的数学表达!
3.4 视差与遮挡回归
得到匹配矩阵τ\tauτ后,STTR采用"软"的赢家通吃策略估计视差:
- 在τ\tauτ中找到匹配概率最大的位置,索引记为kkk
- 取kkk周围的3×33 \times 33×3窗口N3(k)\mathcal{N}_3(k)N3(k)
- 计算原始视差:
dˉraw=∑j∈N3(k)τi,j⋅dj∑j∈N3(k)τi,j \bar{d}{\text{raw}} = \frac{\sum{j \in \mathcal{N}3(k)} \tau{i,j} \cdot d_j}{\sum_{j \in \mathcal{N}3(k)} \tau{i,j}} dˉraw=∑j∈N3(k)τi,j∑j∈N3(k)τi,j⋅dj
其中djd_jdj是视差候选值。
遮挡概率则自然定义为:
pocc=1−∑j∈N3(k)τi,j p_{\text{occ}} = 1 - \sum_{j \in \mathcal{N}3(k)} \tau{i,j} pocc=1−j∈N3(k)∑τi,j
窗口内的匹配概率和越高,被遮挡的可能性越小。
3.5 上下文调整层
上述匹配过程是逐极线独立进行的,缺乏不同极线之间的上下文信息。STTR使用一个轻量级CNN(称为Context Adjustment Layer)对初始视差图和遮挡图进行精化。
四、损失函数
STTR的损失函数包含三项:
L=λ1Ld1,r+λ2Ld1,f+λ3Lbe,f \mathcal{L} = \lambda_1 \mathcal{L}{d1,r} + \lambda_2 \mathcal{L}{d1,f} + \lambda_3 \mathcal{L}_{be,f} L=λ1Ld1,r+λ2Ld1,f+λ3Lbe,f
其中:
- Ld1,r\mathcal{L}_{d1,r}Ld1,r:原始视差图的L1损失
- Ld1,f\mathcal{L}_{d1,f}Ld1,f:精化后视差图的L1损失
- Lbe,f\mathcal{L}_{be,f}Lbe,f:精化后遮挡图的二值交叉熵损失
五、实验结果与性能分析
5.1 主要结果
STTR在多个基准数据集上取得了优异表现:
| 数据集 | 指标 | STTR结果 |
|---|---|---|
| Scene Flow | EPE | 0.48 |
| Scene Flow | 3px错误率 | 1.55% |
| KITTI 2015 | D1-bg | 3.37% |
5.2 关键优势验证
泛化能力:STTR在纯合成数据(Scene Flow)上训练后,直接测试真实场景(KITTI),无需微调即可取得competitive结果。这证明了基于注意力的匹配策略具有良好的域泛化能力。
视差范围适应性:由于不构建固定范围的代价体,STTR可以处理任意大小的视差,这是传统方法无法做到的。
遮挡估计:STTR输出的遮挡概率与真实遮挡区域高度相关,为下游任务提供了有价值的置信度信息。
六、STTR的影响与后续发展
STTR的提出开创了基于Transformer的立体匹配新方向,后续工作从多个维度进行了改进:
6.1 效率优化
标准Transformer的计算复杂度为O(N2)O(N^2)O(N2),在图像上直接应用成本较高。后续工作如"引入轻量级Transformer的自适应窗口立体匹配算法"将STTR的效率提升了4.7倍。
6.2 特征提取改进
FET(Feature Extraction Transformer)将STTR的特征提取部分也替换为Transformer,进一步提升了性能,在Scene Flow上将EPE从0.48降至0.32 ,相对提升30.95%。
6.3 与Swin Transformer融合
STransMNet将Swin Transformer引入特征提取,更好地捕获全局上下文信息。
七、总结与展望
STTR的价值不仅在于其性能,更在于它开创的新范式:
| 维度 | 传统方法 | STTR |
|---|---|---|
| 匹配方式 | 代价体 + 3D卷积 | 注意力 + 序列匹配 |
| 视差范围 | 固定,≤192 | 无限制 |
| 遮挡处理 | 后处理启发式 | 模型内生 |
| 唯一性约束 | 通常忽略 | 最优传输强制 |
| 可解释性 | 较低 | 注意力可视化 |
STTR的核心公式值得记住:
Match=Sinkhorn(Softmax((FL+P)T(FR+P)C)) \text{Match} = \text{Sinkhorn}\left( \text{Softmax}\left( \frac{(F_L + P)^T (F_R + P)}{\sqrt{C}} \right) \right) Match=Sinkhorn(Softmax(C (FL+P)T(FR+P)))
它用优雅的数学形式,统一解决了匹配、唯一性约束、遮挡估计三个核心问题。
未来,随着高效Transformer架构的发展,基于注意力的立体匹配方法有望在实时性上取得突破,真正走向实际应用。
参考文献
- Li, Z., Liu, X., Drenkow, N., et al. "Revisiting Stereo Depth Estimation From a Sequence-to-Sequence Perspective with Transformers." ICCV 2021.
- 双目立体视觉论文阅读(1)STTR. CSDN博客.
- Jia, D. et al. "A Transformer-Based Architecture for High-Resolution Stereo Matching." IEEE TCI 2024.
- 深度估计-双目-STTR. CSDN博客.
- 王正家等. "引入轻量级Transformer的自适应窗口立体匹配算法." 计算机工程, 2024.
- Li, Z. et al. "Revisiting Stereo Depth Estimation From a Sequence-to-Sequence Perspective with Transformers." arXiv:2011.02910.
- STTR:基于Transformers的立体深度估计网络,代码已开源! 知乎专栏.
- 引入轻量级Transformer的自适应窗口立体匹配算法. 计算机工程.
- 从序列视角思考双目深度估计: STereo TRansformers. 知乎专栏.
- 融合Swin Transformer的立体匹配方法STransMNet. 光电工程, 2023.
本文首发于CSDN博客,欢迎转发讨论。如果觉得有帮助,请点赞支持!