This is the official implementation of RangeSeg: Efficient Lidar Semantic Segmentation on Range view[Paper].
# clone this repo
git clone https://github.com/fengluodb/LENet.git
# create a conda env with
conda env create -f environment.yaml
conda activate LENet
Download the SemanticKIITI dataset from here.
dataset
└── SemanticKITTI
└── sequences
├── 00
├── ...
└── 21
Download the SemanticPOSS dataset from here. Unzip and arrange it as follows.
dataset
└── SemanticPOSS
└── sequences
├── 00
├── ...
└── 05
Download the nuScenes dataset from here. Using the nuscenes2kitti.py to nuScenes into SemanticKITTI-compatible format, you can follw the instructions in here:
python3 utils/nuscenes2kitti.py --nuscenes_dir <nuscenes_directory> --output_dir <output_directory>
the final format look like this:
dataset/Nuscene-KITTI/
└── sequences
├── 0001
├── 0002
├── ...
├── 1109
└── 1110
To train a network (from scratch):
python train.py -d DATAROOT -ac config/arch/LENet.yaml -dc config/labels/semantic-kitti.yaml -l logs/LENet-KITTI
To train a network (from pretrained model):
python train.py -d DATAROOT -ac config/arch/LENet.yaml -dc config/labels/semantic-kitti.yaml -l logs/LENet-KITTI -p "logs/LENet-KITTI/TIMESTAMP"
To train a network (from scratch):
python train_poss.py -d DATAROOT -ac config/arch/LENet_poss.yaml -dc config/labels/semantic-poss.yaml -l logs/LENet-POSS
To train a network (from pretrained model):
python train_poss.py -d DATAROOT -ac config/arch/LENet_poss.yaml -dc config/labels/semantic-poss.yaml -l logs/LENet-POSS -p "logs/LENet-POSS/TIMESTAMP""
To train a network (from scratch):
python train_nusc.py -d DATAROOT -ac config/arch/LENet_nusc.yaml -dc config/labels/semantic-nuscenes.yaml -l logs/LENet-Nusc
To train a network (from pretrained model):
python train_nusc.py -d DATAROOT -ac config/arch/LENet_nusc.yaml -dc config/labels/semantic-nuscenes.yaml -l logs/LENet-Nusc -p "logs/LENet-Nusc/TIMESTAMP""
python infer.py -d DATAROOT -m "logs/LENet-KITTI/TIMESTAMP" -l /path/for/predictions -s valid/test
python infer.py -d DATAROOT -m "logs/LENet-POSS/TIMESTAMP" -l /path/for/predictions -s valid
python infer.py -d DATAROOT -m "logs/LENet-KITTI/TIMESTAMP" -l /path/for/predictions -s valid/test
warning: if you infer the test dataset, I have converted the result format into nuScenes format. But the output have label 0 in prediction. Therefore, the result can't pass the valid submisson script of nuScenes. I will find a way to solve it.
python evaluate.py -d DATAROOT -p /path/for/predictions -dc config/labels/semantic-kitti.yaml
python evaluate.py -d DATAROOT -p /path/for/predictions -dc config/labels/semantic-poss.yaml
python evaluate.py -d DATAROOT -p /path/for/predictions -dc config/labels/semantic-nuscenes.yaml
dataset | mIoU | Download |
---|---|---|
SemanticKITTI(single) | 64.5(test) | Model Weight And Predictions |
SemanticKITTI(multi) | 53.0(test) | Model Weight And Predictions |
SemanticPOSS | 53.8(test) | Model Weight And Predictions |
Nuscenes | 64.0(valid) | Model Weight And Predictions |
This repo is built based on MotionSeg3D, FIDNet and CENet. Thanks the contributors of these repos!