深度学习3D合成

2021-01-26 16:01:13 浏览数 (1)

作者:Rishab Sharma 编译:McGL

3D 数据简介

人们普遍认为,从单一角度合成 3D 数据是人类视觉的基本功能。但这对计算机视觉算法来说极具挑战性。但随着激光雷达(LiDAR)、 RGB-D 摄像头(RealSense、 Kinect)和 3D 扫描仪等 3D 传感器的普及和价格的降低,最新的 3D 采集技术已经取得了巨大飞跃。与广泛使用的 2D 数据不同,3D 数据具有丰富的尺度和几何信息,可以帮助机器更好的理解环境。然而,与 2D 数据相比, 3D 数据的可用性相对较低,而且采集成本较高。因此,近年来许多深度学习方法被提出,可以不依赖任何 3D 传感器,从可用的 2D 数据中合成 3D 数据。在我们深入研究这些方法之前,先了解下要处理的 3D 数据的格式。

基于 2D 输入的 3D 合成

合成的 3D 数据根据数据的最终用途可以使用不同的格式来表示。一些常用的格式有:

  1. 深度图像(Depth images)
  2. 点云(Point clouds)
  3. 体素(Voxels)
  4. 网格(Meshes)

深度图像包含场景的深度值,图像帧中的每个像素都有距离摄像头的距离,单位为米。这种来自场景的深度信息对于许多任务都具有巨大的价值,比如无人驾驶汽车、增强现实和机器人等等。这样的信息对于一些任务非常有用,如相机扫描一个静止的场景并在虚拟相机中生成动画时,启用运动视差(motion parallax),但需要强调 3D 建模场景中的一个特定的对象时,当前最先进的技术条件下,这种信息就显得不充分且不准确了。

深度图像

点云是分布在 3D 空间中的 3D 点的集合。这些 3D 点中的每一个都有一个确定的位置,由一个确定的(x,y,z)坐标和其他属性(如 RGB 颜色值)表示。与深度图像不同,点云表示保留了更多高质量的 3D 空间几何信息,而不需要任何离散化。然而,点云表示的点之间没有局部联系,导致点云具有很大的自由度和高维性,使得精确合成更加困难。

点云表示

体素(Voxel)或立体像素(volumetric pixel)是空间网格像素到立体网格体素的直接延伸。简单来说,体素只是 3D 空间中的一个像素。每个体素的相对位置共同定义了立体数据的独特结构。体素可以看作是一个具有固定大小的量化点云。然而,对于 3D 建模来说,体素表示太过稀疏,并且在细节和计算资源之间需要进行权衡,这使得合成更加不可行。

体素表示

多边形网格(Polygon Mesh)是一组边、顶点和面的集合,它们共同定义了多面体的形状和体积。网格的凸多边形面连接在一起以逼近一个几何曲面。与体素类似,网格也可以看作是从一组连续曲面上采样的 3D 点云集(相对较低的复杂度)。网格面可以是三角形(三角形网格)、四边形(四边形网格)或凸多边形(N 边形网格)。取决于表示的通用性,为了接近一个更真实的表示,网格也可以包括多边形的孔或凹多边形。表面细节对于重建表面模型很重要,和丢失了重要表面细节的体素和点云不同,网格在很多实际应用中更为理想。因此,考虑到上述问题,一个多边形网格看起来更真实,相比其他格式表示可以更好的合成。

多边形网格表示

在本文中,我们将讨论三种方法,它们可以用来从 2D 数据中合成 3D 数据。在这三种方法中,一种是基于 transformer 的结构,而另外两种分别是基于自动编码器(autoencoder)和基于图的卷积神经网络。这两种方法的关键区别在于,与后者不同的是,基于 transformer 的深度网络完全依赖于一种注意力(attention)机制来描绘输入和输出之间的全局依赖性。

卷积神经网络

在这一节中,我们将讨论最近提出的两种方法,使用自动编码器和基于图的卷积神经网络来合成 3D 数据。

基于自动编码器的卷积神经网络

为了理解这种方法,我们使用一个自动编码器网络来进行 3D 人脸重建和人脸对齐。

人脸重建与人脸对齐

自动编码器利用卷积网络将输入的 2D 图像降维到一个潜在空间(latent space),然后利用这个潜在空间表示重建原始的 3D 数据格式。很多研究都使用了自编码器(基于编解码器的体系结构)来估计 3D 人脸形变(morphable)模型系数和模型扭曲(warping)函数。这些研究的目的主要是利用这些 3D 模型扭曲函数从单幅 RGB 图像恢复相应的 3D 形状,从而同时提供稠密的 3D 人脸对齐和重建输出。然而,由于人脸模型模板定义的 3D 表示空间的局限性,这些方法的性能受到限制。类似地,像容积回归网络(VRN)[1]这样的方法使用全卷积层结构来估计 3D 二值体积,作为离散版本的点云。然而,大多数输出点对应于无意义的非曲面点,而且这种离散化限制了输出表示的分辨率。因此,更好的研究方向是像位置图回归网络(PRN)[2]这样的网络,它可以利用 UV 位置和纹理图联合预测密集对齐并重建 3D 人脸形状。

UV 位置和纹理图示图

PRN 以 UV 位置图的形式构建 3D 人脸结构的 2D 表示。UV 位置是一个 2D 图像,记录面部点云的 3D 面部坐标。这个图在表示中每个位置还附带了 3D 坐标的语义特征。简单地说,UV 图是一个 3D 数据的 2D 表示,记录了 UV 空间中所有点的 3D 坐标。UV 空间和 UV 位置图被研究人员频繁地用于计算机图形学空间领域,将 3D 空间参数化为 2D 图像平面。PRN 的网络结构,采用一个简单的编解码器结构(自动编码器),输入 RGB 图像并将 2D 图像信息迁移到 UV 位置图。该自动编码器利用10个下采样残差块和17个上采样反卷积块,最终预测出一个 256 × 256 × 3 UV 位置图。学习到的 UV 位置图有助于 3D 人脸合成直接回归最终的 3D 结构和语义特征。训练像 PRN 这样的网络,我们只需要有 2D 图像到 3D 点云映射的数据集,这使得这种方法更加可行,因为网络的输出格式不受特定的 3D 模板或 3D 形变模型线性空间的限制。

PRN 的体系结构

因此,考虑到该方法的简单性和有效性,PRN 似乎是从 2D 图像合成 3D 数据作为网络输出格式的最佳选择之一。

基于图的卷积神经网络

正如在前一节所看到的,大多数传统的基于自动编码器的深度学习方法已经利用点云和体素数据格式来合成 3D 数据。之所以特别强调这两种数据格式,主要是因为当前流行的基于网格(grid)的网络体系结构的限制。然而,正如第一节所讨论的,点云和体素表示有它们自己的缺点。因此,为了避免体素或点云表示的缺点,许多研究已经转向合成 3D 多边形网格(polygon mesh)数据,从应用的角度来看,这是一种比较理想的格式。在合成网格数据方面,一些最好的架构设计方法包括基于图的卷积神经网络。在本节中,我们将以 Wang 等人提出的方法为例。[3] (Pixel2Mesh)。

基于 Pixel2Mesh 的真实世界图像重建

Pixel2Mesh 是一个基于图的端到端深度学习框架,它采用一个 RGB 彩色图像作为输入,并以更理想的摄像头坐标格式将2D 图像转换为3D 网格模型。基于图的卷积神经网络提取并利用 2D 图像中的感知特征,通过逐步变形椭球体(ellipsoid)生成 3D 网格,直到达到语义正确和优化的几何形状。所采用的方法是由粗到细的方法,使椭球变形过程几何上光滑和稳定。作者还定义了各种网格相关的损失函数,帮助网络捕获更多的属性,保证了物理上和视觉上优秀的 3D 几何结果。

图像特征网络与级联网格变形网络

Pixel2Mesh 的结构主要由级联网格变形(deformation)网络和图像特征网络组成。图像特征网络负责从输入的 2D 图像中提取感知特征,并逐步将这些特征传递给基于图的级联网格变形网络,从而逐步将椭球网格的几何形状变形为目标物体的 3D 网格。网格形变网络的图卷积网络由三个变形块和两个中间图上池化层组成。变形块逐步处理网格模型的输入图,而中间图上池化层逐步增加图顶点,以增加图的信息容纳能力,同时保持数据的三角形网格形成。除了结构细节,Pixel2Mesh 基于图的架构的一个关键优势是能够同时进行形状分析,类似于传统的基于制图(charting)的方法,直接针对表面流形(manifolds)进行卷积操作。该方法通过融合网格对象的自然表示(图和表面流形) ,在基于制图的方法和 3D 重建方法之间架起了一座桥梁。

基于Transformer的深度结构

卷积神经网络具有端到端的学习能力,可以直接从数据中学习执行任务,不需要任何手工设计的视觉特征,因此被广泛应用于计算机视觉任务。然而,尽管 CNN 的体系结构设计对计算要求已经很高了,但是 3D 合成的任务使得计算更加紧张,这开辟了计算优化和效率提高的广阔空间。展望下一代的神经结构,transformers 是最好的可伸缩的视觉模型家族,不仅领域无关(domain agnostic),而且计算高效做了优化。此外,最近的研究表明,transformer 在很多基于计算机视觉的任务中已经取得了最先进的结果。为了理解 transformer 在 3D 数据合成中的工作原理,我们将以 Deepmind 的《 Polygen 》[4] 为例。

由 PolyGen 生成的样本

Polygen 是一种直接建模多边形 3D 网格的方法,通过使用基于 transformer 的架构预测网格面和顶点顺序。模型设计是这样的,它可以输入条件范围的(目标类,体素和 2D 图像)并概率产生输出以捕捉模糊场景的不确定性。该网络由顶点模型和表面模型组成。顶点模型是一个掩码 transformer 解码器,它无条件地表示顶点序列上的分布,从而对网格顶点进行建模。表面模型是一种基于网络的 transformer 指针,能够有条件地表示可变长度输入顶点序列上的分布,从而对网格表面进行建模。因此,简单地说,这两种 transformer 模型的目标是通过首先生成网格顶点,然后利用这些顶点生成网格面来估计 3D 网格上的分布。

基于 Transformer 的 Polygen 顶点和表面模型

Polygen 使用的 transformer 结构灵感来自如 WaveNet、 PixelRNN 和指针(pointer)网络之类的顺序模型。这项工作也从 Polygon-RNN (使用多边形进行分割)中得到了重要的启发,而顶点模型类似于 PointGrow [8]中定制的自注意结构,使用自回归分解(autoregressive decomposition)来建立 3D 点云模型。与顺序自回归(order autoregressive)模型相比,PointGrow 有一个较浅的自注意力结构,通过操作固定长度的点云输入,利用自注意力机制预测离散坐标分布。因此,Polygen 可以被认为是一些最好的想法,通过一种新颖的基于 transformer 的网络的均衡结合。

网格变形块与感知特征池操作

Polygen 的一个关键特征是能够根据输入上下文调节输出(上下文例子如: 2D 图像,目标类)。为了实现这种条件性,顶点和表面模型的输入流被改变以合并上下文。对于像 2D 图像和体素这样的输入格式,首先使用适用于域的编码器对输入进行编码,以检索 transformer 解码器的上下文嵌入(embedding),从而对嵌入序列执行交叉注意力(cross-attention)。而对于像目标类这样的输入格式,在每个网络块中的自注意层之后,一个预先学习的类嵌入被投射到一个向量,这个向量被添加到中间 transformer 预测表示中。这是可能的,因为顶点模型的一般性质,使用一个简单,有表达力和高建模容量的 transformer 解码器结构允许网络建模不同领域的数据。该 transformer 利用其高效的信息聚合能力来捕获网格顶点和目标几何中存在的强非局部相关性。

总结

在本文中,我们讨论了两种主要的 3D 合成方法,即卷积深度网络和基于 transformer 的深度网络。transformer 作为新一代网络,它优化的设计更加高效,因此可以被认为领先于传统的卷积网络。然而,接近实时推断的情况下,transformer 仍然有很长的路要走,不如我们在自动编码器部分讨论的方法轻量且推理快速。然而,transformer 吸引了巨大的研究兴趣,它们的注意力机制能够有效地聚合信息,提取输入和输出之间的全局依赖性,这使它们更有前途。

References:

[1] Jackson, A.S., Bulat, A., Argyriou, V., Tzimiropoulos, G., Jackson, A.S., Bulat, A., Argyriou, V., Tzimiropoulos, G.: Large pose 3d face reconstruction from a single image via direct volumetric CNN regression. In: International Conference on Computer Vision. (2017)

[2] Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network

[3] Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images (ECCV2018)

[4] PolyGen: An Autoregressive Generative Model of 3D Meshes

[5] Sun, Y., Wang, Y., Liu, Z., Siegel, J. E., and Sarma, S. E. Pointgrow: Autoregressively learned point cloud generation with self-attention. In Winter Conference on Applications of Computer Vision, 2020

【原文】: https://towardsdatascience.com/deep-learning-for-3d-synthesis-2dd57e2001f

0 人点赞