Awesome
Created by Martin Hahner at the Computer Vision Lab of ETH Zurich.
šØ 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:
- H3D
- A2D2
- KITTI
- LyftL5
- Pandaset
- nuScenes
- Argoverse
- ApolloScape
- SeeingThroughFog Ā :arrow_left: works best
- WaymoOpenDataset (via waymo_kitti_converter)
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
-
Install anaconda.
-
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
- 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
- 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
- Enjoy pointcloud_viewer.py.
python pointcloud_viewer.py
- 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
- Ubuntu 18.04.6 LTS + CUDA 11.3 + conda 4.13.0
- Debian GNU/Linux 10 (buster) + conda 4.13.0
- MacOS Big Sur 11.6.6 + conda 4.13.0
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
- the Austrian Research Promotion Agency (FFG),
- Business Finland,
- Federal Ministry of Education and Research (BMBF) and
- National Research Council of Canada Industrial Research Assistance Program (NRC-IRAP).
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">