Ubuntu终端跑colmap实验记录——生成sparse和poses_bounds.npy

目录

前言:

colmap生成sparse

[1.打开工程进行自动重建(不需要)------just 避雷!](#1.打开工程进行自动重建(不需要)——just 避雷!)

2.单步重建------生成sparse图像

[2.1 提取特征点](#2.1 提取特征点)

[2.2 特征点匹配](#2.2 特征点匹配)

[2.3 稀疏重建](#2.3 稀疏重建)

3.使用LLFF生成poses_bounds.npy


前言:

我一直习惯使用autodl的服务器,在上面配置了nerfstudio的环境,详细可以看我的这篇博客:

Windows&&Linux跑通BAD-RFs实战__无数踩坑坑坑记录_python 安装 ns-train-CSDN博客

而我现在需要使用自己合成的数据集去运行Bad-NeRF,发现仅仅只是输入图象视角是不行的,还是需要使用colmap生成sparse和poses_bounds.npy形成视角数据。因为colmap需要使用GUI可视化界面,所以我尝试了用VNCViewer可视化autodl界面,但是始终显示"没有加密的界面",一直黑屏,遂放弃。所以我尝试使用终端进行文件生成。这是一条记录贴,可以作为使用自己的数据集训练bad-nerf的参考。

colmap生成sparse

参考文献:

一文搞懂ubuntu下colmap的使用方法_ubuntu colmap-CSDN博客

这里面介绍的步骤很全面,但是对于bad-nerf而言有些不是很需要,比如生成dense文件夹。

1.打开工程进行自动重建(不需要)------just 避雷!

代码:

DATASET_PATH=/path/to/project  #工程文件夹里必须包含一个叫做images的文件夹,里面放着重建所需要的图片

colmap automatic_reconstructor \
 
     --workspace_path $DATASET_PATH \
 
     --image_path $DATASET_PATH/images

这一步要跑很久,我从凌晨一点跑到早上七点还是没有跑出来,最后生成的图像位姿数据也是很少,试了几次每一次生成位姿的图像都只有三张或者四张。(生成位姿图像名称的步骤详见3节)

最后尝试删去这步之后100张图象生成了80张图像的位姿数据。

2.单步重建------生成sparse图像

2.1 提取特征点

代码:

DATASET_PATH=/path/to/dataset

./colmap feature_extractor \
   --database_path $DATASET_PATH/database.db \  # 输出:特征点保存至数据库database.db
   --image_path $DATASET_PATH/images            # 输入:多视图图像

这一步顺利运行!

2.2 特征点匹配

./colmap exhaustive_matcher \
   --database_path $DATASET_PATH/database.db    # 输入输出:数据库文件database.db

2.3 稀疏重建

mkdir $DATASET_PATH/sparse    # 新建sparse文件夹
./colmap mapper \
    --database_path $DATASET_PATH/database.db \    # 输入:数据库文件database.db
    --image_path $DATASET_PATH/images \            # 输入:多视图图像
    --output_path $DATASET_PATH/sparse             # 输出:`sparse`文件夹

最后在目标路径上生成了如下路径的文件:

└── sparse        # 稀疏重建结果
    └── 0
        ├── cameras.bin        # 相机内参
        ├── images.bin         # 相机位姿
        ├── points3D.bin       # 稀疏3D点
        └── project.ini

3.使用LLFF生成poses_bounds.npy

用cd命令转到nerfstudio文件夹下,下载LLFF,命令如下:

# autodl上需要科学上网从Github上直接git下载,博主下载到nerf-pytorch下
git clone https://github.com/Fyusion/LLFF.git
# 激活虚拟环境
conda activate nerfstudio
# eg: conda activate nerf_mvs
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-image
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple imageio

然后进入LLFF文件夹下的imgs2poses.py文件,新增如下内容,default='里面是sparse所在目录的绝对路径',并将参数'scenedir'修改为是'--scenedir'。

注意!这里新增的default内容的上一级目录下的image文件夹命名必须是images。

然后输入以下命令运行img2poses.py:

# 注意要在imgs2poses.py所在目录执行命令
python imgs2poses.py
# 或者附带imgs2poses.py的路径
python XXXX\imgs2poses.py
# eg: python LLFF\imgs2poses.py

最后出现了很多人经常出现的错误:

根据这位博主的解决方案,在LLFF/llff/poses/pose_utils.py下加入了这段代码:

    #---------输出匹配到位姿的图片名---------
    for i in np.argsort(names):
       print(names[i],end=' ')
    #---------输出匹配到位姿的图片名---------

最后显示出了计算出位姿的图像名称,把没有生成的图像删除,重新运行第二节的命令,但是还是出现了一样的错误。

根据这位博主的解决方案修改了LLFF/llff/pose_utils.py的内容,最后这种结果才算成功!

(我的结果忘记截图了,生成了Depth stats巴拉巴拉的算成功,并且对应文件夹下生成了poses_bounds.npy文件)

生成之后就可以用自己的数据集使用BAD-NeRF力!!!

相关推荐
watermelonoops3 分钟前
Windows安装Ubuntu,Deepin三系统启动问题(XXX has invalid signature 您需要先加载内核)
linux·运维·ubuntu·deepin
paixiaoxin1 小时前
CV-OCR经典论文解读|An Empirical Study of Scaling Law for OCR/OCR 缩放定律的实证研究
人工智能·深度学习·机器学习·生成对抗网络·计算机视觉·ocr·.net
星河梦瑾1 小时前
SpringBoot相关漏洞学习资料
java·经验分享·spring boot·安全
AI视觉网奇2 小时前
人脸生成3d模型 Era3D
人工智能·计算机视觉
编码小哥2 小时前
opencv中的色彩空间
opencv·计算机视觉
吃个糖糖2 小时前
34 Opencv 自定义角点检测
人工智能·opencv·计算机视觉
YRr YRr2 小时前
解决Ubuntu 20.04上编译OpenCV 3.2时遇到的stdlib.h缺失错误
linux·opencv·ubuntu
认真学习的小雅兰.2 小时前
如何在Ubuntu上利用Docker和Cpolar实现Excalidraw公网访问高效绘图——“cpolar内网穿透”
linux·ubuntu·docker
长潇若雪3 小时前
《类和对象:基础原理全解析(上篇)》
开发语言·c++·经验分享·类和对象
葡萄爱4 小时前
OpenCV图像分割
人工智能·opencv·计算机视觉