“Physically-Based Rendering for Indoor Scene Understanding Using Convolutional Neural Networks”论文阅读

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

论文地址:http://pbrs.cs.princeton.edu/cvpr2017_synclearn.pdf
github地址:https://github.com/yindaz/surface_normal
主页地址:http://pbrs.cs.princeton.edu/

基于物理的室内场景理解渲染(卷积神经网络)

为了获得更好的表现,训练中的一个瓶颈是每个像素标定过的真实数据的数量,这是理解核心场景任务(如语义分割、正常预测和对象边界检测)所需要的。为了解决这个问题,一些作品提出使用合成数据。然而,对于这种合成数据是如何产生的系统研究却缺失了。在这项工作中,我们介绍了一个大规模的合成数据集与从45K逼真的3D室内场景中获得的500K基于物理的渲染图像。
作者研究了渲染方法场景照明对三种计算机视觉任务训练的影响:表面法线预测语义分析物体边界检测。本研究提供了使用合成数据进行培训的最佳实践的见解,并表明使用我们的新合成数据进行预训练可以在所有三项任务之外改进超出当前最新技术水平的结果。

1、Introduction

室内场景理解,使用数据驱动的方法,需要大量的数据。
以2D呈现对(RGB图像和逐像素标签图)的形式利用来自数字3D模型的合成数据。
然而,有两个主要问题尚未得到解决:
(1)由于缺乏大的场景数据集,室内场景上下文如何影响训练的研究还不可能,所以训练主要是在拥有独立3D对象的存储库上进行;
(2)没有系统的研究如何提供这些数据,为了提高效率,经常使用不切实际的渲染方法。
解决方法:
引入一个由人类设计的45K三维房屋创建的大规模(500K图像)合成数据集。使用这种逼真的室内3D环境,我们可以创建二维图像,在现实的背景环境中进行训练,其中支持构建(如墙壁、天花板、窗户)以及光源和常见的家居物品共存。由于我们可以访问源3D模型,可以为所有的任务创建生成密集的逐像素训练数据,几乎不需要任何成本。

对3D场景的完全控制使我们能够系统地操作室外和室内照明,根据需要对尽可能多的摄像机视点进行采样,在上下文中或脱离上下文使用形状,并使用简单的着色方法或基于物理的渲染方法进行渲染。对于三个室内场景理解任务,即正常预测、语义分割和对象边缘检测,我们研究了不同的光照条件、渲染方法和对象上下文对性能的影响。
在这里插入图片描述
总结
(1)我们介绍了一个具有500K合成图像实例的数据集,其中每个实例由三个不同渲染质量的图像呈现、每像素精确的法线贴图、语义标签和对象边界组成。数据集将被释放。
(2)我们演示了不同的渲染方法如何影响正常、分割和边缘预测任务。我们研究了对象上下文、照明和渲染方法对性能的影响。
(3)我们提供预先训练的网络,以实现在所有三个室内场景理解任务的艺术状态经过微调。

2、Background

利用合成数据提高深度神经网络训练的数据密度和多样性,取得了良好的效果。到目前为止,合成数据已经被用来生成训练数据来预测对象的姿态,光流,语义分割,以及研究对象特征。

Su et al.[24]使用在任意背景下呈现的物体,这些背景与摄像机的相对角度是规定的,以此生成数据来学习预测物体的姿态。同样地,Dosovitskiy等人[6]使用带有任意运动渲染的单个物体来生成合成运动数据来学习预测光流。这两幅作品都使用了不现实的OpenGL渲染,使用固定的灯光,其中物理效果如阴影,反射没有考虑在内。Movshovitz等人使用环境地图照明,并表明它有利于姿态估计。然而,由于单个对象是在任意2D背景下呈现的,因此这些方法产生的数据由于其周围环境(如阴影和来自不同材质的附近对象的反射)而缺乏正确的3D光照效果。此外,它们对所考虑的对象也缺乏现实的背景。

Handa等[12,11]介绍了一个辛苦创建的3D场景数据集,并演示了在语义分割训练中的应用。然而,他们的数据是按10的顺序排列的房间,与我们的45K现实屋布局的数据集相比,这在上下文上的变化是非常有限的。此外,由于他们的场景描述中缺少色彩和表面材质,所以他们的数据集没有RGB图像,只能产生深度通道。Zhang等人[30]提出用ShapeNet[4]的3D模型替换深度图像中的对象。然而,并不能保证替换物是相对于周围的物体正确定向的,在风格上与周围的环境相适应的。相比之下,我们利用了由human创建的大量室内场景库,保证了数据的多样性、质量和上下文相关性。

Xiang等人[27]引入了一个3D对象-2D图像数据库,其中3D对象是手动对齐的2D图像。图像提供了背景,但是三维数据只包含了没有房间结构的对象,不可能为整个场景提取每像素的标定过的真实数据。数据集也受限于提供的图像数量(90K)。相反,我们可以提供任意数量我们所需要的数据(渲染图像,每像素的标定过的真实数据)。

最近,Richter等人通过拦截游戏与图形硬件之间的通信,演示了从现实游戏引擎中收集合成数据。结果表明,所收集的数据可用于语义分割任务。他们的方法确保了游戏中尽可能多的上下文(尽管仅限于户外上下文,类似于SYNTHIA[19]数据集)。然而他们很大程度上减少了人类劳动在注释通过跟踪跨框架几何实体,标定过的真实数据(即单像素语义标签)收集过程并非完全自动化和容易出错的人机交互:即使他们轨道几何通过帧和传播的标签,一个人需要标签出现新对象记录合成视频。此外,由于缺乏对场景中低层结构的访问,改变摄像机视图、光照位置和亮度或渲染方法也不是一件简单的事情。另一方面,我们的数据和标签生成过程是自动化的,我们可以完全控制场景如何点亮和渲染。

3、Data

我们从SUNCG数据集[20]中修改3D场景模型,生成合成数据。在SUNCG中,有45,622个场景,有超过5百万个实例,包含了84个类别的2644个独特对象。对象模型提供了表面材料,包括反射率、纹理和透明度,用于获得逼真的效果图。这个数据集的一个重要方面是,室内布局、家具/对象对齐和表面材料是由人们设计的,以复制现有的设置。然而,这些原始的3D模型缺乏足够精确的几何形状(如实心墙)和材质(如发光表面)来进行物理渲染。我们解决了这些问题,并发布了准确的完整的3D场景模型准备渲染到我们的项目网页。

3.1. Camera Sampling

对于每个场景,我们都选择了一组摄像机,这个过程寻求一组不同的视角,在不同的背景下看到不同的物体。我们的过程从为每个房间的6个水平视图方向扇区选择最好的摄像机开始。对于每个六视图,我们在一个分辨率为0.25的2D网格上采样了一组密集的摄像机,选择一个随机的观点在每个网格单元中,随机水平视图方向在60度部门内部,一个随机的身高1.5 - -1.6米,11度向下倾斜的角度,而不包括观点在10厘米的任何障碍来模拟典型的人类观看条件。对于每个相机,我们渲染一个项目缓冲,并计算图像中每个可见对象(除了墙壁、天花板和地板)所覆盖的像素数。对于每个房间的每个视图方向,我们选择像素覆盖率最高的视图,只要它至少有三个不同的可见对象,每个对象至少覆盖1%的像素。这个过程为N个房间产生6N个候选摄像机。图3显示了从示例房屋中取样的摄像机。
在这里插入图片描述

3.2. Image Rendering

我们使用四种渲染算法和光照条件的组合,从使用OpenGL管道的快速/不切实际的方向光渲染到使用Mitsuba的基于物理的局部光渲染。
OpenGL with Directional Lights (OPENGL-DL).
我们的第一个方法使用OpenGL管道呈现图像。场景被三盏灯照亮:一个方向的前照灯指向相机的视图方向,两个方向灯指向与场景几乎相反的对角线方向。不包括局部照明、阴影或间接照明。
OpenGL with Indoor Lights (OPENGL-IL).
我们的第二种方法也使用OpenGL管道。然而,现场增加了接近室内照明设备排放的局部灯光。对于每一个发射光的物体,我们创建一组OpenGL点光源和聚光灯来近似它的发射模式。然后我们用这些灯光渲染场景(根据光照强度为每个物体选择最好的8个光源),不包括阴影或间接照明。
Physically Based Rendering with Outdoor Lights(MLT-OL).
我们的第三种方法是尽可能复制正确光照的物理原理来生成逼真的渲染。为了做到这一点,我们设置了室外照明,以环境映射的形式与真正的高清球形天空全景。复制室外照明的环境地图是通过窗户投射的,有助于室内自然照明。所有窗户都设置为全透明,以防止人工制品在眼镜上,并方便室外灯光通过。由于模型不真实,人和植物被从场景中移除。默认的墙壁纹理设置为纯白色。我们使用Mitsuba[1]进行物理渲染。我们使用了Path空间都会光传输(MLT)积分器[26],因为它可以更有效地处理复杂的结构和材料。图4显示了不同积分器的呈现质量与时间的比较。我们可以看到,MLT积分器与直接照明采样率512生产几乎没有工匠效果图与合理的计算时间。所有材料设置为双面,防止翻转表面法线。
用SUNCG的原始模型渲染的图像显示房间角落严重漏光。原因是墙壁、地板和天花板是由单一平面表面表示的,因此光线可以通过边界。我们通过设置厚度为10cm的墙(在我们的实验中)来解决这个问题,这样每个墙都由两个表面来表示。为了防止绘制过程中出现浮数精度问题而导致的光泄漏,我们还强制连接墙相互之间紧密相交。
Physically Based Rendering with Indoor Lights (MLTIL/OL).
我们还在场景中设置了照明设备产生的室内照明。但是,3D数据集是在对象级(如lamp)进行标记,具体的生光部分(如灯泡)是未知的。因此,我们对物体的所有产生光的部分进行手工标记,以产生正确的室内照明。对于没有灯泡的电灯器具,在认为灯泡不可见的情况下表示几何形状,我们在适当的位置手动添加一个球形灯泡几何形状。将照明器具的灯泡几何形状设置为区域发射器,与室内灯一起工作。与室外照明类似,我们使用Mitsuba和MLT积分器来实现室内物理照明。图2显示了同一摄像机下不同渲染技术生成的图像的几个示例。我们可以看到,特别是从缩放的角度来看,MLT-IL/OL产生柔和的阴影和自然的外观材料。

3.3. Image Selection

图像合成管道的最后一步是选择用于训练的图像子集。理想情况下,我们的合成训练集中的每个图像都与测试集中的图像(例如NYUv2)相似。然而,并非所有的都是好的,因为光线不足或深度分布不典型(例如,近距离物体遮挡)。我们执行一个选择程序,只保留与NYUv2数据集中的图像在颜色和深度分布方面相似的图像。具体来说,我们首先计算NYUv2数据集中每个真实图像的规范化颜色直方图。为每个图像呈现MLT-IL / OL,我们也得到了规范化的颜色直方图和计算直方图相似性与NYUv2每本的最小值的总和(图5),然后为每个合成图像,我们分配最大的相似性与所有NYUv2图像深度的分数和做同样的通道。最后,我们选择所有颜色分数和深度分数都大于0.70的图像。这个过程从最初呈现的779,342个图像中选择568,793个图像。这些图像构成了我们的综合训练集,在本文的后半部分中称为MLT。

3.4. Ground Truth Generation

我们为每幅图像生成每像素的标定过的真实数据图像编码表面法线,语义分割和对象边界。因为我们有完整的3D模型和摄像机视点,生成这些地面图像可以通过OpenGL渲染完成(例如,使用项目缓冲)。

4. Indoor Scene Understanding Tasks

研究了三个基本的场景理解任务:(1)表面法向估计;(2)语义分割;(3)对象边界检测
对于所有的任务,我们展示了我们的方法和合成数据如何与文学艺术作品的状态进行比较。具体来说,我们比较Eigen et al.[7]进行正常估计,Long et al. [15] and Yu et al.[29]进行语义分割,Xie et al.[28]进行目标边界检测。我们使用第3节中介绍的不同渲染条件系统地进行这些比较。此外,对于正常的估计,我们还添加了对象而没有上下文呈现,这允许我们在使用合成数据时调查上下文的重要性。

4.1. Normal Estimation

方法:我们利用带有跳层的完全卷积网络15进行正态估计,通过结合VGG-16网络[22]中的多尺度特征图来进行正态估计。具体来说,前端编码器与VGG-16中的conv1-conv5保持一致,译码器与编码器是对称的,具有卷积和解池层。为了得到高分辨率的结果,减轻消失的梯度问题,我们在网络的下游和上游部分使用了每一对对应的卷积层之间的跳过链接。为了进一步弥补空间信息的丢失,网络会记住下游的池交换机,并将其作为对应层上游的取消池交换机。我们使用了与本征等类似的损失函数,作为标定过的真实数据和估计之间的点积的逆。

没有上下文的对象:为了便于系统与缺少正确上下文的以对象为中心的合成数据进行比较,我们使用了ShapeNet中的形状,以及3.2节中介绍的呈现方法。我们从家具相关类别(如床、椅子、橱柜等)中随机挑选3500个模型,从随机选择的距离和观看方向设置20个摄像头。更具体地说,我们将模型放置在三维球体的中心,通过将球体细分为二十面体的面,对球体上的162个点进行均匀采样。对于每个相机,一个随机顶点的icosachedron被选中。这个点与球面中心一起定义了一个向量。相机放置在物体对角线包围盒对角线1:5到4:5之间的任意距离,指向中心。

训练:我们直接对合成数据进行预训练,然后对NYUv2进行精细训练,类似于Bansa等人的[3]。我们使用RMSprop[25]来训练我们的网络。设定学习率为1×10-3,每300K次迭代减少一半;每10K次迭代中有1×10-4个减少到一半。彩色图像的中心是零减去128。我们使用[21]提供的过程来生成NYUv2上的标定过的表面法线,因为它提供了更多的局部细节,从而得到了比其他[16]更真实的形状表示。标定过的真实数据(ground truth)还为每个像素提供一个分数,指示从局部深度转换的法线是否可靠。我们在训练中只使用可靠的像素。

实验在不同训练方案下,我们对NYUv2进行了正态估计实验。首先,我们直接在NYUv2上训练。然后我们分别在NYUv2上对各种MLT和OpenGL渲染设置和微调进行预训练。表1显示了性能。
我们可以看到:

  • 在MLT上预训练的模型和在NYUv2(最后一行)上的finetuned获得了最好的性能,这超过了目前的技术水平。
  • 在没有微调的情况下,基于MLT的预训练模型明显优于基于OpenGL的渲染预训练模型,其性能与直接在NYUv2上训练的模型相似。这表明,基于物理的光照渲染对于正常预测任务的有效信息编码至关重要。
  • 模型在图像选择后进行图像训练,得到的效果优于所有渲染图像,说明良好的训练图像质量对于预处理是非常重要的。
  • MLT在室内与室外照明情况下的表现都明显优于只有室外照明的情况,这表明室内照明的重要性。

在这里插入图片描述

图6显示了NYUv2测试分割的正常估计的可视化结果。我们可以看到,与NYUv2模型进一步细化的结果相比,在MLT渲染上预训练的模型的结果提供了更清晰的边缘和更多的局部细节,这大概是因为过于平滑和嘈杂的地面真相。图6 最后一行将我们的结果的角度误差与标定过的真实数据进行了对比,我们可以看到,很大一部分误差集中在墙壁上,在这里,我们的纯平面预测可以更好地表示墙壁法线。另一方面,标定过的真实数据(ground truth)与正常法线贴图存在显著偏差。基于这一观察,我们强调了高质量的标定过的真实数据的重要性。很明显,对合成数据的训练有助于我们的模型在某些区域(如大平坦区域)的表现和修正NYUv2所标定过的真相数据。

4.2. 语义分割

**方法:**我们使用[29]中提出的网络模型进行语义分割。网络结构采用VGG-16网络[22],但使用膨胀的卷积层对上下文信息进行编码,在我们的实验中,这比NYUv2上的[15]有更好的性能。我们使用在ImageNet分类任务上训练的VGG-16网络[22],使用[29]中描述的过程初始化权重。我们对与[10]相同的40个语义类进行评估。
**训练:**为了使用合成数据进行预训练,我们将合成的标定过的真实数据的标签映射到这40个类中的适当类名(请注意,有些类别不在合成数据中)。我们首先使用ImageNet中的预训练权重初始化网络。然后对我们的合成数据进行预处理,最后对NYUv2进行最后的微调。我们还通过在ImageNet上进行预训练,直接在NYUv2上进行微调,来复制相应的艺术培训时间表,以进行比较。我们使用学习率为1*10 -5的随机梯度下降法对合成数据和NYUv2进行训练。
**实验:**我们使用像素级的平均交叉超过联合(IoU)来评估语义分割的性能。我们用不同的渲染方法对模型进行了预处理:深度渲染、OpenGL颜色渲染和MLT颜色渲染。对于基于深度的模型,我们使用与[9]相同的HHA编码深度。总体而言,与NYUv2直接训练相比,对合成数据进行预处理有助于提高语义分割的性能,如图7和表4.2所示。这说明综合数据比有限的真实数据更能帮助网络获取更丰富的高级上下文信息。
在这里插入图片描述

Handa等人[11]由于数据集中缺乏真实的纹理和材质,仅使用渲染深度训练11类语义分割模型(见表4.2 HHA结果)。然而,我们的结果表明,颜色信息对于获得更精细的语义分割任务是至关重要的:在经过颜色信息训练的40个类任务模型中,获得了明显更好的性能。对于基于颜色的模型,基于物理渲染的图像预处理比基于OpenGL渲染的预处理有更好的性能。这一发现与正常的估计实验是一致的。

4.3. 目标边界检测

** 方法: **对于目标边界检测任务,我们采用Xie等人的[28]网络架构,因为他们在NYUv2上报告了性能。网络从VGG-16的前端开始,接着是一组辅助输出层,生成从细到粗的多尺度边界图。然后加权融合层学习权重,将多尺度的边界输出组合起来,生成最终结果。为了评估网络,我们遵循[10]中的设置,其中边界地面真值定义为实例级分割的边界。

**训练:**与语义分割类似,我们首先使用ImageNet上的预训练权重初始化网络。然后对合成数据集进行预训练,最后对NYUv2进行微调。我们还通过在ImageNet上的预训练复制了最先进的训练程序,并在NYUv2上直接优化,以进行比较。为了突出不同渲染技术之间的差异,我们只训练颜色图像而不使用深度。我们遵循在[28]中介绍的相同过程。采用标准随机梯度下降法进行优化。学习速率最初设置为较小(2 10 7),以处理NYUv2较大的图像分辨率,在NYUv2上每10K次迭代,学习速率将进一步降低到1=10。对于合成数据,类似于我们的常规估计任务的过程,每300k迭代,学习率就会降低。
在这里插入图片描述

**实验:**我们对Xie等人提出的具有多种不同协议的[28]模型进行了训练,并在表3中对NYUv2进行了比较和评价。在设置[28]后,以第2 - 4个多尺度层的平均输出为最终结果,进行非最大抑制和边缘细化。我们在[10]中使用标定过的真实数据,在[5]中使用评估指标。

我们使用[28]发布的代码进行训练,实现了表3第一行所示的性能。我们无法在论文中复制精确的数字,但我们相当接近,这可能是由于训练过程的随机性。我们首先根据合成数据集上的ImageNet初始化对模型进行了优化,然后对NYUv2进行了进一步的优化。表3显示了综合数据预处理对所有评价指标的一致性改进。一贯地,我们看到模型预训练与MLT渲染达到最佳性能。

图9显示了来自不同模型的结果之间的比较。对合成数据的预训练模型,在对真实数据进行精细调整之前,会产生更清晰的结果,但对噪声更敏感。最后一篇专栏文章强调了对合成数据进行预训练和不进行预训练的模型之间的区别。我们可以看到,物体内部的边缘和背景中的边缘(绿色)被抑制了,真实的物体边界(红色)被合成上的预训练模型增强了。

5. 结论

我们介绍了一个具有500K渲染背景意义的3D室内场景的大型合成数据集,这些场景有不同的灯光和渲染设置,以及它们渲染的室内场景模型。我们展示了在我们的物理基础上的真实光照渲染的预训练提高了在艺术方法的状态下室内场景理解任务的表现。

猜你喜欢

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