使用colmap自制3DGaussian_Splatting数据集

发布于:2025-08-16 ⋅ 阅读:(18) ⋅ 点赞:(0)

使用说明

colmap一般有两种下载路径:

一是部署安装在linux之类平台的,这种需要进行编译才能够使用;

二是部署在windows平台的,官方提供了编译好的版本,可以直接拿来使用;

本文章针对windows平台,不提供编译安装的教程。

colmap有支持GPU版本和非GPU版本,根据自己的实际情况选择;

在使用colmap之前,如果你的数据集是拍摄的视频,可以使用ffmpeg对视频进行抽帧操作,获得一定数量的图片。这里colmap是针对一系列图片进行拍摄位姿的还原;

Colmap的安装

下载链接:

https://github.com/colmap/colmap/releases   

下载好后直接解压到某个文件夹里即可。如图所示,双击这里的COLMAP.bat脚本就能够直接使用。

但是为了方便后续能够在终端使用colmap,建议将该脚本添加到环境变量,方便后续可以使用colmap指令。

成功添加环境变量后,尝试运行可以得到如下结果:

Colmap的使用

使用colmap自制符合3DGaussian_Splatting数据集的方式有多种,这里提供一种笔者实验成功的方案,后面还有几种方案也会简单聊一下:

方案一:使用官方提供的convert.py脚本

这个脚本会自动调用安装在电脑中的colmap(前提是配置好了环境变量,要不然会识别不到)。如果是部署在远程服务器的,也可以直接将convert.py脚本下载下来。

运行convert.py脚本前,需要保证你的文件夹名称以及结构是这样的(因为这些名称在convert.py脚本中写死了):

注意这里一定要有名为“input”的文件夹,图片名称随意,my_dataset这个文件夹名称也随意;

运行后生成的内容可以先不用管,运行前需要保证整体的文件结构如上图所示。

整理好文件结构后,可以通过如下指令运行:

注意先跳转到含有conver.py的文件目录执行,convert.py也不依赖任何自定义库,能够方便运行。

python convert.py -s my_dataset

运行后的的完整情况就如上图所示,之后就可以将处理好的数据集使用train.py脚本进行训练啦。

方案二:使用colmap的自动重建图像功能

在终端输入:

colmap.bat

或者通过直接双击colmap.bat直接启动colmap的可视化窗口进行数据集处理;

这里使用colmap的自动重建功能制作数据集;

注意底下有一个Dense model的按钮,这里建议把他关闭。使用colmap重建时会有两个选项,一是稀疏重建,二是稠密重建。就笔者个人使用感受来说,稀疏重建得到的数据集,在高斯泼溅的训练还原中,效果已经足够好了。官方使用的也是稀疏重建。

重建完成后会弹出几个确认窗口,点击“OK”即可;

重建后会自动生成拍摄位姿的可视化情况;

笔者这里是使用手机对“放在书本上的一个水杯”进行了旋转一周的拍摄;

通过这种方式也能够获得数据集,但是存在一点小问题,就是这种自动重建生成的数据集,是带畸变的。究其原因,是colmap默认使用的是带畸变的相机模型,这不符合3D高斯泼溅中要求使用无畸变的相机模型。

这个问题或可通过 colmap image_undistorter 指令进行纠正;

可参考文章链接:对于colmap数据集转化的问题_assertionerror: colmap camera model not handled: o-CSDN博客

这里笔者没有进一步实验,感兴趣可自行探索。

方案三:使用colmap逐步制作数据集,设置参数进行约束

整个colmap制作数据集的过程大致包含:

特征提取(feature_extractor)->特征匹配(exhaustive_matcher)->稀疏重建(mapper)->去畸变(image_undistorter),这几个过程colmap提供了对应的指令参数进行处理。

这种方法笔者这里不做进一步的介绍。可以通过colmap --help查询相关指令用法,自行探索。

可能存在的报错

在初次使用colmap时可能存在需要下载一个.bin文件的问题,如果长时间卡在那里无法下载,可以尝试设置临时代理,快速成功下载好该文件。

设置代理的方法可参考链接:

简单聊聊代理服务器-CSDN博客

重建结果展示

colmap相机位姿可视化结果

这里仅使用少量图片,相机位姿如图所示(非全身环绕拍摄):

3DGaussian_Splatting模型重建结果

可以看到,正面效果是非常好的,对于侧面和背面等缺少视角的位置,则重建效果较差。


网站公告

今日签到

点亮在社区的每一天
去签到