Home

Awesome

Created by Martin Hahner at the Computer Vision Lab of ETH Zurich.

Support Ukraine arXiv visitors

PapersWithCode <br> PapersWithCode <br> PapersWithCode

šŸŒØ LiDAR Snowfall Simulation <br> for Robust 3D Object Detection

by Martin Hahner, Christos Sakaridis, Mario Bijelic, Felix Heide, Fisher Yu, Dengxin Dai, and Luc van Gool <br>

šŸ“£ Oral at CVPR 2022. <br> Please visit our paper website for more details.

<img src="teaser.gif" width="850">

Overview

.
ā”œā”€ā”€ calib                     # contains the LiDAR sensor calibration file used in STF
ā”‚   ā””ā”€ā”€ ...
ā”œā”€ā”€ lib                       # contains external libraries as submodules
ā”‚   ā””ā”€ā”€ ...
ā”œā”€ā”€ splits                    # contains the splits we used for our experiments
ā”‚   ā””ā”€ā”€ ...
ā”œā”€ā”€ tools                     # contains our snowfall and wet ground simulation code
ā”‚   ā”œā”€ā”€ snowfall
ā”‚   ā”‚   ā”œā”€ā”€ geometry.py
ā”‚   ā”‚   ā”œā”€ā”€ precompute.py
ā”‚   ā”‚   ā”œā”€ā”€ sampling.py
ā”‚   ā”‚   ā””ā”€ā”€ simulation.py
ā”‚   ā””ā”€ā”€ wet_ground
ā”‚       ā”œā”€ā”€ augmentation.py
ā”‚       ā”œā”€ā”€ phy_equations.py
ā”‚       ā”œā”€ā”€ planes.py
ā”‚       ā””ā”€ā”€ utils.py
ā”œā”€ā”€ .gitignore
ā”œā”€ā”€ .gitmodules
ā”œā”€ā”€ LICENSE
ā”œā”€ā”€ pointcloud_viewer.py      # to visualize LiDAR point clouds and apply various augmentations
ā”œā”€ā”€ README.md
ā””ā”€ā”€ teaser.gif

Datasets supported by pointcloud_viewer.py:

Note: <br> The snowfall and wet ground simulation is only tested on the SeeingThroughFog (STF) dataset. <br> To support other datasets as well, code changes are required.

License

This software is made available for non-commercial use under a Creative Commons License.<br> A summary of the license can be found here.

Citation(s)

If you find this work useful, please consider citing our paper.

@inproceedings{HahnerCVPR22,
  author = {Hahner, Martin and Sakaridis, Christos and Bijelic, Mario and Heide, Felix and Yu, Fisher and Dai, Dengxin and Van Gool, Luc},
  title = {{LiDAR Snowfall Simulation for Robust 3D Object Detection}},
  booktitle = {IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
  year = {2022},
}

You may also want to check out our earlier work <br> Fog Simulation on Real LiDAR Point Clouds for 3D Object Detection in Adverse Weather.

@inproceedings{HahnerICCV21,
  author = {Hahner, Martin and Sakaridis, Christos and Dai, Dengxin and Van Gool, Luc},
  title = {{Fog Simulation on Real LiDAR Point Clouds for 3D Object Detection in Adverse Weather}},
  booktitle = {IEEE International Conference on Computer Vision (ICCV)},
  year = {2021},
}

Getting Started

Setup

  1. Install anaconda.

  2. Execute the following commands.

# Create a new conda environment.
conda create --name snowy_lidar python=3.9 -y

# Activate the newly created conda environment.
conda activate snowy_lidar

# Install dependencies.
conda install matplotlib pandas plyfile pyaml pyopengl pyqt pyqtgraph scipy scikit-learn tqdm -c conda-forge -y
pip install PyMieScatt pyquaternion

# Clone this repository (including submodules!).
git clone git@github.com:SysCV/LiDAR_snow_sim.git --recursive
cd LiDAR_snow_sim
  1. If you want to use our precomputed snowflake patterns, you can download them (2.3GB) as mentioned below.
wget https://www.trace.ethz.ch/publications/2022/lidar_snow_simulation/snowflakes.zip
unzip snowflakes.zip
rm snowflakes.zip
  1. If you want to use DROR as well, <br> you need to install PCL or download the point indices (215MB) as mentioned below.
wget https://www.trace.ethz.ch/publications/2022/lidar_snow_simulation/DROR.zip
unzip DROR.zip
rm DROR.zip
  1. Enjoy pointcloud_viewer.py.
python pointcloud_viewer.py
  1. If you also want to run inference on the STF dataset, a couple of extra steps are required. <br> Note: For unknown reasons, this can roughly slow down the augmentation(s) by a factor of two.
# Download our checkpoints (265MB)
wget https://www.trace.ethz.ch/publications/2022/lidar_snow_simulation/experiments.zip
unzip experiments.zip
rm experiments.zip

# Install PyTorch.
conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c conda-forge -c pytorch -y

# Install spconv
pip install spconv-cu113

# build pcdet
cd lib/OpenPCDet
python setup.py develop
cd ../..

Disclaimer

The code has been successfully tested on

Contributions

Please feel free to suggest improvements to this repository.<br> We are always open to merge useful pull request.

Acknowledgments

This work is supported by Toyota via the TRACE project.

The work also received funding by the AI-SEE project with national funding from

We also thank the Federal Ministry for Economic Affairs and Energy for support within <br> VVM-Verification and Validation Methods for Automated Vehicles Level 4 and 5, a PEGASUS family project.

Felix Heide was supported by an NSF CAREER Award (2047359), <br> a Sony Young Faculty Award, and a Project X Innovation Award.

We thank Emmanouil Sakaridis for verifying our derivation of occlusion angles in our snowfall simulation.

<img src="https://user-images.githubusercontent.com/14181188/160494058-9a965ac4-3ae3-4633-9d3c-25ef8462286f.png" height="40"> Ā  Ā  Ā  Ā  Ā  <img src="https://user-images.githubusercontent.com/14181188/160494439-cca6665b-0732-4dda-90d9-1d3c77e7f6f8.png" height="40"> Ā  Ā  Ā  Ā  Ā  <img src="https://user-images.githubusercontent.com/14181188/160494968-189c96cc-0a34-4e56-96c7-3a33ea439919.png" height="40"> Ā  Ā  Ā  Ā  Ā  <img src="https://user-images.githubusercontent.com/14181188/160495259-f60ee657-3d04-40a8-abad-d8a9c42dd8fc.png" height="40">