目录
基本情况
摘要
1. 引言
2. 相关工作
3. 方法
3.1 网络结构
3.2 多尺度局部平面引导
3.3 训练损失
4. 实验
5. 总结
参考
基本情况- 出处:Lee, J. H., Han, M. K., Ko, D. W., & Suh, I. H. (2019). From big to small: Multi-scale local planar guidance for monocular depth estimation. arXiv preprint arXiv:1907.10326.
- 作者:Jin Han Lee, Myung-Kyu Han, Dong Wook Ko and Il Hong Suh
- 论文地址:https://arxiv.org/pdf/1907.10326.pdf
- 开源代码:GitHub - cogaplex-bts/bts: From Big to Small: Multi-Scale Local Planar Guidance for Monocular Depth Estimation
(论文目前(2021.11.2)只放在了arXiv上,这篇论文在KITTI深度估计的排名中超过了DORN排在了第一位,在这里抛砖引玉。本文主要的创新点在于提出了局部平面指导层(local planar guidance,LPG),作者不止一次地谈到这个层是为了更加有效地将decoder阶段的特征与最终的输出深度图联系起来。通常encoder-decoder结构的网络,都是在解码最终的输出时再施加训练损失的约束,使得输出准确的深度图,于是,个人认为这个LPG层有一些在网络中间施加约束的感觉,将internal features恢复到 full resolution, LPG模块直接定义或者说表达了internal features和最后full depth之间的关系。局部线性假设其实是指局部区域法向量是相同的,也就是说是一个平面。)
摘要从单个图像估计准确的深度是具有挑战性的,因为它是一个 ill-posed problem,因为无限多的3D场景可以投影到相同的2D场景。 然而,最近基于深度卷积神经网络的工作,显示出结果可信的巨大的进展。 卷积神经网络通常由两部分组成:用于密集特征提取的编码器和用于预测所需深度的解码器。 在很多编码器解码器方案中,重复步进卷积(repeated strided convolution )和空间池化层(spatial pooling layers )降低了过渡输出的空间分辨率,并且采用诸如跳过连接或多层反卷积网络( multi-layer deconvolutional networks)的技术,来恢复原始分辨率以进行有效的密集预测。
在本文中,为了更有效地将密集编码的特征引导到所需的深度预测,我们提出了一种网络体系结构,该网络体系结构利用位于解码阶段的多个阶段的新颖的局部平面引导层。 我们表明,所提出的方法优于最先进的作品,在具有挑战性的基准上具有显着的边缘评估。 我们还提供了消融研究的结果,以验证所提出方法的有效性。
来自2D图像的深度估计已经在计算机视觉中研究了很长时间,现在已应用于机器人技术,自动驾驶汽车,场景理解和3D重建。 这些应用通常使用相同场景的多个实例来执行深度估计,例如立体图像对[40],来自移动相机的多个帧[34]或在不同照明条件下的静态捕获[1,2]。 由于来自多个观察的深度估计取得了令人印象深刻的进展,因此它自然导致使用单个图像的深度估计,因为它要求更低的成本和约束。
然而,从单张图像中评估精确的深度,即使对人来说也是很有挑战的。因为这是一个 ill-posed 的问题,因为无限多的3D场景可以项目到相同的2D场景。为了理解单个图像的几何配置,人类不仅考虑使用局部线索,例如各种照明和遮挡条件下的纹理外观,透视或与已知对象的相对比例,还考虑使用全局上下文,例如场景的整个形状或布局[19]。 在Saxena等人的第一次基于学习的单眼深度估计工作之后 [38](Learning depth from single monocular images)被引入,随着深度学习的快速进展,已经取得了相当大的改进[11,10,28,29,45,35,21,25]。 虽然大多数最先进的作品以监督的方式应用基于深度卷积神经网络(DCNN)的模型,但有些作品提出了半[24]或自我监督学习方法,这些方法并不完全依赖于地面真实深度数据。
与此同时,最近基于DCNN的应用通常由两部分组成:用于密集特征提取的编码器和用于所需预测的解码器。 作为密集的特征提取器,非常强大的深度网络,如VGG[43],ResNet[18]或DenseNet[20]经常被采用。在这些网络中,重复跨卷积和空间池化层(repeated strided convolution and spatial pooling layers)降低了过渡层输出的空间分辨率,这可能是获得所需密集预测的瓶颈。 因此,许多技术,例如多尺度网络[29,10],跳过连接[16,47]或多层反卷积网络[25,14,24]被应用于从更高分辨率合并特征图。 最近,引入的Atrous Spatial Pyramid Pooling(ASPP)[5]用于图像语义分割,其可以通过应用具有各种扩张率的稀疏卷积,来捕获观测中的大规模变化。 由于扩展的卷积允许更大的接收场大小,因此最近在语义分割[5,50]或深度估计[12]中的工作,并没有通过删除最后几个池化层并重新配置具有ATROUS卷积的网络来完全减小接收场大小,以重用预训练的权重。因此,他们的方法具有更密集的特征(输入空间分辨率的1/8,而在原始基础网络中为1/32或1/64),并且在该分辨率上执行几乎所有的解码过程,然后进行简单的上采样以恢复原始空间分辨率。
为了在恢复到完整分辨率时定义显式关系,我们提出了一种网络体系结构,该网络体系结构使用位于解码阶段多个阶段的新型局部平面引导层。 具体地,基于编码解码方案,在每个解码阶段(其具有1/8,1/4和1/2的空间分辨率),我们放置一个层,该层通过局部平面假设有效地将输入特征图引导到所需深度。 然后,我们组合输出以全分辨率预测深度。 这在两个方面与多尺度网络[10,11]或图像金字塔[16]方法不同。
- 首先,在相应的分辨率中,来自所建议层的输出不被视为单独的全局深度估计。 相反,我们让图层学习4维平面系数并一起使用它们来重建最终估计的完整分辨率中的深度估计。
- 其次,由于非线性组合,在训练过程中对每个分辨率中的单个 spatial cells 进行了独特的训练。 我们可以在图1和图3中看到建议层的示例输出。 对具有挑战性的NYU Depth V2数据集[42]和Kitti数据集[15]的实验表明,所提出的方法实现了最先进的结果。
本文的其余部分组织如下。 在对第2节中的相关工作进行了简要调查之后,我们详细介绍了第3节中提出的方法。 然后,在第4节中,我们提供了与最先进作品进行比较的两个具有挑战性的基准测试的结果,并使用各种基础网络作为拟议网络的编码器,我们看到性能如何随每个基础网络而变化。 在第4节中,我们还提供了一项消融研究来验证所提出方法的有效性。我们在第5节进行了总结。
BTS基本信息:
1、有监督、端到端、单张RGB图片作为输入,输出单张深度图
2、网络架构:编解码结构+skip connection+ ASPP+LPG
LPG层:
在看网络结构之前,先大致描述一下这个LPG层。这个层用在decoder阶段,输入就是较低分辨率的特征(文中是1/8,1/4,1/2分辨率的特征),每个位置输出一个4维的参数向量,这4个参数可以描述一个平面,平面的大小与特征分辨率对应。比如输入特征分辨率是1/8时,每个位置输出的4D向量会拟合一个8*8的平面,输入特征分辨率1/2时,每个位置输出的4D向量则会拟合一个2*2的平面。也就是说,尽管输入的特征分辨率低,但是输出的4D向量会拟合更大的平面,这样,不同分辨率的特征将最终得到同样大小的一整张平面图。
网络体系结构:
前面DFE就是encoder部分,后面接一个ASPP(空洞卷积、空间金字塔)结构提取多尺度,然后就来到了lpg部分。可以看到,最上面的lpg输入是H/8,输出的大小就是H了,下面两个lpg层也是输出大小H。不同阶段的lpg输出还会进行融合,最终再经过卷积之类的才会得到最终的输出H。因此,在不施加训练损失的约束下,这里输出的c图(最右侧一列)并不代表深度。但如作者所说,反映了一定的真实场景,比如物体的轮廓在c图中都很好地体现了出来。
2. 相关工作从图2中可以看出,我们遵循将特征图分辨率降低到H/8的EncodingDecoding方案,然后恢复用于密集预测的原始分辨率H。 在我们用作生成H/8特征图的密集特征提取器的骨干网络之后,我们将Atrous空间金字塔池化层[5]的密集版本[50]作为我们的上下文信息提取器,具有各种扩展率r∈{3,6,12,18,24}。 然后,在解码阶段的每个阶段,当内部输出恢复到因子为2的全空间分辨率时,我们使用所建议的局部平面引导(LPG)层来定位所需的深度估计的几何引导。 我们还放置1×1还原层,以在最后一个upconv层之后获得最佳估计。 最后,来自提议层(即
)和
的输出被连接并送入最终卷积层以获得深度估计D~。
我们在这项工作中的关键思想是以有效的方式定义内部特征与最终输出之间的直接明确的关系。 与使用简单的近邻上采样层恢复到原始分辨率并跳过编码阶段的连接的现有方法不同,我们放置了新颖的局部平面引导层,它能引导特征到具有局部平面假设的完整的分辨率,并将它们一起使用以获得最终深度估计D~。
从图2中可以看出,由于所提出的层恢复给出了完整分辨率H的内部特征图,因此它可以用作解码阶段内的跳过连接,以允许内部特征与最终预测之间的直接关系。 具体地,给定具有空间分辨率h/k的特征图,所提出的层为每个空间单元估计在全分辨率h上适合局部定义的k×k patch 的4D平面系数,并且它们连接在一起用于通过最终卷积层进行预测。 请注意,建议的LPG层的设计不是为了直接估计相应尺度上的全局深度值,因为训练损失仅根据最终深度估计定义(在第3.3节中提供)。 与来自其他LPG层和Reduc1x1的输出一起,每个输出通过作为通过最终卷积层的非线性组合的一部分来解释为全局深度。 因此,它们可以具有不同的范围,作为基线或在空间位置从基线获得精确的相对补偿,如图1和图3所示。
在这里,我们使用局部平面假设,因为对于k×k区域,它仅使用四个参数实现有效的重建。 如果我们采用典型的Upconvs进行重建,则这些层应该被学习,以正确地具有k平方个值而不是4个。 因此,我们可以预期我们的策略可以更有效,因为传统的上采样不会给出放大分辨率的细节,而局部线性假设可以提供有效的指导。
(解释2:接下来是lpg层具体的结构,给定具有空间分辨率H/k的特征映射,所提出的层为每个空间单元估计4D平面系数,所述4D平面系数适合于全分辨率H上的kxk块,这里,我们使用lpg,因为对于k×k区域,它只需要四个参数就可以实现有效的重建。通过lpg将拟合出一张分辨率与输入输出相同的图,图中各个位置的值就是下面公式中的c。并且通过最后的卷积层连接在一起以用于最终预测。)
为了引导具有局部平面假设的特征,我们使用射线-平面交叉点(ray-plane intersection)将每个估计的4D平面系数转换为k×k局部深度线索:(为了lpg,我们使用以下公式将每个估计的4D平面系数转换为kxk局部深度:)
其中(n1,n2,n3,n4)是估计的平面系数,(ui,vi)分别是像素i的kxk个patch-wise 的标准化坐标。(ui,vi)是像素i的k×k个补丁式归一化坐标。
图4显示了提议层的细节。 通过1×1卷积的堆栈(一组torch.nn.Conv2d, kernel_size=1),重复地以2倍为系数,直到将通道数减少为out_chanenels=3。如果我们假设平方输入,我们将获得H/K×H/K×3特征图(一个tensor,比如size=(1,3,176,608),代码中命名net)。
然后,我们通过两种不同的方法传递特征图以获得局部平面系数估计:一种方法是转换到单位法向量(n1,n2,n3),另一种方法是定义平面与原点之间的垂直距离n4的sigmoid函数。 在sigmoid函数之后,我们将乘以最大距离k然后输出,以获得真正的深度值。 因为单位法向量只有两个自由度(即,来自预定义轴的极角和方位角(polar and azimuthal angles )θ, φ ),所以我们将给定特征图(上述net)的前两个通道视为角度,并使用以下方程将它们转换为单位法向量(为什么这么做?有效?)。
最后,它们再次连接并用于使用公式(1)估计。
(解释2:通过1x1卷积的堆栈,其中使用1x1卷积重复将信道减少2倍,直到达到4,如果假设为平方输入且不丧失一般性,则得到H/k * H/k *4特征映射。然后,通过两种不同的方法来保证平面系数的约束:一种方式是一系列平面法向量,另一种是sigmoid函数,然后用最大距离C进行缩放以确定平面的位置。最后,再次将它们串联起来,并使用上式进行局部深度估计。)
我们将局部深度提示设计为在局部区域(即k×k个patch)中定义的加法深度。 由于在不同阶段的相同空间位置的特征一起用于预测最终深度,为了有效的表示,我们期望在更粗略的尺度上学习全局形状,而在更精细的尺度上学习局部细节。 此外,它们可以相互影响以补偿错误的估计。我们可以代表最后一个卷积层的行为如下所示:
其中f为激活函数,表示表示卷积的对应线性变换。 请注意,所建议的网络在多个尺度上学习,并且通过仅根据最终估计
定义训练损失,我们不会为每个尺度学习强制参数。 因此,在训练中,将在更精细的尺度上学习具有尖锐曲线的区域的细节,而在更粗的尺度上学习主要结构。 此外,
还有最后一次机会恢复上采样估计中的上采样假设
。 从图3中,我们可以从分别显示
和
的蓝色和黑匣子数字中看到聚焦车辆背后的小细节,而它们在较粗的尺度,
和
中缺失。 此外,在车辆边界上的
和
中存在粗黑色估计,以补偿
和
中的过度估计。 补充材料中提供了更多示例。
训练的损失是一个尺度不变的损失,只对网络最终的输出施加了约束,因此,感觉中间lpg层输出的c图并不一定代表深度。
其中这里di表示真值,λ = 0.5,T表示具有有效地面真值的像素数。所以重写上面的方程为:
我们可以看到它是方差以及 log空间中误差的加权平方平均值的总和。 因此,设置更高的 λ 会更加注重最小化错误的方差,我们在这项工作中使用 λ=0.85。 此外,我们观察到正确缩放损失函数的范围可以改善收敛性和最终训练结果。 最后,我们将训练损失定义为:
其中 α 是一个常数,我们将所有实验设置为10。
4. 实验
最后总结,本文从常用的encoder-decoder结构出发,考虑了将decoder阶段不同尺度的特征与最终的深度关联起来,从而更有效地利用了这些特征,对最终的输出起到了较大帮助。
在这项工作中,我们提出了一个受监督的单目深度估计网络,并取得了最先进的结果。 利用深度学习的最新进展,我们设计了一种使用新颖的局部平面指导层的网络架构,提供了内部特征图与所需预测的明确关系,以更好地训练网络。 通过在解码阶段的多个阶段部署所提出的层,我们获得了显着的改进,并在挑战基准上显示了几个实验结果来验证它。 然而,在使用Kitti数据集的实验中,我们经常在场景的上部观察到人工制品。 我们将此分析为跨数据集的地面真相的高稀疏性的影响。 因此,我们计划调查在我们的框架中采用光度重建损失,这可以提供更密集的监督以进一步提高性能。
参考- 从大到小:单目深度估计的多尺度局部平面指导(2019)