论文题目:Occupancy Networks: Learning 3D Reconstruction in Function Space(占据网络:在函数空间内学习三维重建,简称ONet)
论文作者:Lars Mescheder;Michael Oechsle;Michael Niemeyer;Sebastian Nowozin;Andreas Geiger
论文出处:CVPR 2019
论文摘要:提出了Occupancy Networks——基于学习的三维重建方法的新表示,隐式地把三维表面表示为深度神经网络分类器的连续决策边界。以无限分辨率编码三维输出的描述,不会占用过多内存。
目录
1、Occupancy Networks占据网络:三维几何形状的表示
2、训练:如何学习一个能从多种形式的输入(如点云、单张图像、低分辨率体素)推断该表示的模型
真实数据(KITTI和Online Products数据集)
介绍
现有的表示:①体素表示;②点云表示;③网格表示
![watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piv5LiA5Y-j576K,size_20,color_FFFFFF,t_70,g_se,x_16](https://i-blog.csdnimg.cn/blog_migrate/4049e2480a66b99da3a6f67f4b8b15f9.png)
体素表示的缺点:内存随分辨率呈立方增加,故需要限制在32*32*32或64*64*64。使用例如八叉树的数据自适应表示来降低内存,实现起来又会复杂,现有数据自适应算法依旧局限于相对较小的256*256*256分辨率。
点云表示的缺点:由于缺少底层网格的连接结构,需要额外的后处理来从模型中提取三维几何图形。
网格表示的缺点:现有的网格表示通常基于对一个模板网格的变形,因此不允许任意拓扑。
点云和网格都限制了使用标准前馈网络能可靠预测的点/顶点的数量。
本文贡献:提出了基于对连续三维占据函数进行直接学习的三维重建新方法。利用神经网络实现对任意分辨率的占据函数的预测。训练时大大降低了内存,推理时利用简单的多分辨率等值面提取算法从学习的模型中提取网格。
1、介绍了一种基于学习连续三维映射的对三维几何图形的新表示
2、展示了该表示如何用于从多种输入类型中重建三维几何形状
3、实验证明此方法能生成高质量网格且超越目前最优方法
相关工作
体素表示(简单)
早期工作考虑到使用基于体素网格的三维卷积神经网络由单个图像重建三维几何形状的问题,但由于内存条件限制在较小的32*32*32体素网格——
①C. B. Choy, D. Xu, J. Gwak, K. Chen, and S. Savarese. 3D-R2N2: A unified approach for single and multi-view 3D object reconstruction. In Proc. of the ECCV, 2016.
②S. Tulsiani, T. Zhou, A. A. Efros, and J. Malik. Multi-view supervision for single-view reconstruction via differentiable ray consistency. In Proc. IEEE Conf. on CVPR, 2017.
③Z. Wu, S. Song, A. Khosla, F. Yu, L. Zhang, X. Tang, and J. Xiao. 3D ShapeNets: A deep representation for volumetric shapes. In Proc. IEEE Conf. on CVPR, 2015.
有工作将分辨率提至128*128*128,但仅适用于浅架构和小的batch size,训练缓慢——
①J. Wu, Y. Wang, T. Xue, X. Sun, B. Freeman, and J. Tenenbaum. MarrNet: 3D shape reconstruction via 2.5D sketches. In Advances in NIPS, 2017.
②J. Wu, C. Zhang, X. Zhang, Z. Zhang, W. T. Freeman, and J. B. Tenenbaum. Learning shape priors for single-view 3D completion and reconstruction. In Proc. of the ECCV, 2018.
③X. Zhang, Z. Zhang, C. Zhang, J. B. Tenenbaum, W. T. Freeman, and J. Wu. Learning to reconstruct shapes from unseen classes. In Advances in NIPS, 2018.
由多个输入视图进行重建——
①M. Ji, J. Gall, H. Zheng, Y. Liu, and L. Fang. SurfaceNet: an end-to-end 3D neural network for multiview stereopsis. In Proc. of the IEEE ICCV, 2017.
②A. Kar, C. Hane, and J. Malik. Learning a multi-view stereomachine. In Advances in NIPS, 2017.
①和②以三维体素表示将相机参数和输入图像一同编码并利用三维卷积由多视图重建三维场景
③D. Paschalidou, A. O. Ulusoy, C. Schmitt, L. van Gool, and A. Geiger. Raynet: Learning volumetric 3D reconstruction with ray potentials. In Proc. IEEE Conf. on CVPR, 2018. 介绍了新架构——利用多视图几何形状约束由多个图像预测体素占据
基于VAE
①A. Brock, T. Lim, J. M. Ritchie, and N. Weston. Generative and discriminative voxel modeling with convolutional neural networks. arXiv.org, 1608.04236, 2016.
②D. J. Rezende, S. M. A. Eslami, S. Mohamed, P. Battaglia,M. Jaderberg, and N. Heess. Unsupervised learning of 3D structure from images. In Advances in NIPS, 2016.
基于GAN
J. Wu, C. Zhang, T. Xue, B. Freeman, and J. Tenenbaum. Learning a probabilistic latent space of object shapes via 3D generative-adversarial modeling. In Advances in NIPS, 2016.
由于体素表示的高内存需求,提出以多分辨率方式重建三维物体。但实现复杂,需要多次传递输入来生成最终三维模型,并且限制在较小的256*256*256分辨率——
①C. Hane, S. Tulsiani, and J. Malik. Hierarchical surface prediction for 3D object reconstruction. In Proc. of the International Conf. on 3DV, 2017.
②M. Tatarchenko, A. Dosovitskiy, and T. Brox. Octree generating networks: Efficient convolutional architectures for high-resolution 3D outputs. In Proc. of the IEEE ICCV, 2017.
为达到子体素精度,一些方法来预测截断的带符号的距离场(TSDF),在一个三维网格中的每个点存储着到最近的三维表面上点的截断带符号距离,但由于要在三维空间中推断距离函数,不再是单纯将体素分为占有与否而更难以学习,且仍受分辨率限制
①A. Dai, C. R. Qi, and M. Nießner. Shape completion using 3D-encoder-predictor CNNs and shape synthesis. In Proc.IEEE Conf. on CVPR, 2017.
②L. Ladicky, O. Saurer, S. Jeong, F. Maninchedda, and M. Pollefeys. From point clouds to mesh using regression. In Proc. of the IEEE ICCV, 2017.
③G. Riegler, A. O. Ulusoy, H. Bischof, and A. Geiger. Oct-NetFusion: Learning depth fusion from data. In Proc. of the International Conf. on 3DV, 2017.
点云表示
首创了点云作为判别深度学习任务的表示。通过利用一个全连接神经网络独立地应用于每个点再接着一个全局池化,来实现排列不变性——
①C. R. Qi, H. Su, K. Mo, and L. J. Guibas. PointNet: Deep learning on point sets for 3D classification and segmentation. In Proc. IEEE Conf. on CVPR, 2017.
②C. R. Qi, L. Yi, H. Su, and L. J. Guibas. PointNet++: Deep hierarchical feature learning on point sets in a metric space. In Advances in NIPS, 2017.
点云作为三维重建的输出表示,但需要额外的复杂后处理步骤来生成最终三维网格——
H. Fan, H. Su, and L. J. Guibas. A point set generation network for 3D object reconstruction from a single image. In Proc. IEEE Conf. on CVPR, 2017.
网格表示
网格作为三维重建的输出表示,但容易生成自相交网格
①T. Groueix, M. Fisher, V. G. Kim, B. Russell, and M. Aubry. AtlasNet: A papier-mache approach to learning 3d surface generation. In Proc. IEEE Conf. on CVPR, 2018.不能保证表面闭合
②A. Kanazawa, M. J. Black, D. W. Jacobs, and J. Malik. End-to-end recovery of human shape and pose. In Proc. IEEE Conf. on CVPR, 2018.
③C. Kong, C.-H. Lin, and S. Lucey. Using locally corresponding CAD models for dense 3D reconstructions from a single image. In Proc. IEEE Conf. on CVPR, 2017.
②和③需要来自与对象同类的参考模板
④N. Wang, Y. Zhang, Z. Li, Y. Fu, W. Liu, and Y.-G. Jiang. Pixel2Mesh: Generating 3D mesh models from single RGB images. In Proc. of the ECCV, 2018. 只能生成拓扑结构简单的网格
⑤Y. Liao, S. Donne, and A. Geiger. Deep marching cubes: Learning explicit surface representations. In Proc. IEEE Conf. on CVPR, 2018. Marching Cubes算法(行进立方体算法,MC算法)的端到端的可学习版本,但同样受内存限制在32*32*32分辨率。
本文方法能得到高分辨率闭合表面,无自相交也无需有来自相同物体类别的模板网格作为输入。
本文方法
1、Occupancy Networks占据网络:三维几何形状的表示
不仅要考虑固定的离散三维位置(如体素表示)的占据率,而要考虑每个可能的三维点的占据率,三维物体的occupancy function(占据函数)——
关键在于利用神经网络给每一个位置p分配0~1之间的占据概率,该网络相当于用于二元分类的神经网络,只不过我们关注于隐式表示物体表面的决策边界。物体的观察
作为输入,p映射到实数的函数作为输出,即表示为一个函数,神经网络将其一对
作为输入,输出一个代表占据概率的实数。即为Occupancy Network——
2、训练:如何学习一个能从多种形式的输入(如点云、单张图像、低分辨率体素)推断该表示的模型
在一个训练batch的第i次取样,取K个点,再在这些位置求mini-batch损失
,其中
是batch B的第i次观察,
表示在点
的真值占据率,
是交叉熵分类损失。本文方法的性能取决于采样方法,在物体边界框中加上额外的小填充进行均匀采样的结果最好。
该三维表示也可被用来学习概率潜在变量模型:
编码器网络的输入:位置
和占据率
;输出:在
高斯分布
的均值
和标准差
;优化生成模型的负对数似然的下界
:
,其中KL代表KL散度(相对熵),
是在隐藏变量
的先验分布(通常为高斯分布),
根据
采样。
3、推断:在测试时由模型提取高质量三维网格
多分辨率等值面提取(MISE)——为了从训练好的网络提取与新观测对应的等值面的一种层次化等值面提取算法。通过构造八叉树,MISE能从占据网络提取高分辨率网格,无需密集评估高维占据网格的所有点。
![](https://i-blog.csdnimg.cn/blog_migrate/13747f6aab4b43064498709e6ba3f7b3.png)
在最终分辨率,应用MC算法来提取近似等值面。当占据网格在初始分辨率包含网格内部和外部每个连接组件的点时算法才能正确收敛,因此需要足够高的初始分辨率,实际中发现32*32*32即可。
由MC算法提取的初始网格可被再细化。①利用Fast-Quadric-Mesh-Simplification算法(快速二次曲面网格简化算法,减面算法)来简化网格;②利用一阶二阶梯度信息来细化输出网格。为此,从输出网格的每个面随机提取点并最小化损失
,其中
表示在点
的网格的法向量,实际中
,利用双反向传播可有效实现用二阶梯度信息来最小化第二项。最后一步消除了MC近似的离散伪像,这是直接基于体素表示所不能做到的。本文方法也能通过网络的简单反向传播来高效提取输出网格的所有顶点的法线。每个网格总共需要3秒的推断时间。
实现细节
占据网络采用全连接神经网络,含5个残差块,用条件批归一化限制输入。
单视图三维重建,采用ResNet18架构(K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In Proc. IEEE Conf. on CVPR, 2016.)
点云输入,采用PointNet编码器(C. R. Qi, H. Su, K. Mo, and L. J. Guibas. PointNet: Deep learning on point sets for 3D classification and segmentation. In Proc. IEEE Conf. on CVPR, 2017.)
体素输入,采用三维卷积神经网络(D. Maturana and S. Scherer. Voxnet: A 3D convolutional neural network for real-time object recognition. In Proc.IEEE International Conf. on IROS, 2015.)
非条件网格生成,将PointNet作为编码器网络
实验
Baselines
单视图输入任务:基于体素的3D-R2N2(C. B. Choy, D. Xu, J. Gwak, K. Chen, and S. Savarese. 3D-R2N2: A unified approach for single and multi-view 3D object reconstruction. In Proc. of the ECCV, 2016.);基于点云的PSGN(H. Fan, H. Su, and L. J. Guibas. A point set generation network for 3D object reconstruction from a single image. In Proc. IEEE Conf. on CVPR, 2017.);基于网格的Pixel2Mesh(N. Wang, Y. Zhang, Z. Li, Y. Fu, W. Liu, and Y.-G. Jiang. Pixel2Mesh: Generating 3D mesh models from single RGB images. In Proc. of the ECCV, 2018.)和AtlasNet(T. Groueix, M. Fisher, V. G. Kim, B. Russell, and M. Aubry. AtlasNet: A papier-mache approach to learning 3d surface generation. In Proc. IEEE Conf. on CVPR, 2018.)
点云输入:通过改变编码器调整了3D-R2N2和PSGN。基于网格的baseline采用深度行进立方体(DMC)(Y. Liao, S. Donne, and A. Geiger. Deep marching cubes: Learning explicit surface representations. In Proc. IEEE Conf. on CVPR,2018.)
超分辨率体素任务:评估关于输入的改进
数据集
3D-R2N2所用的ShapeNet子集、同样的体素化、图像渲染和训练/测试集划分方式。我们再将训练集分成训练和验证集(跟踪本文方法和baselines的损失来决定何时停止训练)。为生成水密网格并确定点是否在网格内部(比如为了测量交并比),使用D. Stutz and A. Geiger. Learning 3D shape completion fromlaser scan data with weak supervision. In Proc. IEEE Conf. on CVPR, 2018.提供的代码。从水密网格表面采样。
度量
1、体积交并比(越大越好)——从包围体积中随机采样100,000个点确定这些点位于真值/预测网格之外
2、Chamfer-L1距离(越小越好)——准确度和完整度的均值。准确度:输出网格上的点到其在真值网格上的最近距离的均值。完整度:真值网格上的点到其在输出网格上的最近距离的均值。从输出网格和真值网格上各随机采样100,000个点并用KD-tree来计算对应的距离。使用当前物体的包围框的最大边长的1/10作为单位1。
3、法线一致性分数——评估该方法捕捉高阶信息的能力。一网格的法线和在另一网格其对应的最近邻处的法线的绝对点积的均值
实验一:表示能力
将每个训练样本嵌入一个512维的隐藏空间,从该嵌入中训练网络。应用在ShapeNet数据集的椅子这一类别的训练集(高度多样化、多细节)
![](https://i-blog.csdnimg.cn/blog_migrate/72111113c794b735b29fbb4b3b411753.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4193ae4b39352be7028f6270c63124f4.png)
实验二:单视角三维重建
ShapeNet
使用在ImageNet上预训练的ResNet-18编码器,为3D-R2N2和PSGN也使用同样的编码器。PSGN使用每层含512个隐藏单元的四层的全连接解码器,最后一层映射成3072维的向量重构成1024个三维点。目标指标:3D-R2N2和本文方法采用交并比;PSGN和Pixel2Mesh采用Chamfer距离。为提取最终网格,3D-R2N2采用阈值0.4,实验发现0.2阈值的ONet能在准确度和完整度上达到平衡。
![](https://i-blog.csdnimg.cn/blog_migrate/51a1b9a4791fa3360d9ad6146182d852.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c020ebb67ffbdcced9ee6ba285de334d.png)
真实数据(KITTI和Online Products数据集)
实验三:噪声点云补全
从每个ShapeNet模型表面再采样300个点,给点云应用均值为0标准差为0.05的高斯噪声。
![](https://i-blog.csdnimg.cn/blog_migrate/0b6941f247dd83211537cdbc671305e1.png)
实验四:超分辨率体素重建
从粗略的32*32*32体素来重建高分辨率网格。
![](https://i-blog.csdnimg.cn/blog_migrate/47ae2e666f3436fe3da51dcf8be19fe5.png)
实验五:无条件网格生成
在ShapeNet数据集的四个类别上分别进行无监督训练,评估三维模型隐藏空间的表示能力。
![](https://i-blog.csdnimg.cn/blog_migrate/f9cc302103449110b21f05a786085b15.png)
消融实验(本模型的各组件对单视角三维重建任务的性能影响)
采样策略
①uniform sampling在真值网格包围体积内采样2048个点
②equal sampling在网格以内采样1024个点,网格以外采样1024个点
③surface sampling均匀采样1024个点,在网格表面外加标准差0.1的高斯噪声采样1024个点
![](https://i-blog.csdnimg.cn/blog_migrate/3cf890eb6d590c90d9acd0ad7015ae1f.png)
网络结构
①将条件批归一化(CBN)替换为在网络一开始将输入编码映射成所需隐藏维度的线性层
②将解码器中的所有残差块替换为线性块
![](https://i-blog.csdnimg.cn/blog_migrate/dff819295cffaea288a21f977d0070c1.png)