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”
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
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}
}