Configuration
The VirtuaLearn3D (VL3D) framework uses YAML configuration files to define
default values and internal parameters for its different subsystems. These
files are located in the config/ directory and are loaded at startup into
the global dictionary VL3DCFG (see src.main.main_config). Framework
components look up their defaults from this dictionary, so editing a
configuration file changes the behavior of every pipeline that relies on those
defaults.
The configuration files are not pipeline specifications. Pipelines are defined in JSON files (see Pipelines). The YAML configuration files provide the default values that pipeline components fall back to when a parameter is not explicitly set in the JSON specification.
How configuration is loaded
At startup, main_config_init reads each YAML file under config/ and
stores its parsed contents in a sub-key of the VL3DCFG dictionary:
File |
Key |
Purpose |
|---|---|---|
|
|
Input/output defaults (LAS version, memory proxy thresholds). |
|
|
Evaluator defaults (raster grid, classification, uncertainty). |
|
|
Report defaults (receptive field report toggles). |
|
|
Data mining defaults (geometric, height, smooth features). |
|
|
Model defaults (RF, deep learning, architectures, receptive fields). |
|
|
Test suite selection (which tests to run). |
Components access their defaults through a two-level lookup. For example,
VL3DCFG['MODEL']['TransfOctoRFClassificationModel'] returns the default
dictionary for the TransfOctoRF model, while
VL3DCFG['IO']['PointCloudArraysFactory'] returns the LAS output defaults.
When a JSON pipeline specification provides an explicit value for a parameter,
it takes precedence over the YAML default.
In addition, config/logging.yml is loaded separately by
src.main.main_logger to configure Python’s logging system and is not
part of VL3DCFG.
io.yml – Input/Output
Controls how point clouds are read and written, and when in-memory data is offloaded to disk.
MemToFileProxyConfigures the automatic memory-to-file proxy that dumps point cloud data to temporary files when system memory usage exceeds a threshold.
- –
mem_check_threshold Fraction of total system memory (0 to 1) that triggers the proxy. Default:
0.34.
- –
PointCloudArraysFactoryControls the LAS output format when writing point clouds from arrays.
- –
las_version LAS file version string. Default:
"1.4".- –
las_point_format LAS point record format ID. Default:
6.
- –
eval.yml – Evaluators
Provides default parameters for the evaluation components.
RasterGridEvaluatorDefaults for the raster grid evaluator that produces GeoTIFF outputs from point clouds.
- –
grid_iter_step Number of grid cells processed per iteration. Default:
1024.- –
reverse_rows Whether to flip rows so the output matches geographic conventions. Default:
true.- –
radius_expr Expression for the interpolation radius as a function of cell size \(l\). Default:
"sqrt(2)*l/2".- –
nthreads Number of parallel threads. Default:
1.
- –
RandForestEvaluatorDefaults for Random Forest evaluation utilities.
- –
num_decision_trees Number of trees to plot.
0disables plotting. Default:0.- –
compute_permutation_importance Whether to compute permutation-based feature importance. Default:
true.- –
max_tree_depth Maximum depth for decision tree visualization. Default:
5.
- –
KFoldEvaluatorDefaults for k-fold cross-validation.
- –
quantile_cuts List of quantiles to report. Default:
[0.25, 0.5, 0.75].
- –
ClassificationEvaluatorDefaults for classification evaluation, including confusion matrix formatting (colormap, font sizes, borders).
ClassificationUncertaintyEvaluatorDefaults for uncertainty analysis, including probability export, entropy, and optional clustering-based uncertainty decomposition.
report.yml – Reports
Controls which columns are included when exporting receptive field point clouds.
ReceptiveFieldsReport- –
include_entropies Include per-point entropy in exported receptive fields. Default:
true.- –
include_likelihoods Include softmax probabilities. Default:
true.- –
include_predictions Include predicted class labels. Default:
true.- –
include_references Include ground-truth labels. Default:
true.- –
include_success Include the binary success mask (prediction matches reference). Default:
true.- –
include_features Include the NN input features. Default:
true.
- –
mining.yml – Data Mining
Default parameters for feature extraction from point clouds.
- Top-level keys
- –
structure_space_bits Precision for coordinate storage. Default:
32.- –
feature_space_bits Precision for feature storage. Default:
32.
- –
GeomFeatsMinerDefaults for the Python geometric features miner.
- –
radius Neighborhood radius. Default:
0.3.- –
fnames Default feature names to compute. Default:
["linearity", "planarity", "sphericity"].- –
nthreads Number of threads (
-1for all cores). Default:-1.
- –
GeomFeatsMinerPPDefaults for the C++ geometric features miner. Includes neighborhood specification (type, radius, k), IDW parameters, Tikhonov regularization, and second-order estimation strategy.
HeightFeatsMinerDefaults for the height features miner. Includes chunk sizes, cylindrical neighborhood parameters, and default features (
["floor_distance"]).NaiveChangeMinerDefaults for the naive change detection miner.
- –
min_distance Minimum distance threshold for change detection. Default:
0.01.
- –
model.yml – Models
The largest configuration file, covering machine learning models, deep learning architectures, and receptive fields. Parameters are organized by component class name.
All models
Top-level keys define precision for the numeric spaces:
- –
structure_space_bits Coordinate precision (32 or 64). Default:
64.- –
feature_space_bits Feature precision (32 or 64). Default:
32.- –
classification_space_bits Label precision (8, 16, or 32). Default:
8.
Machine learning
RandomForestClassificationModel- –
importance_report_permutation Use permutation importance instead of impurity-based. Default:
true.- –
decision_plot_trees Number of trees to plot.
0disables. Default:0.- –
decision_plot_max_depth Maximum depth for plotted trees. Default:
5.
- –
TransfOctoRFClassificationModel- –
predict_batch_size Number of centroids per outer prediction batch (CPU gather). Default:
8192.- –
predict_inner_batch_size Number of centroids per inner GPU batch (
predict_on_batchcalls). Default:128.- –
predict_chunked_knn_threshold When the centroid count exceeds this threshold, KNN is computed per-batch via a persistent C++ octree instead of materializing the full neighbors array. Prevents OOM on large point clouds. Default:
500000.
- –
Deep learning
Top-level deep learning keys:
- –
dl_write_keras Save the full Keras model (
.kerasfile) after training. Default:true.- –
dl_write_weights Save model weights alongside the Keras file. Default:
true.- –
dl_memsafe_training Enable memory-safe training mode (reduces peak memory at the cost of speed). Default:
false.SimpleDLModelHandlerDefault handler parameters shared across deep learning models:
- –
run_eagerly Run Keras in eager mode (debugging only). Default:
false.- –
training_epochs Default number of training epochs. Default:
100.- –
batch_size Default training batch size. Default:
16.- –
checkpoint_monitor Metric monitored by the checkpoint callback. Default:
"loss".- –
fit_verbose/predict_verbose Verbosity for
model.fitandmodel.predict. Default:"auto".- –
skip_fit_on_zero_epochs Skip training entirely when
training_epochsis 0. Default:true.- –
tensorboard_log_dir Directory for TensorBoard logs.
nulldisables.- –
tensorboard_histogram_frequency How often to log weight histograms (epochs). Default:
0.
- –
ArchitectureDefault arguments for
keras.utils.plot_modelwhen exporting architecture diagrams (shapes, dtypes, layer names, DPI, etc.).
The file also includes defaults for specific architectures such as
PointNet, PointNetPwiseClassif, RBFNet, RBFNetPwiseClassif,
ConvAutoencPwiseClassif, and SpConv3DPwiseClassif. Each section
specifies kernel initializers, feature dimensions, skip-link strategies,
batch normalization momentum, and other architecture-specific parameters.
ReceptiveField- –
structure_space_bits Coordinate precision for receptive fields. Default:
32.- –
max_classes_per_reduction Maximum classes for label reduction in receptive fields. Default:
16.
- –
ReceptiveFieldHierarchicalSG- –
check_discretization_rounding_error Validate discretization accuracy. Default:
true.
- –
test.yml – Tests
Controls which test suites are executed when running
venv/bin/python vl3d.py --test. Tests are organized by category
(data mining, clustering, input/output, deep learning, pipeline, C++).
Each entry under a category names a test class. Commented entries
(prefixed with #) are disabled; uncommented entries are active.
For example, to activate the TransfOctoRFTest and C++ binding tests
while disabling all others:
ErrorTestSuites:
Deep learning:
- TransfOctoRFTest
C++:
- VL3DPPBindingTest
- VL3DPPBackendTest
Test suites can also be placed under WarningTestSuites to run them
without failing the overall test run on errors.
logging.yml – Logging
Configures Python’s logging system using the standard logging.config
dictionary schema. This file is loaded by src.main.main_logger, not
through VL3DCFG.
The default setup defines:
Formatter
formatter_datetime: timestamps with[YYYY-MM-DD HH:MM:SS] (LEVEL): messageformat.Handler
handler_console: prints to stdout at DEBUG level.Handler
handler_file: rotating file handler writing tovirtualearn3d.log(8 MB per file, 32 backups).Logger
logger_vl3d: the framework logger, attached to both handlers at DEBUG level.
To change the log level for console output (e.g., show only warnings),
edit the level key under handler_console:
handlers:
handler_console:
level: WARNING
Summary
File |
VL3DCFG key |
Description |
|---|---|---|
|
|
LAS output format, memory proxy threshold. |
|
|
Evaluator defaults (raster, RF, k-fold, classification, uncertainty). |
|
|
Receptive field report column toggles. |
|
|
Feature miner defaults (geometric, height, change detection). |
|
|
Model, architecture, and receptive field defaults. |
|
|
Active/inactive test suites. |
|
(separate) |
Python logging configuration (console + rotating file). |