这篇文章来自于CVPR-2016的《A Large Dataset to Train Convolutional Networks for Disparity, Optical Flow, and Scene Flow Estimation》,是第一个使用端到端网络解决视差估计问题的方法。
1. Motivation
这篇文章的通讯作者的FlowNet,表明了光流估计(optial flow estimation)可以通过在一个大型合成数据集上训练卷积神经网络来解决,受此启发,这篇文章将基于卷积神经网络的光流估计拓展到视差估计(disparity estimation)和场景流估计(Scene Flow estimation),用CNN来解决视差估计和场景流估计问题。
2. 研究方法
提出了三个具有足够真实性、变化和大小的合成立体视频数据集。除此之外,还提出了一个卷积网络,用于实时视差估计,提供最先进的结果。通过结合光流和视差估计网络并联合训练,实现了第一个使用卷积网络的场景流估计。
注意:DispNet直接用卷积来回归视差,而不是适用WTA原则或者soft argmax
Networks
DispNet是在FlowNet的基础上进行修改的,能够进行端到端的训练,实现视差估计。FlowNet提出了两个版本的网络,分别是FlowNetSimple和FlowNetCorr,因此DispNet也有两个版本,分别是DispNetSimple和DispNetCorr。
DispNetSimple(DispNet)
这是一个编码器-解码器的架构,在编码部分,采用一系列的卷积提取图像特征,在解码器部分,通过上卷积增加分辨率,并且通过跳跃连接联合编码器的低级特征,对局部细节和全局上下文进行融合,提升网络的表达能力。另外,在解码器部分还对预测了多个分辨率的视差图,形成中间监督,最终输出的视差图为原始图像分辨率的一半。
DispNetSimple的输入为左右RGB立体图像的堆叠,这样做是让网络隐式的学习两个图像的特征相关。
上采样过程采用反卷积操作, + + +号代表连接。除了视差回归层,其余的卷积和反卷积后都跟着Leaky ReLU。
DispNetCorr
DispNetCorr 将两个图像分开,通过共享权重的卷积网络独自提取特征,然后在conv2后进行合并,计算3D cost volumn,产生特征的水平相关。
3. 实验结果
训练:
- 使用 Adam 优化器,设置 β 1 = 0.9 \beta_1 = 0.9 β1=0.9 和 β 2 = 0.999 \beta_2 = 0.999 β2=0.999。
- 学习率设置为 λ = 0.0001 \lambda = 0.0001 λ=0.0001,并从迭代 400k 次开始每 200k 次迭代将学习率除以 2。
- 损失函数使用损失权重时间表:训练开始时只使用最低分辨率视差对应的loss6,然后,逐渐增加高分辨率视差图的损失权重,而去掉低分辨率视差图的损失。
数据增强:
- 空间变换:旋转、平移、裁剪、缩放。
- 色度变换:颜色、对比度、亮度对于视差。
注:对于视差估计,任何旋转或垂直移动都会打破极线约束,立体视图之间的水平移动可能会导致负视差。
- 在KITTI-2015测试上仅次于MC-CNN acrt,但速度快1000倍。
- KITTI上15fps
- 相比于实时算法Multi-Block-matching,误差降低了30%
- KITTI上微调后在其他数据集上泛化不好,这是由于KITTI的视差最大为150像素,而其他数据集包含500像素的视差
DispNet相比于FlowNet,在扩展部分的上卷积之间增加了卷积层,由图可见,增加了卷积层后,视差图更加的平滑。
4. 结论
表明了使用大型数据集可以用于训练大型卷积网络,实现端到端的视差估计,性能与最先进的网络相当,但速度得到极大的提高,可用于实时的深度估计。