Code for our paper:
CENet: Toward Concise and Efficient LiDAR Semantic Segmentation for Autonomous Driving
Huixian Cheng, Xianfeng Han, Guoqiang Xiao
Accepted by ICME2022
Accurate and fast scene understanding is one of the challenging task for autonomous driving, which requires to take full advantage of LiDAR point clouds for semantic segmentation. In this paper, we present a concise and efficient image-based semantic segmentation network, named CENet. In order to improve the descriptive power of learned features and reduce the computational as well as time complexity, our CENet integrates the convolution with larger kernel size instead of MLP, carefully-selected activation functions, and multiple auxiliary segmentation heads with corresponding loss functions into architecture. Quantitative and qualitative experiments conducted on publicly available benchmarks, SemanticKITTI and SemanticPOSS, demonstrate that our pipeline achieves much better mIoU and inference performance compared with state-of-the-art models.
2023-03-28[NEW:sparkles:] CENet achieves competitive performance in robustness evaluation at SemanticKITTI. See Repo of Robo3D for more details.
2022-07-06[:open_mouth::scream::thumbsup:] Ph.D. Hou reported an astounding 67.6% mIoU test performance of CENet, see this issue and PVD Repo for details.
2022-03-28[:sunglasses:] Suggested by reviewer, renamed to CENet.
2022-03-07[:yum:] SENet was very lucky to be provisionally accepted by ICME 2022.
2021-12-29 [:sunglasses:] Release models and training logs, which also contains ablation studies. (Please note that due to multiple updates of the code, some models and configs have inconsistencies that lead to errors, please make corresponding changes according to the specific situation.)
Download SemanticKITTI from official web. Download SemanticPOSS from official web.
-
SemanticKITTI:
python train.py -d /your_dataset -ac config/arch/senet-512.yml -n senet-512
Note that the following training strategy is used due to GPU and time constraints, see kitti.sh for details.
First train the model with 64x512 inputs. Then load the pre-trained model to train the model with 64x1024 inputs, and finally load the pre-trained model to train the model with 64x2048 inputs.
Also, for this reason, if you want to resume training from a breakpoint, uncomment this section and change "/SENet_valid_best" to "/SENet".
-
SemanticPOSS:
python train_poss.py -d /your_dataset -ac config/arch/poss.yml -n res
-
SemanticKITTI:
python infer.py -d /your_dataset -l /your_predictions_path -m trained_model -s valid/test
Eval for valid sequences:
python evaluate_iou.py -d /your_dataset -p /your_predictions_path
For test sequences, need to upload to CodaLab pages.
-
SemanticPOSS:
python infer_poss.py -d /your_dataset -l /your_predictions_path -m trained_model
This will generate both predictions and mIoU results.
-
Visualize GT:
python visualize.py -w kitti/poss -d /your_dataset -s what_sequences
-
Visualize Predictions:
python visualize.py -w kitti/poss -d /your_dataset -p /your_predictions -s what_sequences
KITTI Result | POSS Result | Ablation Study | Backbone HarDNet |
---|---|---|---|
Google Drive | Google Drive | Google Drive | Google Drive |
- Release Pretrained Model and Logs.
- Try TensorRT acceleration.
- To make NLA adaptation framework, See here.
Code framework derived from SalsaNext. Models are heavily based on FIDNet. Part of code from SqueezeSegV3. Thanks to their open source code, and also to Ph.D. Zhao for some helpful discussions.
@inproceedings{cheng2022cenet,
title={Cenet: Toward Concise and Efficient Lidar Semantic Segmentation for Autonomous Driving},
author={Cheng, Hui--Xian and Han, Xian--Feng and Xiao, Guo--Qiang},
booktitle={2022 IEEE International Conference on Multimedia and Expo (ICME)},
pages={01--06},
year={2022},
organization={IEEE}
}