Configuration Files in Pointrix#

Common configurations in Pointrix include:

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

Configuration Files in Pointrix#

In Pointrix, common configurations include:

We can see that the Pointrix trainer consists of model, controller, optimizer, scheduler, datapipeline, writer, hooks, exporter. In daily tasks, we only need to adjust parameters in the configuration to accomplish different tasks.

trainer#

  • output_path: Path to save logs and checkpoints.

  • max_steps: Maximum number of steps during training.

  • val_interval: Interval for validation.

  • training: Whether to train; if set to false, optimizer and scheduler won’t be loaded.

  • device: Global device setting in Pointrix.

model#

  • name: Name of the model, looked up in the registry.

  • lambda_dssim: Weight of SSIM loss.

  • point_cloud

    • point_cloud_type: Type of point cloud, ‘GaussianPointCloud’ for Gaussian Splatting method.

    • max_sh_degree: Maximum SH order in Pointrix.

    • trainable: Whether the point cloud model is trainable.

    • unwarp_prefix: Prefix used to distinguish different point cloud groups in the optimizer; only relevant if multiple point clouds are required.

    • initializer

      • init_type: Initialization method for point cloud, including ‘colmap’ and ‘random’.

      • feat_dim: Feature dimension for rendering RGB point clouds.

  • camera_model

    • enable_training: Whether to enable camera optimization.

  • renderer

    • name: msplat or original Gaussian kernel, indexed by registry.

    • max_sh_degree: Maximum SH order.

    • render_depth: Whether render depth

controller#

  • control_module: Name of variables to be densified.

  • percent_dense: Percentage of scene range (0-1); controller is enforced if exceeded.

  • split_num: Number of splits when performing segmentation on point clouds.

  • densify_start_iter: Iteration to start controller.

  • densify_stop_iter: Iteration to stop controller.

  • prune_interval: Pruning frequency.

  • duplicate_interval: Duplication frequency.

  • opacity_reset_interval: Frequency to reset opacity.

  • densify_grad_threshold: Threshold based on 2D position gradient to determine if points should be densified.

  • min_opacity: Minimum opacity used in pruning operations.

optimizer#

  • optimizer_x: X-th optimizer; you can add any number of optimizers, which Pointrix will handle automatically.

    • type: Type of optimizer, indexed by registry.

    • name: Name of the optimizer.

    • params:Names of parameters that need optimization and their corresponding learning rates. Pointrix will automatically parse them. If you have added any learnable parameters on top of the Basemodel, please include them in this configuration.

    • camera_params: Camera parameters

      • lr: Learning rate for camera parameters, applicable if camera_model.enable_training == True.

scheduler#

  • name: Name of scheduler, indexed by registry.

  • max_steps: Maximum steps in the scheduler.

  • params: Parameters handled by the scheduler.

dataset#

  • data_path: Path to the dataset.

  • data_set: Type of dataset, indexed by registry.

  • shuffle: Whether to shuffle data.

  • batch_size: Batch size.

  • num_workers: num_workers in the dataloader.

  • dataset

    • cached_metadata: Whether to load data with cached metadata.

    • scale: Image scale size.

    • white_bg: Whether to use a white background.

writer#

  • writer_type: Tensorboard or Wandb.

hook#

  • LogHook

  • CheckPointHook

exporter#

  • exporter_x: x-th exporter in pointrix

    • type: Type of exporter, indexed by registry.