2019 CVPR 论文之Single-Image Piece-Wise Planar 3D Reconstruction via Associative Embedding
论文可以从这个网址进行下载https://arxiv.org/pdf/1902.09777.pdf
摘要
单幅图像分段平面三维重建的目的是同时分割平面实例并从图像中恢复三维平面参数。近期一些利用卷积神经网络(CNNs),取得了不错的结果。然而,这些方法仅限于检测具有一定学习顺序的固定数量的平面。针对这一问题,论文中结合实例分割的成功经验,提出了一种基于关联嵌入的两阶段分割方法。在第一个阶段中,我们训练CNN将每个像素映射到嵌入空间,其中来自相同平面实例的像素具有类似的嵌入。然后,利用一种有效的均值漂移聚类算法对平面区域的嵌入向量进行分组,得到平面实例。在第二阶段,通过考虑像素级和实例级一致性来估计每个平面实例的参数。利用这种方法,可以检测任意数量的平面。在公共数据集上的大量实验验证了该方法的有效性和有效性。此外,这种在测试时以30帧每秒的速度运行,因此可以方便许多实时应用,如可视化SLAM和人机交互。代码可从https://github.com/svip-lab/PlanarReconstruction获得。
1.引言
单幅图像三维重建是计算机视觉中的一个基本问题,在虚拟现实、增强现实、机器人和社交媒体等新兴领域有许多应用。在本文中,我们通过恢复一个场景的分段平面三维模型来解决这个具有挑战性的问题,即在一个RGB图像中找到所有的平面实例并估计它们的三维参数,如图1。分段平面模型提供了一个紧凑的三维场景表示,这将有利于SLAM和人机交互等应用。
在大多数文献中,现有的方法[6,2,24,32,15,10,12]都是采用自底向上的方式来解决这个问题。首先从图像中提取几何原语,如直线段、消失点、角、节点和图像块。然后根据这些原语的几何关系将它们分组为平面区域。然而,在实际训练中,检测组成图像的几何原语本身就非常具有挑战性,经常导致大量的漏检(例如,由于纹理不良的表面,光照条件)和异常值(例如,由于存在非平面对象)。因此,通常使用RANSAC或Markov Random Field (MRF)等统计技术来生成最终的三维模型。但是,当漏检率和无关检测率很高时,这种技术往往会崩溃,并且只适用于限制性场景(例如曼哈顿世界场景)。此外,对统计模型进行优化是很耗时的,因此极大地限制了其在实时任务中的应用。
与自底向上方法不同,自顶向下方法[13]克服了上述困难,它不依赖于局部几何原语,而是以整体的方式分析图像。最近,[23,31]训练CNNs从单个图像直接预测平面分割和平面参数。这些方法在多个室内和室外数据集上都表现出了最先进的性能。尽管其具有这些优点,目前基于学习的方法也有其局限性。特别是由于缺乏对图像中平面的数量和特定顺序的先验知识,它们只能检测具有一定学习顺序的固定数量的平面,因此可能无法灵活地处理真实世界场景结构中的变化。
此论文中提出了一种新的基于CNN的自底向上的方法,该方法不仅避免了现有方法的局限性的,同时也兼顾了两个世界的优点。为了使这成为可能,主要想法是,可以通过计算两个像素属于同一个平面实例的可能性来检测图像中的平面实例,然后使用这些可能性将相似的像素分组在一起。与传统的自底向上的基于几何原语进行分组的方法不同,论文中的相似度度量是基于深度嵌入模型的,这种模型最近在姿态估计[25]、对象检测[19]和实例分割方面取得了成功[9,5,17]。然后,在使用另一个CNN分支生成的平面/非平面分割映射来屏蔽非平面像素。最后,提出了一种有效的均值漂移聚类算法,将屏蔽像素嵌入聚类到平面实例中。
在平面实例分割的基础上,通过考虑像素级精度和实例级一致性,设计了平面参数网络。首先预测每个像素处的平面参数,然后将这些预测与平面实例结合起来生成每个平面的参数。注意,与现有的CNN方法不同,论文限制这种网络进行局部预测(即、像素方向嵌入向量、平面参数)并以自底向上的方式将这些预测分组。这使论文中的方法能够生成任意数量的平面,避免被限制于任何特定的顺序或空间布局。
综上所述,这篇论文的贡献如下:i)提出了一种新的用于分段平面三维重建的两阶段深度学习框架。基于深度关联嵌入模型,设计了一个多分支、端到端可训练网络,该网络可以同时检测任意数量的平面并估计其参数。ii)我们提出了一种快速的均值移位聚类算法,将像素嵌入到平面实例中进行分组,在测试时达到了实时性。iii)在ScanNet[4]和NYUv2[28]两个具有挑战性的数据集上进行了大量的实验,验证了这种方法的有效性和高效性。
2.相关工作
2.1 单视角平面重建
几何投影方法 基于几何的方法[6,2,24,20]是利用二维图像中的几何线索恢复三维信息。例如,Delage等人[6]首先从图像中提取线段、消失点和超像素。然后使用MRF模型用一组预定义的平面类(即,曼哈顿世界假设下的三个主导平面方向)来标记超像素。同样,Barinova et al.[2]假设环境由平地和垂直墙组成,并使用条件随机场(CRF)模型来标记检测到的原语。Lee等人[20]检测图像中的线段集合和消失点集合,并在假设集中搜索最匹配几何原语集合的构建模型。然而,这些方法都依赖于对场景的强烈假设,这限制了它们在实践中的适用性。
基于外观的方法 基于外观的方法根据图像的外观来推断其几何特性。早期的工作[15,10, 12]采用自底向上的方法。首先预测局部图像斑块的方向,然后将方向相似的斑块分组形成平面区域。Hoiem等人[15]定义了一组离散的表面布局标签,如“支持”、“垂直”和“天空”,并使用一些手工制作的本地图像特征(如颜色、纹理、位置和视角)来训练模型标记图像中的每个超像素。Haines和Calway[12]将预测预分割区域的连续三维方向和铸件平面检测作为一个MRF模型的优化问题。Fouhey等人[10]首先检测凸/凹边、遮挡边界、超像素及其方向,然后在Manhattan world假设下将分组问题表示为二元二次规划。论文中的方法也属于这一类。与现有的方法不同的是,论文将平面检测转换为一个实例分割问题,在该问题中,通过学习一个相似度度量来直接分割图像中的平面实例,然后为每个平面实例估计平面参数。
近年来,出现了一些基于CNN的直接预测全局三维平面结构的方法。Liu等人提出了一种深度神经网络,该神经网络可以学习推断平面参数,并为单个图像中的每个像素分配平面id(分割掩码)。Yang和Zhou[31]将问题转换为深度预测问题,并提出了一种不需要地面真实三维平面的训练方案。然而,这些方法仅限于预测固定数量的平面,这可能导致在复杂场景中的性能下降。同时,Liu等人使用基于提议的实例分割框架,即, Mask R-CNN[14]。相反,论文中是利用一个无提议的实例分割方法[5]来解决这个问题。
2.2实例分割
流行的实例分割方法首先生成区域提议,然后对边界框中的对象进行分类,并在每个提议[14]中分割前景对象。最近关于关联嵌入[25]及其在对象检测[19]和实例分割中的扩展的工作[9,5,17]提供了一种不同的解决方案。这些方法学习一个嵌入函数,该函数将像素映射到一个嵌入空间,其中属于相同实例的像素具有类似的嵌入。然后,使用简单的聚类技术生成实例分割结果。Newell等人[25]在多个体姿态估计的上下文中引入了关联嵌入,并将其扩展到无提议实例分割。De Brabandere[5]等人提出了一种判别损失法来学习实例嵌入,然后使用均值移位聚类算法对嵌入进行分组来形成实例。Kong和Fowlkes[17]引入了一个递归模型来解决像素级聚类问题。论文的方法受到这些工作的启发,将图像中的每个平面视为一个实例,并利用关联嵌入的思想来检测平面实例。论文进一步提出了i)一种有效的平面实例聚类均值漂移算法,ii)一种端到端可训练网络,可以联合预测平面实例分割和平面参数,这在初始实例分割问题中并不明显。
3.方法
论文的目标是从一个单独的RGB图像中推断出平面实例和平面参数。针对这一问题,提出了一种基于多分支网络的两阶段方法。在第一阶段,训练一个CNN获得平面/非平面分割图和像素嵌入。然后利用分割映射对像素嵌入进行掩码,并通过一种有效的均值漂移聚类算法对掩码嵌入进行分组,形成平面实例。在第二阶段,训练一个网络分支来预测像素层平面参数。然后,使用一个实例感知池层和第一个阶段的实例分割映射来生成最终的平面参数。图2为这种方法的总体框架。
3.1平面/非平面分割
首先设计了一种用于区分平面和非平面区域的编码-解码器结构。论文使用了扩展版的ResNet-101-FPN[21]作为编码器。由[33,34]实现的ResNet-101是在ImageNet[7]上进行图像分类的预训练。解码器预测每个像素的平面/非平面分割映射。由于这两类在人为环境下是不平衡的,我们采用如[30,3]的平衡交叉熵损失:
其中F和B是前景像素和背景像素的集合,pi是第i个像素属于前景(即,平面区域)的概率,w是前景/背景像素数比率。
3.2嵌入模型
论文中平面实例分割的灵感来自于最近关于关联嵌入的研究[25,9,5,17]。关联嵌入的主要思想是为每个视觉单元预测一个嵌入向量,这样,如果某些视觉单元属于同一个实例标签,那么它们之间的嵌入向量之间的距离应该很小,这样就可以很容易地将它们分组在一起。
对于论文中的任务,使用了一个平面嵌入分支将像素映射到某个嵌入空间,如图3所示。这个分支与平面分割分支共享相同的高级特征映射。为了使同一平面实例中的像素比不同平面中的像素更接近,使用了[5]中的判别损失函数。这个损失函数包括两项,即“拉”损失和“推”损失。“拉”损失将每个嵌入拉到对应实例(即,示例的中心)的平均嵌入,而“推”损失将实例中心彼此推开。
其中,C是标准的聚类C(平面)的数量,Nc是每个聚类c中元素的数量,xi是嵌入像素,uc是类c的平均嵌入,δv和δd分别是拉损失和推损失边界。
直观地说,如果嵌入的像素是容易分离的(即、类内实例的距离大于δd,或嵌入向量及其中心之间的距离小于δv),惩罚是零。否则,惩罚将大幅增加。因此,这种损失就像硬例子挖掘一样,因为它只在嵌入过程中惩罚困难的情况。
3.3有效率的均值移位聚类
一旦我们有了每个像素的嵌入向量,我们将它们分组形成平面实例。均值移位聚类适用于此任务,因为平面实例的数量不是先验已知的。然而,标准均值移位聚类算法在每次迭代中对所有像素对嵌入向量进行两两距离的计算。每次迭代的复杂度为O(N2),其中N为图像中的像素个数。在实践中,即使对于小尺寸的图像,N也是非常大的。例如,在论文的实验中,N = 192×256,使得标准算法不适用。
为了解决这个纹理,论文中提出了均值移位聚类的一个快速版本。不需要对嵌入空间内的所有像素进行移位,而是只移动嵌入空间中的少量锚点,并将每个像素分配给最近的锚点。具体为,k,d分别表示每个维度和嵌入维度中锚点的数量,在嵌入空间中均匀地生成kd锚。然后计算锚点aj与嵌入向量xi之间的pairwise potential为:
其中b是均值移位算法中的带宽,mij=||aj-xj||2 是aj和xj之间的距离,每次迭代t中的每个锚的位移步骤可以表示为:
是标准化常熟。为了进一步加速这个进程,在聚类开始时过滤掉了局部密度较低的锚点。
算法收敛后,我们合并附近锚形成聚类C˜,每个聚类C˜实例对应于一个平面。具体来说,如果两个锚的距离小于带宽b,则认为它们属于同一个聚类。这个聚类的中心是属于这个聚类的锚的平均值。
最后,使用软赋值将像素嵌入关联到聚类:
算法1中给出了算法的具体实现过程。在向量嵌入的训练阶段,带宽b可以由所需的裕度决定,论文算法复杂度第,更有效率。
3.4平面参数估计
给定一个图像,前一阶段提供了一个平面实例分割映射。然后,还需要推断每个平面实例的三维参数。为此,论文中进一步设计了一个平面参数分支来预测每个像素的平面参数。然后,使用实例分割映射,通过聚合这个分支的输出,为每个平面实例形成实例级参数。
具体来说,分支输出一个H×W×3平面参数图。在[31]之后,然后将平面参数定义为n∈R3。对于平面上的三维点Q,我们有nTQ = 1。然后使用L1损失来监督每像素平面参数的学习:
其中ni是预测的平面参数,ni*是第i个像素的标准平面参数。
实例感知层在实际应用中发现像素级的参数监督是不够的,因为它在整个平面实例中可能不会产生一致的输出。因此,论文中建议进一步将像素级参数聚合为实例级参数:
是标准化常数。它扮演了一个全局平均池化层但是对于不同的平面实例具有不同的注意机制。
按照[31],论文中强制实例级参数与场景几何保持一致。具体来说,使用了以下损失函数将平面参数推断的深度图与标准深度图进行比较:
注意,论文中对平面参数进行估计的方法与以往的方法不同[23,31]。这些方法首先预测平面参数,然后将每个像素与特定的平面参数关联起来。相反,论文中首先将像素分组到平面实例中,然后估计每个平面实例的参数。我们认为论文中的方法更合适,因为分割可以唯一地确定一个实例。最后,为了同时推断平面实例分割和平面参数,我们方法的整体训练损失为:
4.实验
在这节中,将通过在两个公开数据集:ScanNet[4]和NYUv2[28]上的实验来评价提出的方法的性能。由于篇幅有限,我们建议读者参考附录以获得更多的实验结果,包括关于平均位移的消融研究聚类算法与平面参数估计。
4.1实现细节
使用PyTorch[26]实现这个模型。我们使用Adam优化[16],学习率为10-4,权重衰减为10-5。块大小设置为16。在NVIDIA TITAN XP GPU设备上训练了50次全部网络训练。使用δv=0.5,δd=1.5来训练网络。均值聚类算法中嵌入维数设置为d=2,每个维度的锚数k=10,带宽b=δv。在训练中将迭代次数T设置为5,在测试中将迭代次数T设置为10。这个模型是以端到端方式训练的。
4.2在ScanNet数据集上的结果
首先在由[23]生成的ScanNet数据集[4]上评估提出的方法。参考标准是通过将平面拟合到ScanNet的统一网格中,并将其投影到单独的帧中得到的。生成过程还包含来自ScanNet的语义注释。得到的数据集包含50,000张训练图像和760张测试图像,分辨率为256×192。
方法比较我们将论文中提出的方法与基于CNN的方法PlaneNet,自底向上的方法NYU-Toolbox和自底向上的方法Manhattan World Stereo方法进行比较。NYU-Toolbox方法是一种常用的平面检测算法,它使用RANSAC提取平面假设,使用Markov Random Field (MRF)优化平面分割。Manhattan World Stereo(MWS)[11]采用曼哈顿世界假设进行平面提取,并在MRF的成对项中利用消失线。对于自底向上方法,我们使用与我们相同的网络结构来预测像素级深度图。参照[18],我们将训练期间的berHu损失降到最低。另外,我们还使用标准深度图作为这些方法的输入。
评价准则
与[23]相似,我们使用平面和像素召回作为评估指标。平面召回是正确预测标准平面的百分比,像素召回是正确预测平面内像素的百分比。若i)其中一个预测平面相交过并(IOU)得分大于0.5,ii)重叠区域平均深度差小于阈值,该阈值从0.05m到0.6m不等,增量为0.05m。则,则认为标准平面预测正确。此外,在实验中也使用了表面法向差分作为阈值。
定量评价
图4显示了所有方法的像素和平面召回。如前两个图所示,在推断深度映射时,论文提出的方法明显优于所有竞争方法。此外,即使使用自底向上方法,也能获得具有竞争力或更好的结果,如最后两个图所示。这清楚地证明了提出的方法的有效性。采用表面法向差分作为阈值,得到了一致的结果(见附录)。
定量评价
图5显示了我们对各种场景的重建结果。与现有的平面实例分割方法的定量比较如图6所示。观察结果如下:i)所有方法在简单的场景中都表现良好(例如,第一行)。ii) PlaneNet[23]和提出的方法在大多数情况下(如第二行和第三行)都能产生更好的分割结果。自底向上方法的性能较差,可能是由于预测深度图中存在噪声所致。在这种情况下,很难选择一个合适的阈值来区分内层(即和分组阶段的异常值。iii) PlaneNet有时会漏掉小平面(如第四排的椅子)或错误地合并多个平面(如第五排的柜子和门),而在这些情况下,论文提出的方法更加稳健。这可能是由于平面网中平面数目固定的假设。论文中的方法并不局限于这样的假设,因此在不同尺度的结构检测中表现得更好。
速度
表1显示了在ScanNet 数据集上运行时与其他方法进行比较的结果。所有时间都是在同一个计算平台上测量的,使用的是Xeon E5-2630 @2.2GHz(20核)和NVIDIA TiTAN XP GPU。论文中提出的方法在一个GPU上达到了最快的速度32.26 fps,适用于许多实时应用,如visual SLAM。
4.3在NYUv2数据集上的结果
我们进一步在NYUv2数据集上评价了提出的方法的表现,其中含有795个训练图像和654个测试图像。具体为,进行实验来检验:(1)学习到的嵌入平面实例分割的通用性,(2)提出的方法的深度预测精度。
平面实例分割
在本实验中,直接使用PlaneNet和在ScanNet数据集上训练的模型来预测NYUv2数据集上的平面实例。如[23],在测试图像中生成标准平面实例,首先使用RANSAC对每个语义实例进行平面拟合,如果平均距离小于10cm,则进一步合并两个平面。为了定量评价,采用了三个常用的分割指标[1,31]:Rand index (RI)、variation of information (VI)和segmentation cover (SC)。如表2所示,这种方法在所有指标方面都明显优于PlaneNet。这表明提出的基于嵌入的方法比现有的基于CNN的方法更通用。与传统的自底向上方法NYU-Toolbox相比,即使后者提供了标准深度图,论文提出的方法仍然具有一定的竞争力。关于NYUv2数据集的定性结果,请参阅附录。
深度预测
虽然论文提出的方法在分段平面三维重建中表现出了优越的性能,但对于评估网络的逐像素深度预测能力也很感兴趣。在这个实验中,使用了在NYUv2 数据集上生成的标准平面实例对网络进行了微调。表3显示了提出的网络输出(即分段平面三维重建)与标准深度预测方法生成的模型进行对比的结果。可以看出,论文提出的方法优于或与其他方法相近,进一步验证了提出的方法所恢复的三维平面的质量。论文还训练了提出的网络的一个变种,称为“我们的(深度直接)”,只使用像素级的监督,通过微调平面参数预测分支。然后,使用这个分支来直接预测深度图。如表3所示,与此变体相比,使用我们的分段平面表示会导致深度预测精度略有下降,因为这种表示有时会忽略细节和场景结构中的小变化。
失败情况
论文的图7中展示了一些失败案例。在第一个示例中,论文中提出的方法将白板和墙壁合并到一个平面中,这可能是因为这两个平面的外观相似。一个可能的解决方案是通过合并语义信息来分离它们。在第二个例子中,论文中提出的方法将一个平面分成两个平面(墙和床头板),因为它们的外观不同。在后处理步骤中,可以很容易地使用平面参数合并这两个平面。在第三个例子中,论文中提出的方法不能分割整个书架。一个可能的原因是拟合得到的平面实例标注不一致,即在这种情况下,书架上并没有标准的标签。
结论
论文提出了一种新的单图像分段平面三维重建的两阶段方法。具体来说,论文中学习了一个深度嵌入模型来直接分割图像中的平面实例,然后通过考虑像素级和实例级的几何一致性来估计每个平面的三维参数。该方法在实时性的表现上,显著优于现有的方法。虽然所提出的方法取得了令人满意的结果,但还远远不够完善。未来可能的方向包括:结合语义信息提高重建结果;学习利用多视图几何理论,从视频中重建分段平面三维模型。