# instant-ngp **Repository Path**: nyuanye/instant-ngp ## Basic Information - **Project Name**: instant-ngp - **Description**: docker内 安装xcolmap 测试instant-NeRF - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 3 - **Created**: 2022-05-22 - **Last Updated**: 2023-12-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #xcolmap 安装 instant-ngp 安装测试 #### 介绍 git clone -b rel https://github.com/nvlabs/instant-ngp 可以从官方的github拉取,但依赖较多,所以此工程是提供instant-ngp的全部依赖文件和colmap3.6版本。 安装的整体难点:对colmap 安装依赖下载太耗时; 对instant-ngp需要依赖大量其他的git文件 需要多次执行命令下载依赖:git submodule update --init; 总之下载的依赖太费时!!!!! ### docker ```bash 此镜像使用 telminov/ubuntu-18.04-python3.7:latest 是安装cudn11.4 xhost + sudo docker run --gpus all --device=/dev/video0 -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -itd -v /home/nyy/dockerShare/LF/NVIDIA_colmap:/home --name="colmap" -p 10011:10006 telminov/ubuntu-18.04-python3.7:latest bash sudo docker commit 55 colmap:v1 sudo docker save -o colmap-v1.tar.gz colmap:v1 sudo docker load -i colmap-v1.tar.gz 共享文件夹://home/nyy/dockerShare/LF/NVIDIA_colmap ``` #### 基础环境 #### cuda-11.4 cuda必须先安装,要不colmap无法调用GPU ``` bash cuda_11.4.0_470.42.01_linux.run 不要选择驱动 进入/usr/local/cuda-11.4/samples/1_Utilities/deviceQuery目录 make -j32 ./deviceQuery 测试cuda是否安装成功 sudo cp ./include/* /usr/local/cuda-11.4/include sudo cp ./lib64/libcudnn* /usr/local/cuda-11.4/lib64 sudo chmod a+x /usr/local/cuda-11.4/include/cudnn* sudo chmod a+r /usr/local/cuda-11.4/lib64/libcudnn* export CUDA_HOME=/usr/local/cuda-11.4 export PATH=/usr/local/cuda-11.4/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH cat /usr/local/cuda-11.4/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 nvcc --version ``` ##### 1)安装基础环境 ``` apt-get update && apt-get install -y \ git \ build-essential \ vim ``` ##### 2)cmake-3.23 安装 ``` wget https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2.tar.gz tar -zxvf cmake-3.22.2.tar.gz cd cmake-3.22.2/ ./bootstrap make -j32 sudo make install hash -r ``` ##### 2)Ceres-Solver 安装 Google开源了Ceres Solver库,是一个解很多非线性最优化问题的高效、方便的工具 ####### 1)Ceres-Solver 依赖安装 ``` 依赖项: Eigen,好用的数学库,无源码,全部是头文件。 CMake,工程生产工具,跨平台。 Glog,log库,选装。TBB,选装。 Gflags,SuiteSparse, CXSparse,BLAS,LAPACK主要是用来解大型稀疏矩阵的,必须要装。 Linux系统下可以很方便的用命令行安装各种库。 安装依赖 apt-get update && apt-get install -y \ libeigen3-dev \ libsuitesparse-dev \ libgoogle-glog-dev \ libgflags-dev apt-get install liblapack-dev libcxsparse3.1.2 libgtest-dev apt-get install libatalas-base-dev ``` ####### 1)Ceres-Solver 安装 ``` 下载ceres,链接为https://github.com/ceres-solver/ceres-solver/tree/2.0.0 cd ceres-solver-2.0.0 (这里下载的是2.0版本的) mkdir build cd build cmake .. make -j32 make install ``` ##### colmap 依赖安装 ###### 1)boost安装,Ubuntu可以直接命令行 ``` apt-get update && apt-get install -y \ libboost-program-options-dev \ libboost-filesystem-dev \ libboost-graph-dev \ libboost-regex-dev \ libboost-system-dev \ libboost-test-dev ``` ###### 3)freeimage ``` apt-get update && apt-get install -y libfreeimage-dev 安装失败可以用源码编译: 待测试 wget http://downloads.sourceforge.net/freeimage/FreeImage3170.zip #解压 unzip FreeImage3170.zip -d freeImage cd freeImage sudo make ``` ###### 4)openGL ``` apt-get install build-essential apt-get update && apt-get install -y libgl1-mesa-dev apt-get update && apt-get install -y freeglut3-dev apt-get update && apt-get install -y libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev ``` ###### 5)Qt5 colmap使用GUI的依赖 ``` apt-get install qt5-default qtcreator apt-get update && apt-get install -y \ qtbase5-dev \ libqt5opengl5-dev \ libcgal-dev \ libcgal-qt5-dev ``` ##### colmap 安装 ``` https://github.com/colmap/colmap.git 选择版本下载colmap-3.7 cd ./colmap-3.7 mkdir build && cd ./build cmake .. make -j32 make install ``` #### 测试colmap是否安装成功 ``` colmap colmap gui 若是黑色可能会有以下错误: (base) root@8febe657eda1:/home/instant-ngp# colmap gui QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root' libGL error: No matching fbConfigs or visuals found libGL error: failed to load driver: swrast QOpenGLWidget: Failed to create context QOpenGLWidget: Failed to create context composeAndFlush: makeCurrent() failed ``` 问题1 :QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root' export XDG_RUNTIME_DIR=/usr/lib/ export RUNLEVEL=3 问题2 :libGL error: No matching fbConfigs or visuals found ``` libGL error: No matching fbConfigs or visuals found libGL error: failed to load driver: swrast find / -name *libGL.so* root@8febe657eda1:/home/instant-ngp# find / -name *libGL.so* /usr/local/cuda-11.4/nsight-systems-2021.2.4/host-linux-x64/Mesa/libGL.so.1.5.0 /usr/local/cuda-11.4/nsight-systems-2021.2.4/host-linux-x64/Mesa/libGL.so /usr/local/cuda-11.4/nsight-systems-2021.2.4/host-linux-x64/Mesa/libGL.so.1 /usr/local/cuda-11.4/nsight-compute-2021.2.0/host/linux-desktop-glibc_2_11_3-x64/Mesa/libGL.so.1.5.0 /usr/local/cuda-11.4/nsight-compute-2021.2.0/host/linux-desktop-glibc_2_11_3-x64/Mesa/libGL.so /usr/local/cuda-11.4/nsight-compute-2021.2.0/host/linux-desktop-glibc_2_11_3-x64/Mesa/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0 /usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libGL.so.1 是因为冲突导致的 配置环境变量 export LD_LIBRARY_PATH=/usr/local/cuda-11.4/nsight-systems-2021.2.4/host-linux-x64/Mesa${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 或者 apt-get install libnvidia-gl-470 apt-get update && apt-get install -y libnvidia-gl-470 ``` 问题3:QOpenGLWidget: Failed to create context whereis qmake export QT_SELECTION=/usr/bin/qmake apt-get install qt5-default #### 测试colmap 简单使用教程 ``` colmap mapper \ --database_path ./flower_rose/database.db \ --image_path ./flower_rose/images \ --output_path ./flower_rose/sparse 位姿态 有.bin文件转换为txt instant-ngp中需要txt colmap model_converter \ --input_path ./data/nerf/flower_rose/sparse/0 \ --output_path ./data/nerf/flower_rose/sparse \ --output_type TXT 此部分参考: https://blog.csdn.net/ling7319/article/details/123630362 https://blog.csdn.net/weixin_43736326/article/details/120660585 https://blog.csdn.net/qq_20373723/article/details/119113659 ``` ##### instant-ngp 安装 ``` git clone -b rel https://github.com/nvlabs/instant-ngp 因为需要依赖大量其他的git文件 需要多次执行命令下载依赖:git submodule update --init ``` 安装instant-ngp ``` cmake . -B build cmake --build build --config RelWithDebInfo -j 16 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ ``` 视频转换图片:可以缩放抽帧 ``` python3 ./scripts/convert_video.py --input ./VID_20220521_192056.mp4 \ --output /home/instant-ngp/data/nerf/grass_tree/data/ \ --show_image 1 \ --scale 1 python3 ./scripts/convert_video.py --input ./VID_20220521_190845.mp4 \ --output /home/instant-ngp/data/nerf/flower202205/data/ \ --show_image 1 \ --scale 1 参考:https://vincentqin.tech/posts/instant-ngp/#more ``` colmap计算位姿 并转换为txt格式 ``` colmap model_converter \ --input_path ./data/nerf/grass_tree/sparse \ --output_path ./data/nerf/grass_tree/sparse \ --output_type TXT colmap model_converter \ --input_path ./data/nerf/flower202205/sparse/ \ --output_path ./data/nerf/flower202205/sparse/ \ --output_type TXT ``` 把txtx图片路径等转换为json ``` python3 scripts/colmap2nerf.py --aabb_scale 16 --images ./data/nerf/grass_tree/data \ --text ./data/nerf/grass_tree/sparse \ --out ./transform_grass.json python3 scripts/colmap2nerf.py --aabb_scale 16 --images ./data/nerf/flower202205/data \ --text ./data/nerf/flower202205/sparse \ --out ./transform_flower202205.json ``` ./build/testbed --scene data/nerf/fox ./build/testbed --scene ./data/nerf/tussock_tiny/transform.json ./build/testbed --scene data/nerf_synthetic/lego/transforms_train.json ./build/testbed --scene ./data/nerf/flower_rose/transform.json ./build/testbed --scene transform_flower202205.json ./build/testbed --scene transform_grass.json ./build/testbed --scene data/sdf/armadillo.obj ./build/testbed --scene data/image/albert.exr #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)