Invascal: Inverse-Vacuity Self-Calibration for Uncertainty-Aware LiDAR Range-View Semantic Segmentation
- 2026-05-12: Code release.
LiDAR semantic segmentation is a core perception capability for autonomous vehicles and mobile robots. However, safe operation also depends on knowing when predictions are unreliable. Existing approaches typically rely on softmax confidence, which is often miscalibrated and overconfident, while stronger uncertainty estimates from Monte Carlo dropout or ensembles are often computationally expensive for real-time use. To this end, we introduce a novel, architecture-agnostic uncertainty-aware Adapter Head. It decomposes the prediction into a Preference Head for class ranking and a Strength Head that refines uncertainty assessment, thereby enabling a principled construction of evidential Dirichlet representations. Building on this design, we propose our inverse-vacuity self-calibration objective (Invascal), which directly supervises the strength signal to produce reliable and well-calibrated uncertainty estimates while preventing runaway evidence growth. We evaluate our framework across multiple LiDAR datasets and backbone architectures. We compare against deterministic training, Monte Carlo dropout and ensembles, and prior evidential methods. Our approach consistently improves uncertainty calibration over traditional deterministic methods with minimal computational overhead. At the same time, it preserves competitive segmentation accuracy, where prior evidential methods often suffer performance degradation.
This project is intended to run in a Docker container. For setup, only Linux host systems were tested.
OS: Ubuntu 24.04.2 LTS
Kernel: Linux 6.8.0-48-generic
CPU: AMD Ryzen™ 9 9950X × 32
GPU: NVIDIA GeForce RTX™ 4090
Memory: 128.0 GiB See README.md to learn about the docker setup.
We conduct our experiments on four publicly available datasets covering suburban (SemanticKITTI), urban (SemanticTHAB), rural (Panoptic-CUDAL), and adverse winter driving scenarios (Winter Adverse Driving Dataset, WADS). These datasets provide a wide range of environments, traffic densities, and sensor configurations, capturing both structured and unstructured roads as well as challenging weather conditions. See the datasets documentation for more details and download links.
Make sure to select the right Python interpreter for all required packages to be available, which is ~/conda/bin/python (Python 3.10.15).
Our main training script is ~/workspace/src/train_semantics.py.
There are several script options that can be set, which are:
- visualization (bool): Toggle visualization during training (default: True)
- with_logging (bool): Toggle logging (saving weights and tensorboard logs)
- mode (str): Training option whether to 'train' or 'test' the model
- cfg_path (str): Path to the config file used for training
These flags can be either adjusted in the corresponding ArgumentParser's arguments inside the name-main idiom by changing the default values or by running the script in a terminal with the desired flags.
We prefer option one for simplicity.
The cfg_path string argument expects the dataset specific yaml file, which are located in directory ~/workspace/src/configs.
The yaml files have detailed comments on each arguments, so please look into these in detail. Most importantly, the argument "dataset_dir" expects a string that points to a specific dataset roots. We currently support 5 datasets located in the following structure:
~/workspace/data/semantic_datasets
└───Panoptic-CUDAL
└───SemanticKitti/dataset/sequences
└───SemanticSTF
└───SemanticTHAB/sequences
└───WADS/sequences
See the datasets documentation for more details and download links. These are all in SemanticKITTI format and each sample consists of:
- A
.binfile containing LiDAR point cloud (float32, shape: N x 4) - A
.labelfile containing packed labels (uint32, shape: N)
Point fields:
x, y, z, reflectivity
However, as different sensors are used, we supply the corresponding Dataloaders for the Rangeview image representation (via spherical projection) in ~/workspace/src/dataset, derived from kav-institute/SemanticLiDAR.
We also supply checkpoint weights, tensorboard logfiles, and configs for the runs at this
TBD
You can explore ~/workspace/src/inference_ouster.py for an example how to use our method with a data stream from an Ouster OS2-128 sensor.
To explore a ROS2 demonstration of our system check out the following repo: https://github.com/kav-institute/SemanticLiDARUnc_ROS
This project is licensed under the Apache 2.0 License - see the LICENSE file for details. Note that the datasets used are provided by different licences! It is your responsibility to determine whether you have permission to use the models and/or datasets for your use case.
Code framework originally derived from kav-institute/SemanticLiDAR.
TBD


