深度隐式表达系列 (一)
深度隐式表达 (Deep Implicit Representation, DIR) 在 2019年同期发表了一系列代表性的工作,本文主要介绍 Deepsdf[4] 以及Occupancy Networks[2] (OccNet) 两篇文章,之后会介绍一些其他的工作,本系列仅涉及部分代表性的DIR工作,读者感兴趣的话可以自行查找其他相关的工作。
值得注意的是,这里DIR的说法是比较严格的,Openreview上关于GRF[5](当然 GRF 也是很好的工作) 的评论中提到:

也就是说,implicit function 的说法是不推荐的。
那么什么是 DIR呢?用下面这张图可以概括:

输入一个点p,输出p的属性,如果属性是该点是否被占据,那么这就是Occupancy Networks,如果属性是SDF值,那么这就是DeepSDF,到这里其实已经介绍完了DIR的相关概念。如果读者是更关注 NeRF的内容,剩下部分可以选择跳过。
下面我们具体介绍这两篇文章。
1 DeepSDF
DeepSDF的作者之一是Newcombe,也是KinectFusion的作者之一, 现在在Facebook Reality Labs,对重建这一套是再熟悉不过了。在表示方面,传统方法都会使用 Mesh, 点云,体素,面片等,其实这些表示方法都各有各的优缺点,很多文章都踩过了我们就不踩了,那么使用 DIR 的表示方法有什么好处呢?首先它是连续的,神经网络具有很强的插值能力。其次使用深度学习的方法就一定会想到要具有一定的泛化性。如果你对传统重建方法有所了解的话,一定会发现,传统重建会有许多空洞,那么能不能使用 DIR 方法补全一下缺失的几何。当然还有 compact 的优点,少量参数的内存开销即可,还有很多其他优点不一一赘述。下面我们进入主题。

首先距离符号函数 (SDF) 是一个连续函数:
(1)
这里 x 表示采样点的坐标,|s| 表示距离表面的最近距离,s的符号为正表示在物体外部,符号为负表示在物体内部,上面这张图是SDF 的示意图,物体的表面被隐式的表达为 SDF(.) = 0的等值面。
DeepSDF 使用 MLP 来拟合这个连续函数:
(2)
这样一个函数是没有什么意义的,对每个物体都要训练测试训练测试...... 因此DeepSDF引入了Auto-Decoder来增加泛化性。其实这个概念并不陌生,但是按照论文的说法在3D learning方面是首次提出的。用白话讲就是为每个形状分配一个 latent code z,然后与采样点坐标一同输入到网络中,把这个code与网络的参数一同进行优化即可:

论文里比较 sao 气的给了概率证明,对于理解DIR 来说意义并不大,我们不多涉及。
接下来我们完整的回顾一下 DeepSDF:
1. 数据准备。对与每个3D模型取一些列的采样点 (x, s),采样方式是个比较繁琐的过程 (假设是watertight的mesh 模型,先将模型normalize到一个单位球,接着在表面采250000个点,并保留其法向量,然后对250000点加扰动,每个点扰动得到2个点,一共会有500000个扰动空间点,对这些空间点计算 SDF值,计算方式就是从250000个表面点中找最近的点,然后计算符号与距离。)
2. 训练。将大批量的采样点与随机初始化的 latent code z 一同输入到网络,通过 gt SDF 值做监督,对网络参数以及z一同做优化。
3. 测试。同样需要采样点,但是此时的采样点可以是稀疏的,甚至可以仅仅根据一张深度图即可完成推理。但是需要优化 latent code z,网络参数保持不变。
4. 可视化。使用 Marching Cubes 或者 raycasting 算法即可。
结果我们不过多展示了,大家可以参考论文。DeepSDF 的效果在当时是十分惊艳的,当然也存在一些问题,比如,姿态问题没有考虑,训练测试的模型都是处于 canonical pose 的;部分区域过于平滑;仅适用于单个物体,不能拓展到大场景等。感兴趣的读者可以自行查找一下相关的 task,DIR的研究是多种多样的,在3D视觉领域能挖掘的东西还有很多很多。
2 Occupancy Networks

这张图我很喜欢,它很直观的表达出 DIR在表示方面的优势,相信reviewer一看到也是类似的反应。DIR最大的优势就是紧致连续,仅使用少量的内存开销即可将3D信息嵌入到神经网络的参数当中。
使用 SDF值作为点的属性表达是一种方式,当然也可以使用该点是否被占据,OccNet 没有使用额外的类似 DeepSDF的latent code,而是选择将观测(如图片、点云、体素等)作为输入然后提取 code,可以概括的表达为以下形式:


这里 是OccNet 中唯一的超参数,文中给出的建议值为
= 0.2。相比 SDF 值,occupancy值的gt更容易获取一些,在提取几何部分 OccNet 也做了特殊的处理,提出了 Multiresolution IsoSurface Extraction (MISE),有效利用了
的梯度信息做约束,使得提取到的 mesh既不会太复杂,又相对准确,本文对MISE不做深入讲解。
OccNet 与 DeepSDF、IM-NET[1]、Deep Level Set[3] 是同期的工作,这四篇工作都是在 2019年发表的,也从此引发了以DIR为表示方法的热潮。
下面给出两张 OccNet 的网络结构图帮助读者理解:

图 1: OccNet 网络架构



图 2: Encoder
3 结语
对于 loss function是个开放性的问题,本文两篇文章都没涉及。核心本质的 DIR思想相信大家已经初步建立概念了,接下来的更新我们会提到一些典型的 DIR工作,由于作者本身也要做一些 research 工作,希望在深度和广度方面尽可能地拓展一些,如有不正确的地方欢迎大家指正。
参考文献
[1] Z. Chen and H. Zhang. Learning implicit fields for generative shape modeling. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 5939–5948, 2019.
[2] L. Mescheder, M. Oechsle, M. Niemeyer, S. Nowozin, and A. Geiger. Occupancy networks: Learning 3d reconstruction in function space. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 4460–4470, 2019.
[3] M. Michalkiewicz, J. K. Pontes, D. Jack, M. Baktashmotlagh, and A. Eriksson. Deep level sets: Implicit surface representations for 3d shape inference. arXiv preprint arXiv:1901.06802, 2019.
[4] J. J. Park, P. Florence, J. Straub, R. Newcombe, and S. Lovegrove. Deepsdf: Learning continuous signed distance functions for shape representation. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 165–174, 2019.
[5] A. Trevithick and B. Yang. Grf: Learning a general radiance field for 3d scene representation and rendering. arXiv preprint arXiv:2010.04595, 2020