DeepSDFStruct.deep_sdf.training#
DeepSDF Model Training#
This module implements the complete training pipeline for DeepSDF neural networks. It provides loss functions, learning rate schedules, training loops, and checkpoint management.
Key Features#
- Loss Functions
ClampedL1Loss: L1 loss with value clamping for stability
Support for custom loss functions
- Learning Rate Schedules
ConstantLearningRateSchedule: Fixed learning rate
StepLearningRateSchedule: Step decay schedule
WarmupLearningRateSchedule: Warmup followed by decay
- Training Loop
Multi-epoch training with validation
Automatic checkpointing and model saving
Loss tracking and visualization
Support for distributed training
Resume from checkpoint capability
- Experiment Management
MLflow integration for experiment tracking
Automatic logging of hyperparameters
Training curve visualization
Model versioning
The training process follows the DeepSDF paper methodology with extensions for lattice structures and microstructured materials.
Examples
Train a DeepSDF model:
from DeepSDFStruct.deep_sdf.training import train_deep_sdf
specs = {
'NetworkSpecs': {...},
'TrainSpecs': {
'NumEpochs': 2000,
'LearningRateSchedule': {...}
}
}
train_deep_sdf(experiment_dir, specs)
Functions
|
|
|
|
Interpolate between latent vectors and export reconstructed meshes. |
|
|
|
|
|
|
|
|
|
|
|
Save mapping between latent indices and source training .npz files. |
|
|
|
|
|
|
|
|
|
|
Classes
|
|
|
|
|
- class DeepSDFStruct.deep_sdf.training.ConstantLearningRateSchedule(value)#
Bases:
DeepSDFStruct.deep_sdf.training.LearningRateSchedule- get_learning_rate(epoch)#
- class DeepSDFStruct.deep_sdf.training.StepLearningRateSchedule(initial, interval, factor)#
Bases:
DeepSDFStruct.deep_sdf.training.LearningRateSchedule- get_learning_rate(epoch)#
- class DeepSDFStruct.deep_sdf.training.WarmupLearningRateSchedule(initial, warmed_up, length)#
Bases:
DeepSDFStruct.deep_sdf.training.LearningRateSchedule- get_learning_rate(epoch)#
- DeepSDFStruct.deep_sdf.training.append_parameter_magnitudes(param_mag_log, model)#
- DeepSDFStruct.deep_sdf.training.clip_logs(loss_log, lr_log, timing_log, lat_mag_log, param_mag_log, epoch)#
- DeepSDFStruct.deep_sdf.training.create_interpolated_meshes_from_latent(experiment_directory, indices, steps, checkpoint='latest', max_batch=32, filetype='ply', device='cpu')#
Interpolate between latent vectors and export reconstructed meshes.
This function loads a trained DeepSDF model and its latent vectors, then interpolates between consecutive latent codes specified in indices. At each interpolation step, a 3D surface mesh is reconstructed and exported to disk in the requested format.
- Parameters:
experiment_directory (str | PathLike) – Path to the experiment directory containing checkpoints and latent vectors.
checkpoint (str, optional) – Which checkpoint to load. Defaults to “latest”.
max_batch (int, optional) – Maximum batch size for inference. Defaults to 32.
filetype (str, optional) – File extension for exported meshes (e.g., “ply”, “obj”). Defaults to “ply”.
indices (list[int], optional) – Sequence of latent vector indices between which interpolation should be performed. Defaults to [1, 2, 3, 4, 5, 6, 7, 8].
steps (int, optional) – Number of interpolation steps (including endpoints). Defaults to 11.
- Return type:
None
Example
>>> create_interpolated_meshes_from_latent( ... experiment_directory="experiments/run1", ... [1, 2, 3, 4, 5, 6, 7, 8], ... 11, ... checkpoint="latest", ... max_batch=32, ... filetype="ply", ... )
- DeepSDFStruct.deep_sdf.training.get_learning_rate_schedules(specs)#
- DeepSDFStruct.deep_sdf.training.get_mean_latent_vector_magnitude(latent_vectors)#
- DeepSDFStruct.deep_sdf.training.get_spec_with_default(specs, key, default)#
- DeepSDFStruct.deep_sdf.training.load_logs(experiment_directory)#
- DeepSDFStruct.deep_sdf.training.reconstruct_meshs_from_latent(experiment_directory, checkpoint='latest', max_batch=32, filetype='ply', device='cpu')#
- DeepSDFStruct.deep_sdf.training.save_latent_code_data_map(experiment_directory, data_source, npz_filenames)#
Save mapping between latent indices and source training .npz files.
- Parameters:
experiment_directory (str) – Path to the experiment directory where training artifacts are stored.
data_source (str) – Root directory of the dataset used for training.
npz_filenames (list[str]) – Relative .npz paths in dataset split order. The order corresponds directly to latent embedding indices.
- DeepSDFStruct.deep_sdf.training.save_latent_vectors(experiment_directory, filename, latent_vec, epoch)#
- DeepSDFStruct.deep_sdf.training.save_logs(experiment_directory, loss_log, lr_log, timing_log, lat_mag_log, param_mag_log, epoch)#
- DeepSDFStruct.deep_sdf.training.save_model(experiment_directory, filename, decoder, epoch)#
- DeepSDFStruct.deep_sdf.training.save_optimizer(experiment_directory, filename, optimizer, epoch)#
- DeepSDFStruct.deep_sdf.training.train_deep_sdf(experiment_directory, data_source, continue_from=None, batch_split=1, device=None)#