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

3D Gaussian splatting 06: 代码阅读-训练参数

目录

  • 3D Gaussian splatting 01: 环境搭建
  • 3D Gaussian splatting 02: 快速评估
  • 3D Gaussian splatting 03: 用户数据训练和结果查看
  • 3D Gaussian splatting 04: 代码阅读-提取相机位姿和稀疏点云
  • 3D Gaussian splatting 05: 代码阅读-训练整体流程
  • 3D Gaussian splatting 06: 代码阅读-训练参数
  • 3D Gaussian splatting 07: 代码阅读-训练载入数据和保存结果
  • 3D Gaussian splatting 08: 代码阅读-渲染

训练参数

训练程序入参除了训练过程参数, 另外设置了ModelParams, OptimizationParams, PipelineParams三个参数组, 分别控制数据加载、渲染计算和优化训练环节, 这些参数类共同构成3D高斯渲染模型的核心配置. 在项目的 README.md 中有大部分参数的说明.

以下在注释中标出主要参数的含义

训练过程参数

    # Set up command line argument parserparser = ArgumentParser(description="Training script parameters")# 模型相关参数lp = ModelParams(parser)op = OptimizationParams(parser)pp = PipelineParams(parser)# 用于连接到训练过程的IPparser.add_argument('--ip', type=str, default="127.0.0.1")# 用于连接到训练过程的端口parser.add_argument('--port', type=int, default=6009)# 因为debug影响速度, 通过这个参数可以指定从哪个迭代开始启用 debug.parser.add_argument('--debug_from', type=int, default=-1)parser.add_argument('--detect_anomaly', action='store_true', default=False)# 在哪些迭代上, 对整个数据集计算 L1 和 PSNRparser.add_argument("--test_iterations", nargs="+", type=int, default=[7_000, 30_000])# 在哪些迭代上保存高斯模型parser.add_argument("--save_iterations", nargs="+", type=int, default=[7_000, 30_000])# 过程不往屏幕输出parser.add_argument("--quiet", action="store_true")# 不启动网络 GUI serverparser.add_argument('--disable_viewer', action='store_true', default=False)# 在哪些迭代上保存 checkpoint, 以便将来继续训练parser.add_argument("--checkpoint_iterations", nargs="+", type=int, default=[])# 指定保存了 checkpoint 的路径, 用于继续训练parser.add_argument("--start_checkpoint", type=str, default = None)args = parser.parse_args(sys.argv[1:])

模型参数

class ModelParams(ParamGroup): def __init__(self, parser, sentinel=False):# 球谐函数的最大阶数, 在创建 GaussianModel 时, 赋给 max_sh_degreeself.sh_degree = 3# 数据源路径, 即convert.py的工作目录, 目录下有提取相机位姿和稀疏点云后产生的 images, sparse 这些子目录self._source_path = ""# 模型保存路径, 为空时会在output目录下创建随机目录self._model_path = ""# 图像目录名self._images = "images"# 深度图目录self._depths = ""# 图像分辨率, 指定分辨率, 1:原始分辨率, 2:1/2, 4:1/4, 8:1/8self._resolution = -1# 是否使用白色背景self._white_background = False# 训练/测试实验标志self.train_test_exp = False# 指定存储图像数据的设备, 默认是cuda, 但是如果图像数据较多, 分辨率高, 改成cpu可以节省VRAM消耗, 相应的会影响训练速度self.data_device = "cuda"# 评估模式标志self.eval = Falsesuper().__init__(parser, "Loading Parameters", sentinel)

渲染管线参数

class PipelineParams(ParamGroup):def __init__(self, parser):# 使用 Pytorch (而不是项目定义的前向和后向传播函数) 处理球谐函数self.convert_SHs_python = False# 使用 Pytorch (而不是项目定义的前向和后向传播函数) 计算3D协方差self.compute_cov3D_python = False# 调试模式, 当 rasterizer 失败时会生成 dump 文件.self.debug = False# 抗锯齿开关self.antialiasing = Falsesuper().__init__(parser, "Pipeline Parameters")

训练过程优化参数

class OptimizationParams(ParamGroup):def __init__(self, parser):# 总迭代次数, 默认30000self.iterations = 30_000# 3D位置学习率初始值self.position_lr_init = 0.00016# 3D位置学习率最终值self.position_lr_final = 0.0000016# 位置学习率乘数self.position_lr_delay_mult = 0.01# 3D位置学习率从 initial 衰减至 final 所需的步数(从0开始), 默认 30000self.position_lr_max_steps = 30_000# 球谐特征量学习率self.feature_lr = 0.0025# 透明度学习率self.opacity_lr = 0.025# 缩放参数学习率self.scaling_lr = 0.005# 旋转参数学习率self.rotation_lr = 0.001# 曝光度参数学习率初始值, 最终值, 步数等self.exposure_lr_init = 0.01self.exposure_lr_final = 0.001self.exposure_lr_delay_steps = 0self.exposure_lr_delay_mult = 0.0# 触发强制增密的场景空间占比阈值(范围0到1), 默认 0.01self.percent_dense = 0.01# SSIM在总损失函数中的权重系数self.lambda_dssim = 0.2# 点云密集化的执行间隔, 默认每100次迭代执行一次self.densification_interval = 100# 不透明度重置频率self.opacity_reset_interval = 3000# 开始执行点云密集化的迭代次数self.densify_from_iter = 500# 停止执行点云密集化的迭代次数self.densify_until_iter = 15_000# 基于2D位置梯度判断是否增密点的阈值self.densify_grad_threshold = 0.0002self.depth_l1_weight_init = 1.0self.depth_l1_weight_final = 0.01# 随机背景self.random_background = False# 优化器类型self.optimizer_type = "default"super().__init__(parser, "Optimization Parameters")

相关文章:

  • AI视频工具和推荐
  • Linux系统配置网络优先级
  • NodeJS全栈开发面试题讲解——P6安全与鉴权
  • Android studio进阶开发(七)---做一个完整的登录系统(前后端连接)
  • 论文阅读笔记——Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset
  • vscode实用配置
  • 基于SpringBoot+Redis实现RabbitMQ幂等性设计,解决MQ重复消费问题
  • 获取 HTTP 请求从发送到接收响应所花费的总时间
  • GpuGeek如何成为AI基础设施市场的中坚力量
  • uni-app学习笔记二十一--pages.json中tabBar设置底部菜单项和图标
  • 组件化:软件工程化的基础
  • 工作流引擎-11-开源 BPM 项目 jbpm
  • Spring Boot对一些技术框架进行了统一版本号管理
  • 【AI面试秘籍】| 第25期:RAG的关键痛点及解决方案深度解析
  • 「数据采集与网络爬虫(使用Python工具)」【数据分析全栈攻略:爬虫+处理+可视化+报告】
  • 【前端】Vue中使用CKeditor作为富文本编辑器
  • [网页五子棋][对战模块]处理连接成功,通知玩家就绪,逻辑问题(线程安全,先手判定错误)
  • [Windows]在Win上安装bash和zsh - 一个脚本搞定
  • openssl 怎么生成吊销列表
  • Docker容器创建Redis主从集群
  • 包小盒设计网站/百度查重免费入口
  • 怎么查询企业邮箱/怎么做网站优化排名
  • 网站建设实训小组总结/全网搜索
  • 长治网站设计/网络营销学院
  • 怎么自己做微网站吗/上海网站seo策划
  • 潮州南桥市场中国建设银行网站/深圳网络推广大师