Customize NuRec Configuration#
When you run NuRec, you must pass a configuration (defined in a YAML file) that sets the training paramters for NuRec. To define the configuration, use the --config-name flag when you launch the NuRec container, in the following format:
--config-name=<path/to/config.yaml>
Use Predefined Base Configuration Files#
The following predefined configuration files exist in the NuRec container, for ease of use:
Configuration File Name |
Description |
Flag |
|---|---|---|
|
Base configuration for dynamic 3DGUt scenes with moving objects |
|
|
Dynamic 3DGUt with road semantic segmentation support |
|
|
Base configuration for static 3DGUt scenes |
|
|
Static 3DGUt with road semantic segmentation support |
|
Override Individual Configuration Parameters#
You might want to pass a configuration file, but change specific configuration parameters based on your particular training needs. You can override any configuration parameter defined in your configuration file. To override specific configuration paramaters, pass individual flags for each override when you launch NuRec from the command line.
For example, if you passed a configuration file named basic-config.yaml that contained a parameter called mystrust set to myparam:0, you could override that parameter using the --mystruct.myparam=42 flag.
We recommend the following overrides and corresponding use cases.
Set Up the Training Config#
dataset:
n_samples_per_epoch: 30000
seek_offset_sec: 0.0
duration_sec: 2.0
camera_ids:
camera_ids:
lidar_ids:
train_camera_ids:
train_lidar_ids:
val_camera_ids:
val_lidar_ids:
checkpoint:
every_n_train_steps: 30000
save_top_k: 1
system:
collect_garbage_mem_usage: 0.7 # Trigger when 70% of GPU memory is used, avoid out-of-memory issues due to memory fragmentation in maglev workflows
collect_garbage_check_interval: 10 # Check memory every 10 steps
Override Initialization and Training Strategy#
model:
# 800k background points + 200k random points + 300k dynamic rigids + 300k dynamic deformables + 200k road points = 1.8m points
layers:
background:
initialization:
num_point_cloud_points: 800_000
num_near_points: 100_000
num_far_points: 100_000
dynamic_rigids:
initialization:
num_point_cloud_points_in_layer: 300_000
dynamic_deformables:
initialization:
num_point_cloud_points_in_layer: 300_000
road:
initialization:
num_point_cloud_points: 200_000
calib:
lidar:
enabled: false
post_processing:
b:
# Disable frame-specific optimizations for the PPISP pipeline for two reasons:
# 1. we don't have a PPISP controller yet.
# 2. we are using fourier features for the background which interferes with the frame-specific optimizations.
per_frame_ppisp_enabled: false
strategy:
name: mcmc
print_stats: true
relocate:
start_iteration: 500
end_iteration: 27000
frequency: 100
perturb:
noise_lr:
default: 5000.0
layers:
dynamic_rigids: 5000.0
dynamic_deformables: 5000.0
road: 5000.0
add:
start_iteration: 500
end_iteration: 27000
frequency: 100
max_n_gaussians: 2500000
Change Specific Dynamic Features in the Reconstruction#
model:
# Enable temporal appearance for background for compatible with Pacsim
background:
fourier_features_dim: 5
dynamic_rigids:
fourier_features_dim: 5
Update Loss Functions#
loss:
lidar:
lambda_: 0.03