当前位置: 首页 > news >正文

使用colmap自制3DGaussian_Splatting数据集

使用说明

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模型重建结果

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

http://www.lryc.cn/news/620702.html

相关文章:

  • BotCash:GPT-5发布观察 工程优化的进步,还是技术突破的瓶颈?
  • GoLand 项目从 0 到 1:第八天 ——GORM 命名策略陷阱与 Go 项目启动慢问题攻坚
  • 通过机器学习框架实现Android手写识别输入功能
  • Spring Boot 3中JWT密钥安全存储方案
  • Python训练营打卡Day32-神经网络的训练
  • 【Golang】Golang内存泄漏问题排查(二)
  • OpenCv(三)——图像平滑处理
  • 8. 函数简介
  • OpenCV中对图像进行平滑处理的4种方式
  • HarmonyOS AI辅助编程工具(CodeGenie)智慧调优
  • 力扣(LeetCode) ——225 用队列实现栈(C语言)
  • 信息vs知识:人类学习与AI规则提取
  • 异步编程的 8 种实现方式:疑难点与注意事项解析
  • 《疯狂Java讲义(第3版)》学习笔记ch4
  • 安全加固4(K8S最小化微服务安全)
  • C++ 中的元控制流与概念化类型擦除
  • Elasticsearch 中如何配置 RBAC 权限-实现安全的访问控制
  • 论郑和下西洋元素融入课件编辑器的意义与影响​
  • 智能门锁:安全与便捷的现代家居入口
  • UE小:编辑器模式下「窗口/鼠标不在焦点」时仍保持高帧率
  • UE5配置MRQ编解码器输出MP4视频
  • Mybatis学习笔记(三)
  • PostgreSQL 免安装
  • AXI GPIO 2——ZYNQ学习笔记
  • 相较于传统AR作战环境虚拟仿真系统,其优势体现在哪些方面?
  • Mysql基本使用语句(一)
  • 生成和发布博客的工作流
  • 力扣(串联所有单词的子串)
  • ChatECNU 边缘 AI 智能体对话
  • 在线进销存系统高效管理网站源码搭建可二开