1. 研究问题
目前基于深度学习的深度估计方法需要大量的时间和内存,无法在内存受限的设备上进行实时深度估计。
2. 研究方法
提出第一个用于实时立体匹配的端到端网络StereoNet,在高质量GPU上以 60fps 运行,产生 720p 高质量、边缘保留的视差图。StereoNet 从低分辨率成本量中回归初始视差图,然后采用输入图像作为指导,学习边缘感知上采样函数,分层细化视差图,以恢复边缘高频细节和薄结构,从而提高视差精度。
2.1 Preliminaries
通常端到端网络采用编码器-解码器结构实现端到端的深度估计,但是存在两个问题:
- 没有捕获任何关于立体匹配问题的几何直觉。
- 过度参数化,可能导致过拟合。
本文提出了一个轻量级的网络,利用了立体匹配的几何结构信息(类似于GCNet
),从而产生了边缘保留
的效果。具体的网络如下:
2.2 Coarse Prediction: Cost Volume Filtering
2.2.1 Feature Network
利用孪生网络提取左右图像特征。首先,使用 K 个步长为2,5*5
的卷积核进行下采样,每次下采样的特征通道都为 32 。然后采用6个残差块,每个残差块都采用3*3
卷积,BN,和leaky relu 激活。最后使用一个3*3
的卷积输出通道数为 32 的特征图,这个卷积层不带BN和激活。输出是下采样图像中每个像素的 32 维特征向量。
这种低分辨率表示很重要,原因有两个:
- 它具有很大的接受域,对无纹理区域很有用。
- 它保持特征向量紧凑。
2.2.2 Cost Volume
通过提取像素的特征向量和匹配候选的特征向量之间的差异
来形成粗分辨率的成本量。这种非对称的成本量表示效果很好,在本文的实验中与特征连接的效果相当。
在获得成本量之后,传统的立体方法将使用赢家通吃 (WTA) 方法,该方法选择两个特征向量之间具有最低欧几里得距离的视差。相反,我们在这里让网络通过运行多个卷积和非线性来学习正确的度量。
为了在空间域和视差域中聚合上下文信息,我们采用过滤器大小为 3*3*3
的 4 个 3D 卷积
,BN
和 leaky relu 激活
来过滤成本量。最后采用一个不使用 BN
和 激活函数
的 3*3*3
卷积,获得过滤的 3D 成本量,其大小为:
其中,K 是下采样的层数,D 是最大候选视差。本文的目标是设计一个小内存占用的方法,可以方便部署在移动平台上。因此该成本量是低分辨率的成本量。
不同于 GCNet 计算多尺度成本量,本文的方法只计算低分辨率成本量,经过实验证明,低分辨率成本量与高分辨率成本量的效果相当,但大大降低了计算量。
2.2.3 Differentiable argmin
这里对比了两种可微的视差回归的方法,分别是soft argmin
和probabilistic selection
。
- soft argmin
- probabilistic selection:从视差的softmax分布进行概率采样。
文章用实验证明了soft argmin收敛速度更快,更容易优化
。所以网络中就采用了soft argmin
作为视差回归的方法。
2.3 Hierarchical Re nement: Edge-Aware Upsampling
初始视差图缺乏细节,为了保持我们的紧凑设计,我们通过学习保留边缘的细化网络
来解决这个问题。我们注意到网络在这个阶段的作用是利用颜色输入作为指导混合高频细节,以扩大或侵蚀视差值。
我们使用颜色输入作为指导混合高频细节,学习一个残差来细化视差。我们的细化网络将初始视差双线性上采样到输出大小以及调整到相同维度的颜色作为输入。最近,反卷积被证明会产生棋盘伪影
,因此我们选择使用双线性上采样
和卷积[40]
。串联的颜色和视差首先通过一个 3*3
卷积层,输出 32 维表示。然后通过 6 个残差块,这些块再次使用 3*3
卷积、BN
和 leaky ReLu 激活
(
α
=
0.2
\alpha=0.2
α=0.2)。我们在这些块中使用空洞卷积
从更大的上下文中采样而不增加网络大小。我们将残差块的膨胀因子分别设置为 1、2、4、8、1 和 1。然后使用不带 BN 或 激活
的 3*3
卷积层处理该输出。该网络的输出是一个视差残差,然后将其添加到之前的视差预测中。我们将 ReLu 应用于总和以将差异限制为正。
在我们的实验中,我们评估了两种细化方法:1)使用网络级联对输出进行分层细化
,2)以及将粗略视差图一次性上采样到全分辨率并进行单次细化
。图 2 说明了分层架构每个级别的细化层的输出以及在每个级别添加的残差以恢复高频细节。这个网络的行为类似于联合双边上采样 [32]
,事实上我们相信这个网络是一个利用输入图像引导的学习的边缘感知上采样函数
。
2.4 Loss Function
采用监督进行训练,采用分层损失函数
其中
d
i
k
d_i^k
dik是预测的分层视差图,将这些预测视差上采样得到ground truth的分辨率。然后
ρ
\rho
ρ是一个具有两个超参数的鲁棒的损失函数[2]
,设置
α
=
1
\alpha=1
α=1,
c
=
2
c=2
c=2,近似一个smooth L1损失。
3. 实验结果
训练:
- 优化器:RMSProp,学习率初始为1e-3
- 数据预处理:归一化为 [-1,1],使用全分辨率图像作为输入,batch_size=1
- 数据集:场景流,KITTI 2012,KITTI 2015。
3.1 Subpixel Precision
3.2 Quantitative Results
4. 结论
该网络产生了0.03的亚像素级别的视差图,在高质量GPU上以 60fps 运行。
5. 局限性
在反射和遮挡区域的视差精度较低。