Skip to main content

Inspect, clean, convert, and benchmark event-camera data from the command line

Project description

evlab

Inspect, clean, convert, and benchmark event-camera data from the command line.

Event-based vision has a preprocessing problem: every sensor and dataset ships a different container (AEDAT, ROS bags, CSV, NPZ, proprietary .dat), every paper wants a different representation (voxel grids, time surfaces, frames), and every pipeline reimplements the same denoising filters. evlab is the small, boring tool that handles that mess so you can get to the actual work.

pip install evlab[viz]

evlab info recording.npz                 # what is this file?
evlab convert events.aedat4 events.npz   # normalize the container
evlab convert drive.dat events.npz       # Prophesee .dat works too
evlab convert flight.bag events.npz      # ...and ROS bags (dvs_msgs)
evlab denoise events.npz clean.npz --filter baf --window 5000
evlab voxel clean.npz voxels.npy --bins 10
evlab visualize clean.npz preview.gif --mode gif
evlab benchmark events.npz clean.npz     # what did the filter do?

How good is a denoising filter, really? Generate a labeled stream and score it:

evlab synth labeled.npz --signal-rate 20000 --noise-rate 8000
evlab denoise-bench labeled.npz --filter baf --window 3000
#   precision     : 99.2%
#   recall        : 37.8%
#   f1            : 0.548
#   noise removed : 99.2%

Status

Early alpha. Works and is tested: the canonical representation; loading NPZ/CSV/TXT, AEDAT4 ([aedat] extra), Prophesee legacy .dat (with timestamp-wrap handling), and ROS1/ROS2 bags with EventArray topics ([ros] extra); BAF/refractory denoising; voxel grids, time surfaces, accumulate frames; synthetic labeled streams and precision/recall filter scoring; and the eight CLI commands above. Planned next: Prophesee EVT3 .raw, dataset-aware loaders (via Tonic), streaming via Faery, and more filters (STCF, IE/YNoise) under denoise-bench.

Python API

import evlab

data = evlab.load("recording.npz")          # EventData: (x, y, t, p) + sensor size
print(data.event_rate)

from evlab.filters import background_activity_filter
clean = background_activity_filter(data, time_window_us=5000)

from evlab.representations import voxel_grid
grid = voxel_grid(clean, bins=10)            # (10, H, W) float32, ready for torch

Design notes

  • One canonical in-memory format: a t-sorted structured numpy array (x: u2, y: u2, t: i8 (µs), p: i1) plus sensor geometry. Every loader normalizes into it; every filter/representation consumes it.
  • Zero heavy dependencies in the core (numpy + click). Visualization, AEDAT support, and dataset loaders are opt-in extras.
  • Filters return copies; nothing mutates your data behind your back.

Development

pip install -e .[dev]
pytest
ruff check src tests

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

evlab-0.1.0a1.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

evlab-0.1.0a1-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

Details for the file evlab-0.1.0a1.tar.gz.

File metadata

  • Download URL: evlab-0.1.0a1.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for evlab-0.1.0a1.tar.gz
Algorithm Hash digest
SHA256 26f9d7a00a753e720770206b4a91b61fbaebff7a0e34364e59c95103315ebf20
MD5 990e3a125b0dd62ea66c0e3cb8589c1f
BLAKE2b-256 b166e8e314f64dfaf33c2bdbcf7c8be983cf01af575019c2b54b56845dcc8129

See more details on using hashes here.

Provenance

The following attestation bundles were made for evlab-0.1.0a1.tar.gz:

Publisher: release.yml on JPL11/evlab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file evlab-0.1.0a1-py3-none-any.whl.

File metadata

  • Download URL: evlab-0.1.0a1-py3-none-any.whl
  • Upload date:
  • Size: 16.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for evlab-0.1.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 70113cf8737173b10f4b759139e852c03a3c43cc3534417ea937093b3cfc32a6
MD5 b6660e264f1ad38f6b8d8c1c9cddf334
BLAKE2b-256 1ec51db192cefe91eabe43a23b30db386411f7ac8041d9fdebcba4d87618c8c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for evlab-0.1.0a1-py3-none-any.whl:

Publisher: release.yml on JPL11/evlab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page