Manasi Muglikar, Nico Messikommer, Marco Cannici, Davide Scaramuzza
Robotics and Perception Group, University of Zürich
IEEE Transactions on Robotics (T-RO) 2026
Code release for the T-RO 2026 paper on event-based image de-snowing for autonomous driving.
If you use this codebase, or the datasets accompanying the paper, please cite the following publications:
@inproceedings{muglikar26tro,
title={Event-Based De-Snowing for Autonomous Driving},
author={Muglikar, Manasi and Messikommer, Nico and Cannici, Marco and Scaramuzza, Davide},
booktitle={Transactions of Robotics},
year={2026}
}
Verified baseline:
- Python 3.6.13
- PyTorch 1.8.0
- torchvision 0.9.0
- CUDA 11.x
Install dependencies:
python -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txtTraining and testing scripts expect each sequence folder to contain:
<sequence>/
masked_images/
gt_images/
events/
voxel/ # generated by preprocess.py
voxel_20ms/ # used by test.py for DSEC/real driving eval
For training, point --train_dir and --test_dir to directories containing per-sequence subfolders.
Generate cached voxel grids from event H5 files:
bash preprocess.shExpected behavior:
- One background preprocessing job per sequence (up to MAX_JOBS in the script).
- New .npy files created in each sequence voxel folder.
Use the provided launcher:
bash train.shOr run directly:
python train.py \
--arch EvSnowNet_Paper \
--batch_size 2 \
--gpu 0 \
--train_ps 256 \
--lr_initial 0.0001 \
--save_dir ./logs \
--warmup \
--resume \
--pretrain_weights ./logs/EvSnowNet_Paper/models/model_epoch_40.pth \
--train_dir /path/to/dataset/train/ \
--test_dir /path/to/dataset/test/ \
--save_images \
--nepoch 91 \
--checkpoint 10Expected console output includes lines such as:
- saving to : ./logs/EvSnowNet_Paper
- ===> Loading datasets
- ===> Start Epoch , End Epoch
- Checkpoint saved at epoch !
Artifacts are written to:
- logs//.txt
- logs//models/model_epoch_.pth
- logs//results/train/
Run batch testing over subfolders:
bash test.shOr run directly for a single sequence:
python test.py \
--input_dir /path/to/sequence \
--result_dir /path/to/output \
--model_name EvSnowNet_Paper \
--weights ./logs/EvSnowNet_Paper/models/model_epoch_40.pth \
--batch_size 1 \
--has_groundtruthExpected output structure:
<result_dir>/
image/
events/
gt/
evsnownet_paper/
Compute dataset-level PSNR/SSIM:
python evaluate.pyExpected output:
- Per-sequence processing logs.
- Final summary: Dataset Mean PSNR and Dataset Mean SSIM.
- Metrics text file written near the inference root.
The code is derived from multiple sources, in particular Snowformer and RLP. Thanks for their great works!