1.三维曲面解码
基于体积表示的方法在计算上非常浪费,因为信息只在三维形状的表面或其附近丰富。直接处理曲面时的主要挑战是,网格或点云等常见表示没有规则的结构,因此,它们不容易适应深度学习体系结构,特别是使用CNN的体系结构。本节介绍用于解决此问题的技术,将最新技术分为三大类:基于参数化、基于模板变形和基于点的方法。
1.1基于参数化的三维重建
与直接使用三角形网格不同,我们可以将三维形状X的表面表示为映射ζ:D→R3,其中D是正则参数化域。然后,3D重建过程的目标是从输入I中恢复形状函数ζ。当D是3D域时,这类方法属于第4节中描述的体积技术。
这里,重点讨论D是正则2D域的情况,它可以是二维平面的子集,例如D=[0,1]2,或者是单位球面,即D=S2。在第一种情况下,可以使用标准的2D卷积操作来实现编码器-解码器架构。在后一种情况下,必须使用球面卷积,因为域是球面的。
球面参数化和几何图像是最常用的参数化。然而,它们只适用于0属和盘状表面。任意拓扑的曲面需要切割成圆盘状的曲面片,然后展开成规则的二维区域。找到给定曲面的最佳切割,更重要的是,在同一类别的形状之间找到一致的切割是一项挑战。事实上,单纯地为形状类别创建独立的几何图像并将其输入深层神经网络将无法生成连贯的三维形状曲面。
基于参数化方法仅限于低属曲面,它们适合于重建属于给定形状类别的对象,例如人脸和身体。
1.2基于形变的三维重建
取一个输入I,并估计一个变形场∆,当它作用于一个模板三维形状时,得到重构的三维模型X。现有的技术在它们使用的变形模型的类型、模板的定义方式以及用于估计变形场∆的网络体系结构方面有所不同。在下面的内容中,假设一个三维形状X=(V,F),有n个顶点V={v1,,vn}和面F。设X~= (V~, F)表示模板形状。
1.2.1变形模型
(1)顶点变形:这个模型假设一个三维的形状X可以用模板的单个顶点的线性位移来表示,即∀v i∈V,vi=v~i+δi,其中δi∈R3。变形场定义为∆=(δ1,…,δn)。这个变形模型,如下图所示,已经在多个地方使用。假设形状X的顶点与模板X的顶点之间存在一对一的对应关系;形状X的拓扑结构与模板X的拓扑结构相同。
(2)形变模型模型:可以使用学习的变形模型来参数化三维网格,而不是使用通用模板。设V˜为平均形状,∧1,,∧K是一组正交基。任何形状V都可以用以下形式表示:
上式的第二项可以看作是一个变形场,应用于平均形状的顶点V˜。学习可变形模型的一种方法是对一组干净的三维网格样本使用主成分分析(PCA)。最近的技术表明,仅使用2D注释,就可以从2D轮廓或2D图像构建特定类别的3D可变形模型。这些方法需要对目标进行有效的检测和分割,并使用基于CNN的技术进行摄像机姿态估计。
(3)自由变形(FFD)。不必直接变形模板X˜的顶点,可以变形模板周围的空间,如下图所示。可以通过定义在X˜周围的m个控制点的一组集合P∈R m×3,称为变形处理。当变形场∆=(δ1,…,δm),m<<n,应用于这些控制点时,它们使形状周围的整个空间变形,因此,它们也根据以下等式使形状的顶点V变形:
其中变形矩阵B∈Rn×m是一组多项式基,Φ是一个m×m矩阵,用于在FFD场中施加对称性,而∆是位移。
自由变形的主要优点是不需要形状和模板之间的一一对应关系。然而,可以被模板的FFD近似的形状只是那些具有与模板相同的拓扑结构的形状。
1.2.2定义模板
Henderson[1] 定义了两种类型的模板:抽象为立方基元的复杂形状和细分为多个顶点的立方体。前者适用于具有多个组件的人造形状,后者适用于表示属0形状,与使用球体或椭球体相比没有优势。
为了加快收敛速度,Kuryenkov[2]引入DeformNet,它以图像为输入,从数据库中搜索最近的形状,然后使用上式方程的FFD模型对检索到的模型进行变形,以匹配查询图像,这种方法允许保留细节的三维重建。
Pontes[3]使用了类似于DeformNet的方法。然而,一旦FFD字段被估计并应用于模板,则通过添加定义为从字典中检索的一些3D模型的加权和的残差来进一步细化结果。深度神经网络的作用是学习如何估计变形场∆和用于计算求精残差的权重。
另一种方法是学习模板,或者分别使用统计形状分析技术(例如,PCA)对一组训练数据进行学习,或者使用深度学习技术与变形场联合学习。Kanazawa[4]同时学习平均形状和变形场。因此,该方法不需要单独的3D训练集来学习可变形模型。在这种情况下,重建结果都缺乏细节,仅限于汽车和鸟类等热门类别。
1.2.3网络架构
基于变形的方法同样使用编码器-解码器架构。编码器使用连续卷积运算将输入映射到隐变量x,它可以是离散的或连续的,解码器通常由完全连接的层组成。
Kuryenkov[2]从数据库中检索与输入I最相似的三维模型,然后估算使其变形以匹配输入所需的FFD,而不是对球体或椭圆进行变形。检索到的模板首先进行体素化,并使用3D CNN编码到另一个隐变量xt中。然后,使用上卷积网络将输入图像的隐表示和检索到的模板的隐表示连接起来并解码为定义在体素网格顶点上的FFD场。
Pontes[3]使用了类似的方法,但是隐变量x被用作分类器的输入,该分类器从数据库中找到与输入最接近的模型。同时,使用前馈网络将隐变量解码成变形场∆和权重αi,i=1,,K。然后使用∆和CAD模型字典的加权组合与权重αi,对检索到的模板进行变形。
注意,可以为这些方法设计多个变体。例如,可以使用特定于类的平均形状,而不是使用从数据库检索的三维模型作为模板。在这种情况下,隐变量x可用于将输入分类为形状类别之一,然后选择该类别的学习平均形状作为模板。
基于参数化和变形的技术只能重建固定拓扑的曲面。前者仅限于低属的曲面,后者仅限于模板的拓扑结构。
1.3基于点的技术
3D形状可以用无序集合S= {(xi , yi , zi)} (1≤i≤N)的N个点来表示。这种基于点的表示方法很简单,但是在内存需求方面很有效,它非常适合于精细细节的对象。
1.3.1模型表示
点云的主要挑战在于它们不是规则结构,不容易融入利用空间规则性的卷积结构。为了克服这一限制,提出了三种模型表示方法:
•点集表示将点云视为大小为N×3的矩阵;
•一个或多个尺寸为H×W×3的三通道网格。网格中的每个像素编码(x,y,z)三维点的坐标;
•多视角深度图。
后两种表示(以下称为网格表示)非常适合卷积网络,它们也具有计算效率,因为它们只使用二维卷积进行推断。
1.3.2网络架构
与基于体积和表面的表示类似,使用基于点的表示的技术遵循编码器-解码器模型。虽然它们都对编码器使用相同的架构,但它们在解码器的类型和架构上有所不同,如下图所示。
通常,网格表示使用卷积网络来解码隐变量,见下图a和b。点集表示(图c)使用完全连接的层,因为点云是无序的。全连接层的主要优点是它们捕获全局信息。然而,与卷积运算相比,它们在计算上是昂贵的。
Fan[5]提出了一种结合点集表示和网格表示的生成深度网络(上图a)。该网络由一系列编码器-解码器块组成:
•第一个块获取输入图像并将其映射为隐表示,然后将其解码为大小为H×W的三通道图像。每个像素处的三个值是一个点的坐标。
•随后的每个块获取其先前块的输出,并进一步将其编码和解码为大小为H×W的3通道图像。
•最后一个块是编码器,与前一个块类型相同,然后是由两个分支组成的预测器。第一个分支是解码器,它预测大小为H×W(在本例中为32×24)的三通道图像,其中每个像素处的三个值是点的坐标。第二个分支是全连通网络,它预测一个N×3大小的矩阵,每行是一个3D点(N=256)。
•两个分支的预测使用集合联合合并,生成一个大小为1024的3D点集。
其他两个网络遵循同样的想法,这里就不再详细介绍。基于点的表示可以处理任意拓扑的三维形状。然而,它们需要一个后处理步骤,例如泊松曲面重建,来检索感兴趣的3D曲面网格,从输入到获得最终网格的过程也无法进行端到端的训练。
【1】P. Henderson and V. Ferrari,“Learning to generate and reconstruct 3D meshes with only 2D supervision,”BMVC, 2018.
【2】A.Kurenkov, J. Ji, A. Garg, V. Mehta, J. Gwak, C. Choy, and S. Savarese,“DeformNet: Free-Form Deformation Network for 3D Shape Reconstruction from aSingle Image,” IEEE WACV, 2018.
【3】J. K.Pontes, C. Kong, S. Sridharan, S. Lucey, A. Eriksson, and C. Fookes,“Image2Mesh: A Learning Framework for Single Image 3D Reconstruction,” ACCV,2018.
【4】A.Kanazawa, S. Tulsiani, A. A. Efros, and J. Malik, “Learning Category-SpecificMesh Reconstruction from Image Collections,” ECCV, 2018.
【5】H. Fan, H.Su, and L. Guibas, “A point set generation network for 3D object reconstructionfrom a single image,” in IEEE CVPR, vol. 38, 2017.
本文仅做学术分享,如有侵权,请联系删文。