1. 研究问题
主动立体系统存在以下问题:
- 高频结构光图案会引起立体匹配代价函数中出现许多局部最小值,导致匹配存在模糊。
- 结构光图案的亮度随距离衰减,导致立体匹配对噪声和无纹理区域的鲁棒性较差。
- 遮挡区域无有效信息,导致匹配代价模糊(被动立体和主动立体共有的问题)。
- 没有可用的标注的主动立体数据集进行有监督训练。
2. 研究方法
本文提出了第一个针对主动立体的端到端深度学习方法ActiveStereoNet,该方法经过自监督进行训练。首先,提出了一种基于加权局部对比度归一化(LCN)的重建损失,在每个像素的局部重新校准亮度值,以解决主动立体图案亮度随距离衰减的问题。其次,提出了一个基于窗口的代价聚合,每个像素都有自适应权重,以增加可辨别性并减少代价函数中局部最小值的影响。最后,提出一个无效网络预测遮挡区域,可用于去除预测视差的无效区域,提高视差图质量。
本文的算法的输入是一对经过校正、同步的具有主动照明的图像,如下图所示。输出是一对原始分辨率的视差图。对于我们的实验,我们使用最近发布的 Intel Realsense D435
,它以 30fps
的速度提供同步、校正的 1280 * 720
张图像。假设两个相机之间的焦距 f 和基线 b 是已知的。在这个假设下,深度估计问题变成了沿着扫描线的视差搜索。
2.1 Network Architecture
在自监督网络中,设计最优损失函数对整体精度的影响最大,因此本文在StereoNet网络的基础上进行扩展。 我们引入了三种不同的修改来解决主动立体匹配的特定问题。
- 特征提取:与 StereoNet 在孪生网络开始时积极降低分辨率不同,我们以
全分辨率
运行几个残差块,以保持来自输入图像的更多高频信号
,然后使用带步幅的卷积降低分辨率,产生1/8输入分辨率的特征图。如图 1 (a)所示。 - 代价空间:利用左右特征图低分辨率的代价空间,其大小为 160 ∗ 90 ∗ 18 160*90*18 160∗90∗18,这表明原图的最大视差为144。
- 视差回归:采用soft argmin产生低分辨率视差图,视差图的大小为 160 ∗ 90 160*90 160∗90。这里没有采用3D卷积进行代价过滤,是为了减少计算复杂度。对低分辨率视差图进行上采样至原始图像分辨率( 1280 ∗ 720 1280*720 1280∗720)。
- 视差细化:我们使用
双流细化网络
(图 1(c)),我们没有将图像和上采样的低分辨率视差叠加在一起,而是将这两个输入到不同的路径,两条路径的输出连接在一起形成一个 32 维的特征图,该特征图进一步馈入 3 个 resnet 块,对视差图进行细化,恢复边缘细节
。我们发现这种架构产生的结果具有更少的点伪影
。 - 失效网络:最后,我们有一个额外的
失效网络
,用于预测估计差异的置信度
(图 1(b))。只追求非常准确的深度可以使用此输出来去除不需要的深度。失效网络将左右塔特征串联起来,最后送入5个resnet和1个卷积。输出是与孪生塔特征分辨率相同的失效图,即输入分辨率的 1/8。这个低分辨率失效图通过双线性插值被上采样到全分辨率。为了重新调整它,我们将这个上采样失效图与全分辨率重新调整视差和输入图像连接起来,并将它们输入 1 conv + 4 resnet block + 1 conv。输出是一维得分图,较高的值表示无效区域。在训练期间,我们将失效掩码学习制定为分类任务
。请注意,问题是完全不平衡的,即大多数像素都是有效的,因此网络的一个简单解决方案包括为所有像素分配一个正标签。为避免这种情况,我们将输出空间重新加权 10 倍(我们注意到无效像素大约是有效像素的 10%)。对于有效像素,我们指定值 y + = 1 y^+ = 1 y+=1,而对于无效像素,我们使用 y − = 10 y^- = 10 y−=10。最终损失被定义为估计和真实掩码之间的L1 损失
。
2.2 Loss Function
2.2.1 问题陈述
在自监督训练中,最常用的损失函数是光度损失,但是文章表明光度损失在主动立体中是一个坏的选择并进行了解释。
首先,主动立体图像的亮度随距离衰减,也就是说:物体离相机越近,相应的图像区域就越亮,反之,相应的图像区域就越暗。那么这就会导致一个问题,试想一下,图像噪声是与亮度成正比的,观察到的亮度值如下所示:
左边的 I 是观察值,右边的 I 是无噪声的值,两个标准差是与传感器相关的。那么两个正确匹配的像素的残差(亮度差)遵循如下分布:
这表明两个更亮(更近)的正确匹配的像素之间的差异比两个正确匹配的更暗(更远)的像素之间的差异更大。
总结:在主动立体视觉中,存在的问题是:
- 物体离相机越近,相应的图像区域就越亮。(图像亮度与视差(深度)是相关的)
- 因为图像存在噪声,且噪声水平正比于亮度值,这导致两个更亮(更近)的正确匹配的像素之间的差异比两个正确匹配的更暗(更远)的像素之间的差异更大
以上造成一个问题,由于亮度大的匹配像素之间相比于亮度小的匹配像素之间具有更大的残差(等同于匹配代价),因此亮度大的像素对光度损失的贡献更大,这迫使网络偏向于学习亮度大区域的视差,而过度平滑亮度小(远处的像素点)的视差。
再凝练总结:
主动立体图像的亮度随距离衰减 -> 两个更亮(更近)的正确匹配的像素之间的残差比两个正确匹配的更暗(更远)的像素之间的残差更大 -> 图像亮度与视差是相关的。
然后还有一个问题,遮挡区域的前景和背景区域也会有较强的亮度变化,从而使遮挡区域对光度损失的影响很大,迫使网络去学习遮挡区域的匹配,但是遮挡区域并没有有效的信息,所以将遮挡像素点引入损失计算会导致误匹配。
以上问题的总结:
- 由于主动立体图像的亮度随距离衰减,导致图像亮度与视差存在相关性(前提是图像存在噪声)。
- 遮挡像素点的损失是坏信息,引入损失计算会导致误匹配。
2.2.2 Weighted Local Contrast Normalization(WLCN)
提出局部对比度归一化(LCN)可以解决亮度与视差之间的相关性,而且减小遮挡区域的残差,另外,还增加了左右图像的光度变化的鲁棒性。
LCN是指对当前像素进行局部归一化计算,
均值和标准差是
9
∗
9
9*9
9∗9大小补丁区域内计算的,
η
\eta
η是一个接近于零的常量。
但是LCN会导致无纹理区域的残差被放大,因为无纹理区域的标准差接近于零。因此,在基于 I L C N I_{LCN} ILCN计算重建损失时,利用当前像素的LCN标准差对残差进行加权,如下所示:
这样就能够移除LCN对无纹理区域残差的放大效应。
以上所述如下图所示,该图的视差图是给定的,三种情况的视差图都一样,这是为了对比原始输入和应用WLCN后的效果。
2.3 Window-based Optimization
本文分析重建损失在整个视差搜索空间的表现,选取了在LCN输入中纹理区域,无纹理区域和遮挡区域的损失。
图的下半部分可以看到,对于单像素的损失(上面的WLCN中的
C
i
j
C_{ij}
Cij就是采用单个像素的损失),在整个视差搜索空间中表现出非凸特性,存在许多局部极小值,这会导致很难搜索到正确的视差值。
传统的方法中,采用窗口内代价聚合的方式,后来又有自适应权重的窗口代价聚合方式(ASW),既能平滑视差,又能保留边缘。
但是ASW速度很慢,难以在实时性系统中使用,因此,本文受到ASW的启发,将ASW的策略应用于训练阶段,这样就不会增加推理阶段的时间复杂度。具体来说,是在 2 k ∗ 2 k 2k*2k 2k∗2k的窗口内对单像素重建损失 C i j C_{ij} Cij进行自适应权重的代价聚合,
图的上半部分可以看到,当采用
1
∗
1
1*1
1∗1的窗口时,视差图很多空洞,不够平滑。当采用
32
∗
32
32*32
32∗32的窗口聚合时,视差图平滑,但是从WLCN重建误差图中反映出视差图过度平滑,导致模糊。当采用
32
∗
32
32*32
32∗32 ASW 时,视差图平滑,从WLCN重建误差图中也可以反映出视差图的边缘被很好的保留了。
自适应权重代价聚合的效果如上图右边所示,可以看到,采用基于窗口的自适应权重代价聚合可以减少代价函数中局部最小值的影响,但是对于遮挡区域依然无能为力。
到此,网络的整体过程就是:
- 通过网络估计一个全分辨率视差图;
- 利用估计视差图和LCN右图重建LCN左图,然后计算单像素的WLCN损失;
- 在每个像素处,对单像素的损失 C i j C_{ij} Cij应用ASW,得到聚合代价的 C i j 帽 C_{ij}帽 Cij帽;
- 在全图内对 C i j 帽 C_{ij}帽 Cij帽求和,得到最终的重建损失。
注:基于窗口的损失聚合只是在训练阶段采用,推理阶段不需要计算损失了,所以推理阶段没有损失聚合这个过程,相比于传统方法的ASW来说,大大降低了时间复杂度,使网络可以用于实时性系统。
总结:基于窗口的自适应损失聚合减少损失函数中局部最小值的影响,并且在平滑视差的同时保留了边缘。
2.4 Invalidation Network
遮挡区域没有可用的信息,因此即使在不同时窗口尺度搜索最低成本也总是导致匹配错误。为了处理遮挡,传统方法采用左右一致性检测的方法检测遮挡区域。但最近有文献证明,在损失函数中添加左右一致性的方法会导致视差图过度平滑边缘问题,进一步导致重建点云出现flying pixels。
相反,本文利用左右一致性检测的思想来定义一个失效掩码
,
即满足左右视差的差异小于1的像素的m值为1,不满足的为0。因此m=0的像素即为遮挡像素
,这些像素不计入重建误差损失中。为了避免网络学习到所有的像素都是遮挡像素,通过在每个像素位置对失效掩码使用常量标签 1 最小化交叉熵损失
来强制对有效像素的数量进行正则化。我们在低分辨率视差和最终的视差中都使用了这个掩码。
同时,我们训练了一个失效网络(全卷积),它将从 Siamese tower计算的特征作为输入,并首先生成一个低分辨率失效掩码,然后对其进行上采样并使用视差网络的类似结构进行重新调整。这允许在推理时避免从左右视点预测视差以执行左右一致性,从而显着加快推理速度
。
总结:
- 最终的网络包括视差估计网络以及失效网络,这两个网络是一起进行
无监督训练
的,其中,视差网络为失效网络提供伪标签信息
,即失效网络的训练标签就是上面定义的失效掩码,该掩码是随着视差网络的训练过程不断变化的,这样的话就会影响失效网络训练的稳定性,因此本文提出了一个训练策略
,就是先对视差网络进行训练,等到视差预测较为稳定之后,再联合训练视差网络和失效网络,下面实验部分会提到。- 上面定义的失效掩码是通过左右检查来定义的,它有两个作用,其一是在视差训练过程中将遮挡像素排除在重建误差损失计算中,第二个作用是作为失效网络的伪标签信息,用来对失效网络进行无监督训练。而失效网络预测的失效掩码是在推理阶段使用的,它用来与视差网络预测的视差图进行点乘,从而去除视差图中的遮挡区域。因此我们要区分开这里提到的两个掩码。
- 最终的网络包含三个损失,其中视差网络有两个损失,分别是所提出的重建损失交叉熵正则项;而失效网络的损失本文没有提到,但我们可以应用 L1 损失之类的损失函数。
3. 实验结果
3.1 数据集和训练方法
数据集:
- 真实数据集:使用
Intel Realsense D435
摄像头[13]收集10000
张图像用于办公室环境中的训练,以及其他未见过的场景中的100
张图像用于测试(描绘人物、布置好的房间和物体)。 - 合成数据集:使用
Blender
渲染室内场景(如客厅、厨房和卧室)的 IR 和深度图像,如 [10]。 具体来说,我们使用投影纹理渲染具有 9 cm 基线的合成立体对,以模拟 Kinect V1 点图案在场景上的投影。我们在渲染室中随机移动相机并捕获左红外图像、右红外图像以及真实深度。图 8 左侧显示了渲染场景的示例。合成训练数据由10000
张图像组成,测试集由包含新场景的1200
帧组成。
训练:
- 随机剪裁
1024*256
的图像块。 - 优化器:RMSprop。
- 学习率:初始为1e-4,并在3/5 次迭代时减半,在 4/5 次迭代时减为1/4。
- 迭代次数:100000。
- 失效网络的伪标签是通过视差网络预测的左右视差进行一致性检测得到的,由于开始训练时不稳定,所以开始的20000次迭代先禁用失效网络,只训练视差网络。然后我们再联合训练视差网络和失效网络。
3.2 立体匹配评估
偏差和抖动
具有基线 b
、焦距 f
和亚像素视差精度为
δ
\delta
δ 的立体系统的深度误差相对于深度 Z
呈二次方增加,如上式所示。由于视差误差对深度的可变影响,像视差的平均误差这样的幼稚评估指标并不能有效地反映估计深度的质量。相比之下,我们首先显示深度估计的误差并计算视差中的相应误差。
为了评估 ASN 的亚像素精度
,我们记录了 100
帧相机在墙前距离范围从 500
毫米到 3500
毫米的情况,以及相机以 50
度角面向墙壁的 100
帧,以评估倾斜表面上的行为。在这种情况下,我们通过与使用鲁棒平面拟合
获得的 ground truth
进行比较来进行评估。
为了表征精度,我们将偏差
计算为预测深度和地面实况平面之间的平均 L1 误差
。图 5 显示了我们方法
、传感器输出(Intel RealSense
) [44]、最先进的局部立体方法(PatchMatch
[17]、HashMatch
[46]),以及使用无监督损失
[37] 训练的我们的模型的深度偏差
,以及由表面法线着色的点云
的可视化。
我们的系统在所有距离上的表现都明显优于其他方法,并且其误差不会随着深度的增加而急剧增加。我们系统对应的子像素视差精度为 0.03 像素,这是通过使用上述方程(也如图 5 所示)绘制曲线获得的。这比精度不高于 0.2 像素的其他方法低一个数量级。
为了表征噪声
,我们将抖动
计算为深度误差的标准偏差
。 图 5 显示,与其他方法相比,我们的方法几乎在每个深度都实现了最低的抖动。
与最先进技术的比较
在具有挑战性的场景中对 ASN 的更多定性评估如图 6 所示。可以看出,局部方法如 PatchMatch
[17] 和 HashMatch [46] 不能处理主动光和被动光的混合照明
,因此会产生不完全视差图像
(缺失的像素以黑色显示)。使用半全局
方案的传感器输出(RealSense)更适合该数据,但它仍然容易受到图像噪声
的影响(注意第四列中的噪声结果)。相比之下,我们的方法产生完整的视差图并保留清晰的边界。
3.3 消融实验
在本节中,我们评估 ASN 系统中每个组件的重要性。由于缺乏ground truth数据,大部分结果都是定性的。查看视差图时,请特别注意噪声、偏差、边缘肥大、flying pixels、分辨率、孔洞和泛化能力。
自监督 vs 有监督
对合成数据的定量评估(图 8,左下角)表明,监督模型(蓝色)实现了更高百分比的误差小于 5 视差的像素,但是对于更严格的要求(误差小于 2 个像素),我们的自 监督损失(红色)做得更好。这可能表明训练集上的监督模型过度拟合。
重建损失
我们接下来研究我们提出的 WLCN 损失
与标准光度误差(L1)
和使用来自预训练 VGG 网络的特征图计算的感知损失 [59]
相比的影响。在这个实验中,我们训练了三个具有相同参数的网络,只改变了重建损失:原始 IR 上的光度、VGG conv-1 和提议的 WLCN,并研究了它们对结果的影响。
为了计算准确的指标,我们手动标记
了测试用例子集中的遮挡区域
,如下图所示。
对于那些未被遮挡的像素,我们计算了给定预测视差图像的原始红外图像的光度误差。我们总共评估了超过 1000
万个像素。在图 7(右)中,我们显示了原始 IR 图像在像素强度方面的三种损失的光度误差。所提出的 WLCN 在小强度下实现了最低误差,表明损失不偏向于明亮区域。
对于范围的其余部分,损失得到相似的数字。请注意,即使我们没有明确训练以最小化光度重建,我们的损失也达到了最低的误差。尽管数字看起来相似,但对最终视差图的影响实际上非常明显。
我们展示了图 7(左)中三种不同损失中每一种的预测差异的一些示例。请注意建议的 WLCN 损失如何从更少的噪声中受益,产生更清晰的边缘,并且具有更低的异常值百分比。
相比之下,感知损失突出了视差图中的高频纹理(即点),导致估计有噪声。
由于 VGG conv-1 是预训练的,我们观察到亮点上的响应很高,使重建误差再次偏向特写场景。我们还通过使用我们连体塔的输出作为感知特征来尝试感知损失的变体,但是行为类似于使用 VGG 特征的情况。
失效网络
研究从重建损失中排除遮挡区域是否对训练网络很重要,即,实现更清晰的边缘和更少噪声的视差图。我们假设网络将在没有排除遮挡区域的情况下会过渡拟合遮挡区域(其中没有匹配信息)
,从而导致整个图像出现更高的错误。我们通过计算视差误差小于 x属于[1, 5],结果如图 8 所示。使用失效掩码,我们的模型在所有错误阈值的情况下优于没有失效掩码的ASN(红色与紫色曲线,越高越好)。
我们进一步分析了合成数据和真实数据上产生的视差和深度图。在合成数据上,没有失效掩码的模型在遮挡边界附近显示出严重错误(图 8,左上角)。 同样的情况发生在真实数据上(图 8,右),当没有启用失效掩码时,会出现更多的 flying pixels。
作为失效网络的副产品,我们获得了深度估计的置信度图。在图 9 中,我们将我们的预测掩码与使用左右检查和光度误差预测的掩码进行了比较。为了评估性能,我们再次使用手动标记有遮挡区域的图像并计算平均精度 (AP)。我们的失效网络和左右检查分别以 80:7% 和 80:9% 的 AP 获得最高分,而光度误差仅达到 51:3%。我们相信这些置信度图对许多更高级别的应用很有用。
基于窗口的优化
所提出的基于窗口的优化与自适应 SupportWeights (ASW) 对于获得对薄结构的更多支持非常重要,否则这些薄结构将在损失中获得较低的贡献并被视为异常值。我们在图 10 中对此进行了比较。注意 ASW 的损失如何能够以更高的精度恢复硬薄结构。此外,我们基于窗口的优化还可以在保留边缘和细节的同时产生更平滑的结果。最后,尽管我们使用了基于窗口的损失,但所提出的 ASW 策略减少了边缘增肥的数量。
4. 结论
(1)ASN是第一个用于主动立体系统的深度学习网络,使用自监督的策略进行训练,视差亚像素精度为0.03,不受过度平滑的影响,保留了边缘,明确处理遮挡。
(2)在真实和合成数据集上的定性和定量实验证明了在很多具有挑战性的场景上获得最先进的结果。
(3)提出的WLCN重建损失对噪声、无纹理和光度变化更加鲁棒。
(4)对损失应用基于窗口的自适应代价聚合优化策略可以保持视差边缘并平滑损失函数。
(5)无效化网络预测置信图,去除了遮挡区域的不良影响,提高视差估计的精度。
(6)每帧的运行时间成本为 15 毫秒。
5. 局限性
尽管我们的方法产生了令人信服的结果,但由于成本量的低分辨率,透明物体和薄结构
仍然存在问题。在未来的工作中,我们将提出解决方案来处理具有高级线索的这些情况,例如语义分割
。
参考文献
[37] Unsupervised monocular depth estimation with left-right consistency. CVPR 2017
[41] Unsupervised learning of depth and ego-motion from video. CVPR 2017
[49] Stereonet: Guided hierarchical re nement for edge-aware depth prediction. ECCV 2018
[51] Loss functions for image restoration with neural networks. IEEE Transactions on Computational Imaging (2017)
[59] Perceptual losses for real-time style transfer and super-resolution. CoRR 2016