网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 其他技术区 > 计算机图形学 >

3D Gaussian splatting 02: 快速评估

时间:2025-05-30 18:40

人气:

作者:admin

标签:

导读:以下使用 Inria 提供的数据集运行训练过程, 验证和评估重建效果, 数据输入是一组静态场景的图像以及摄像机位置, 表示为稀疏的点云, 通过colmap处理得到....

以下使用 Inria 提供的数据集运行训练过程, 验证和评估重建效果, 数据输入是一组静态场景的图像以及摄像机位置, 表示为稀疏的点云, 通过colmap处理得到.

下载示例数据

在项目 GitHub 仓库 的首页找到 Running 部分, 能找到这个下载链接

You can find our SfM data sets for Tanks&Temples and Deep Blending here: https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/datasets/input/tandt_db.zip If you do not provide an output model directory (-m), trained models are written to folders with randomized unique names inside the output directory. At this point, the trained models may be viewed with the real-time viewer (see further below).

下载 tandt_db.zip 到本地并解压缩. 这个数据集里面带了4个场景, 两个室内的, 两个室外的, 都是两三百张图片, 图片比较小, 单图几百K到几千K, 适合验证测试.

每一个数据集, 都会包含一系列的目录和文件, 其中input是原始图片输入, images 和 sparse 目录是下一步训练要用到的文件.

训练

用 conda 启用之前创建的 3dgs 环境, 然后在项目目录下执行

python train.py -s [素材路径]
# 例如
python train.py -s ./data/tandt/truck

如果要进行评估, 训练时需要增加--eval参数

python train.py -s ./data/tandt/truck --eval

执行过程中可以通过 nvidia-smi 和 nvtop 查看GPU的情况, 可以看到运行的功率, 显存的使用率, 推荐使用 nvtop, 可以实时监控. 训练时间根据显卡不同, 从十几分钟到一个多小时都有可能. 训练的输出目录在 output 目录下, 每次训练都会随机产生一个目录名, 可以通过创建时间辨别.

在结果目录中可以看到两个目录, iteration_7000 和 iteration_30000, 分别是迭代7000次和30000次的 point cloud 文件. 这个文件可以直接用于3D渲染.

一般来讲, 迭代7000次之后的效果就已经接近最终效果, 而30000次迭代的训练时间是7000次迭代的5-6倍, 如果想快速评估模型结果, 训练时可以加上--iterations 7000参数让其在7000次迭代后结束.

查看

快速查看可以用第三方的网页工具, 例如 https://poly.cam/tools/gaussian-splatting, 可以注册后免费上传 ply 文件.

评估

用带--eval训练的模型结果, 分别对训练使用的镜头进行渲染, 需要指定训练结果路径(在output下的随机目录名), 以及训练的输入数据

python render.py -m [训练结果路径] -s [素材路径]

例如

python render.py -m ./output/89ea0caf-3 -s ./data/tandt/truck

会在训练结果目录下创建 train 和 test 两个目录, 分别对应训练数据和测试数据, 每一组数据分 gt 和 renders 两个目录, 分别是素材原图和渲染结果图.

在渲染完成后, 计算渲染结果和原图的 SSIM, PSNR 和 LPIPS

python metrics.py -m [训练结果路径]

例如

python metrics.py -m ./output/89ea0caf-3

如果训练时没有指定 --eval参数, 也没有人工区分训练集和测试集, render.py 产生的 test 目录是空的, 执行上面的命令会产生空结果.

Scene: ./output/89ea0caf-3
Method: ours_30000
Metric evaluation progress:   0%|                                      | 0/106 [00:00<?, ?it/s]Downloading: "https://raw.githubusercontent.com/richzhang/PerceptualSimilarity/master/lpips/weights/v0.1/vgg.pth" to /home/milton/.cache/torch/hub/checkpoints/vgg.pth
100%|█████████████████████████████████████████████████████| 7.12k/7.12k [00:00<00:00, 9.46MB/s]
Metric evaluation progress: 100%|████████████████████████████| 106/106 [02:31<00:00,  1.43s/it]
  SSIM :    0.9513068
  PSNR :   31.6362495
  LPIPS:    0.0676759

optimizer_type 训练加速

这个功能是 2024年7月在核心模块 diff-gaussian-rasterization 的 3dgs_accel 分支加入的.

默认的导出不带这个选项, 要启用此选项, 需要将之前安装的 submodules/diff-gaussian-rasterization 模块删除,

pip uninstall diff_gaussian_rasterization

将模块切换到 3dgs_accel 分支后重新 pip install,

$ cd submodules/diff-gaussian-rasterization/
$ git branch -a
* (HEAD detached at 9c5c202)
  main
  remotes/origin/3dgs_accel
  remotes/origin/HEAD -> origin/main
  remotes/origin/debug
  remotes/origin/dr_aa
  remotes/origin/fast_culling
  remotes/origin/main
$ git checkout -b 3dgs_accel origin/3dgs_accel
$ cd ../..
$ pip install submodules/diff-gaussian-rasterization/

而后在训练时, 可以使用参数 --optimizer_type, 可以指定default, sparse_adam两种加速方式

python train.py -s /home/milton/WorkPython/data2/ --optimizer_type sparse_adam
  • 4060Ti显卡, 使用sparse_adam参数实测速度提升明显, 训练时间只有未开启加速的一半. 从显卡功耗看, 比未开启加速功耗增加20%.
  • P104-100显卡, 使用sparse_adam参数实测速度无明显提升, 显卡功耗无明显变化.

猜测这个加速会充分利用GPU的并行处理, 会增加GPU功耗, 4060Ti在正常模式下温度仅到63度, 而P104-100在非加速情况下温度83度已经达到温度墙, 功率受到限制, 因此没有提升.

antialiasing: 抗锯齿

--antialiasing抗锯齿选项是 2024年8月在核心模块 diff-gaussian-rasterization 的 dr_aa 分支加入的. 来源于 mip-splatting 项目.

这个参数可以作用于训练和查看, 实测在训练中使用这个参数后效果反而变差, 边缘尖刺增加. 在SIBR Viewer中查看时, 勾选此参数可以改善远景的图像质量.

显卡温度过高

长时间运行时, 建议控制显卡GPU温度在75摄氏度以下. 如果在nvtop中温度超过75, 需要使用 nvidia-smi 限制显卡频率以降低功率.

通过 nvidia-smi 查看 GPU 温度设置

nvidia-smi -q -d temperature

输出为

Attached GPUs                             : 1
GPU 00000000:01:00.0
    Temperature
        GPU Current Temp                  : 35 C
        GPU T.Limit Temp                  : N/A
        GPU Shutdown Temp                 : 96 C
        GPU Slowdown Temp                 : 93 C
        GPU Max Operating Temp            : N/A
        GPU Target Temperature            : 83 C
        Memory Current Temp               : N/A
        Memory Max Operating Temp         : N/A

默认的 Target Temp 是 83, 设置 Target Temp 的命令是 sudo nvidia-smi -gtt [温度]. 在散热不佳 GPU 温度过高时, 执行这个命令可以立即观察到频率的下降, 可以用这个命令给GPU降温.

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信