Pointrix 中的配置文件#
Pointrix中常见的配置包括:
name: "garden"
trainer:
output_path: "/home/linzhuo/clz/log/garden"
max_steps: 30000
val_interval: 5000
training: True
model:
name: BaseModel
lambda_ssim: 0.2
point_cloud:
point_cloud_type: "GaussianPointCloud"
max_sh_degree: 3
trainable: true
unwarp_prefix: "point_cloud"
initializer:
init_type: 'colmap'
feat_dim: 3
camera_model:
enable_training: False
renderer:
name: "MsplatRender"
render_depth: False
max_sh_degree: ${trainer.model.point_cloud.max_sh_degree}
controller:
normalize_grad: False
control_module: "point_cloud"
split_num: 2
prune_interval: 100
min_opacity: 0.005
percent_dense: 0.01
densify_grad_threshold: 0.0002
duplicate_interval: 100
densify_start_iter: 500
densify_stop_iter: 15000
opacity_reset_interval: 3000
optimizer_name: "optimizer_1"
optimizer:
optimizer_1:
type: BaseOptimizer
name: Adam
args:
eps: 1e-15
extra_cfg:
backward: False
params:
point_cloud.position:
lr: 0.00016
point_cloud.features:
lr: 0.0025
point_cloud.features_rest:
lr: 0.000125 # features/20
point_cloud.scaling:
lr: 0.005
point_cloud.rotation:
lr: 0.001
point_cloud.opacity:
lr: 0.05
# camera_params:
# lr: 1e-3
scheduler:
name: "ExponLRScheduler"
params:
point_cloud.position:
init: 0.00016
final: 0.0000016
max_steps: ${trainer.max_steps}
datapipeline:
data_set: "ColmapDataset"
shuffle: True
batch_size: 1
num_workers: 0
dataset:
data_path: "/home/linzhuo/gj/data/garden"
cached_observed_data: True
scale: 0.25
white_bg: False
writer:
writer_type: "TensorboardWriter"
hooks:
LogHook:
name: LogHook
CheckPointHook:
name: CheckPointHook
exporter:
exporter_1:
type: MetricExporter
exporter_2:
type: TSDFFusion
extra_cfg:
voxel_size: 0.02
sdf_truc: 0.08
total_points: 8_000_000
exporter_3:
type: VideoExporter
我们可以看到,Pointrix 的trainer 由 model, controller, optimizer, scheduler, datapipeline, writer, hooks, exporter 组成。 在日常需求中,我们只需要调整配置中的参数即可完成不同的任务。
trainer#
output_path: 保存日志和检查点的路径。
max_steps: 训练中的最大步数。
val_interval: 验证间隔。
training: 是否训练,如果不进行训练,则不会加载优化器和调度器。
device: Pointrix中的全局设备。
model#
name: 模型的名称,将由注册表查找。
lambda_dssim: SSIM损失的权重。
point_cloud
point_cloud_type: 点云的类型,’GaussianPointCloud’用于基于Gaussian Splatting的方法。
max_sh_degree: Pointrix中的最大SH阶数。
trainable: 点云模型是否可训练。
unwarp_prefix: 用于区分优化器中不同点云组的前缀,除非有多个点云的需求,否则不需要关心。
initializer
init_type: 点云的初始化方法,包括’colmap’和’random’。
feat_dim: 用于渲染RGB的点云的特征维度。
camera_model
enable_training: 是否开启相机优化
controller#
control_module: 需要稠密化的变量名称。
percent_dense: 场景范围的百分比(0-1),必须超过该百分比才能进行强制稠密化。
split_num: 执行分割操作时点云的分割数量。
densify_start_iter: 开始稠密化的迭代次数。
densify_stop_iter: 停止稠密化的迭代次数。
prune_interval: 剪枝频率。
duplicate_interval: 复制频率。
opacity_reset_interval: 重置不透明度的频率。
densify_grad_threshold: 基于 2D 位置梯度决定是否应稠密化点的阈值。
min_opacity: 剪枝操作中将使用的最小不透明度。
Warning
如果您在Basemodel 基础上新加入了可学习的参数(例如卷积网络或者MLP),请在optimizer配置中添加对应的可学习的参数,这样新参数才会优化。
optimizer#
optimizer_x: 第 x 个优化器,您可以添加任意数量的优化器,Pointrix 将自动处理它们。
type: 优化器的类型,由注册器索引。
name: 优化器的名称。
params:需要优化的参数名称以及对应的学习率。Pointrix将自动解析。如果您在Basemodel 基础上新加入了可学习的参数,请在这个配置中添加。
camera_params: 相机参数
lr: 相机参数的学习率,需要camera_model.enable_training==True
scheduler#
name: 调度器的名称,由注册器索引
max_steps: 调度器中的最大步数。
params: 调度器处理的参数。
dataset#
data_path: 数据集的路径
data_set: 数据集的类型,由注册器索引。
shuffle: 是否随机打乱数据
batch_size: 批处理大小
num_workers: dataloader 中的num_workers
dataset
cached_metadata: 是否引入缓存加载数据
scale: 图片尺度大小
white_bg: 是否白色背景
renderer#
name: MSplat, GSplat 或原始高斯核,将由注册表找到。
max_sh_degree: 最大的 sh 阶数。
writer#
writer_type: Tensorboard 或 Wandb
hook#
LogHook
CheckPointHook
exporter#
exporter_x: Pointrix 中第x个 exporter
type: exporter的类型, 由registry 找到