论文是以稀疏光场渲染稠密视角光场从而达到3D效果;测试自己数据需要多张不同视角图片。
NeRF用(非卷积)深度网络表示场景的5D连续体表示。NeRF的一大特点是不使用3D建模,通过静态图片进行训练,再通过ray marching进行渲染实现3D视效,使3D视效样片的每一帧画面都能达到照片级的真实度。
目前代码已开源 ,https://github.com/bmild/nerf
项目主页:https://www.matthewtancik.com/nerf
代码测试环境:windows10
Tensorflow 1.15
python3.7
CUDA:10.0
cuDNN7.6
下载论文数据后放入文件夹,如下图(后续会介绍此文件夹内的相关文件如何计算,毕竟测试自己的数据集时只有多张图像即images文件夹,其他文件都是计算获取,但难度较大感兴趣的可以尝试)
搭建好环境后执行 python run_nerf.py --config config_flower.txt即可,大概5-6个小时后能够计算出结果。
1、使用论文中flower、 fern(蕨类植物吧)、leaves、orchids数据集计算的结果,模拟3D效果。
2、自己拍摄数据集制作及相关的环境搭建;colmap
trimesh.png图片表示你拍摄多视角图像时相机的相应空间位置,它是有https://github.com/fyusion/llff项目中的
python imgs2poses.py data/images 来计算;
在github中能看到首先配置需要的运行环境,难度不算太大;但此项目需要安装colmap,他也是此项目较难的地方。具提可参考:
多视角图像拍摄,以获取自己想要拍摄的物体。
安装colmap
地址:https://github.com/colmap/colmap
参考官网使用python命令安装;中间会下载大量文件,导致报错,那就直接下载然后放到指定的文件夹即可;同时需要配置环境变量。colmap编译时需下载的文件https://download.csdn.net/download/niuyuanye/12594259
python scripts/python/build.py --build_path D:/Python/LF/colmap-dev/build --colmap_path D:/Python/LF/colmap-dev --boost_path "C:/local/boost_1_69_0/lib64-msvc-14.1" --qt_path "D:/Qt/Qt5.12.4/5.12.4/msvc2017_64" --cmake_generator "Visual Studio 15 2017 Win64"
按照要求安装 如下表示安装成功
使用colmap
参考:https://www.cnblogs.com/Todd-Qi/p/10792685.html;通过特征提取、特征点匹配、稀疏重建;用colmap最终计算出:相机内参、相机位姿、稀疏3D点;
用LLFF 项目中的imgs2poses.py将相机的参数转换为poses_bounds.npy(python imgs2poses.py flower_rose2/
)至此NeRF训练需要的数据制作完成:如下图
执行如下命令:python run_nerf.py --config config_mydata.txt
此数据时自己用手机拍摄的20张稀疏视角图像,最终重建出稠密视角图像,合成的3D效果,虽然手机20张图像曝光不一致,但重建的效果还不错,算法确实优秀,但运算太耗时间了。测试发现如果拍摄时视差过大则会出现模糊现象如最后一个测试结果。