NERFS 与现实捕捉 - 弥合现实世界与数字世界之间的差距

NERF介绍

近年来,计算机视觉和图形领域取得了显着的进步,催生了革命性的技术,改变了各个行业。 NERFS(神经辐射场)和现实捕捉是两项备受关注的重要技术。 NERFS 和现实捕捉都是以数字形式捕捉和重建现实世界的强大工具。然而,它们在方法和应用方面存在显着差异。

1.NERFS(神经辐射场):

NERFS 是神经辐射场的缩写,是一项属于计算机图形学和计算机视觉领域的尖端技术。 NERFS 是近年来发展起来的,它利用深度学习模型通过连续 3D 函数来表示 3D 对象或场景。与依赖点云或网格表示的传统方法不同,NERFS 通过将底层场景建模为神经网络来生成逼真的重建。

2.NERFS 的工作原理:

NERFS 的工作原理是从不同角度捕获场景的大量图像。这些图像以及相应的相机参数被输入神经网络。然后,网络学习推断场景的体积表示,对复杂的细节、纹理和照明条件进行编码。

3.NERFS的应用:

  • 虚拟现实 (VR) 和增强现实 (AR):NERFS 可以为 VR/AR 应用创建高度沉浸和逼真的虚拟环境,从而增强用户体验。
  • 游戏和娱乐:NERFS 使游戏开发人员能够创建逼真的角色和环境,突破游戏视觉保真度的界限。
  • 电影和动画行业:NERFS 可以帮助为电影和动画生成逼真的 CGI(计算机生成图像),减少对传统建模和动画技术的依赖。
  • 机器人和自治系统:NERFS 在机器人和自治系统的场景理解和导航方面具有潜在的应用。

NERF技术的挑战

  • 计算复杂性:NERFS 需要大量计算资源来进行训练和推理,这使得它们的计算量很大。实时应用可能会受到神经网络复杂性的限制。
  • 有限的泛化:NERFS 擅长捕获与其训练数据中相似的场景。然而,当遇到与训练数据有很大偏差的场景时,他们可能会遇到困难,从而导致泛化能力有限。
  • 内存和存储:NERFS 的体积特性可能会导致大量的内存和存储需求。存储 3D 函数和渲染高分辨率图像可能会占用大量内存。
  • 缺乏动态场景:由于训练数据的性质,NERFS 更适合静态场景或对象。捕捉动态场景或移动物体是一个挑战,因为神经网络可能无法有效处理时间变化。

NERF使用

nerfstudio

Nerfstudio 提供了一个简单的 API,可以简化创建、训练和测试 NeRF 的端到端流程。该库通过模块化每个组件来支持 NeRF 的更可解释的实现。通过更多模块化的 NeRF,我们希望在探索该技术时创造更加用户友好的体验。

1.安装:搭建环境

安装CUDA 11.8 

创建环境
conda create --name nerfstudio -y python=3.8
conda activate nerfstudio
pip install --upgrade pip

安装依赖
pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118

conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit
pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

安装nerfstudio

pip install nerfstudio
或者
git clone https://github.com/nerfstudio-project/nerfstudio.git
cd nerfstudio
pip install --upgrade pip setuptools
pip install -e .

2. 训练你的第一个模型!

# Download some test data:
ns-download-data nerfstudio --capture-name=poster
# Train model
ns-train nerfacto --data data/nerfstudio/poster

NERFS 与现实捕捉 - 弥合现实世界与数字世界之间的差距_第1张图片

3. 导出结果

渲染视频

生成点云

ns-export pointcloud --help

生成mesh模型

ns-export poisson [-h] --load-config PATH --output-dir PATH [--num-points INT]
                  [--remove-outliers {True,False}]
                  [--reorient-normals {True,False}] [--depth-output-name STR]
                  [--rgb-output-name STR]
                  [--normal-method {open3d,model_output}]
                  [--normal-output-name STR] [--save-point-cloud {True,False}]
                  [--use-bounding-box {True,False}]
                  [--bounding-box-min FLOAT FLOAT FLOAT]
                  [--bounding-box-max FLOAT FLOAT FLOAT]
                  [--num-rays-per-batch INT]
                  [--texture-method {point_cloud,nerf}]
                  [--px-per-uv-triangle INT] [--unwrap-method {xatlas,custom}]
                  [--num-pixels-per-side INT] [--target-num-faces {None}|INT]
                  [--std-ratio FLOAT]

4. 使用自定义数据

Data Capture Device Requirements ns-process-data Speed
Images Any COLMAP
Video Any COLMAP
360 Data Any COLMAP
Polycam IOS with LiDAR Polycam App
KIRI Engine IOS or Android KIR
ns-process-data {images, video} --data {DATA_PATH} --output-dir {PROCESSED_DATA_DIR}

sdfstudio

SDFStudio 是一个用于神经隐式表面重建的统一模块化框架,建立在出色的 nerfstudio 项目之上。我们提供了三种主要隐式表面重建方法的统一实现:UniSurf、VolSDF 和 NeuS。 SDFStudio 还支持各种场景表示,例如 MLP、Tri-plane 和 Multi-res。特征网格和多点采样策略,例如 UniSurf 中的表面引导采样和 NeuralReconW 中的体素表面引导采样。它进一步集成了该领域的最新进展,例如单目线索(MonoSDF)的利用、几何正则化(UniSurf)和多视图一致性(Geo-NeuS)。由于统一和模块化的实现,SDFStudio 可以轻松地将想法从一种方法转移到另一种方法。例如,Mono-NeuS 将 MonoSDF 的思想应用到 NeuS,Geo-VolSDF 将 Geo-NeuS 的思想应用到 VolSDF。

参考资料:

https://github.com/nerfstudio-project/nerfstudio/

GitHub - autonomousvision/sdfstudio: A Unified Framework for Surface Reconstruction

你可能感兴趣的:(深度学习,计算机视觉)