Authors: Jia-Ren Chang, Yong-Sheng Chen
Link: https://arxiv.org/abs/1803.08669
Years: 2018
Credit
Novelty and Question set up
本文提出之时,基于深度学习的立体匹配主流方式仍是patch-based孪生结构,这种方式缺乏上下文信息的获取能力,为了解决这个问题,作者提出了PSMnet,主要通过SPP和3D CNN模块来进行上下文信息的学习。其中SPP(空间金字塔池化)结构利用全局多尺度信息来捕获上下文,而3DCNN则是利用多个hourglass结构来实现更优化的cost volume正则。本文主要贡献:
- 提出一个端对端框架直接获得视差图,并且不需要任何后处理
- 提出利用SPP来捕获图像上下文信息
- 提出利用3D Conv的stacked hourglass来进一步获得上下文线索以实现更优的cost volume正则
Solutions and Details
-
总体结构
整体网络结构分4个stage:
- CNN:用于提取图像特征,PSMNet在最末几个block采用了dilation来扩大感受野
- SPP:用于聚合上下文信息
- Cost Volume:构建左右图特征的匹配代价,采用特征concatenate策略
- Regularization:采用3个hourglass对代价体进行正则化,每个hourglass block都会输出一个预测视差图,训练阶段会对三个视差图进行加权平均,而推理时只采用最后一层输出的视差图
-
视差回归
沿用GC-Net的soft argmin策略,对所有视差level进行一个可差分的回归估计
d^=∑d=0Dmaxd×σ(−cd)\hat{d} = \sum_{d=0}^{D_{max}}d\times{\sigma{(-c_{d}})} d^=d=0∑Dmaxd×σ(−cd)
-
损失函数
采用SmoothL1作为损失函数,对ground truth视差图和预测视差计算平均误差
L(d,d^)=1N∑i=1NsmoothL1(di−d^i)L(d,\hat{d})=\frac{1}{N}\sum_{i=1}^{N}smooth_{L1}(d_i-\hat{d}_i) L(d,d^)=N1i=1∑NsmoothL1(di−d^i)
Results
- 在Sceneflow和KITTI-2012/2015上进行实验,最大视差设置为192,对于KITTI数据集,由于数据量太少,采用在Sceneflow上预训练的模型进行finetune
- 在KITTI和Sceneflow上进行消融实验,验证dliated conv、SPP、stacked hourglass对精度的影响,结果显示三者都用对精度提升帮助比较大;另外在KITTI上进行loss的权重选取对比,0.5\0.7\1.0的组合效果最佳
- 在KITTI2015上与其他SOTA的表现对比,除了前景区域,其余精度指标上表现都比其他SOTA要好
- 在Sceneflow数据集上与其他SOTA比较,EPE指标上明显好于其他模型,比GC-Net误差明显要低很多
- 在KITTI2012上与其他模型比较,所有指标均达到SOTA水平
Thoughts
- PSMNet采用SPP,不仅突破了模型对分辨率,也增强了立体匹配必需的上下文信息聚合的能力
- 采用stacked hourglass增强了代价正则的效果,但因为用了3D卷积,这个stage算力要求非常高,并且stacked hourglass会产生大量的feature map缓存,内存开销也不小
- PSMNet的创新点基本都在模型结构上,范式基本还是沿用GC-Net,其他方面没有太多亮点