尝试用gsplat对自己的数据进行3D高斯泼溅训练

前文提到,在Windows系统上,可以用gsplat进行3D高斯泼溅的训练,并训练公开的数据集,能够取得不错的效果。

本篇文章将尝试将自己拍摄的数据,转换成gsplat所支持的格式,以支持训练。

数据转换

要进行数据转换,首先看 gsplat的文档1,但翻完发现,它压根没写怎么进行数据转换。

于是找到该项目的前身 nerfstudio 的文档2,才找到一丝线索。

下面就尝试用 nerfstudio 对视频数据进行转换。

nerfstudio转换

首先用uv安装环境,文档内容较老,推荐用 Python 3.8。

b 复制代码
uv venv --python 3.8 .venv
.\.venv\Scripts\activate

然后安装核心依赖:

b 复制代码
uv pip install nerfstudio
uv pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu121

下载安装colmap3:

注意必须下载3.11.1,最新版本会有接口兼容性问题。

下载后解压,把这个E:\colmap-x64-windows-cuda\bin(对应的bin目录)添加到环境变量。

处理图片/视频可以用这个命令:

复制代码
ns-process-data {images, video} --data {DATA_PATH} --output-dir {PROCESSED_DATA_DIR}

DATA_PATH为数据路径,PROCESSED_DATA_DIR为输出路径,示例用法:

复制代码
ns-process-data video --data dataset/VID_20251208_095303.mp4 --output-dir data/room/

运行时遇到问题,输入的是 4164 帧视频,它默认提取了 321 帧,覆盖程度不足,COLMAP 只成功求出 3 张的相机位姿(0.93%)。

因此,尝试添加num-frames-target参数,要求它去抽取更多帧:

复制代码
ns-process-data video --data dataset/VID_20251208_095303.mp4 --output-dir data/room/ --num-frames-target 2082

结果依然不行,只有 886 张图片(21.32%)计算成功,覆盖率仍过低。

排查原因,视频是随手在房间里录制的,估计是白墙元素太多了,白墙的无效信息太多,对特征提取来说是灾难。

后面换用了一组室外拍摄的视频,仍然效果不好,用 nerfstudio 处理的效果不及预期,导致后面无法继续进行。

RealityScan转换

除了用 nerfstudio 去计算colmap之外,还可以用 RealityScan 去计算colmap,RealityScan 是 Epic 下面免费的闭源专业软件,算法成熟度会高于前者。

由于 RealityScan 不支持视频输入,可以先用 FFmpeg 将视频进行抽帧,下面的命令是按照 2 帧抽一帧的方式进行提取。

复制代码
ffmpeg -i input.mp4 -vf "select='not(mod(n\,2))',setpts=N/FRAME_RATE/TB" -vsync vfr images/frame_%04d.jpg

将图片导入 RealityScan,进行对齐,虽然 RealityScan 也没有完全把所有图像都算准,但大部分图像还是算对的。

导出colmap数据

得到 cameras.txt, images.txt, points3D.txt 三个文件。

ns-process-data 对文件的格式有严格要求,因此需要下面的命令,将 txt 转换成 bin 格式。

复制代码
colmap model_converter --input_path dataset/colmap_txt --output_path dataset/colmap_binary --output_type BIN

转换得到 cameras.bin, images.bin, points3D.bin。

此外还要导出相机的内外参的csv文件。

图像数据、colmap、内外参文件都准备好之后,就可以用ns去再转换成标准数据集:

复制代码
ns-process-data realitycapture --data dataset/images --csv dataset/camera.csv --output-dir data/room

数据训练

得到标准数据集之后,就可以参考上一篇文章的内容,配置 gsplat,用相同的方式的方式进行训练。

它的训练似乎和图片数量有关系,在2060显卡的电脑上,跑标准数据集没问题,但自己的数据集图片数量较多,跑了一会就爆显存。

查了一番,也没找到有效的调节方案,遂弃坑。

参考

1 https://docs.gsplat.studio/main

2 https://docs.nerf.studio

3 https://github.com/colmap/colmap/releases/tag/3.11.1

相关推荐
Ai-_Man3 分钟前
Coze扣子还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·1024程序员节
机器学习之心14 分钟前
基于贝叶斯物理信息神经网络的矿产预测与不确定性量化,MATLAB代码及复现报告
人工智能·神经网络·matlab·贝叶斯物理信息神经网络
weixin_4492293818 分钟前
Skill应用11:详细设计自动生成|强制“文字先行”,杜绝AI只堆代码不讲设计
人工智能·agent·架构设计·详细设计·trae·skill应用
AiNightVision18 分钟前
电力巡检夜视方案选型指南——无人机/机器人/固定监测三种场景怎么选
人工智能·科技·车载系统·机器人·无人机·边缘计算·视频
涛声依旧-底层原理研究所21 分钟前
拆解 AI Agent 的四个内核:Loop、Tools、Memory 与 Harness
人工智能·架构
田里的水稻29 分钟前
FA_CNN卷积神经网络十八---感知机到多层感知机PyTorch
人工智能·pytorch·python
irislinAmelia38 分钟前
汽车产线端侧AI视觉质检完整指南
人工智能·汽车
Highcharts.js41 分钟前
CSUN 2026|Highcharts无障碍数据与AI分享
javascript·人工智能·数据分析·highcharts·图表开发
J-JunLiang1 小时前
提示词修炼手册-04-让AI先想后说
人工智能·提示词工程·agent prompt·agent提问·提示词修炼手册
終不似少年遊*1 小时前
【Skill】为中型研发团队制作的敏捷迭代AI副驾Skill
人工智能·python·华为云·agent·ai编程·skill