RangeRet is a lightweight LiDAR semantic segmentation approach that adapts Retentive Networks to range images using a Circular Retention (CiR) mechanism to efficiently model spatial continuty properties of range-view representation. RangeRet obtains SOTA results among range-view approaches on PandaSet and SemanticPOSS, and competitive results on SemanticKITTI, while achieving real-time performance.
- 2026-02-25: Code and models are released.
- 2025-09-05: RangeRet is accepted to WACV 2026.
Create an environment and install the required packages with pip install -r requirements.txt.
In practice, you just need common packages as torch, numpy, matplotlib, pyyaml, timm, tqdm.
Code has been tested with the following versions of torch:
- torch 2.2.2 and CUDA 12.1
- torch 2.4.0 and CUDA 12.4
Download SemanticKITTI dataset from the official website.
Download PandaSet dataset from the official website and raw Pandar64 LiDAR data from the link provided in this Github Issue.
Follow the instructions on this repo to convert the PandaSet dataset to the SemanticKITTI format.
Download SemanticPOSS dataset from the official website.
Run the following commands to train, specifying the dataset and log paths:
### SemanticKITTI
python train.py --dataset /path/to/semantickitti/ --data ./config/labels/semantic-kitti.yaml --config ./config/RangeRet-semantickitti.yaml --log ./log/kitti [--fp16]
### PandaSet
python train.py --dataset /path/to/pandaset/ --data ./config/labels/pandaset.yaml --config ./config/RangeRet-pandaset.yaml --log ./log/panda [--fp16]
### SemanticPOSS
python train.py --dataset /path/to/semanticposs/ --data ./config/labels/semantic-poss.yaml --config ./config/RangeRet-poss.yaml --log ./log/poss [--fp16]Run the following scripts to infer on a specific dataset:
### SemanticKITTI
python infer.py --dataset /path/to/semantickitti/ --data ./config/labels/semantic-kitti.yaml --config ./config/RangeRet-semantickitti.yaml --model /path/to/model.pt --split valid/test --log /path/to/predictions --fp16 [--save]
### PandaSet
python infer.py --dataset /path/to/pandaset/ --data ./config/labels/pandaset.yaml --config ./config/RangeRet-pandaset.yaml --model /path/to/model.pt --split valid/test --log /path/to/predictions --fp16 [--save]
### SemanticPOSS
python infer.py --dataset /path/to/semanticposs/ --data ./config/labels/semantic-poss.yaml --config ./config/RangeRet-poss.yaml --model /path/to/model.pt --split valid/test --log /path/to/predictions --fp16 [--save]
### E.g. for SemanticKITTI and pretrained model rangeret-kitti-657
# python3 infer.py --dataset /semanticKITTI/ --data ./config/labels/semantic-kitti.yaml --config config/RangeRet-semantickitti.yaml --model ./rangeret-kitti-657.pt --split valid --fp16 [--save] --log ./out/kitti_resultsPretrained models are available on Hugging Face.
| Name | Dataset | Val mIoU (%) | Test mIoU (%) | Checkpoints |
|---|---|---|---|---|
| rangeret-kitti-657 | SemanticKITTI | 65.7 | 64.5 | Download |
| rangeret-panda-600 | PandaSet | 66.7 | 60.0 | Download |
| rangeret-poss-528 | SemanticPOSS | - | 52.8 | Download |
- Update README
- Release code
- Upload models
- Custom data guidelines
If you find this project useful, please cite:
Available soon
Thanks to these great repositories: RangeNet++, Torchscale, RMT, RangeViT, Rangeview-rgb-lidar-fusion
