目录
- 摘要
- 1.Introduction
- 2.Related Work
- 3.Method
-
- 3.1.准备:基于图纸的卷积
- 3.2.系统概述
- 3.3.初始椭球
- 3.4.Mesh deformation block
- 3.5.Graph unpooling layer
- 3.6.Losses
- 4.Experiment
-
- 4.1.实验设置
- 4.2.实验结果
- 5.个人总结
摘要
我们提出了从单个彩色图像生成三维形状的端到端深度学习架构(格式为triangular mesh,三角网格)。受深度神经网络性质的限制,以往的方法通常在元素或点云中表示三维形状,并将其转化为更容易使用mesh很重要。与现有方法不同,我们的网络在Graph NN它表示三维网格,并通过逐渐变形的椭球产生正确的几何(从输入图像中提取的特性)。我们采粗到精的策略,稳定整个变形过程,定义与网格相关的各种损失,捕捉不同层次的特征,确保高精度三维几何的重建。大量实验表明,与现有方法相比,我们的方法产生了更好的细节mesh。
1.Introduction
从单个角度推断三维形状是人类视觉的基本功能,但对计算机视觉具有挑战性。最近,利用深度学习技术从单一彩色图像生成三维形状取得了巨大成功。从单一彩色图像重建3D对象的体素表示或点云表示已经实现了研究。然而,这两示都会失去重要的曲面细节,重建曲面模型(图1)非常重要,即mesh,这对于很多实际应用来说更为理想,因为它重量轻,可以建模形状细节,容易做动画变形。
三维数据通常有四种表示:点云、体素或体素网格、三角网格mesh,多视图表示(例如Nerf可生成任意视图)
- 图1:给出彩色图像和初始网格(如椭球体),我们的方法可以生成高质量的网格,包括示例细节。其他方法(生成元素或点云)转换为mesh后效果不好。
在本文中,我们沿着单图像重建的方向前进,并提出了从单一彩色图像中生成三维三角形网格的算法。与直接合成不同,我们的模型学习将网格从初始形状转变为目标几何。这给我们带来了好处。首先,深度网络善于预测残差,如空间变形spatial deformation,而不是结构化输出,比如graph。其次,一系列变形可以叠加在一起,逐渐细化形状。我们的方法还可以控制深度学习模型的复杂性和结果质量trade-off。最后,我们提供了将先验知识编码到初始的方法mesh的机会。作为一项先驱研究,在这项工作中,我们专门研究了变形固定大小的椭球作为三维网格的近似对象。在实践中,我们发现在这种设置下,大多数常见的类别都可以很好地被处理,例如汽车、飞机、桌子等。我们面临以下挑战:
- 第一个挑战是如何在神经网络中表达的mesh,本质上,该模型是一个不规则图,仍然可以从二维规则开始grid(image)在给定的彩色图像中有效提取形状细节。它需要整合从两种数据模式中学到的知识。三维几何(3)D geometry)我们直接在这方面mesh上构建GCN,网格中的顶点和边缘直接表示为图中的节点和边缘。三维网络特征编码信息保存在每个顶点。通过正向传播,GCN层可以在相邻节点之间交换特征,最终回到每个顶点。二维图像(2)D image)我们使用类似的方面VGG-由于16提取特征,因为VGG证明它在许多任务中都是成功的。为了将两者联系起来,我们设计了一个感知特征池化层(perceptual feature pooling),该层允许GCN图像上的2中的每个节点D投影中聚合图像特征,该投影可以通过假设已知的摄像机内参矩阵轻松获得。在使用更新的三维位置进行多次卷积(即第3.4节中描述的deformation block)之后,感知特征池化启用一次,因此来自正确位置的图像特征可以有效地与三维形状聚合。
- 给定graph下一个挑战是如何有效地更新顶点位置接近GT。在实践中,我们观察到,训练用于直接预测大量顶点网格的网在一开始可能会出错,将来很难修复。一个原因是,一个顶点不能有效地检索远离多个边缘的其他顶点特征(即有限的感觉野生)。为了解决这个问题,我们设计了一个graph unpooling该层允许网络使用较少的顶点初始化,并在正传播过程中增加顶点。由于最初阶段的顶点较少,网络学习将顶点分布到最具代表性的位置,然后随着顶点数量的增加而添加局部细节。除了graph unpooling除了层,我们还使用了它shortcut连接增强的深度GCN作为架构的主干,可以为整体上下文和更多步骤提供更大的感受域。
在graph形状也有利于学习。已知的连通性允许我们定义跨相邻节点的高阶损失函数,这对正则化的三维形状非常重要。具体来说,我们定义了一个surface normal loss,以利于光滑表面;edge loss 鼓励网格顶点均匀分布,实现高召回率;以及 laplacian loss,防止网格表面相互交叉(防止deformation block前后顶点移动变化过大)。如果没有,所有这些损失对生成高质量的网格模型至关重要graph没有一个能简单地定义这些损失。
本文的贡献主要体现在三个方面。首先,我们从单个端到端神经网络架构中提出了新的端到端神经网络架构RGB图像生成三维网格模型。其次,我们设计了一个projection层将图像特征合并到由GCN三维几何体。第三,我们的网络以从粗到细的方式预测三维几何体,更可靠,更容易学习。
2.Related Work
基于多视几何的一些文献(MVG,multi-view geometry)深入研究三维重建。主要研究方向包括大规模高质量重建的运动结构(SfM,structure from motion)同步定位和地图构建导航(SLAM,Simultaneous Localization And Mapping)。虽然它们在这些场景中非常成功,但它们受到以下限制:1)多个视图可以提供的覆盖范围;2)重建对象的外观。前一种限制意味着MVG无法重建对象的不可见部分通常需要很长时间才能获得足够的视图来进行良好的重建;后一种限制意味着MVG非朗伯(如反射或透明)或无纹理对象无法重建。这些限制导致了基于学习的趋势。
基于学习的方法通常考虑单个或少数图像,因为它在很大程度上取决于可以从数据中学习的先验形状。可追溯到早期工作Hoiem等人和Saxena等人。最近,随着深度学习结构的成功和大规模三维形状数据集(如ShapeNet)基于学习方法的发布取得了很大进展。Huang等人和Su等待人们从大型数据中检索形状组件,组装它们,并变形组装后的形状,以拟合观察到的图像。然而,很难从图像本身中检索形状。为了避免这个问题,Kar等待学习每个对象类别的3D可变形模型捕捉不同图像中的形状变化。然而,重建仅限于流行类别,其重建结果通常缺乏细节。另一个研究方向是直接从单个图像中学习3D形状。一般基于体素grid由于现代深度学习结构的限制,大多数工作输出三维元素GPU三维体素的分辨率通常较低。最近,Tatarchenko在有限的内存预算下,等人提出了一种允许重建更高分辨率输出的八叉树表示法。然而,三维元素仍然不是游戏和电影行业流行的形状。为避免体素表示的缺点,Fan提出从单个图像生成点云。点云表示点之间没有局部连接,所以点位置有很大的自由度。因此,生成的点云通常不靠近曲面,不能直接用于恢复三维mesh。除了这些典型的三维表示外,还有一项使用所谓几何图像的有趣工作,geometry image表示三维形状。因此,他们的网络是2D卷积神经网络用于映射图像到图像。我们的大部分工作都与最近的两份工作有关。然而,第一项工作是简单的轮廓监督(silhouette supervision),对复杂物体(如汽车、灯具等)的影响较差;第二项工作需要一个大型模型库来生成组合模型。
我们的基本网络是图神经网络;该结构已用于形状分析(shape analysis)。同时,有一些方法可以直接在曲面上流形(surface manifolds)形状分析采用卷积。尽管如此graph曲面流形是mesh object但这些系统结构从未被用于从单个图像进行三维重建。
3.Method
3.1.准备:基于图纸的卷积
我们先介绍一些基于图纸卷积的背景。D mesh它们定义了顶点、边和面的集合3D对象的形状,可以用图 M = ( V , E , F ) M=(V,E,F) M=(V,E,F)表示,其中, V = { v i } i = 1 N V=\left\{v_{i}\right\}_{i=1}^{N} V={ vi}i=1N是mesh中 N N N个节点的集合, E = { e i } i = 1 E E=\left\{e_{i}\right\}_{i=1}^{E} E={ ei}i=1E是连接节点的 E E E条边的集合, F = { f i } i = 1 N F=\left\{f_{i}\right\}_{i=1}^{N} F={ fi}i=1N是每个节点附加的特征。在不规则图上定义基于图的卷积为: f p l + 1 = w 0 f p l + ∑ q ∈ N ( p ) w 1 f q l f_{p}^{l+1}=w_{0}f_{p}^{l}+\sum_{q\in N(p)}w_{1}f_{q}^{l} fpl+1=w0fpl+q∈N(p)∑w1fql其中, f p l ∈ R d l , f p l + 1 ∈ R d l + 1 f_{p}^{l}\in R^{d_{l}},f_{p}^{l+1}\in R^{d_{l+1}} fpl∈Rdl,fpl+1∈Rdl+1为顶点 p p p在卷积前后的特征向量, N ( p ) N(p) N(p)为节点 p p p的邻居节点, w 0 w_{0} w0和 w 1 w_{1} w1为应用在所有节点上的可学习矩阵(矩阵大小为 d l × d l + 1 d_{l}\times d_{l+1} dl×dl+1),注意两个参数对所有边上的节点都是共享的。在我们的例子中,附加的特征向量 f p f_{p} fp是3D节点坐标,3D形状的特征编码,和从输入的彩色图像中学习到的特征的拼接。运行卷积更新特征,相当于操作节点的变形。
- 图2:级联架构下的mesh变形网络。我们的完整模型包含了连续的三个mesh变形块。每个块增加mesh分辨率(节点),然后继续用于从2D CNN提取下一个块的图像特征。
3.2.系统概述
我们的模型是一个端到端的深度学习框架,以单个彩色图像为输入,在摄像机坐标系下生成三维mesh。我们的框架概述如图2所示。整个网络由图像特征网络和级联mesh变形网络组成。图像特征网络是从输入图像中提取感知特征的2D CNN,网格变形网络将椭球网格(ellipsoid mesh)逐步变形为所需的3D模型。级联mesh变形网络是一种基于图的卷积网络(GCN),包含与两个graph unpooling层相交的deformation blocks。每个deformation block获取一个表示当前mesh模型的输入graph,其中三维形状特征附加在节点上,并生成新的节点位置和特征。然而,graph unpooling层增加了节点数量,以增加处理细节的能力,同时仍保持triangular mesh的拓扑。从较少数量的节点开始,我们的方法学习逐渐变形,并以从粗到细的方式向mesh添加细节。为了训练网络以产生稳定变形并生成精确的mesh,我们将Fan等人使用的倒角距离损失(chamfer distance loss)与其他三种mesh特定损失进行了扩展——surface normal loss、laplacian regularization loss和edge length loss。本节的其余部分介绍了这些组件的详细信息。
3.3.初始椭球
我们的模型不需要任何3D形状的先验知识,总是从初始椭球开始变形,椭球每次都放置在摄像机坐标中的公共位置。椭球体以摄像机前方0.8m为中心,三轴半径分别为0.2m、0.2m、0.4m。mesh模型由Meshlab中的隐式曲面算法生成,包含156个顶点。我们使用这个椭球来初始化输入graph,其中初始特征仅包含每个顶点的三维坐标。
3.4.Mesh deformation block
- 图3a:顶点位置 C i C_{i} Ci用于提取图像特征,然后将其与顶点3D形状特征 F i F_{i} Fi结合并馈送到G-ResNet。 ⊕ \oplus ⊕表示拼接特征。
- 图3b:使用摄像机内部函数将3D顶点投影到图像平面,并使用双线性插值从2D-CNN层pooled感知特征。
Mesh deformation block的结构如图3a所示。为了生成与输入图像中显示的对象一致的三维mesh模型,deformation block需要从input image中pool特征( P P P为基于image的特征)。perceptual feature pooling是结合图像特征网络(image feature network)和给定顶点位置 C i − 1 C_{i-1} Ci−1同时完成的。经过pooled的perceptual feature与来自input graph的顶点3D形状特征 F i − 1 F_{i-1} Fi−1拼接,再输入到G-Resnet中。G-Resnet生成每个顶点的新坐标 C i C_{i} Ci和3D形状特征 F i F_{i} Fi,同时也作为mesh deformation block的输出。
我们使用VGG-16架构,直到第conv5_3层,作为图像特征网络,因为它已被广泛使用。给定顶点的三维坐标,我们使用相机内部函数计算其在输入图像平面上的二维投影(),然后使用双线性插值从附近的四个像素计算特征。特别是,我们将从“conv3_3”、“conv4_3”和“conv5_3”层提取的特征连接起来,其总维数为1280。然后将该特征与来自input mesh的128维3D特征拼接起来,其总维数为1408。如图3b所示。注意,在第一个block中,来自图像的感知特征与三维特征(坐标)相连,因为在开始时没有学习形状特征。
可以看出,Perceptual feature pooling layer中的pool其实是特征插值的意思,而不是降维的pooling
在获得代表三维形状和二维图像信息的每个顶点的1408维特征后,我们设计了一个基于图的卷积神经网络来预测每个顶点的新位置和三维形状特征。这需要在顶点之间高效地交换信息。然而,如中所定义的,每个卷积只允许相邻像素之间的特征交换,这严重影响了信息交换的效率。这相当于2D CNN上的小感受野问题。
为了解决这个问题,我们制作了一个具有shortcut连接的非常深的网络,并将其表示为G-ResNet(图3a)。在这项工作中,所有块中的G-ResNet具有相同的结构,由14个图残差卷积层组成。G-ResNet block会产生一个新的128维特征。另外,有一个分支将额外的图卷积层应用于最后一层特征,并输出顶点的三维坐标。
3.5.Graph unpooling layer
Unpooling层的目标是增加GCN中的顶点数。它允许我们从顶点较少的mesh开始,并仅在必要时添加更多顶点,从而减少内存成本并产生更好的结果。一种简单的方法是在每个三角形的中心添加一个顶点,并将其与三角形的三个顶点连接(图4b Face-based)。但是,这会导致顶点的度不平衡,即顶点上的边数不平衡。受计算机图形学中流行的网格细分算法的顶点添加策略的启发,我们在每条边的中心添加一个顶点,并将其与该边的两个端点连接(图4a)。新添加顶点的3D特征设置为其两个相邻顶点的平均值。如果三个顶点添加在同一个三角形(虚线)上,我们也会连接三个顶点。因此,我们为原始网格中的每个三角形创建4个新三角形,并且顶点的数量随着原始网格中边的数量而增加。如图4b Edge-based所示,这种基于边的unpooling可以均匀地上采样顶点。
- 图4a:黑色节点和虚线边是unpooling layer后的新加内容。
- 图4b:Face-based unpooling导致节点度不平衡,而edge-based unpooling保持均匀。
3.6.Losses
我们定义了四种loss来约束输出形状的属性,并定义了变形过程来保证有引人瞩目的结果。我们采用Chamfer loss来约束mesh顶点的位置,采用normal loss来增强曲面法线的一致性,采用laplacian regularization来保持变形期间相邻顶点之间的相对位置,并采用edge length regularization来防止异常值。这些损失在中间mesh和最终mesh上都以相等的权重施加。
除非另有说明,否则我们使用 p p p表示预测mesh中的顶点, q q q表示GT mesh中的顶点, N ( p ) N(p) N(p)表示 p p p的邻居。
Chamfer loss测量集合中每个point到另一个集合的距离: l c = ∑ p m i n q ∣ ∣ p − q ∣ ∣ 2 2 + ∑ q m i n p ∣ ∣ p − q ∣ ∣ 2 2 l_{c}=\sum_{p}min_{q}||p-q||_{2}^{2}+\sum_{q}min_{p}||p-q||_{2}^{2} lc=p∑minq∣∣p−q∣∣22+q∑minp∣∣p−q∣∣22Chamfer loss将顶点回归到正确的位置可以具有良好的效果,但不足以产生优质的3D mesh(见图1中Fan等人的结果)。
我们进一步定义曲面法线(surface normal)上的损失来表征高阶性质: l n = ∑ p ∑ q = a r g m i n q ( ∣ ∣ p − q ∣ ∣ 2 2 ) ∣ ∣ < p − k , n q > ∣ ∣ 2 2 l_{n}=\sum_{p}\sum_{q=argmin_{q}(||p-q||_{2}^{2})}||<p-k,n_{q}>||_{2}^{2} ln=p∑q=argminq(∣∣p−q∣∣22)∑∣∣<p−k,nq>∣∣22其中, k ∈ N ( p ) k\in N(p) 标签: psg3m磁感应传感器