Home

Awesome

ReSpike

Pytorch implementation code for ReSpike: Residual Frames-based Hybrid Spiking Neural Networks for Efficient Action Recognition.

Install

Create a conda environment using torch==2.1.0 and torchvision==0.16.0 with CUDA 12 support. We tested our code in this enviroment.

conda create -n respike python=3.10
conda activate respike
conda install pytorch==2.1.0 torchvision==0.16.0 pytorch-cuda=12.1 -c pytorch -c nvidia

Install the required packages using pip install -r requirements.txt.

Dataset Preperation

Download the HMDB-51 dataset from their official website. Alternatively, download the HMDB-51 dataset using the torchvision.datasets.HMDB51 API.

Make sure to put the files as the following structure:

HBDM-51
├── brush_hair
│   ├── April_09_brush_hair_u_nm_np1_ba_goo_0.avi
│   └── ...
├── cartwheel
│   ├── Acrobacias_de_un_fenomeno_cartwheel_f_cm_np1_ba_bad_8.avi
│   └── ...
└── catch
│   ├── 96-_Torwarttraining_1_catch_f_cm_np1_le_bad_0.avi
│   └── ...

Set the dataset path in the train_fusion.py file to your directory:

data_root = 'your directory'
annotation_path = 'your annotation directory'

Similarly, follow the same steps for the UCF-101 dataset. You can download the dataset through torchvision.datasets.UCF101 API.

For the Kinetics dataset, please follow the instructions in the Preparing Kinetics document provided by mmaction. Set the dataset path in the train_kinetics.py file to your data directory.

Running the code!

To train our ReSpike fusion network, on HMDB-51 or UCF-101, run

python train_fusion.py --dset hmdb51 --model resnet50 -T 16 -b 32 -lr 0.0001 --stride 4 --downsample

on Kinetics-400, run

python train_kinetics.py --dset kinetics400 -b 16 -T 16 --stride 2 -lr 0.0001 --model resnet50 -j 8 --downsample

Acknowledgements

Thanks to the codebases Stable Diffusion and TDN which help us quickly implement our ideas. We use the cross-attention implementation from the Stable Diffusion repo and the Kinetics dataset implementation from the TDN repo.

Special thanks to my co-author Yuhang Li for helping with the SNN backbone implementation.

Citation

If you think our work is useful, please consider citing our paper:

@article{xiao2024respike,
  title={ReSpike: Residual Frames-based Hybrid Spiking Neural Networks for Efficient Action Recognition},
  author={Xiao, Shiting and Li, Yuhang and Kim, Youngeun and Lee, Donghyun and Panda, Priyadarshini},
  journal={arXiv preprint arXiv:2409.01564},
  year={2024}
}