论文基本信息:
发布于 CVPR 2021
创新点
-
论文介绍了一种具有神经SDF的复杂几何实时渲染方法。
-
论文提出了一种神经SDF表示,可以有效地捕获多个LOD,并以最先进的质量重建3D几何图形。
-
论文中的架构可以以比传统方法具有更高视觉保真度的压缩格式表示 3D 形状,并且即使在单个学习示例中也能跨不同几何图形进行泛化。
-
背景:
直接渲染神经sdf,可以使用寻根算法(如球面追踪),进行光线跟踪。
-
Pipeline:
SDF的表现形式:
d=f(x) 是点x到体积M的表面S的最短符号距离,符号表示的x在M的内部或外部。
使用与标准的SDF类似,使用神经网络的参数和编码形状的附加学习输入特征来表示SDF。(使用包含特征向量集合的特征体积,表示为Z。
推理流程:
针对于查询点x,先找到其八叉树中最精细级别的分辨率,并记录包含这个查询点的所有分辨率级别(V1, V2, ... , VL),针对不同的分辨率级别通过三线性插值得到特征形状向量并拼接不同分辨率得到的特征形状向量与x一起经过一个包含lod特殊参数的MLP得到预测的距离。(ps:[.|.]表示拼接)
水平混合:
对于两个离散的不同的LOD分辨率级别,论文为了获得连续的LOD L,通过在不同的离散八叉树LODs直接通过线性插值相应的预测距离来得到。
训练损失设置:
自适应射线步进:
稀疏Ray-Octree交集:
该算法首先生成一组射线R(由i索引),并将它们存储在射线-体素对的数组N(0)中。用根节点、八叉树的顶层体素(第2行)初始化每个n(0)i∈N(0)。
接下来,我们迭代八叉树级别(第3行)。在每次迭代中,我们确定导致DECIDE交集的射线-体素对,如果射线与体素相交,则返回Dj = 1的决策列表,否则Dj = 0(第4行)。
然后,我们使用 EXCLUSIVESUM 来计算列表 D 的排他性和 S,我们将其输入接下来的两个子例程(第 5 行)。
如果我们还没有达到我们想要的LOD级别L,我们使用SUBDIVIDE填充下一个列表N(+1),其子体素是射线相交并继续迭代(第9行)。否则,我们使用 COMPACTIFY 删除所有不会导致交集的 N(l)(第 7 行)。
结果是八叉树每一层的光线体素交点的紧凑、深度排序的列表。请注意,通过分析射线原点落在体素内的空间的八分区,我们可以对子体素进行排序,以便光线-体素对 N(L) 的列表将按到射线原点的距离排序。
💎实验成果展示:
-
此表显示了与三个不同数据集的架构和每个形状重建比较。在所有评估方案下,论文中的模型从 LOD 3 开始的架构尽管存储和推理参数要低得多,但性能要好得多。
-
表示的存储大小是根据所有数据集中所有形状的平均稀疏体素数量以及解码器大小和推理参数来计算的。
🔍问题分析:
问题1
由于在训练过程中很大程度依赖于训练期间使用的点样本,因此难以扩展到非常大的场景或非常薄的无体积集合。
问题2
无法使用传统的方法变形几何形状。
源码环境配置:
-
Linux 安装cuda-11.3
$ wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_510.39.01_linux.run
根据提示安装后输入如下指令查看是否成功安装cuda11.3:
-
conda创建配置新环境文章来源:https://www.toymoban.com/news/detail-820828.html
conda create -n nglod python=3.8
conda activate nglod
pip install --upgrade
# pip # requirements.txt 中的git+https://github.com/tinyobjloader/tinyobjloader.git#subdirectory=python
# 需要调整为:
# 1. git clone https://github.com/tinyobjloader/tinyobjloader.git
# 2. cd tinyobjloader
# 3. pip install .
# 其中Pillow的版本有限制
# pip install Pillow==9.5.0
pip install -r ./infra/requirements.txt
# 安装OpenEXR库
sudo apt install libopenexr-dev pip install pyexr
# 构建 CUDA 扩展
cd sdf-net/lib/extensions
chmod +x build_ext.sh && ./build_ext.sh
-
下载样本数据文章来源地址https://www.toymoban.com/news/detail-820828.html
wget https://raw.githubusercontent.com/alecjacobson/common-3d-test-models/master/data/armadillo.obj -P data/
wget https://raw.githubusercontent.com/nidorx/matcaps/master/1024/6E8C48_B8CDA7_344018_A8BC94.png -O data/matcap/green.png
到了这里,关于Neural Geometric Level of Detail: Real-time Rendering with Implicit 3D Shapes 论文笔记&环境配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!