Implicit Geometric Regularization for Learning Shapes
IGR,提出Eikonal Loss的论文。Lior Yariv当时还是第二作者,后面逐渐将隐式SDF表示几何表面的工作扩展,形成自己的IDR和VolSDF两篇论文。
代码链接:amosgropp/IGR: Implicit Geometric Regularization for Learning Shapes (github.com)
citation:
@incollection{icml2020_2086, author = {Gropp, Amos and Yariv, Lior and Haim, Niv and Atzmon, Matan and Lipman, Yaron}, booktitle = {Proceedings of Machine Learning and Systems 2020}, pages = {3569–3579}, title = {Implicit Geometric Regularization for Learning Shapes}, year = {2020} }
作者
方法
这里提到了Eikonal约束的来源:
Crandall, M. G. and Lions, P.-L. Viscosity solutions of hamilton-jacobi equations. Transactions of the American mathematical society, 277(1):1–42, 1983.
The motivation for the Eikonal term stems from the Eikonal partial differential equation: A solution f (in the sense of (Crandall & Lions, 1983)) to the Eikonal equation, i.e.,
$‖∇xf (x)‖ = 1, (3)$
隐式几何正则化
作者提了两个问题:为什么一个函数能够通过梯度下降的方式优化到符号距离函数呢?即使能够收敛到一个符号距离函数,又怎么能认为这个符号距离函数就是我们想要的呢?
这确实是一个值得思考的问题。同时,在透明物体表面重建中,如果希望用SDF来表示物体的内外表面,也应该思考这样的问题。
到底希望SDF能表现出什么样的效果来呢?
-
首先考虑完全遮光的物体。
对于密闭性的物体而言,我当然希望SDF从外到内是由正到负。
对于非密闭性的物体而言,如果物体仅仅是一个由表面组成的容器而言,那么它的表面应该是一个分割空气的面。如果将空气所在的介质视作外部,那么在杯子的内外部,SDF都应该是>0的。
-
这里有一个想法,是不是可以同时维护一个UDF和一个SDF,分别用于处理透明物体表面和非透明物体表面呢?同时对于闭包型物体和非闭包型物体是不是可以分别做两个不同的设计呢?
-
对于非透明物体而言,它的存在如同一个空气墙一样,它本身是改变距离场的0表面,但是不会改变与空气连通的性质。穿过透明物体表面之后,符号距离函数的符号应该是不发生改变的。如果已经在物体内部,那么SDF穿过透明物体表面,数值也依然还是负数值,但是在表面处函数的数值为0。
0表面是符号距离函数的表面提取依据。
-
如果在透明物体表面和非闭包的不透明物体表面处,符号距离函数不会发生变号,但是导数会发生变向。在一维的函数里面,函数的导数在SDF=0的地方,会由负数变为正数,或者由正数变为负数。
如果是三维梯度的话,梯度的方向会发生变化,表面的左侧,梯度方向会指向左侧;表面的右侧,梯度方向会指向右侧。梯度指向的是函数值增长最快的方向,在表面函数值为0的情况,左侧会直接走向正值,右侧会直接走向正值,在表面处的梯度左右似乎都可以,这时候函数是不可导的。所以也应该就无所谓梯度的方向了。要注意这种不可导函数的变化过程。MLP是不是能够模拟出现这种不可导函数呢?连续不处处可微函数?
-
如果在不透明物体的闭包表面处,符号距离函数会发生变号,由函数的正值(物体外侧)转变为函数的负值(物体内测),但此时导数并不会发生变号,从物体外表面到内表面的移动过程中,会一直保持导数的负数。
如果是三维梯度的话,梯度的方向不会发生变化,一直会指向物体的外表面处。
这次的思考算是一次巨大的飞跃。有更加精细的建模思路,透明物体、不透明物体,闭包、非闭包的建模流程应该是不一样的。
下次仍然需要考虑如何分别利用UDF和SDF处理不同特性表面的函数表达。
基于上述的思考,我发现:
-
在SDF的条件下,透明表面,无论是否形成一个闭包面,始终应该作为一堵空气墙,表面的SDF数值为0,而内部外部的SDF数值仍然是正值。
不透明表面、遮光表面应该按照是否形成物体的完整闭包进行划分。如果形成完整闭包,则表面两侧的SDF均为正值、或者符号相同,都为负值。如果存在与空气联通的缺口,也就是不完整的闭包,物体表面两侧的SDF应该分别为正值和负值,符号不同。
-
流体表面的透射率会随着流体的厚度和浑浊程度,随着深度的增加,整体表面的透射率逐步降低。在可视度低的情况下,等同于闭合不透明物体的表面;在可视度高的情况下,等同于透明物体表面。在中间情况下,流体一定搭配容器出现,液体会填充一个闭合的空间,类似于遮光不完全的、半透明物体表面。在SDF的空间显示上,我需要遮光闭合物体表面内外部SDF的符号发生转变,从而带来纯粹的颜色遮挡。由于半透明物体仍然会有光的透过,因此半透明物体等同于透明物体,但是透光率较低。展现在SDF上面,半透明表面内部外部的SDF都应该保持是正值。
-
表面两侧是否出现SDF变号的问题,只能区分是否为闭包遮光平面的出现,无法区分透明表面、半透明表面、遮光非闭包表面。后三者的情形需要通过估计表面处的透光率区分。而UDF所具备的性质更少,数值上呈现的内容与后三者相同。UDF、SDF无法区分上述内容。分别维护UDF、SDF可以有利于学习准确的过0不编号的函数值,或许难以通过UDF、SDF的联合维护方法建模表面的渲染特性。
相关工作及讨论
RGVF, 正则化网格体函数
这里看到一篇论文,名叫深度marching cubes。比较好奇,这篇文章是讲什么的呢?
Liao, Y., Donne, S., and Geiger, A. Deep marching cubes: Learning explicit surface representations. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 2916–2925, 2018.
这篇文章的相关文献总结相当全面,包含许多重要的表面重建工作、体素网格的研究工作。由于这篇文章IGR是后续IDR、NeuS、VolSDF以及各种变种工作的前置文章,所以是一篇领域内较为开创性的工作,阅读的论文都比较经典,后续Geo-NeuS、Mono-SDF的增删改查类的文章虽然有贡献,但是不如这些原创性的、在领域内开新枝的工作。
IGR竟然不是第一个使用Eikonal项的论文。拜错山头了吗?我受到之前读过的几篇文章的影响,一直认为Eikonal项是首次于本文提出的。
作者说还有这两篇文章中都有用到:
Michalkiewicz, M., Pontes, J. K., Jack, D., Baktashmotlagh, M., and Eriksson, A. Deep level sets: Implicit surface representations for 3d shape inference. arXiv preprint arXiv:1901.06802, 2019.
Jiang, Y., Ji, D., Han, Z., and Zwicker, M. Sdfdiff: Differentiable rendering of signed distance fields for 3d shape optimization. arXiv preprint arXiv:1912.07109, 2019.
我去翻了这两篇文章,他们都没有在文章中提到Eikonal这个名字,论文中都只是出现了单位模长的梯度向量作为损失函数。
作者说:
The key point in our work is that the Eikonal term alone can be used for (implicitly) regularizing the zero level set.
本文(IGR)的关键点是,Eikonal项可以单独用于0-level集的隐式正则化。
作者说的比较清楚,之前几篇工作如果需要重建,法向量的单位模长性质不能单独出现,是搭配其他的重建损失函数一起出现的。本文的主要工作是将这一项摘出来,看到这一项在重建隐式函数上的潜力。
线性模型的讨论以及平面的重新生成
For $\lambda > \frac{c\epsilon}{2}$, where c is a constant depending on $\bold{y}_i$, the loss in equation 5 has two global minima that correspond to the (approximated) signed distance functions to H (note there are two signed distance functions to H differing by a sign)
对于一个平面而言,有两个合适的符号距离函数,这两个距离函数的数值仅仅是相差一个负号而已。由于物体的内外表面是相对而言的,在一个平面上并不能直接体现出内部和外部。
critical应该翻译为临界。Critical points,临界点。
看不懂啊,这是在讨论什么呢?