12.Generating 3D Mesh Models from Single RGB Images

Pixel2Mesh:

从单个RGB图像生成3D网格模型

摘要

我们提出了一种端到端的深度学习架构,该架构可以从单个彩色图像中生成三角形网格中的3D形状。受深度神经网络性质的限制,以前的方法通常表示体积或点云中的3D形状,将它们转换为更易于使用的网格模型并非易事。与现有方法不同,我们的网络在基于图形的卷积神经网络中表示3D网格,并通过逐渐变形椭球产生正确的几何形状,利用从输入图像提取的感知特征。我们采用粗略的策略来使整个变形过程稳定,并定义各种网格相关的损失,以捕获不同层次的属性,以保证视觉上吸引人和物理上精确的3D几何。大量实验表明,我们的方法不仅可以定性地生成具有更好细节的网格模型,而且与现有技术相比,还可以实现更高的3D形状估计精度。

关键词:三维形状生成·图卷积神经网络·网格重构·粗到端·端到端框架

 

引言

从单一视角推断3D形状是一种基本的人类视觉功能,但对于计算机视觉而言极其具有挑战性。最近,使用深度学习技术从单一彩色图像生成3D形状的成功很好[6,9]。利用常规网格上的卷积层或多层感知,估计的3D形状,作为神经网络的输出,表示为体积[6]或点云[9]。然而,两种表示都失去了重要的表面细节,并且重建表面模型(图1),即网格,这对于许多实际应用来说更加理想,因为它重量轻,能够对形状细节进行建模,因此非常容易。为动画变形,仅举几例。

在本文中,我们沿着单图像重建的方向推进,并提出一种从单个彩色图像中提取3D三角形网格的算法。我们的模型不是直接合成,而是学习将网格从平均形状变形到目标几何形状。这从几个方面使我们受益。首先,深度网络更好地预测残差,例如空间变形,而不是结构化输出,例如图表。其次,可以将一系列变形加在一起,这样可以逐步细化形状。它还可以控制深度学习模型的复杂性和结果质量之间的权衡。最后,它提供了将任何先验知识编码到初始网格的机会,例如,拓扑结构。作为一项先驱研究,在这项工作中,我们特别研究了可以通过使用具有固定尺寸的椭圆体来使用具有0类的3D网格来近似的对象。在实践中,我们发现大多数常见类别可以在此下很好地处理设置,例如汽车,飞机,桌子等。为了实现这一目标,存在一些固有的挑战。

第一个挑战是如何在神经网络中表示网格模型,其本质上是不规则图形,并且仍然能够从2D规则网格中表示的给定彩色图像有效地提取形状细节。它需要整合从两种数据模式中学到的知识。在3D几何方面,我们直接在网格模型上构建基于图的完全卷积网络(GCN)[3,8,18],其中网格中的顶点和边直接表示为图中的节点和连接。3D形状的网络特征编码信息保存在每个顶点上。通过前向传播,卷积层使得能够跨相邻节点进行特征交换,并最终回归每个顶点的3D位置。在2D图像方面,我们使用类似VGG-16的体系结构来提取特征,因为它已被证明可以成功完成许多任务[10,20]。为了桥接这两者,我们设计了一个感知特征汇集层,它允许GCN中的每个节点从图像上的2D投影中汇集图像特征,这可以通过假设已知的摄像机内部矩阵来轻松获得。使用更新的3D位置在几次卷积(即,在3.4节中描述的变形块)之后启用感知特征汇集一次,因此来自正确位置的图像特征可以与3D形状有效地集成。

给定图形表示,下一个挑战是如何有效地根据标准更新顶点位置。在实践中,我们观察到训练直接预测具有大量顶点的网格的网络可能在开始时出错并且难以进行。一个原因是顶点不能有效地从具有多个边缘的其他顶点检索特征,即有限的接收域。为了解决这个问题,我们设计了一个图解拼层,它允许网络以较少数量的顶点启动并且在前向传播期间增加。由于在开始阶段具有较少的顶点,网络学习将顶点分布到最具代表性的位置,然后随着顶点数量的增加而添加局部细节。除了图解拼层之外,我们使用由快捷连接[13]增强的深度GCN作为我们架构的支柱,它为全局上下文和更多的移动步骤提供了更大的接收域。

在图表中表示形状也有利于学习过程。已知的连接性允许我们在相邻节点上定义更高阶的损失函数,这对于规范3D形状是重要的。具体而言,我们定义表面正常损失,有利于光滑表面; 边缘损失,以促进网格顶点的均匀分布,以实现高召回率; 和拉普拉斯损失,以防止网格面相互交叉。所有这些损失对于生成好的网格模型是必不可少的,并且如果没有图形表示,它们都不能简单地定义。

本文的贡献主要有三个方面。首先,我们提出了一种新颖的端到端神经网络体系结构,该体系结构从单个RGB图像生成3D网格模型。其次,我们设计了将感知图像特征包含在由GCN表示的3D几何体中的映射层。第三,我们的网络以粗略到简洁的方式预测3D几何,更可靠,更容易学习。

相关工作

基于文献中的多视图几何(MVG)[12],对三维重建进行了深入的研究。主要研究方向包括运动结构(SfM)[27],用于大规模高质量重建和同步定位与导航制图(SLAM)[4]。尽管它们在这些场景中非常成功,但它们受到以下限制:1)多个视图可以提供的覆盖范围和2)想要重建的目标的外观。前一种限制意味着MVG无法重建目标的看不见的部分,因此通常需要很长时间才能获得足够的视图以进行良好的重建;后一种限制意味着MVG不能重建非朗伯(例如反射或透明)或无纹理的物体。这些限制导致采用基于学习的方法。

基于学习的方法通常考虑单个或少数图像,因为它在很大程度上依赖于它可以从数据中学习的形状先验。早期的工作可以追溯到Hoiem等人[14]和Saxena等人[25]。最近,随着深度学习架构的成功和大型3D形状数据集(如ShapeNet [5]的发布),基于学习的方法取得了很大进展。Huang等人[15]和Su等人[29]从大型数据集中检索形状组件,组装它们并使组装的形状变形以查看观察到的图像。然而,从图像本身检索形状是一个不容忽视的问题。为了避免这个问题,Kar等人[16]为每个对象类别学习三维可变形模型并捕获不同图像中的形状变化。然而,重建仅限于流行类别及其重建结果通常缺乏细节。另一项研究是直接从单个图像中学习3D形状。受流行的基于网格的深度学习架构的限制,大多数作品[6,11]输出3D元素,由于现代GPU上的内存限制,3D元素通常具有低分辨率。最近,Tatarchenko等人[30]已经提出了八叉树表示,其允许以有限的内存预算重建更高分辨率的输出。然而,3D元素仍然不是游戏和电影行业中的流行形状表示。为了避免元素表示的缺点,Fan等人[9]建议从单个图像生成点云。点云表示在点之间没有局部连接,因此点位置具有非常大的自由度。因此,生成的点云通常不靠近表面并且不能用于直接恢复3D网格。除了这些典型的3D表示外,还有一项有趣的工作[28],它使用所谓的“几何图像”来表示3D形状。因此,它们的网络是2D卷积神经网络,其进行图像到图像的映射。我们的工作主要与最近的两个工作有关[17]和[24]。然而,前者采用简单的轮廓监控,因此对于汽车,灯具等复杂物体表现不佳;后者需要一个大型模型库来生成组合模型。

我们的基础网络是图神经网络[26];这种结构已被用于形状分析[31]。同时,有基于图表的方法直接在表面流形上应用卷积[2,22,23]进行形状分析。据我们所知,这些架构从未被用于单个图像的三维重建,尽管图形和表面流形是网格物体的自然表示。为了全面了解图神经网络,基于图表的方法及其应用,请参考本研究[3]。

 

方法

初步:基于图形的卷积


我们首先提供了一些基于图形的卷积的背景知识;更详细的介绍可以在[3]中找到。3D网格是顶点,边和面的集合,用于定义3D对象的形状;它可以用图表M=(V,E,F)表示,其中V={vi}Ni=1是网格中N个顶点的集合,E={ei}Ei=1是一组每个连接两个顶点的E边缘,并且F = {fi}Ni = 1是附加在顶点上的特征向量。基于图形的卷积层在不规则图上定义为:

其中flp∈Rdl,fl + 1p∈Rdl+ 1是卷积前后顶点p上的特征向量,N(p)是p的相邻顶点; w0和w1是应用于所有顶点的dl×dl + 1的可学习参数矩阵。注意,w1是所有边共享的,因此(1)适用于具有不同顶点度的节点。在我们的例子中,附加的特征向量fp是3D顶点坐标,特征编码3D形状和从输入彩色图像(如果存在)中学习的特征的连接。运行卷积更新特征,这相当于应用变形。

 

系统总览

我们的模型是一个端到端的深度学习框架,它将单个彩色图像作为输入,并在相机坐标中生成3D网格模型。我们的框架概述如图2所示。整个网络包括图像特征网络和级联网格变形网络。图像特征网络是2D CNN,其从输入图像提取感知特征,网格变形网络利用该感知特征将椭球网格逐渐变形为期望的3D模型。级联网格变形网络是基于图形的卷积网络(GCN),其包含与两个图形解拼层相交的三个变形块。每个变形块采用表示当前网格模型的输入图,其中3D形状特征附加在顶点上,并生成新的顶点位置和特征。而图解拼图​​层增加顶点数量以增加处理细节的能力,同时仍然保持三角形网格拓扑。从较少数量的顶点开始,我们的模型学会逐渐变形并在粗糙的网格模型中添加细节。为了训练网络产生稳定的变形并生成精确的网格,我们扩展了Fan等人使用的倒角距离损失[9]。与其他三个网格特定损失 - 表面正常损失,拉普拉斯正则化损失和边长损失。本节的其余部分介绍了这些部分的详细信息。

 

初始椭圆体

我们的模型不需要任何3D形状的先验知识,并且总是从初始椭圆体变形,平均尺寸放置在相机坐标的公共位置。椭圆体位于相机前方0.8m处,以三轴半径0.2m,0.2m,0.4m为中心。网格模型由Meshlab[7]中的隐式曲面算法生成,包含156个顶点。我们使用这个椭球来初始化我们的输入图,其中初始特征仅包含每个顶点的3D坐标。

 

网格变形块

网格变形块的结构如图3(a)所示。为了生成与输入图像中显示的对象一致的3D网格模型,变形块需要从输入图像中汇集特征(P)。这是结合图像特征网络和给定当前网格模型中顶点(Ci-1)的位置的感知特征池化层来完成的。然后将经过池化的感知特征与附加在输入图(Fi-1)的顶点上的3D形状特征连接,并喂给一系列基于图的ResNet(G-ResNet)。G-ResNet也作为网格变形块的输出产生每个顶点的新坐标(Ci)和3D形状特征(Fi)。

感知特征池化层我们使用VGG-16架构直到将conv5_3层作为图像特征网络,因为它已被广泛使用。给定顶点的3D坐标,我们使用相机内在函数计算其在输入图像平面上的2D投影,然后使用双线性插值从四个附近像素汇集该特征。特别地,我们连接从层'conv3_3','conv4_3'和'conv5_3'中提取的特征,这导致总维度为1280.然后,此感知特征与来自输入网格的128维3D特征连接在一起,其总尺寸为1408.这在图3(b)中示出。请注意,因为在开始时没有学习形状特征,在第一个块中,感知特征与三维特征(坐标)连接在一起。

G-ResNet在获得从3D形状和2D图像信息表征的每个顶点的1408维特征之后,我们设计了基于图形的卷积神经网络来预测每个顶点的新位置和3D形状特征。这需要在顶点之间有效地交换信息。然而,如(1)中所定义的,每个卷积仅使相邻像素之间的特征交换成为可能,这严重损害了信息交换的效率。这相当于2D CNN上的小接收域问题。

为了解决这个问题,我们建立了一个具有快捷连接的非常深的网络[13],并将其表示为G-ResNet(图3(a))。在这项工作中,所有块中的G-ResNet具有相同的结构,其由14个图形残差卷积层和128个通道组成.G-ResNet块的序列产生新的128维3D特征。除了特征输出,有一个分支,它将额外的图形卷积层应用于最后一层特征,并输出顶点的3D坐标。

图解拼层

解拼层的目的是增加GCNN中的顶点数量。它允许我们从具有较少顶点的网格开始,仅在必要时添加更多,这样可以降低内存成本并产生更好的结果。一种简单的方法是在每个三角形的中心添加一个顶点,并将其与三角形的三个顶点连接(图4(b)基于面)。然而,这导致不平衡的顶点层级,即顶点上的边缘数量。受计算机图形学中普遍存在的网格细分算法的顶点添加策略的启发,我们在每个边缘的中心添加一个顶点并将其与该边缘的两个端点连接(图4(a))。新添加的顶点的3D特征被设置为其两个邻居的平均值。如果将三个顶点添加到同一个三角形(虚线),我们也会连接三个顶点。因此,我们为原始网格中的每个三角形创建4个新三角形,并且顶点数量增加原始网格中的边数。这种基于边缘的解拼均匀地对顶点进行上采样,如图4(b)所示。基于边缘。

 

损失

我们定义了四种损失来约束输出形状和变形过程的性质以保证得到好的结果。我们采用倒角损失[9]来约束网格顶点的位置,正常的损失来强制表面法线的一致性,拉普拉斯正则化以在变形期间保持相邻顶点之间的相对位置,以及边缘长度正则化以防止异常值。这些损失在中间和最终网格上施加相同的权重。

除非另有说明,否则我们将p用于预测网格中的顶点,q用于标准网格中的顶点,对于p的相邻像素使用N(p),直到本节结束。


倒角损失倒角距离测量每个点到另一个点的距离

将顶点回归到其正确位置是相当不错的,但是效率不高(参见图1中Fan等人的结果[9])。


正常损失我们进一步确定表面法线上的损失以表征高阶特性:

其中q是在计算倒角损失时找到的p的最近顶点,k是p的相邻像素,h·,i是两个向量的内积,nq是从标准情况中观察到的曲面法线。

基本上,这种损失要求顶点与其邻居之间的边缘垂直于来自标准情况的观察。 除非在平面上,否则可以发现该损失不等于零。然而,优化这种损失相当于迫使局部叠加的切平面的法线与观察结果一致,这在我们的实验中实际上很有效。 此外,这种正常损失是完全可区分的并且易于优化。

正则化即使在倒角损耗和正常损耗的情况下,优化也很容易陷入局部最小值。 更具体地说,网络可能会产生一些超大变形以支持某些局部一致性,这在估计远离标准时开始时尤其有害,并导致飞行顶点(图5)。


拉普拉斯正则化为了解决这些问题,我们首先提出拉普拉斯项,以防止顶点过于自由移动,这可能避免网格自相交。 拉普拉斯术语用作局部细节保持算子,其鼓励相邻顶点具有相同的移动。在第一个变形块中,它的作用就像一个表面平滑度项,因为这个块的输入是一个平滑的椭圆体; 从第二个块开始,它可以防止3D网格模型变形太多,因此只有细粒度的细节才会添加到网格模型中。为了计算这种损失,我们首先将每个顶点p的拉普拉斯坐标定义为


并且拉普拉斯正则化定义为:llap =

其中δ~p和δp是变形块之后和之前的顶点的拉普拉斯坐标。


边长正则化。为了惩罚通常导致长边的浮点顶点,我们加上边长正则化损失:

总损失是所有四个损失的加权和,lall = lc +λ1ln+ λ2llap+λ3lloc,其中λ1= 1.6e-4,λ2= 0.3和λ3= 0.1是超参数,它们平衡了所有实验的损失和固定。

 

实验

在本节中,我们对我们的模型进行了广泛的评估。除了与之前的3D形状生成工作进行比较以评估重建精度之外,我们还分析了模型中每个组件的重要性。 合成图像和真实图像的定性结果进一步表明,我们的模型生成具有光滑表面的三角形网格,并且仍然保持输入图像中描绘的细节。

 

实验装置

数据。我们使用Choy等人提供的数据集[6]。该数据集包含属于ShapeNet [5]的13个对象类别的50k模型的渲染图像,这是根据WordNet层次结构组织的3D CAD模型的集合。从各种相机视点渲染模型,并记录相机内在和外在矩阵。 为了公平比较,我们使用与Choy等人相同的训练/测试分组[6]。

评估指标。我们采用标准的3D重建指标。我们首先从结果和基本事实中统一抽样点。我们通过检查预测或标准情况中的点的百分比来计算精度和召回率,这些点可以在特定阈值τ内找到彼此的最近邻居。然后计算F-score[19]作为精度和召回的调和平均值。我们还报告倒角距离(CD)和地球移动距离(EMD)。对于F-Score,越大越好。对于CD和EMD,越小越好。

另一方面,我们意识到形状生成的常用评估指标可能无法彻底反映形状质量。 它们通常捕获占用率或逐点距离而不是表面属性,例如连续性,平滑度,高阶细节,在文献中几乎没有标准评估指标。因此,我们建议注意定性结果,以便更好地理解这些方面。

基线。我们将所提出的方法与最新的单图像重建方法进行比较。具体而言,我们将比较两种最先进的方法Choy等人[6](3D-R2N2)产生3D体积,而Fan等人[9](PSG)产生点云。由于指标是在点云上定义的,我们可以直接在其输出上评估PSG,通过在表面上均匀采样来评估我们的方法,通过从使用Marching Cube [21]方法创建的网格中均匀采样点来评估3D-R2N2。

我们还比较了神经三维网格渲染器(N3MR)[17],它是迄今为止唯一一种基于深度学习的网格生成模型,公共代码可用。为了公平比较,使用相同的时间量使用相同的数据训练模型。

训练和运行。我们的网络接收大小为224×224的输入图像,以及具有156个顶点和462个边缘的初始椭球。该网络在Tensorflow中实施,并使用具有权重衰减1e-5的Adam进行优化。批量大小为1;训练轮总数为50;学习率初始化为3e-5,并在40个时期后降至1e-5。在Nvidia Titan X上,总训练时间为72小时。在测试过程中,我们的模型需要15.58ms才能生成一个2466个顶点的网格。

 

与现有技术的比较

表格1显示了具有不同方法的不同阈值的F-score。我们的方法优于除技术以外的所有类别的其他方法。值得注意的是,在较小的阈值τ下,我们的结果显著优于所有类别中的其他结果,显示至少10%的F-score改善。N3MR表现不佳,其结果比我们的差50%左右,可能是因为他们的模型只能从图像中有限的轮廓信号中学习,而且缺乏对3D网格的明确处理。

我们还在表格2中显示所有类别的CD和EMD。我们的方法在大多数类别中优于其他方法,并达到最佳平均分。主要竞争对手是PSG,它产生点云并拥有最大的自由度;这种自由导致较小的CD和EMD,但是如果没有适当的正则化,不一定会导致更好的网格模型。为了证明这一点,我们展示了定性结果,以分析为什么我们的方法优于其他方法。图8显示了视觉结果。为了比较网格模型的质量,我们使用标准方法将体积和点云转换为网格[21,1]。正如我们所看到的,3D-R2N2产生的3D体积结果由于分辨率低而缺乏细节,例如,在椅子示例中缺少腿,如图8的第4行所示。我们尝试了基于八叉树的解决方案[30]增加了体积分辨率,但发现仍然难以像我们的模型那样恢复表面水平细节。PSG产生稀疏的3D点云,从中恢复网格是非常重要的。这是由于应用的倒角损失就像回归损失一样,为点云提供了太多的自由度。N3MR产生非常粗糙的形状,这可能足以完成某些渲染任务,但无法恢复复杂的物体,如椅子和桌子。相比之下,我们的模型通过利用网格表示,感知特征的整合以及训练期间精心定义的损失而不会遇到这些问题。由于内存预算有限,我们的结果不受分辨率的限制,并且包含平滑连续的表面和局部细节。

 

消融研究

现在我们进行对照实验来分析模型中每个组件的重要性。表格3通过从完整模型中删除一个组件来报告每个模型的性能。同样,我们认为这些常用的评估指标并不一定反映出所涵盖的3D几何的质量。例如,没有边长度正则化的模型在所有情况下都达到了最佳性能,但实际上产生了最差的网格(图5,最后的第2列)。因此,我们使用定性结果图5来显示我们系统中每个组件的贡献。

图解.我们首先删除图解拼层,因此每个块具有与我们完整模型的最后一个块中相同数量的顶点。据观察,变形在开始时使错误变得容易,后来无法修复。 因此,在对象的某些部分中存在一些明显的伪像。

G-ResNet我们删除G-ResNet中的快捷方式连接,并使其成为常规GCN。 从表格3中可以看出,所有四个测量指标都存在巨大的性能差距,这意味着优化倒角距离的失败。主要原因是在非常深的2D卷积神经网络中观察到的退化问题。 当向适当深度模型添加更多层时,这种问题会导致更高的训练误差(从而导致更高的测试误差)[13]。实际上,我们的网络有42个图形卷积层。因此,在我们的深度图神经网络实验中也观察到了这种现象。

损失条款除了倒角损失之外,我们还评估每个附加条款的功能。从图5中可以看出,去除正常损失会严重损害表面光滑度和局部细节,例如:座椅靠背上; 移除拉普拉斯项导致交叉几何,因为局部拓扑改变,例如, 把手放在椅子上; 去除边长项会导致顶点和表面浮动,这完全破坏了表面特征。这些结果表明,这项工作中提出的所有组件都有助于实现最终性能。

变形块数.我们现在分析块数的影响。图6(左)显示了关于块数的平均F-score(τ)和CD。结果表明,增加块的数量有所帮助,但是有益的是越来越多的块,例如,在我们的实验中,我们发现4个块会导致顶点和边缘太多,这会大大减慢我们的方法,即使它在评估指标上提供了更好的准确性。因此,我们在所有实验中使用3个块来实现性能和效率的最佳平衡。 图6(右)显示了每个变形块后模型的输出。注意如何使用更多顶点来确定网格的密度,并添加新的细节。

 

重建真实世界的图像

继Choy等人[6]之后,我们在Online Products数据集和Internet图像上测试我们的网络,以便对真实图像进行定性评估。我们使用从ShapeNet数据集训练的模型,直接在没有微调的真实图像上运行,并在图7中显示结果。可以看出,我们在合成数据上训练的模型很好地概括了各种类别的真实世界图像。

 

结论

我们提出了一种从单个图像中提取三维三角网格的方法。我们利用网格演示可以为我们带来的关键优势,以及解决成功所需的关键问题。前者包括表面法线约束和沿边缘的信息传播;后者包括从图像中提取的感知特征作为指导。 我们精心设计了我们的网络结构,并提出了一个具有“快捷”连接的非常深的级联图卷积神经网络。网格经过我们的网络端到端训练,具有倒角损耗和正常损耗,可逐步确定网格。我们的结果显着优于使用其他形状表示(如3D体积或3D点云)的先前状态。因此,我们认为网格表示是这个方向的下一个重点,我们希望在我们的工作中发现的关键组件可以支持后续工作,这将进一步推进单个图像的直接3D网格重建。

未来的工作我们的方法只生成与初始网格具有相同拓扑的网格。将来,我们将把我们的方法扩展到更一般的情况,例如场景级重建,并从多个图像中学习多视图重建。

猜你喜欢

转载自blog.csdn.net/weixin_40740160/article/details/83022392