Skip to main content

Migration Guide: V4 β†’ V5

Version: 5.0.0
Date: October 17, 2025
Complexity Reduction: 60%


🎯 Overview​

This guide helps you migrate from the V4 configuration system to the simplified V5 system. The V5 system reduces configuration complexity by 60% while maintaining full functionality.

Why Migrate?​

  • βœ… 60% fewer parameters (80 vs 200+)
  • βœ… 5 base configs instead of 14
  • βœ… Clearer structure with logical grouping
  • βœ… Better defaults for most use cases
  • βœ… Faster processing with reduced overhead
  • βœ… Easier maintenance and updates

πŸ“Š Key Changes Summary​

AspectV4V5Change
Base Configs14 files5 files-64%
Parameters200+80-60%
StructureFeature-basedFunction-basedSimplified
Defaults File_self_ position varies_self_ always lastStandardized
Preset SystemBasicComprehensiveEnhanced
Hardware ProfilesNoneYesNew

πŸ”„ Configuration Structure Changes​

V4 Structure (14 Base Configs)​

# V4 - Complex structure
defaults:
- base/data_acquisition
- base/preprocessing
- base/geometric_features
- base/rgb_augmentation
- base/infrared_features
- base/ground_truth
- base/classification
- base/postprocessing
- base/output_formats
- base/validation
- base/monitoring
- base/performance
- base/gpu
- base/metadata
- _self_

V5 Structure (5 Base Configs)​

# V5 - Simplified structure
defaults:
- base/processor # Core processing (was: data_acquisition, preprocessing, performance, gpu)
- base/features # Feature computation (was: geometric_features, rgb_augmentation, infrared_features)
- base/data_sources # External data (was: ground_truth, classification)
- base/output # Output settings (was: output_formats, postprocessing, metadata)
- base/monitoring # Logging & metrics (was: monitoring, validation)
- _self_

πŸ“ Parameter Migration Map​

1. Processor Parameters​

V4 ParameterV5 EquivalentNotes
data_acquisition.batch_sizeprocessor.batch_sizeMoved to processor
preprocessing.chunk_sizeprocessor.chunk_sizeConsolidated
performance.num_workersprocessor.num_workersMoved to processor
gpu.enabledprocessor.use_gpuRenamed for clarity
gpu.device_idprocessor.gpu_deviceRenamed
preprocessing.max_memoryprocessor.max_memory_mbUnits explicit
data_acquisition.skip_existingprocessor.skip_existingMoved
validation.validate_outputsprocessor.validate_outputsConsolidated

2. Features Parameters​

V4 ParameterV5 EquivalentNotes
geometric_features.compute_normalsfeatures.compute_normalsMoved to features
geometric_features.compute_curvaturefeatures.compute_curvatureMoved
geometric_features.k_neighborsfeatures.k_neighborsMoved
geometric_features.search_radiusfeatures.search_radiusMoved
rgb_augmentation.enabledfeatures.rgb_augmentation.enabledNested under features
rgb_augmentation.methodfeatures.rgb_augmentation.methodNested
rgb_augmentation.resolutionfeatures.rgb_augmentation.resolutionNested
infrared_features.enabledfeatures.infrared.enabledRenamed section
infrared_features.sourcefeatures.infrared.sourceMoved

3. Data Sources Parameters​

V4 ParameterV5 EquivalentNotes
ground_truth.bd_topo_enableddata_sources.bd_topo.enabledRestructured
ground_truth.fetch_buildingsdata_sources.bd_topo.features.buildingsNested
ground_truth.fetch_roadsdata_sources.bd_topo.features.roadsNested
ground_truth.fetch_waterdata_sources.bd_topo.features.waterNested
ground_truth.fetch_vegetationdata_sources.bd_topo.features.vegetationNested
ground_truth.wfs_urldata_sources.bd_topo.wfs_urlMoved
ground_truth.cache_dirdata_sources.bd_topo.cache_dirNew: Auto-detect
classification.rpg_enableddata_sources.rpg.enabledMoved
classification.cadastre_enableddata_sources.cadastre.enabledMoved

4. Output Parameters​

V4 ParameterV5 EquivalentNotes
output_formats.lazoutput.formats.lazNested
output_formats.lasoutput.formats.lasNested
output_formats.parquetoutput.formats.parquetNested
postprocessing.compression_leveloutput.compression.compression_levelNested
postprocessing.laz_backendoutput.compression.laz_backendNested
output_formats.suffixoutput.output_suffixRenamed
metadata.extra_dimsoutput.extra_dimsMoved
validation.validate_formatoutput.validate_formatMoved
validation.validate_crsoutput.validate_crsMoved

5. Monitoring Parameters​

V4 ParameterV5 EquivalentNotes
monitoring.log_levelmonitoring.log_levelUnchanged
monitoring.log_filemonitoring.log_fileUnchanged
monitoring.show_progressmonitoring.show_progressUnchanged
performance.track_memorymonitoring.metrics.track_memoryNested
performance.track_timingmonitoring.metrics.track_timingNested
gpu.track_metricsmonitoring.metrics.track_gpuMoved
monitoring.summarymonitoring.summary_reportRenamed
monitoring.detailedmonitoring.detailed_reportRenamed

πŸ› οΈ Migration Steps​

Step 1: Backup Your V4 Configs​

# Create backup directory
mkdir -p configs_v4_backup

# Copy all your V4 configs
cp -r ign_lidar/configs/custom/* configs_v4_backup/

Step 2: Choose Migration Strategy​

Use a V5 preset and override only what you need:

# new_config_v5.yaml
defaults:
- presets/asprs_classification_gpu_optimized # V5 preset
- _self_

# Only override what's different from preset
processor:
batch_size: 64 # Your custom value

features:
rgb_augmentation:
resolution: 0.2 # Your custom value

Option B: Manual Migration​

Migrate your V4 config parameter by parameter using the mapping table above.

Option C: Use Migration Script (If Available)​

# Run migration script
python scripts/migrate_config_v4_to_v5.py \
--input configs_v4_backup/my_config.yaml \
--output ign_lidar/configs/my_config_v5.yaml

Step 3: Update Your Config​

Let's migrate a typical V4 config to V5:

V4 Configuration Example​

# config_v4.yaml
defaults:
- base/data_acquisition
- base/preprocessing
- base/geometric_features
- base/rgb_augmentation
- base/ground_truth
- base/output_formats
- base/monitoring
- base/gpu
- _self_

# Data acquisition
data_acquisition:
batch_size: 32
skip_existing: true

# Preprocessing
preprocessing:
chunk_size: 2000000
max_memory: 12288

# Geometric features
geometric_features:
compute_normals: true
compute_curvature: true
k_neighbors: 50
search_radius: 0.5

# RGB augmentation
rgb_augmentation:
enabled: true
method: "orthophoto"
resolution: 0.2
cache_orthophotos: true

# Ground truth
ground_truth:
bd_topo_enabled: true
fetch_buildings: true
fetch_roads: true
fetch_water: true
fetch_vegetation: true
wfs_url: "https://data.geopf.fr/wfs"

# Output
output_formats:
laz: true
las: false
parquet: false
suffix: "_enriched"
compression_level: 7

# GPU
gpu:
enabled: true
device_id: 0

# Monitoring
monitoring:
log_level: "INFO"
show_progress: true

V5 Configuration (Migrated)​

# config_v5.yaml
defaults:
- base/processor
- base/features
- base/data_sources
- base/output
- base/monitoring
- _self_

# Processor (consolidated from data_acquisition, preprocessing, gpu)
processor:
batch_size: 32
chunk_size: 2_000_000
max_memory_mb: 12288
use_gpu: true
gpu_device: 0
skip_existing: true

# Features (consolidated from geometric_features, rgb_augmentation)
features:
compute_normals: true
compute_curvature: true
k_neighbors: 50
search_radius: 0.5

rgb_augmentation:
enabled: true
method: "orthophoto"
resolution: 0.2
cache_dir: null # Auto-detect

# Data sources (consolidated from ground_truth)
data_sources:
bd_topo:
enabled: true
features:
buildings: true
roads: true
water: true
vegetation: true
wfs_url: "https://data.geopf.fr/wfs"
cache_enabled: true
cache_dir: null # Auto-detect

# Output (consolidated from output_formats)
output:
formats:
laz: true
las: false
parquet: false
compression:
compression_level: 7
output_suffix: "_enriched"

# Monitoring (unchanged)
monitoring:
log_level: "INFO"
show_progress: true

Step 4: Validate Your V5 Config​

# Test configuration loading
ign-lidar-hd process \
--config-name config_v5 \
--cfg job \
input_dir=test_data/ \
output_dir=test_output/

Look for:

  • βœ… No configuration errors
  • βœ… Parameters loaded correctly
  • βœ… Expected values in output

Step 5: Test Processing​

# Run on small test dataset
ign-lidar-hd process \
--config-name config_v5 \
input_dir=test_data/ \
output_dir=test_output/

Verify:

  • βœ… Processing completes successfully
  • βœ… Output files are correct
  • βœ… Performance is as expected

⚠️ Breaking Changes​

1. Cache Directory Behavior​

V4: Cache in global location by default V5: Cache in input directory by default

# V4
ground_truth:
cache_dir: ".cache/ground_truth" # Global cache

# V5
data_sources:
bd_topo:
cache_dir: null # Auto: {input_dir}/cache/ground_truth
use_global_cache: false

Migration: Set cache_dir explicitly if you need global cache.

2. GPU Parameter Names​

V4: gpu.enabled, gpu.device_id V5: processor.use_gpu, processor.gpu_device

# V4
gpu:
enabled: true
device_id: 0

# V5
processor:
use_gpu: true
gpu_device: 0

Migration: Update parameter names in your config.

3. Feature Nesting​

V4: Top-level feature configs V5: All features under features.*

# V4
rgb_augmentation:
enabled: true
method: "orthophoto"

infrared_features:
enabled: true

# V5
features:
rgb_augmentation:
enabled: true
method: "orthophoto"

infrared:
enabled: true

Migration: Nest all feature configs under features.

4. Data Source Structure​

V4: Flat structure with individual flags V5: Nested structure under data_sources

# V4
ground_truth:
bd_topo_enabled: true
fetch_buildings: true
fetch_roads: true

# V5
data_sources:
bd_topo:
enabled: true
features:
buildings: true
roads: true

Migration: Restructure ground truth config.

5. Output Format Structure​

V4: Flat format flags V5: Nested under output.formats

# V4
output_formats:
laz: true
las: false
compression_level: 7

# V5
output:
formats:
laz: true
las: false
compression:
compression_level: 7

Migration: Nest formats and compression.


πŸ” Common Migration Issues​

Issue 1: "Missing required parameter"​

Cause: Parameter renamed or moved

Solution: Use the parameter migration map above

# Error: Missing 'gpu.enabled'
# V4
gpu:
enabled: true

# Fix: Use new parameter name
# V5
processor:
use_gpu: true

Issue 2: "Invalid configuration structure"​

Cause: Old V4 defaults list

Solution: Update to V5 base configs

# Error: Unknown base config 'base/geometric_features'
# V4
defaults:
- base/geometric_features

# Fix: Use V5 base config
# V5
defaults:
- base/features

Issue 3: "Cache directory not found"​

Cause: V5 uses auto-detection

Solution: Ensure input directory exists or set explicit cache

# V5 - Auto-detection (recommended)
data_sources:
bd_topo:
cache_dir: null

# Or explicit path
data_sources:
bd_topo:
cache_dir: "/path/to/cache"

Issue 4: "GPU not detected"​

Cause: Parameter name change

Solution: Use processor.use_gpu

# V4 (won't work in V5)
gpu:
enabled: true

# V5 (correct)
processor:
use_gpu: true
gpu_device: 0

Issue 5: "Feature not computed"​

Cause: Features not nested under features.*

Solution: Nest all features

# V4 (won't work in V5)
compute_normals: true
rgb_augmentation:
enabled: true

# V5 (correct)
features:
compute_normals: true
rgb_augmentation:
enabled: true

πŸ“š Migration Cheat Sheet​

Quick Reference​

# ========== PROCESSOR ==========
# V4 β†’ V5
data_acquisition.batch_size β†’ processor.batch_size
preprocessing.chunk_size β†’ processor.chunk_size
performance.num_workers β†’ processor.num_workers
gpu.enabled β†’ processor.use_gpu
gpu.device_id β†’ processor.gpu_device

# ========== FEATURES ==========
# V4 β†’ V5
geometric_features.compute_normals β†’ features.compute_normals
geometric_features.k_neighbors β†’ features.k_neighbors
rgb_augmentation.* β†’ features.rgb_augmentation.*
infrared_features.* β†’ features.infrared.*

# ========== DATA SOURCES ==========
# V4 β†’ V5
ground_truth.bd_topo_enabled β†’ data_sources.bd_topo.enabled
ground_truth.fetch_buildings β†’ data_sources.bd_topo.features.buildings
ground_truth.wfs_url β†’ data_sources.bd_topo.wfs_url

# ========== OUTPUT ==========
# V4 β†’ V5
output_formats.laz β†’ output.formats.laz
postprocessing.compression_level β†’ output.compression.compression_level
output_formats.suffix β†’ output.output_suffix

# ========== MONITORING ==========
# V4 β†’ V5
monitoring.log_level β†’ monitoring.log_level (unchanged)
performance.track_memory β†’ monitoring.metrics.track_memory

βœ… Migration Checklist​

Pre-Migration​

  • Backup all V4 configurations
  • Review breaking changes above
  • Choose migration strategy
  • Set up test environment

During Migration​

  • Update defaults list to V5 base configs
  • Migrate processor parameters
  • Migrate feature parameters
  • Migrate data source parameters
  • Migrate output parameters
  • Migrate monitoring parameters
  • Remove deprecated parameters

Post-Migration​

  • Validate configuration loads without errors
  • Test on small dataset
  • Compare V4 vs V5 output
  • Check performance metrics
  • Update documentation/scripts
  • Deploy to production

πŸ“Š Performance Comparison​

V4 vs V5 Processing​

MetricV4V5Improvement
Config Load Time~500ms~200ms60% faster
Memory Overhead~100MB~40MB60% less
Parameter Count200+8060% fewer
Processing SpeedBaseline+5-10%Slightly faster

Why V5 is Faster​

  1. Fewer config files to parse (5 vs 14)
  2. Reduced parameter validation (80 vs 200+)
  3. Simplified override resolution
  4. Better default values (less computation)

πŸŽ“ Best Practices​

1. Use Presets as Starting Point​

# Good: Start with preset
defaults:
- presets/asprs_classification_gpu_optimized
- _self_

processor:
batch_size: 64 # Only override what you need

# Avoid: Migrating entire V4 config manually

2. Test Incrementally​

# Test each section separately
# 1. Test processor settings
ign-lidar-hd process --config-name test_processor ...

# 2. Test features
ign-lidar-hd process --config-name test_features ...

# 3. Test full config
ign-lidar-hd process --config-name final_config ...

3. Keep Migration Notes​

# config_v5.yaml
# Migrated from: config_v4.yaml
# Date: 2025-10-17
# Changes:
# - Moved batch_size to processor
# - Enabled auto-cache for BD TOPO
# - Updated GPU parameters

defaults:
- base/processor
- _self_

4. Version Your Configs​

# Keep versions for rollback
configs/
β”œβ”€β”€ config_v4_backup.yaml
β”œβ”€β”€ config_v5_migrated.yaml
└── config_v5_tuned.yaml

πŸ†˜ Getting Help​

Documentation​

GitHub Issues​

If you encounter migration issues:

  1. Check existing issues
  2. Search for your error message
  3. Create new issue with:
    • V4 config (anonymized)
    • V5 config attempt
    • Error message
    • Expected behavior

Community​


πŸ“ Rollback Instructions​

If you need to rollback to V4:

Step 1: Restore V4 Configs​

# Restore from backup
cp configs_v4_backup/* ign_lidar/configs/custom/

Step 2: Checkout V4 Code​

# Checkout last V4 release
git checkout v4.2.0

Step 3: Reinstall​

# Reinstall V4
pip install -e .

πŸš€ Next Steps​

After successful migration:

  1. βœ… Review Configuration: Ensure all parameters migrated correctly
  2. βœ… Performance Test: Compare V4 vs V5 performance
  3. βœ… Update Documentation: Update your project docs
  4. βœ… Update Scripts: Update any automation scripts
  5. βœ… Train Team: Brief team on V5 changes
  6. βœ… Deploy: Roll out V5 to production

πŸ“… Migration Timeline​

Recommended timeline for production environments:

WeekActivityDeliverable
Week 1Backup V4, read docsUnderstanding of V5
Week 2Migrate test configsWorking V5 test config
Week 3Test on dev environmentValidated V5 config
Week 4Production migrationV5 in production

Migration Guide Version: 1.0
Last Updated: October 17, 2025
Status: βœ… Ready to Use