Skip to main content
Ctrl K

Code and data supporting the paper “Pushing the Boundary of Event Subsampling in Event-Based Video Classification Using CNNs”

Code and data supporting the paper “Pushing the Boundary of Event Subsampling in Event-Based Video Classification Using CNNs”

2
mentions
3
contributors

Description

This repository contains the code, resources, and FAN1VS3 dataset related to the paper:

H. Araghi, J. van Gemert, and N. Tomen, "Pushing the Boundary of Event Subsampling in Event-Based Video Classification Using CNNs," in ECCV Workshop, 2024.

FAN1VS3 — an event-camera dataset of a fan at two rotation speeds

FAN1VS3 is a small, two-class event-camera classification dataset. A desk fan

was recorded with a Prophesee Gen4.2 event camera at two of its rotation-speed

settings (speed_1 and speed_3), and the two continuous recordings were cut

into short clips. The task is to decide, from a single clip

of raw events, which speed setting the fan was running at.

Download

The dataset ships as a single ZIP archive, FAN1VS3.zip. After downloading,

check it against SHA256SUMS:


sha256sum -c SHA256SUMS            # Linux / macOS


Get-FileHash FAN1VS3.zip -Algorithm SHA256   # Windows PowerShell

Layout


FAN1VS3/

├── README.md

├── LICENSE           CC BY 4.0

├── segmented/         ← the dataset proper

│  ├── speed_1/speed_1_0000.hdf5 … speed_1_0234.hdf5  (235 clips)

│  └── speed_3/speed_3_0000.hdf5 … speed_3_0274.hdf5  (275 clips)

├── full_recordings/      ← optional, for your own segmentation

│  ├── speed_1/{speed_1.hdf5, recording_2023-09-21_14-35-06.raw, ….bias}

│  └── speed_3/{speed_3.hdf5, recording_2023-09-21_14-36-49.raw, ….bias}

└── splits/

  ├── training.txt validation.txt test.txt

  └── splits.csv       relative_path, class_name, label_index, split

Loading a clip

Each clip in segmented/ is an HDF5 file with a single events group holding

four parallel, time-sorted arrays. Nothing beyond h5py and numpy is needed:


import h5py




with h5py.File("segmented/speed_1/speed_1_0000.hdf5", "r") as f:

  x = f["events"]["xs"][:]   # int16  , pixel column

  y = f["events"]["ys"][:]   # int16  , pixel row

  t = f["events"]["ts"][:]   # float64 , microseconds, starts at 0

  p = f["events"]["ps"][:]   # bool  , True = ON (positive) event

  meta = dict(f.attrs)     # num_events, num_pos, num_neg, duration, …




# the label is carried by the file name: speed_1 -> 0, speed_3 -> 1

label = {"speed_1": 0, "speed_3": 1}["speed_1_0000.hdf5".rsplit("_", 1)[0]]

The root attributes are num_events, num_pos / num_neg (ON / OFF counts),

duration, t0 / tk (first and last timestamp, microseconds),

sensor_resolution ([1280, 720], width × height), and num_imgs / num_flow

(both 0 — no frames or optical flow accompany this data).

The clips were written with the hdf5_packager from

event_utils, so any reader for

that format works unchanged.

The files in full_recordings/ are Prophesee's own HDF5 export — events in

CD/events as a structured array with fields x, y, p, t — alongside the

original .raw EVT3 stream and its .bias file; read those with the

Metavision SDK.

Recording and segmentation

Both recordings were made with a Prophesee Gen4.2 (1280×720)

event camera pointed at a desk fan.

| | speed_1 | speed_3 |

|---|---|---|

| Recording length | 17.34 s | 20.35 s |

| Total events | 111,000,469 | 81,484,980 |

| Clips | 235 | 275 |

| Events per full-length clip (min / mean / max) | 456,693 / 473,733 / 497,382 | 283,430 / 296,320 / 329,442 |

Each recording was cut into contiguous, non-overlapping 74,000 µs windows

starting at the timestamp of the recording's first event; each clip's timestamps

are shifted so that t0 = 0.

Splits

The split is class-stratified: 75 % training, 10 % validation, 15 % test, drawn

per class. splits/*.txt list one class/filename.hdf5 per line;

splits/splits.csv carries the same information with the class name and integer

label (speed_1 → 0, speed_3 → 1).

| Split | speed_1 | speed_3 | Total |

|---|---|---|---|

| training | 176 | 206 | 382 |

| validation | 23 | 27 | 50 |

| test | 36 | 42 | 78 |

| all | 235 | 275 | 510 |

License

Released under the Creative Commons Attribution 4.0 International (CC BY 4.0)

license — see LICENSE. You may share and adapt the data for any purpose,

including commercially, provided you give appropriate credit.

Citation

If you use this dataset in your research, please cite the following paper:

H. Araghi, J. van Gemert, and N. Tomen, “Pushing the Boundaries of Event

Subsampling in Event-Based Video Classification Using CNNs,” in *Computer

Vision – ECCV 2024 Workshops*, Springer, 2025.

https://doi.org/10.1007/978-3-031-92460-6_17


@InProceedings{araghi2025pushing,

 author  = {Araghi, Hesam and van Gemert, Jan and Tomen, Nergis},

 title   = {Pushing the Boundaries of Event Subsampling in Event-Based

        Video Classification Using {CNNs}},

 booktitle = {Computer Vision -- ECCV 2024 Workshops},

 pages   = {276--292},

 year   = {2025},

 publisher = {Springer Nature Switzerland},

 doi    = {10.1007/978-3-031-92460-6_17}

}

Reference papers

Mentions

Contributors

Member of community

4TU