三维重建
形状重建
- 自阴影重建形状(英文:shape from shading)
- 自边界重建形状(英文:shape from silhouette)
深度学习的方法
概论
因为三维的形状比二维影像有更多资讯,因此直接从二维影像推测三维形状对计算机而言并不是容易的工作,但对人类来说,对于生活中常见到的物体,我们常常可以从单一角度看,就可以推测经验上物体的整个形状(在三维空间中的样子),人类之所以能做到这样是因为长久经验的累积,因此对于计算机而言,如果学习过够多二维影像以及三维形状的资讯,理论上也能够做到,因此近来有不少利用深度学习的三维重建方法,利用大量的训练资料(例如:影像以及相对应的三维形状)来训练深度神经网络或是卷积神经网络建构的模型,达到由单张或多张二维影像作为输入,推测三维形状。此外,有些大量三维模型的数据库[1]也在近年被建立,以便于这些深度学习模型的训练与相互比较的基础。
常用资料型态
体素与点云的比较
体素与二维的像素一样,具有规律性的排列,可以直接套用卷积神经网络,因此把现成处理二维影像的模型架构进行适当的修改,就能够应用在三维重建的问题上。点云则是资料点的集合,没有规律性的排列,因此无法套用卷积神经网络,要使用其他的方法。不过体素相较于点云有一个很大的缺点就是庞大的记忆量与运算量,对于一个立体空间,我们所在意的物件可能占此空间的比例不大,其他部分都是空的,但体素还是要在空的地方储存值为零。而点云只要记录有物体所在的点的座标就好,因此比较节省记忆体与运算量(高分辨率下),也比较适合表示高分辨率的三维资料。
不同类型的输入二维资料类型
- 使用二维RGB影像作为输入
- 使用深度图做为输入
不同数量的输入影像
- 使用同一物件的单张影像作为输入
- 使用同一物件的多张影像(由不同视角所拍摄)作为输入
利用自编码器
TL网络[2]
训练时,先使用三维形状的资料(以体素表示),训练三维资料的自编码器,接着在训练一个的二维影像编码器,这个影像编码器的目的是让二维影像编码出来的向量与三维体素的自编码器中利用相对应的三维体素编码出来的向量越接近越好。测试时只有二维的影像,并不知道其三维的形状。输入影像经由二维影像的编码器,得到特征向量,再使用训练好的三维体素的解码器(即是自编码器中的解码器)即可得到此二维影像所对应的三维体素。
利用生成对抗网络
三维生成对抗网络[3]
生成对抗网络常被用在二维影像的生成,但也可以用在三维形状的生成(资料一样以体素表示),采用一个二维影像的编码器,一个三维体素的解码器(即是生成对抗网络中的生成器),还有一个生成对抗网络的判别器。二维的影像被编码成特征向量后,被三维体素的解码器解码,再由判别器来帮助生成三维形状的品质。
参考资料
- ^ ShapeNet, https://www.shapenet.org/ (页面存档备份,存于互联网档案馆)
- ^ Learning a Predictable and Generative Vector Representation for Objects, https://arxiv.org/abs/1603.08637/ (页面存档备份,存于互联网档案馆)
- ^ 3D GAN, http://3dgan.csail.mit.edu/ (页面存档备份,存于互联网档案馆)