By Bichen Wu, Xuanyu Zhou, Sicheng Zhao, Xiangyu Yue, Kurt Keutzer (UC Berkeley)
This repository contains a tensorflow implementation of SqueezeSegV2, an improved convolutional neural network model for LiDAR segmentation and unsupervised domain adaptation for road-object segmentation from a LiDAR point cloud.
Please refer to our video for a high level introduction of this work: https://www.youtube.com/watch?v=ZitFO1_YpNM. For more details, please refer to our SqueezeSegV2 paper: https://arxiv.org/abs/1809.08495. If you find this work useful for your research, please consider citing:
@inproceedings{wu2018squeezesegv2,
title={SqueezeSegV2: Improved Model Structure and Unsupervised Domain Adaptation
for Road-Object Segmentation from a LiDAR Point Cloud},
author={Wu, Bichen and Zhou, Xuanyu and Zhao, Sicheng and Yue, Xiangyu and Keutzer, Kurt},
booktitle={ICRA},
year={2019},
}
@inproceedings{wu2017squeezeseg,
title={Squeezeseg: Convolutional neural nets with recurrent crf for real-time road-object segmentation from 3d lidar point cloud},
author={Wu, Bichen and Wan, Alvin and Yue, Xiangyu and Keutzer, Kurt},
booktitle={ICRA},
year={2018}
}
@inproceedings{yue2018lidar,
title={A lidar point cloud generator: from a virtual world to autonomous driving},
author={Yue, Xiangyu and Wu, Bichen and Seshia, Sanjit A and Keutzer, Kurt and Sangiovanni-Vincentelli, Alberto L},
booktitle={ICMR},
pages={458--464},
year={2018},
organization={ACM}
}
SqueezeSegV2 is released under the BSD license (See LICENSE for details). The dataset used for training, evaluation, and demostration of SqueezeSegV2 is modified from KITTI raw dataset. For your convenience, we provide links to download the converted dataset, which is distrubited under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.
The instructions are tested on Ubuntu 16.04 with python 2.7 and tensorflow 1.4 with GPU support.
Clone the SqueezeSegV2 repository:
git clone https://github.com/xuanyuzhou98/SqueezeSegV2.git
We name the root directory as $SQSG_ROOT
.
Setup virtual environment:
By default we use Python2.7. Create the virtual environment
virtualenv env
Activate the virtual environment
source env/bin/activate
Use pip to install required Python packages:
pip install -r requirements.txt
cd $SQSG_ROOT/
python ./src/demo.py
If the installation is correct, the detector should write the detection results as well as 2D label maps to $SQSG_ROOT/data/samples_out
. Here are examples of the output label map overlaped with the projected LiDAR signal. Green masks indicate clusters corresponding to cars and blue masks indicate cyclists.
cd $SQSG_ROOT/data/
wget https://www.dropbox.com/s/pnzgcitvppmwfuf/lidar_2d.tgz
tar -xzvf lidar_2d.tgz
rm lidar_2d.tgz
Now we can start training by
cd $SQSG_ROOT/
./scripts/train.sh -gpu 0,1,2 -image_set train -log_dir ./log/
Training logs and model checkpoints will be saved in the log directory.
We can launch evaluation script simutaneously with training
cd $SQSG_ROOT/
./scripts/eval.sh -gpu 1 -image_set val -log_dir ./log/
We can monitor the training process using tensorboard.
tensorboard --logdir=$SQSG_ROOT/log/
Tensorboard displays information such as training loss, evaluation accuracy, visualization of detection results in the training process, which are helpful for debugging and tunning models