Skip to content

Latest commit

 

History

241 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Towards Robust Uncertainty-Aware LiDAR Semantic Segmentation

The official repo of

Invascal: Inverse-Vacuity Self-Calibration for Uncertainty-Aware LiDAR Range-View Semantic Segmentation

📢 News

  • 2026-05-12: Code release.

Abstract

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.

Examples

SemanticTHAB: Everything Is AWESOME SemanticKITTI: Everything Is AWESOME

Documentation

  1. DATASET
  2. EVALUATION
  3. BASELINES

Development environment:

This project is intended to run in a Docker container. For setup, only Linux host systems were tested.

Reference System

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                     

Setup Docker Container Docker Badge

See README.md to learn about the docker setup.

Datasets

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.

Training:

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:

  1. visualization (bool): Toggle visualization during training (default: True)
  2. with_logging (bool): Toggle logging (saving weights and tensorboard logs)
  3. mode (str): Training option whether to 'train' or 'test' the model
  4. 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.

Dataset/Training 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 .bin file containing LiDAR point cloud (float32, shape: N x 4)
  • A .label file 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.

Checkpoint weights

We also supply checkpoint weights, tensorboard logfiles, and configs for the runs at this

TBD

Inference:

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.

ROS Demonstation System

To explore a ROS2 demonstration of our system check out the following repo: https://github.com/kav-institute/SemanticLiDARUnc_ROS

rgbImage

License:

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.

Acknowledgments

Code framework originally derived from kav-institute/SemanticLiDAR.arXiv Badge

Citation:

TBD

Contributors

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages