NeRF简介及nerf-pytorch的使用

2023-05-16

      NeRF全称为Neural Radiance Field(神经辐射场),是2020年发表的论文,论文名字为: NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis, 地址为:https://arxiv.org/pdf/2003.08934.pdf ,通过2D序列图像生成3D模型.
      NeRF使用全连接深度网络(fully-connected(nonconvolutional) deep network)表示静态场景(static scene),其输入是单个连续的5D坐标(空间位置(x,y,z)和viewing direction(θ, Ø)),输出是该空间位置的volume density(体密度) and view-dependent emitted radiance.通过沿相机光线(camera rays)查询5D坐标来合成视图,并使用经典的体渲染技术(volume rendering techniques)将输出颜色和密度投影到图像中.
      从特定视点(particular viewpoint)渲染NeRF过程:
      (1).让摄像机光线(camera rays)穿过场景,生成一组采样的3D点;
      (2).使用这些点及其相应的2D viewing directions作为神经网络的输入,以产生颜色和密度的输出集;
      (3).使用经典的体渲染技术将这些颜色和密度累积到2D图像中。
      由于此过程是自然可微的,因此我们可以使用梯度下降来优化该模型。下图显示了整个pipeline,截图来自于原始论文

      使用COLMAP structure-from-motion package估计实际数据(捕获的场景RGB图像的数据集)的参数:the corresponding camera poses and intrinsic parameters, and scene bounds
      NeRF优化了没有任何卷积层(通常称为多层感知机, MLP)的深度全连接神经网络,可视化的网络结构如下图所示,截图来自于原始论文:

      注:以上内容主要来自于原始论文

      https://www.matthewtancik.com/nerf :有相应的结果视频、code及测试数据集

      https://github.com/awesome-NeRF/awesome-NeRF :汇总了NeRF相关的论文

      GitHub上的nerf-pytorch项目是NeRF的PyTorch实现,在windows上运行此项目看下NeRF的结果:

      1.在windows上通过Anaconda配置nerf-pytorch环境:

      (1).从NVIDIA官网下载cuda 11.6即cuda_11.6.0_511.23_windows.exe,点击此exe进行安装,通过编译执行samples中的deviceQuery和bandwidthTest验证本机是否支持cuda 11.6;
      (2).clone nerf-pytorch,并cd nerf-pytorch

git clone https://github.com/yenchenlin/nerf-pytorch.git

      (3).通过Anaconda创建虚拟环境nerf-pytorch:

conda create -n nerf-pytorch python=3.8
conda activate nerf-pytorch

      (4).安装带cuda的pytorch:

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116

      (5).安装requirements.txt中指定的依赖:执行前删除掉requirements.txt中的torch和torchvision

pip install -r requirements.txt

      2.运行:
      (1).从http://cseweb.ucsd.edu/~viscomp/projects/LF/papers/ECCV20/nerf/nerf_example_data.zip 下载测试数据集,解压缩;
      (2).在nerf-pytorch下新建data目录,将解压缩后的nerf_synthetic文件拷贝到data目录下;
      (3).执行:

python run_nerf.py --config configs/lego.txt

      终端输出结果如下图所示:花费大约11个小时

      执行完后在logs/blender_paper_lego目录下会产生结果文件,如下图所示:

      将blender_paper_lego_spiral_200000_rgb.mp4 转换为动画gif,结果如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NeRF简介及nerf-pytorch的使用 的相关文章

随机推荐