Skip to content

RangeSeg: Efficient Lidar Semantic Segmentation on Range view

License

Notifications You must be signed in to change notification settings

fengluodb/RangeSeg

Repository files navigation

RangeSeg

This is the official implementation of RangeSeg: Efficient Lidar Semantic Segmentation on Range view[Paper]. arXiv

Demo

Environment

# 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

Datasets Prepartion

SemanticKITTI

Download the SemanticKIITI dataset from here.

dataset
└── SemanticKITTI
    └── sequences
        ├── 00
        ├── ...
        └── 21

SemanticPOSS

Download the SemanticPOSS dataset from here. Unzip and arrange it as follows.

dataset
└── SemanticPOSS
    └── sequences
        ├── 00
        ├── ...
        └── 05

Nuscenes

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

Training

SemanticKITTI

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" 

SemanticPOSS

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""

Nuscenes

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""

Inference

SemanticKITTI

python infer.py -d DATAROOT -m "logs/LENet-KITTI/TIMESTAMP" -l /path/for/predictions -s valid/test

SemanticPOSS

python infer.py -d DATAROOT -m "logs/LENet-POSS/TIMESTAMP" -l /path/for/predictions -s valid

Nuscenes

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.

Evalution

SemanticKITTI

python evaluate.py -d DATAROOT -p /path/for/predictions -dc config/labels/semantic-kitti.yaml

SemanticPOSS

python evaluate.py -d DATAROOT -p /path/for/predictions -dc config/labels/semantic-poss.yaml

Nuscenes

python evaluate.py -d DATAROOT -p /path/for/predictions -dc config/labels/semantic-nuscenes.yaml

Pretrained Models and Predictions

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

Acknowlegment

This repo is built based on MotionSeg3D, FIDNet and CENet. Thanks the contributors of these repos!

About

RangeSeg: Efficient Lidar Semantic Segmentation on Range view

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages