ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

gsplat 评测完全指南:在 Mip-NeRF 360 上复现 3DGS/2DGS 基准指标与特性消融实验

gsplat 评测完全指南:在 Mip-NeRF 360 上复现 3DGS/2DGS 基准指标与特性消融实验 gsplat 评测完全指南在 Mip-NeRF 360 上复现 3DGS/2DGS 基准指标与特性消融实验【免费下载链接】gsplatCUDA accelerated rasterization of gaussian splatting项目地址: https://gitcode.com/GitHub_Trending/gs/gsplat本文基于 gsplat 仓库中的官方评测文档 eval.rst系统讲解 gsplat 在 Mip-NeRF 360 数据集上对 3D Gaussian Splatting3DGS与 2D Gaussian Splatting2DGS的评测方法如何复现官方基准数字、每个评测指标如何实现、absgrad/mcmc/antialiased等特性的消融实验如何配置以及如何解读训练显存与时间的逐项对比数据。读完后可独立跑通仓库自带的 benchmark 脚本并理解结果表中每一列数字的来源与适用前提。评测设置数据集、指标与硬件前提评测在Mip-NeRF 360数据集的 7 个场景上进行garden、bicycle、stump、bonsai、counter、kitchen、room。表格中的主指标是 7 场景的平均值同时文档给出了逐场景的细表。评测指标有三项均为渲染出的验证集图像与 GT 图像计算指标含义方向PSNR峰值信噪比越高越好SSIM结构相似性越高越好LPIPS学习感知图像块相似度越低越好这里有一个必须注意的实现细节文档明确说明LPIPS 使用from torchmetrics.image.lpip import LearnedPerceptualImagePatchSimilarity计算而原始 3DGS 论文使用的是from lpipsPyTorch import lpips两者数值口径不同因此不能把本文表中的 LPIPS 与论文数字直接对齐。这一点可以从源码中得到印证。3DGS 训练脚本 examples/simple_trainer.py 中PSNR/SSIM 来自 torchmetricsLPIPS 则按配置选择骨干网络默认alex# examples/simple_trainer.py L605-L619 self.ssim StructuralSimilarityIndexMeasure(data_range1.0).to(self.device) self.psnr PeakSignalNoiseRatio(data_range1.0).to(self.device) if cfg.lpips_net alex: self.lpips LearnedPerceptualImagePatchSimilarity( net_typealex, normalizeTrue ).to(self.device) elif cfg.lpips_net vgg: # The 3DGS official repo uses lpips vgg, which is equivalent with the following: self.lpips LearnedPerceptualImagePatchSimilarity( net_typevgg, normalizeFalse ).to(self.device)对应配置项为 simple_trainer.py#L257 的lpips_net: Literal[vgg, alex] alex。2DGS 训练脚本 examples/simple_trainer_2dgs.py 同样使用LearnedPerceptualImagePatchSimilarity(normalizeTrue)见 simple_trainer_2dgs.py#L411。硬件前提3DGS 评测在 NVIDIA TITAN RTX24GB上进行2DGS 评测在 NVIDIA RTX 4090 上进行特性消融结果是在 A100 上得到的。显存与时间数字对硬件敏感跨硬件复现时预期会有差异。3DGS 主结果与官方实现同精度、更省显存官方文档给出的 3DGS 主对比表Mip-NeRF 3607 场景平均如下配置PSNRSSIMLPIPS训练显存训练时间inria-7k27.230.8290.2047.7 GB6m05sgsplat-7k27.210.8310.2024.3 GB5m35sinria-30k28.950.8700.1389.0 GB37m13sgsplat-30k1 GPU28.950.8700.1355.7 GB35m49sgsplat-30k4 GPU28.910.8710.1352.0 GB11m28sinria-7k/30k指官方 Gaussian Splatting 实现INRIA 版diff-gaussian-rasterization分别训练 7000 / 30000 步的结果gsplat-7k/30k指用仓库自带的独立脚本 examples/simple_trainer.pydefault预设训练的结果。文档的结论是gsplat 在 PSNR、SSIM、LPIPS 和收敛后的高斯数量上与官方实现完全一致同时得益于高效 CUDA 实现最高可比官方实现少用约 4 倍 GPU 显存、少约 15% 的训练时间。30k 步的 4 GPU 版本将单卡显存压到 2.0 GB、训练时间压缩到 11 分 28 秒。逐场景显存与训练时间训练显存 (GB)BicycleBonsaiCounterGardenKitchenRoomStumpinria-7k7.867.616.478.998.087.887.23gsplat-7k6.102.201.937.572.892.046.25inria-30k11.567.706.7311.048.338.508.82gsplat-30k10.582.292.239.883.172.798.10训练时间 (s)BicycleBonsaiCounterGardenKitchenRoomStumpinria-7k336340364427436336321gsplat-7k319299318415389301304inria-30k2980155217253092214417732366gsplat-30k2964142216213013202017082299可以观察到显存优势在简单场景Bonsai、Counter、Kitchen、Room上最明显而在 Garden 这类高斯数量庞大的场景中两边显存接近这与显存主要由活跃高斯数量决定的直观理解一致。逐场景复现指标以下四张表是 3DGS 评测的完整原始数据用于核验平均值PSNRBicycleBonsaiCounterGardenKitchenRoomStumpinria-7k23.5929.7527.2126.1329.0229.2625.64gsplat-7k23.7129.6627.1426.3028.8629.2125.62inria-30k25.1932.2129.0227.2931.0731.3126.56gsplat-30k25.2232.0629.0227.3231.1631.3626.53SSIMBicycleBonsaiCounterGardenKitchenRoomStumpinria-7k0.6620.9210.8770.8240.9020.8930.721gsplat-7k0.6680.9220.8780.8330.9020.8930.720inria-30k0.7630.9410.9060.8630.9250.9180.771gsplat-30k0.7640.9410.9070.8650.9260.9180.768LPIPSBicycleBonsaiCounterGardenKitchenRoomStumpinria-7k0.3290.1640.2070.1300.1250.2190.254gsplat-7k0.3240.1620.2060.1230.1270.2170.253inria-30k0.1770.1330.1570.0780.0960.1680.155gsplat-30k0.1720.1320.1540.0750.0940.1640.153高斯数量BicycleBonsaiCounterGardenKitchenRoomStumpinria-7k3.57M1.16M1.01M4.33M1.63M1.11M3.75Mgsplat-7k3.62M1.17M1.02M4.48M1.63M1.11M3.71Minria-30k6.06M1.24M1.19M5.71M1.78M1.55M4.82Mgsplat-30k6.26M1.25M1.21M5.84M1.79M1.59M4.81M高斯数量一栏验证了两边收敛到的模型规模一致差异在 1% 以内说明两边实现走的是相同的 densification 收敛路径。复现命令与 benchmark 脚本剖析文档给出的复现入口是在 gsplat 仓库内文档标注基于 commit 6acdce4cd examples bash benchmarks/basic.sh脚本 examples/benchmarks/basic.sh 的完整逻辑值得逐段看它也是理解整套评测口径的关键SCENE_LISTgarden bicycle stump bonsai counter kitchen room # treehill flowers RENDER_TRAJ_PATHellipse for SCENE in $SCENE_LIST; do if [ $SCENE bonsai ] || [ $SCENE counter ] || [ $SCENE kitchen ] || [ $SCENE room ]; then DATA_FACTOR2 else DATA_FACTOR4 fi # 阶段一训练不做中途 eval--eval_steps -1 禁用中间评估 CUDA_VISIBLE_DEVICES0 python $EXAMPLES_DIR/simple_trainer.py default \ --eval_steps -1 --disable_viewer --data_factor $DATA_FACTOR \ --render_traj_path $RENDER_TRAJ_PATH \ --data_dir data/360_v2/$SCENE/ \ --result_dir $RESULT_DIR/$SCENE/ # 阶段二对保存的每个 ckpt 单独跑 eval 与渲染 for CKPT in $RESULT_DIR/$SCENE/ckpts/*; do CUDA_VISIBLE_DEVICES0 python $EXAMPLES_DIR/simple_trainer.py default \ --disable_viewer --data_factor $DATA_FACTOR \ --render_traj_path $RENDER_TRAJ_PATH \ --data_dir data/360_v2/$SCENE/ \ --result_dir $RESULT_DIR/$SCENE/ \ --ckpt $CKPT done done几个关键口径数据降采样--data_factorbonsai/counter/kitchen/room四个场景用 2 倍降采样其余用 4 倍。这是官方评测协议的设定复现时必须保持一致否则显存与时间数字会整体漂移。数据放在data/360_v2/scene/仓库提供了 examples/datasets/download_dataset.py 辅助下载数据集。训练与评估两阶段分离先用--eval_steps -1训练到底simple_trainer.py的default预设max_steps为 300007k 版本通过--steps_scaler类机制截断再加载results/benchmark/scene/ckpts/下的检查点单独评估。最终指标写入results/benchmark/scene/stats/val*.json验证集与train*_rank0.json训练曲线脚本末尾统一打印。--disable_viewer评测跑在无人值守环境下禁用 viser 交互查看器。--render_traj_path ellipse评估视频沿椭圆轨迹渲染Mip-NeRF 360 需要环绕轨迹。default预设对应的训练配置全部由 simple_trainer.py 中的Configdataclass 定义与 3DGS 论文一致的核心默认值包括max_steps30_000、sh_degree3、ssim_lambda0.2、eval_steps[7_000, 30_000]、save_steps[7_000, 30_000]densification 策略默认为DefaultStrategy对应 3DGS 论文的 clone/split 规则。而inria-X一列则由官方实现的评测入口full_eval_m360.py产生文档标注基于其 fork 的 benchmark 分支commit 36546ce。特性消融absgrad、antialiased 与 MCMC 致密化gsplat 在 3DGS 基础之上提供了几种可选特性。官方消融实验在 Mip-NeRF 3607 场景平均A100上量化了它们的效果absgrad使用--grow_grad2d 0.0006配置配置PSNRSSIMLPIPS高斯数量显存 (GB)时间 (min)gsplat默认设置29.000.870.1432373185.6219.39absgrad29.110.880.1224659864.4018.10antialiased29.030.870.1433778075.8719.52mcmc1 mill29.180.870.1410000001.9815.42mcmc2 mill29.530.880.1320000003.4321.79mcmc3 mill29.650.890.1230000004.9927.63absgrad antialiased29.140.880.1325631564.5718.43mcmc antialiased29.230.870.1410000002.0015.75从源码看这三个特性的具体实现位置absgrad由 densification 策略携带默认策略为DefaultStrategy。训练时 simple_trainer.py#L733-L737 将self.cfg.strategy.absgrad透传给rasterization()仅在策略为DefaultStrategy时生效使 2D 投影梯度的生长判据取绝对值累加减少因正负梯度抵消导致的漏分裂。消融表中它把高斯数量从 324 万降到 247 万、显存从 5.62 GB 降到 4.40 GB同时 PSNR 还提高了 0.11。antialiased配置项antialiased: bool Falsesimple_trainer.py#L189生效时把光栅化模式切换为 antialiasedsimple_trainer.py#L691-L692rasterize_mode antialiased if self.cfg.antialiased else classic即在光栅化时按 Mip-NeRF 思想对各向异性协方差做抗混叠调整。代价是注释中提示可能略微拉低定量指标消融表显示其本身对指标影响很小0.03 PSNR。mcmc切换为MCMCStrategy通过mcmc子命令 --strategy.cap-max控制高斯数上限1/2/3 mill 即 100 万/200 万/300 万。仓库中 examples/benchmarks/mcmc.sh 就是 1M 版本的评测脚本核心调用为python simple_trainer.py mcmc --eval_steps -1 --disable_viewer \ --data_factor $DATA_FACTOR --strategy.cap-max 1000000 \ --render_traj_path ellipse --data_dir data/360_v2/$SCENE/ ...MCMC 策略用复活/重定位替代无限增长的 clone/split把高斯总数钉死在cap_max上因此显存与上限严格线性相关表中 1M/2M/3M 对应 1.98/3.43/4.99 GB是大规模场景下最省显存的路线。消融结论可以概括为absgrad是免费的精度、显存、时间全面更优mcmc在压低高斯预算时精度损失很小且显存收益最大antialiased主要面向视觉质量而非基准数字。2DGS 评测2D Gaussian Splatting 使用独立训练脚本 examples/simple_trainer_2dgs.py 与独立评测脚本 examples/benchmarks/basic_2dgs.sh 评测复现命令文档标注基于 commit 48abf70cd examples bash benchmarks/basic_2dgs.sh该脚本与basic.sh结构一致7 场景、同样的DATA_FACTOR2/4降采样规则区别在于调用的是simple_trainer_2dgs.py并固定--model_type 2dgs结果目录为results/benchmark_2dgs/scene/。无正则项Mip-NeRF 3607 场景平均配置PSNRSSIMLPIPS训练显存训练时间inria-30k28.730.8600.1483.73 GB22m16sgsplat-30k28.760.8670.1453.70 GB15m44s开启法向一致性与 distortion 正则配置PSNRSSIMLPIPS训练显存训练时间inria-30k28.050.8480.1863.76 GB22m06sgsplat-30k27.800.8420.1693.61 GB16m44s可以看到开启 2DGS 论文推荐的正则项后两边指标都下降正则约束了表面拟合但 gsplat 仍保持约 40% 的训练时间优势感知指标 LPIPS 的差距明显小于 PSNR 差距。逐场景显存、时间与指标训练显存 (GB)BicycleBonsaiCounterGardenKitchenRoomStumpinria-30k6.742.272.064.792.252.405.58gsplat-30k6.892.191.934.482.142.306.00训练时间 (s)BicycleBonsaiCounterGardenKitchenRoomStumpinria-30k1463123713181298142213141252gsplat-30k12317888039858287891057PSNRBicycleBonsaiCounterGardenKitchenRoomStumpinria-30k24.9231.8728.7826.8831.0831.2126.36gsplat-30k24.9731.9428.7626.9531.0831.2726.37SSIMBicycleBonsaiCounterGardenKitchenRoomStumpinria-30k0.7410.9370.8990.8470.9210.9140.760gsplat-30k0.7640.9370.8990.8490.9210.9150.761LPIPSBicycleBonsaiCounterGardenKitchenRoomStumpinria-30k0.1990.1360.1640.0930.1010.1720.168gsplat-30k0.1890.1340.1620.0910.1010.1690.166高斯数量BicycleBonsaiCounterGardenKitchenRoomStumpinria-30k3.97M0.91M0.72M2.79M0.85M1.01M3.27Mgsplat-30k3.88M0.92M0.73M2.49M0.87M1.03M3.40Minria-X2DGS一列来自 2DGS 官方实现diff-surfel-rasterization 仓库的 fork文档说明需把basic_2dgs.sh中的--model_type 2dgs改为--model_type 2dgs-inria后运行同一脚本即可获得官方实现的数字文档标注基于 commit 28c928a这个开关让同一套 benchmark 脚本同时驱动两套实现保证了评测条件严格对齐。实操注意事项与结果解读LPIPS 口径差异本评测所有 LPIPS 都由torchmetrics.image.lpip.LearnedPerceptualImagePatchSimilarity计算与 3DGS 论文所用lpipsPyTorch不同跨论文对比 LPIPS 时先确认实现。gsplat 侧可通过--lpips_net vgg切换到 VGG 骨干以贴近官方 3DGS 仓库口径见 simple_trainer.py#L609-L619。降采样因子决定一切资源数字--data_factor直接改变训练分辨率2 倍与 4 倍场景的分组必须与脚本一致显存/时间数字才可比。显存口径显存为训练峰值占用逐场景差异由该场景最终高斯数量主导如 Garden 在 3DGS 中约 450–580 万高斯是 Garden 显存远高于 Bonsai 的原因。多 GPU3DGS 主表中的 4 GPU 行对应多进程训练CUDA_VISIBLE_DEVICES0,1,2,3 分布式后端单卡显存 2.0 GB、总时间 11m28s单卡 30k 训练则需 5.7 GB。提交基线文档标注的复现 commit3DGS 6acdce4、2DGS 48abf70与仓库当前 HEAD 可能存在默认配置演进复现数字偏差时建议先对齐相应 commit再逐项核对data_factor、max_steps与data_factor场景分组。与 profiling 的关系本文表格是端到端训练评测若只想对比光栅化内核本身的内存/吞吐packed、sparse_grad等参数仓库另有 profiling/main.py 与文档 profile.rst两者互补不要混用。总结这套评测文档的价值在于给出了可逐位复现的完整链路——固定数据集分组与降采样规则、训练/评估两阶段分离、指标实现落到具体 torchmetrics 类、命令直接对应仓库内脚本basic.sh、basic_2dgs.sh、mcmc.sh。理解并跑通这条链路后无论是引用文档中的基准数字还是为 gsplat 新特性建立自己的消融表都有了一致且可核验的方法论基础。【免费下载链接】gsplatCUDA accelerated rasterization of gaussian splatting项目地址: https://gitcode.com/GitHub_Trending/gs/gsplat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表