三维重建概述和基于Pixel2Mesh的3D重建技术

语言: CN / TW / HK

一、前言

客观世界中的物体都是三维的,真实地描述和显示客观世界中的三维物体是计算机图形学研究的重要内容。三维重建又是计算机图形图像的核心技术之一,应用领域非常广泛。例如,医疗行业可以使用生物器官的3D 模型仿真手术解剖或辅助治疗;电影娱乐业可以使用3D模型实现人物和动物的动画以及动态模拟;建筑行业可以使用3D建筑模型来验证建筑物和景观设计的空间合理性、美学视觉效果等等。目前,大家大多在研究模型识别,但这只是计算机视觉的一部分,真正意义上的计算机视觉要超越二维,感知到三维环境[1]。我们生活在三维空间里,要做到更高效的交互和感知,也须将世界恢复到三维。

二、常见三维表示方法介绍

机屏幕本身是二维平面的,我们之所以能欣赏到真如实物般的三维图像[2],是因为显示在计算机屏幕上色彩和灰度的不同而产生错觉,将二维屏幕感知为三维环境。由色彩学可知,三维物体边缘的凸出部分一般显高亮度色,而凹下去的部分由于受光线的遮挡而略显暗色,加之人眼也有近大远小的成像特性,就会形成3D立体感。对于如何在计算机中表示出3D模型效果,根据不同的使用需求有不同的表示方法,基本可以分为四类,深度图(Depth Map)、点云(Point Cloud)[3]、体素(Voxel)[4]和网格(Mesh)[5]。

2.1 深度图(Depth Map)

image.png

Fig.1 立方体深度示意图

深度图是一张2D图片,每个像素都记录了从视点(Viewpoint)到遮挡物表面(遮挡物就是阴影生成物体)的距离,相当于只有三维信息里Z轴上的信息,这些像素对应的顶点对于观察者而言是“可见的”。

2.2 体素(Voxel)

image.png

Fig.2 游戏《我的世界》

体素或立体像素是体积像素(VolumePixel)的简称,是模型数据于三维空间上的最小单位,是一种规则数据。体素概念上类似于二维图像中的像素,其本身并不含有空间中位置的数据(即它们的座标),然而却可以从它们相对于其他体素的位置来推敲。如图Fig.2,是比较流行的一款PC端3D游戏《我的世界》,玩家可以在自己的世界中将一个个体素块任意堆叠,构建出自己专属的、个性的3D人物和世界。

2.3 网格(Mesh)

image.png

Fig.3 海豚网格图

多边形网格(Polygonmesh)是三维计算机图形学中表示多面体形状的顶点与多边形的集合,是一种非规则结构数据。这些网格通常由三角形、四边形或者其它的简单凸多边形组成。其中,最常用的是三角网格,三角网格通常需要存储三类信息:顶点、边和面。

顶点: 每个三角网格都有三个顶点,各顶点都有可能和其他三角网格共享。

边: 连接两个顶点的边,每个三角网格有三条边。

面: 每个三角网格对应一个面,我们可以用顶点或边的列表来表示面。

2.4 点云(Point Cloud)

image.png

Fig.4 甜甜圈式点云图

点云是指以点的形式记录的数据。每一个点包含了丰富的信息,包括三维坐标X、Y、Z、颜色、分类值、强度值、时间等等。点云可以将现实世界原子化,通过高精度的点云数据可以还原现实世界。

那选哪个作为我们常用的3D模型表示呢?根据介绍我们可以知道Voxel,受到分辨率和表达能力的限制,会缺乏很多细节;Point Cloud,点之间没有连接关系,会缺乏物体的表面信息;相比较而言Mesh的表示方法具有轻量、形状细节丰富的特点。

三维重建技术上大体可分为接触式和非接触式两种。其中,较常见的是非接触式中基于主动视觉的如激光扫描法、结构光法、阴影法和Kinect技术等,和基于机器学习的如统计学习法、神经网络法、深度学习与语义法等。

三、基于主动视觉的三维重建技术[7]

3.1 激光扫描法

激光扫描法其实就是利用激光测距仪来进行真实场景的测量。首先,激光测距仪发射光束到物体的表面,然后,根据接收信号和发送信号的时间差确定物体离激光测距仪的距离,从而获得测量物体的大小和形状。

3.2 结构光法

结构光法的原理是首先按照标定准则将投影设备、图像采集设备和待测物体组成一个三维重建系统;其次,在测量物体表面和参考平面分别投影具有某种规律的结构光图;然后再使用视觉传感器进行图像采集,从而获得待测物体表面以及物体的参考平面的结构光图像投影信息;最后,利用三角测量原理、图像处理等技术对获取到的图像数据进行处理,计算出物体表面的深度信息,从而实现二维图像到三维图像的转换。按照投影图像的不同,结构光法可分为:点结构光法、线结构光法、面结构光法、网络结构光和彩色结构光。

3.3 阴影法

阴影法是一种简单、可靠、低功耗的重建物体三维模型的方法。这是一种基于弱结构光的方法,与传统的结构光法相比,这种方法要求非常低,只需要将一台相机面向被灯光照射的物体,通过移动光源前面的物体来捕获移动的阴影,再观察阴影的空间位置,从而重建出物体的三维结构模型。

3.4 Kinect技术

Kinect传感器是最近几年发展比较迅速的一种消费级的3D摄像机,它是直接利用镭射光散斑测距的方法获取场景的深度信息,Kinect传感器如下图所示。Kinect传感器中间的镜头为摄像机,左右两端的镜头被称为3D深度感应器,具有追焦的功能,可以同时获取深度信息、彩色信息、以及其他信息等。Kinect在使用前需要进行提前标定,大多数标定都采用张正友标定法。

四、基于Pixel2Mesh的三维重建技术

Pixel2Mesh(Generating3D Mesh Models From Single RGB Images)

4.1 整体框架

image.png

Fig.5 网络架构图

1.首先给定一张输入图像:InputImage。

2.为任意的输入图像都初始化一个固定大小的椭球体(三轴半径分别为0.2、0.2、0.8m)作为其初始三维形状:Ellipsoid Mesh。

3.整个网络可以分成上下两个部分:图像特征提取网络和级联网格变形网络。

1上面部分负责用全卷积神经网络(CNN)[8]提取输入图像的特征。

2下面部分负责用图卷积神经网络(GCN)[9]来提取三维mesh特征,并不断地对三维mesh进行形变,逐步将椭球网格变形为所需的三维模型,目标是得到最终的飞机模型。

4.注意到图中的PerceptualFeature Pooling层将上面的2D图像信息和下面的3Dmesh信息联系在了一起,即通过借鉴2D图像特征来调整3D mesh中的图卷积网络的节点状态。这个过程可以看成是Mesh Deformation。

5.还有一个很关键的组成是GraphUnpooling。这个模块是为了让图节点依次增加,从图中可以直接看到节点数是由156-->628-->2466变换的,这其实就Coarse-To-Fine的体现。

4.2 图卷积神经网络GCN

我们先来看看图卷积神经网络[6]是如何提取特征的。一般的,对欧几里得空间中一维序列的语音数据和二维矩阵的图像数据我们会分别采取RNN和CNN两种神经网络来提取特征,那GCN其实就是针数据结构中另一种形式图的结构做特征提取。GCN在表示3D结构上具有天然的优势,由前面我们知道3D mesh是由顶点、边和面来描述三维对象的,这正好对应于图卷积神经网络G =(V,E,F),分别为顶点Vertex、边Edge和特征向量Feature。

图卷积的公式定义如下:

image.png

其中,flp、fl+1p分别表示顶点p在卷积操作前后的特征向量;N(p)指的是顶点的p邻居节点;w1、w2表示待学习的参数。

图卷积的隐藏层表示如下:

image.png

其中,f表示一种传播规则;每个隐藏层Hi都对应一个维度为Nxfi的形状特征矩阵(N是图数据中的节点个数,fi表示每个节点的输入特征数),该矩阵中的每一行代表的是该行对应节点的fi维特征表征;A是NxN的邻接矩阵。加上第i层的权重矩阵fixfi+1,则有输入层为Nxfi时,输出维度为NxNxNxfixfi+1,即为Nxfi+1。在每一个隐藏层中,GCN会使用传播规则f将这些信息聚合起来,从而形成下一层的特征,这样在每个连续层中图结构的特征就会变得越来越抽象。

从以上两式可以看出图卷积神经网络的节点是根据自身特征和邻接节点的特征来进行更新的。

4.3 Mesh Deformation Block

作用:输入2D CNN特征和3D顶点位置、形状特征,输出新3D顶点位置、形状特征

image.png

Fig.6 MeshDeformation Block

为了生成与输入图像中显示物体所对应的3D mesh模型,Mesh Deformation Block需要从输入图像中引入2D CNN特征(即图示P),这需要将图像特征网络和当前网格模型中的顶点位置(Ci-1)相融合。然后将上述融合的特征与附着在输入图顶点上的mesh形状特征(Fi-1)级联起来,合并输入到基于G-ResNet模块中。G-ResNet是基于图结构的ResNet网络,为每个顶点生成新的顶点位置坐标(Ci)和3D形状特征(Fi)。

4.4 Perceptual Feature Pooling Layer

作用:将3D顶点位置和2D CNN特征融合

image.png

Fig.7 PerceptualFeature Pooling Layer

该模块根据三维顶点坐标从图像特征P中提取对应的信息,然后将提取到的各个顶点特征再与上一时刻的顶点特征做融合。具体做法是假设给定一个顶点的三维坐标,利用摄像机内参计算该顶点在输入图像平面上的二维投影,然后利用双线性插值将相邻四个像素点的特征集中起来,就可以输入到GCN中提取图结构特征。特别的是,将从“conv3_3”、“conv4_3”和“conv5_3”层提取的特征级联起来,得到总通道数为1280(256+512+512)。然后将该感知特征与来自输入网格的128维3D特征相连接,从而得到1408的总维数。

4.5 G-ResNet

作用:用来提取图结构中的特征

在获得能表征三维mesh信息和二维图像信息的各顶点1408维特征后,该模型设计了一个基于ResNet结构的GCN来预测每个顶点新的位置和形状特征,这需要更高效的交换顶点之间的信息[10]。然而,如四(2)中GCN介绍,每个卷积只允许相邻像素之间的特征交换,这大大降低了信息交换的效率。为了解决这个问题,通过短连接的的方法构建了一个非常深G-ResNet网络。在这个框架中,所有block的G-ReNet具有相同的结构,由14个128通道的图残差网络层组成。

4.6 Graph Unpooling Layer

作用:增加GCNN的顶点数目

image.png

Fig.8 GraphUnpooling示意图

因为每一个图卷积block本身顶点数量是固定的,它允许我们从一个顶点较少的网格开始,只在必要时添加更多的顶点,这样可以减少内存开销并产生更好的结果。一个简单的方法是在每个三角形的中心添加一个顶点[11],并将其与三角形的三个顶点连接。但是,这会导致顶点度数不平衡。受计算机图形学中普遍使用的网格细分算法中顶点添加策略的启发,我们在每条边的中心添加一个顶点,并将其与该边的两个端点连接起来(如Fig.8.a)。新添加顶点的三维特征设置为其两个相邻顶点的平均值,如果将三个顶点添加到同一个三角形(虚线)上,我们还将它们连接起来。因此,我们为原始网格中的每个三角形创建4个新三角形,并且顶点的数量将随着原始网格中边的数量而均匀增加。

4.7 Loss

1.Chamfer Loss 倒角损失[3]

image.png

Chamfer distance倒角距离是指两点之间的距离lc,p表示某具体节点,q为p节点的邻居节点,目的是约束网格顶点之间的位置,将顶点回归到其正确方位,但是并不足以产生良好的3D网格。

2.Normal Loss 法向损失

image.png

Normal loss需要顶点与其相邻顶点之间的边垂直于可观测到的网格真值,优化这一损失相当于强迫局部拟合切平面的法线与观测值一致。

3.LaplacianRegularization 拉普拉斯正则化

image.png

Laplacian Regularization鼓励相邻的顶点具有相同的移动,防止顶点过于自由移动而避免网格自交,保持变形过程中相邻顶点之间的相对位置。

4.Edge Length Regularization 边长正则化

image.png

Edge Length Regularization作用是防止产生离群点,顶点间距离偏差过大从而约束边长。

最终loss为:

image.png

image.png

五、小结

image.png

Fig.9 Results

受深度神经网络的限制,此前的方法多是通过Voxel和Point Cloud呈现,而将其转化为Mesh并不是一件易事,Pixel2Mesh则利用基于图结构的神经网络逐渐变形椭圆体来产生正确的几何形状。本文着重介绍了3D mesh重建的背景、表示方法和Pixel2Mesh算法。文章贡献归纳如下:

(1)实现了用端到端的神经网络实现了从单张彩色图直接生成用mesh表示的物体三维数据

(2)采用图卷积神经网络来表示3D mesh信息,利用从输入图像提取到的特征逐渐对椭圆进行变形从而产生正确的几何形状

(3)为了让整个形变的过程更加稳定,文章还采用Coarse-To-Fine从粗粒度到细粒度的方式

(4)为生成的mesh设计了几种不同的损失函数来让整个模型生成的效果更加好

image.png

Fig.10 飞机Mesh效果

image.png

Fig.11 凳子Mes h *效果*

Future work 该算法所应用的领域是物体的3D模型重建,可以期待将其扩展为更一般的情况,如场景级重建,并学习多图像的多视图重建(Piexl2Mesh++)[12]。

参考文献:

  1. Zhiqin Chen and HaoZhang. Learning implicit fifields for generative shape modeling. In Proceedings of the IEEE Conference on Computer Visionand Pattern Recognition, pages 5939–5948, 2019.

  2. Angjoo Kanazawa,Shubham Tulsiani, Alexei A. Efros, and Jitendra Malik. Learningcategory-specifific mesh reconstruction from image collections. In ECCV, 2018.

  3. Fan, H., Su, H., Guibas,L.J.: A point set generation network for 3d object reconstruction from a singleimage. In CVPR, 2017.

  4. Choy, C.B., Xu, D., Gwak,J., Chen, K., Savarese, S.: 3d-r2n2: A unifified approach for single andmulti-view 3d object reconstruction. In ECCV, 2016.

  5. Rohit Girdhar, DavidF. Fouhey, Mikel Rodriguez, and Abhinav Gupta. Learning a predictable andgenerative vector representation for objects. In ECCV, 2016.

  6. Thomas N. Kipf and MaxWelling. Semi-supervised classifification with graph convolutional networks.In ICLR, 2016.

  7. 郑太雄, 黄帅, 李永福, 冯明驰. 基于视觉的三维重建关键技术研究综述. 自动化学报, 2020, 46(4): 631-652. doi:10.16383/j.aas.2017.c170502

  8. Lars Mescheder, MichaelOechsle, Michael Niemeyer, Sebastian Nowozin, and Andreas Geiger. Occupancynetworks: Learning 3d reconstruction in function space. In CVPR, pages 4460–4470, 2019.

  9. Peng-Shuai Wang, Yang Liu,Yu-Xiao Guo, Chun-Yu Sun, and Xin Tong. O-cnn: Octree-based convolutional neuralnetworks for 3d shape analysis. ACMTransactions on Graphics (TOG) , 36(4):72, 2017.

  10. Christian Hane,Shubham Tulsiani, and Jitendra Malik. Hierarchical surface prediction for 3dobject reconstruction. In 3DV,2017.

  11. Sunghoon Im, Hae-GonJeon, Stephen Lin, and In SoKweon. Dpsnet: End-to-end deep plane sweep stereo.In ICLR, 2018.

  12. Chao Wen and Yinda Zhangand Zhuwen Li and Yanwei Fu: Multi-View 3D Mesh Generation via Deformation. InECCV, 2019.

文章来自一点资讯AI图像图形实验室(AIIG)团队