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力!!!

相关推荐
FlyWIHTSKY7 分钟前
JavaScript 和 TypeScript 分别是什么,可以相互写吗
javascript·ubuntu·typescript
superbrowser_8 分钟前
Etsy开店用什么浏览器好?安全选择指南
经验分享
LaughingZhu9 分钟前
Product Hunt 每日热榜 | 2026-06-09
人工智能·经验分享·深度学习·神经网络·产品运营
iRayCheung15 分钟前
virtualbox安装的ubuntu系统跑numpy报错
linux·ubuntu·numpy
君为先-bey15 分钟前
UniVidX——基于扩散先验的统一多模态视频生成框架
计算机视觉·多模态·扩散模型·视频生成
法雅特吉他42 分钟前
吉他桶型技术解析:GA桶 vs D桶 vs OM桶——入门弹唱选哪个
经验分享·新媒体运营·产品运营·流量运营·用户运营·内容运营
丑过三八线1 小时前
Systemd Cgroup 驱动详解
linux·ubuntu·容器
zcg19421 小时前
开源+轻量的文生图模型——z-image
计算机视觉·transformer
2502_921286071 小时前
企业网络管理:DHCP 原理、部署与企业实战配置
经验分享
芯片智造1 小时前
湿法清洗刻蚀液中过氧化氢的分解与补加
经验分享