深度补全(三)-论文阅读-翻译

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/uniqueyyc/article/details/82986093

A Two-Streamed Network for Estimating Fine-Scaled Depth Maps from Single RGB Images(一个双流式网络,用于从单个RGB图像估计精细的深度映射)

arXiv:1607.00730v4 [cs.CV] 4 Dec 2017

Abstract

从单个RGB图像估计深度是一个有问题的和固有的含糊不清的问题。最先进的深度学习方法现在可以估计精确的2D深度地图,但当地图投影到3D时,它们缺乏局部细节,而且常常高度失真。我们提出了一种快速列车双流式CNN,它可以预测深度和梯度,然后将它们融合在一起,形成精确而详细的深度地图。我们还定义了一个新的集合损失在多个图像;通过对一组普通图像之间的估计进行正则化,网络不太容易过度拟合,并且比竞争方法获得更好的精度。NYU Depth v2数据集上的实验表明,我们的深度预测与最先进的技术相竞争,并导致了可靠的3D投影。

(一)Introduction

从单目RGB图像中估计常见室内场景的深度在场景理解、深度感知图像编辑或重映、3D建模、机器人等方面有着广泛的应用。给定一个RGB图像作为输入,目标是预测每个像素的稠密深度图。推断潜在的深度是一个不适定的和固有的模糊问题。特别是室内场景的纹理和结构变化大,物体遮挡重,几何细节丰富,这些都导致了深度估计的困难。

卷积神经网络(CNNs)的使用大大提高了深度估计技术的准确性。与其粗略估计像墙和天花板这样的大型结构的深度,最先进的网络[7,16]得益于使用预先训练过的CNNs,可以捕捉到精细的物品,如家具和家庭配件。深度估计成功的顶峰是能够从估计的深度生成真实准确的3D场景重建。准确可靠的重建应富有地方结构;在从重构中衍生出来的应用程序中,例如对象识别和深度感知图像重新呈现和编辑,细节变得尤为重要。尽管最近的作品评价得分令人印象深刻[7,16],但估计的深度地图仍然存在较细尺度的人为因素,表面之间的比对也不令人满意。这些扭曲在投射到3D时尤为突出(参见图1)。
在这里插入图片描述
其他基于CNN的端到端应用程序(如语义分割[4,21]和常规估计[1,7])在保存局部细节方面也面临着类似的挑战。重复的卷积和池操作对于捕获整个图像范围至关重要,但同时收缩分辨率和降低细节。虽然提出了上卷积和特征映射拼接策略[6,16,21,22]来提高分辨率,但输出地图的边界通常仍然不能与图像的边界对齐。因此,像双边过滤[2]或CRFs[4]这样的优化措施会产生进一步的改进。

正是为了保留细节,我们才激发了我们在深度估计方面的工作。我们希望从CNNs的准确性中获益,但避免了分辨率和细节的下降。首先,通过引入一种新的集像损耗来保证网络的准确性和泛化能力。这种损失是在多个图像上共同定义的,其中每个图像都是通过标准数据增强技术对原始图像进行转换的版本。集合损耗不仅考虑每个变换后的图像输出深度的精度,而且有一个正则项来最小化集合内的预测差异。添加这个正则化器大大提高了深度精度,使RMS误差降低了约5%。由于在其他端到端框架中也使用了类似的数据增强方法,例如用于语义分割和正常估计,我们相信集合丢失的好处也会传递到这些应用程序中。

我们通过考虑包含在深度梯度中的信息来捕捉场景细节。我们假设局部结构可以更好地编码一阶导数项而不是绝对深度值。从感知上讲,是尖锐的边和角定义了一个对象并使其易于识别,而不是(正确的)深度值(如图4所示)。因此,我们认为最好年代代表一个场景深度和深度梯度,并提出一个fast-to-train two-streamed CNN回归深度和深度梯度(参见图2)。此外,我们提出了两种融合的深度和深度梯度,通过一个CNN,允许对端到端训练,和一个通过直接优化。我们将我们的贡献总结如下:
(1)一种新型的带有调整器的集像损耗,可以最小化相关图像估计深度的差异;这种损失可以更好地利用增强数据,增强网络泛化能力,提高估计精度。
(2)结合深度和深度梯度表示2.5D场景;这种表示捕获本地结构和精细细节,并通过一个双流网络学习。
(3)将深度和深度梯度融合为最终深度输出的两种方法,一种是通过CNNs进行端到端训练,另一种是通过直接优化;这两种方法都产生了深度地图,当投射到3D时,它的失真更小,而且比最先进的技术更丰富的结构和对象细节。

用深度和深度梯度表示场景是多余的,因为一个可以从另一个派生出来。然而,我们表明,这种冗余提供了对局部细节的明确考虑,否则在标准欧几里得损失中就会损失在深度和/或损失中的简单一致性约束中。我们最终的深度输出是精确的和干净的,带有局部的细节,当投射到3D时比竞争的方法更少的工件。

(二)相关工作

深度估计是一个丰富的研究领域,我们只讨论单眼方法。早期作品处理深度模糊的一个关键策略是使用强假设和先验知识。例如Saxena等人[24,25]设计了一个多尺度的MRF,但假设所有场景都与地面平面水平对齐。不用明确预测深度,而对主要图像区域的几何结构进行估计,并组成简单的3D模型来表示场景。

一旦RGB-D数据可以从激光或深度摄像机大规模收集,应用基于数据驱动的学习方法就变得可行[13,20,24,25,30]。Karsch等人提出了一种非参数方法来从对齐范例中转移深度,并将深度估计作为一个具有平滑约束的优化问题。Liu等将图像区域建模为超像素,采用离散-连续优化的方法进行深度估计,随后将中层区域特征和全局场景布局融合在一起。其他人则试图通过利用语义标签来提高深度估计[9,15,18]。然而,有了手工制作的功能,推断出的深度地图很粗糙,只能近似于场景的整体布局。此外,它们还缺少许多计算机视觉和图形应用所必需的细节。

深度学习已被证明对深度估计非常有效[7,8,14,17,19,29,23]。Liu et al.[19]将CNNs和CRFs结合在一个统一的框架内,利用CNNs学习一元电位和成对电位。他们预测了在超像素级的深度,这种深度可以很好地保存边缘,但当投射到3D时,会受到失真和人为因素的影响,因为每个超像素区域在绘制后处理后保持相同或非常相似的深度。

最近的一些方法[3,7,16]以完全卷积网络[21]的形式利用了预先训练好的CNNs的力量。来自VGG[28]和ResNet[10]等网络的卷积层进行了微调,而完全连接的层则从头重新学习以编码场景的空间特征映射。然而,学习过的地图的分辨率要比原始输入的低得多。为了恢复高分辨率深度图像,特征映射被上采样[3,7]或通过上卷积块[16]。我们的网络体系结构遵循类似的完全卷积方法,并通过向上采样提高分辨率。此外,我们在向上采样块之间添加跳跃连接,以更好地利用中间输出。
在这里插入图片描述
【两流式深度估计网络结构;顶部流(蓝色)估计深度,而底部流(粉色)估计深度梯度。虚线表示从VGG卷积层融合的特性(参见3.1节)。深度和深度梯度通过进一步的卷积层或者直接与深度和深度梯度之间的一致性进行优化组合。图形用色彩很好的被显示。】

扫描二维码关注公众号,回复: 4014639 查看本文章

(三)Learning

3.1. 网络结构

我们的网络架构,如图2所示,遵循一个双流模型;一个流返回深度,另一个返回梯度,都来自于RGB输入图像。这两个流遵循相同的格式:一个图象解析块,由一个特征融合块和最后一个细化块组成。图像解析块由VGG-16(到pool5)的卷积层和两个完全连接的层组成。然后将第二层完全连通层的输出重新塑造为55×75×D特征图,并将其传递到特征融合块中,深度流的D= 1,梯度流的D=2。除了VGG-16,其他的预训练网络也可以用于图像解析块,例如VGG-19或ResNet。

特征融合块由一个9×9卷积和池组成,然后是8个连续的5×5个卷积,没有池。它以一个下采样的RGB图像作为输入,然后将VGG卷积层的特征与图像解析块输出融合在一起。具体来说,VGG pool3和pool4的特征映射分别在输入端融合到第二层和第四层卷积层,而图像解析块的输出在输入端融合到第六层卷积层,都是通过跳跃层连接。VGG特性的跳过连接具有5×5个卷积和2x或4x向上采样,以匹配工作的55×75特征映射大小;图像解析块中的跳过连接是一个简单的连接。正如其他图像到图像映射工作所指出的[12,21,22],跳过连接提供了一种方便的方式来共享层次信息,我们发现这也导致了更快的网络训练收敛。特征融合块的输出是粗糙的55×75×D深度或深度梯度图。

细化块与特征融合块类似,包含一个9×9卷积和池化,以及5个5×5个没有池化的卷积。它将一个向下采样的RGB图像作为输入,然后通过一个到第三个卷积层的跳过连接(连接)将特征融合块的双线性向上采样输出融合在一起。此块中的工作映射大小为111×150,输出为在此更高分辨率下的深度或梯度映射。

深度和梯度融合块将两个独立流的深度和深度梯度估计合并为一个连贯深度估计。我们提出了两种可能性,一种是在端到端网络中进行卷积处理,另一种是通过数值优化。这两种方法在3.3节中进行了详细说明。我们向读者提供关于层、过滤器大小和学习速率的详细信息的补充材料。

3.2. 设置图像损失函数

对于许多机器学习问题,用原始训练样本的转换版本来扩充训练集已经成为标准实践。通过使用增广集进行学习,得到的分类器或回归器应该对这些变化更加健壮。损失应用于一些增广集,其中转换后的样本作为标准训练样本。然而,原始样本和转化样本之间有很强的关系,在培训过程中可以进一步加以利用。例如,重新着色以近似不同光照条件的样本图像的深度估计应该与原始图像完全相同。翻转后的样例在卸载输出后的深度估计也与原来的样例相同,依此类推。
【暂时不细看】

3.3. 深度和深度梯度估计

为了学习深度梯度流中的网络,我们使用相同的公式,但是对两个梯度图G1和G2的像素差进行了修改,用L2g代替L2:
在这里插入图片描述
在端对端网络中融合:我们提出两种可能性,将深度和梯度流的输出融合到最终的深度输出中。第一个是通过组合块,其架构与细分块相同。它将RGB图像作为输入,通过跳过连接(连接)将深度估计和梯度估计融合在一起,作为第三个卷积层的输入。我们使用以下组合损耗Lcomb来保持深度精度和梯度一致性
在这里插入图片描述
在这种组合损失中,第一项Lset仅基于深度,而第二项强制最终深度梯度与估计梯度之间的一致性,且与方程5的l2g像素级差相同。

**通过优化融合:*另外,由于优化措施也显示出在改进输出地图细化方面非常有效[2,4],我们直接估计了一个最优深度D
在这里插入图片描述

3.4. 训练策略

我们在深度和梯度流上对网络应用相同的实现。除了VGG卷积层外,特征融合、细化和组合块中的全连通层和所有层都是随机初始化的。

这两个流最初是单独训练的,每一个都有两个步骤。首先,对图像解析和特征融合块进行深度和深度梯度的损失训练。然后将这些块固定,而在细化块中进行第二步训练。对于每一步,使用相同的集丢失,并且具有适当的像素差异(见公式2,1,5),尽管地图分辨率不同(特征融合后5575,细化后11175)。如果采用基于优化的融合,训练就到此结束。另一方面,对于端到端网络融合,图像解析、特征融合和细化块是固定的,融合块使用组合损耗训练(公式6),最后根据组合损耗对两个流的所有块进行联合微调。

网络是快速训练;收敛只需要2到3个epoch(如图3所示)。在前20K迭代中,我们使用梯度裁剪来稳定训练。为了快速收敛,我们使用的batch大小为1;注意,因为我们的损失是在图像集上定义的,所以batch的大小为1实际上是大小为N的小batch,这取决于所使用的图像转换的数量。

正则化常数和w分别设置为1和10。初步实验表明,虽然A值越大,网络收敛速度越慢,但不同值的A值控制的集合图像规律的范围不影响结果的精度。w,控制梯度优化中梯度的范围,由验证集设置;一个较大的w过分强调了梯度估计中的工件,导致了不太精确的深度图。

(四)实验

4.1. 数据集以及评估

我们使用NYU Depth v2数据集[26]和标准场景分割;从249个训练场景中提取~220k训练图像。对RGB图像进行一半的下采样,然后裁剪到232×310,与深度图像对齐后删除空白边界。深度转换为对数刻度,而梯度保持在线性刻度。

我们在654 NYU Depth v2[26]测试图像上评估我们提出的网络和两种融合方法。由于我们的深度输出是111×150,分辨率低于原始的NYUDepth图像,所以我们对深度地图(4x)进行了双线性向上采样,并使用一个双边过滤器填充缺失的边界,类似于以前的方法[7,17,19,20]。我们在有效的Kinect深度投影区域评估我们的预测,使用与之前工作相同的方法。

在这里插入图片描述

4.2. 深度估计基准

我们的深度估计的准确性与表1中的其他方法进行了比较。我们认为只有VGG-16基础网络的深度流的精度是基线,不需要添加梯度(Lsingle, depth only)。这个基线已经优于16,可以与7相媲美。然而,对于设置的损失函数(Lset,只考虑深度),我们用更精确的深度估计超过了[7],特别是在均方差误差方面以及阈值估计小于1.25.
在这里插入图片描述
目前最先进的成果是通过完全卷积方法实现的[3,7,16]。总体趋势是,更深的基础网络(VGG-19, ResNet-50 vs. VGG- 16)会导致更高的深度精度。我们在结果中观察到类似的趋势,尽管改进并不总是一致的。我们使用VGG-19比VGG-16取得了一些进展。然而,与[16]不同的是,我们发现ResNet-50几乎没有什么收获。

4.3. 融合深度和深度梯度

将深度估计与深度梯度融合在一起,在数量和质量上都达到了与优化相似的效果。当深度映射投影到3D(见图4)时,两种融合方法之间没有什么区别。与[16]s ResNet- 50结果相比,[16]s 3D投影更加扭曲,结果更加准确。事实上,许多结构,例如图4(a)中的架子、(b)中的沙发或(b,d)中的枕头是无法辨认的。此外,整个投影的三维表面似乎受到网格状工件的影响,这可能是由于它们的上投影方法。另一方面,[3]的预测更加清晰和详细,尽管他们的方法报告的准确性低于[16]。因此,我们的结论是,目前的数值评价措施是不完善的细节保存指标。这是意料之中的,因为细节的增加对数值精度的测量影响不大。相反,差异在质量上更为突出,尤其是在3D投影中。

与[7]相比,我们的3D投影在适当的区域,即墙壁和平面上更干净和平滑。角落和边缘得到更好的保护,结果的场景更丰富的细节与更好的当地结构。例如,在凌乱的场景图4(b,c),[7]有重型工件在高质感的地区,例如墙上的照片(b)、(c)的窗口等地区,并有很强的反射( c )的内阁。我们的结果是这些困难是健壮的 ,给更忠实的3 d场景中预测潜在的对象。

乍一看,你可能会认为,用深度和深度梯度共同表示场景,只会产生平滑效果。虽然融合的结果肯定是平滑的,没有平滑操作,2D或3D,可以恢复不存在的细节。当使用0.1m范围和1010空间高斯核(Lset depth +双边滤波)的二维双侧滤波器时,我们发现数值测度相差不大,但在细化上仍有一些损失(见图4)。

4.4. 设置损失和数据增加

我们提出的集像损耗对提高估计深度精度有很大的影响。对于表1中报告的结果,我们使用了图像集中的三个图像:I、flip(I)和colour(I)。翻转在垂直轴上,色彩操作包括随机增加或减少亮度,对比度和乘以随机RGB值r属于[0.8, 1.2]^3。初步实验表明,增加旋转和平移等操作并不能进一步提高性能,所以我们在训练中忽略了它们。我们推测,翻转和着色操作带来了更多的全局变化,但留下了准确的原因,为未来的工作。

4.5. 训练 收敛和时间

我们展示了我们的网络的收敛行为,用于图像解析和特征融合块的联合训练图3。与16相比,batch大小为1的错误减少得更快,只需0.6M梯度步长或2-3个epoch收敛即可。对于收敛实验,我们将单图像丢失(batch大小为1,16)与第4.4节中描述的集合图像丢失进行比较,观察到集合丢失的误差较小,但收敛速度较快。注意,我们的网络的快速收敛不是由于batch大小小,而是改进了的带有跳过连接的架构。相比之下,[7]的网络体系结构需要2.5M梯度步长才能汇聚(100多个epoch),而batch大小为16,但即使训练为1,收敛速度也不是很快。深度梯度估计的训练甚至更快,并且在一个时期内收敛。总的来说,我们在GPU TITAN X上的训练时间大约是70个小时(深度学习50个小时,梯度学习20个小时)。
在这里插入图片描述
图3。比较我们提出的网络和[7]之间的log10训练和测试错误。为了清晰起见,我们在每0.1个epoch中绘制日志错误,并且只显示前7个epoch,尽管[7]的方法还没有收敛。虚线表示训练错误,实线表示测试错误。对于第1批和第16批的结果,我们比较了Lsingle和Lsingle的错误。

(五)Discussion and Conclusion

我们提出了一种快速训练多流CNN架构,用于精确的深度估计。为了预测精确和详细的深度地图,我们介绍了三种新的贡献。首先,我们在多个图像上定义一个集合损失。通过在一个公共集合中对图像的估计进行正则化,我们获得了比以前更好的精度。其次,我们用一个联合深度和深度梯度表示的场景来表示,我们用一个双流网络来学习,以保留场景中的精细细节。最后,我们提出两种方法,一种基于cnn,另一种基于优化,将深度和梯度估计融合到最终的深度输出中。NYU Depth v2数据集上的实验表明,我们的深度预测不仅可以与最先进的技术相媲美,而且可以得到更精确、更丰富的3D投影。

通过观察我们的实验结果以及最先进的方法[3,7,16]的结果,很明显,目前用于评估估计深度的数值指标并不总是一致的。当深度地图被投射到3D时,这种不一致性变得更加突出。不幸的是,场景的丰富性通常是通过清晰的结构细节来限定的,这些细节很难用数字来描述,反过来也很难设计出合适的损失或目标函数。或者,也可以使用图像估计深度作为输入,例如3D模型检索或基于场景的重新定位,尽管这种间接评估可能会引入其他混淆因素。

我们的方法生成了精确而丰富的3D投影,但是输出仍然是111×150,而原始输入是427×561。与许多端到端应用程序一样,我们使用低于原始分辨率的分辨率来权衡网络参数的数量与训练数据的数量。虽然深度估计不需要标签,但主要的瓶颈是场景的变化。NYU Depth v2的训练图片来源于仅249个场景的视频。小的训练数据集大小可以解释为什么我们的集合损失和它的正则化项有如此大的影响。由于引入了更大的数据集[5],在更高的分辨率下工作可能变得可行。最后,在目前的工作中,我们只讨论了RGB源的深度和深度梯度的估计。通过将任务与其他估计(如表面法线和语义标签)相结合,可以进一步改进深度估计。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/uniqueyyc/article/details/82986093