Skip to main content

Streaming library for Address-Event Representation (AER) data

Project description

Test status chat on Discord DOI

AEStream sends event-based data from A to B. AEStream is both a command-line tool an a C++/Python library with built-in GPU-acceleration for use with PyTorch, and Jax. We support reading and writing from files, event cameras, network protocols, and visualization tools.

Read more about the inner workings of the library in the AEStream publication.

Installation

Read more in our installation guide

The fastest way to install AEStream is by using pip: pip install aestream.

Source Installation Description
pip pip install aestream
pip install aestream --no-binary
Standard installation
Compilation with support forevent-cameras and CUDA kernels*
nix nix run github:aestream/aestream
nix develop github:aestream/aestream
Command-line interface
Python environment
docker See Installation documentation

Contributions to support AEStream on additional platforms are always welcome.

Usage (Python): Load event files

Read more in our Python usage guide

AEStream can process .csv, .dat, .evt3, and .aedat4 files like so. You can either directly load the file into memory

FileInput("file.aedat4", (640, 480)).load()

or stream the file in real-time to PyTorch, Jax, or Numpy

with FileInput("file.aedat4", (640, 480)) as stream:
    while True:
        frame = stream.read("torch") # Or "jax" or "numpy"
        ...

Usage (Python): stream data from camera or network

Streaming data is particularly useful in real-time scenarios. We currently support Inivation, Prophesee, and SynSense devices over USB, as well as the SPIF protocol over UDP. Note: requires local installation of drivers and/or SDKs (see installation guide).

# Stream events from a DVS camera over USB
with USBInput((640, 480)) as stream:
    while True:
        frame = stream.read() # A (640, 480) Numpy tensor
        ...
# Stream events from UDP port 3333 (default)
with UDPInput((640, 480), port=3333) as stream:
    while True:
        frame = stream.read("torch") # A (640, 480) Pytorch tensor
        ...

More examples can be found in our example folder. Please note the examples may require additional dependencies (such as Norse for spiking networks or PySDL for rendering). To install all the requirements, simply stand in the aestream root directory and run pip install -r example/requirements.txt

Example: real-time edge detection with spiking neural networks

We stream events from a camera connected via USB and process them on a GPU in real-time using the spiking neural network library, Norse using fewer than 50 lines of Python. The left panel in the video shows the raw signal, while the middle and right panels show horizontal and vertical edge detection respectively. The full example can be found in example/usb_edgedetection.py

Usage (CLI)

Read more in our CLI usage documentation page

Installing AEStream also gives access to the command-line interface (CLI) aestream. To use aestraem, simply provide an input source and an optional output sink (defaulting to STDOUT):

aestream input <input source> [output <output sink>]

Supported Inputs and Outputs

Input Description Example usage
DAVIS, DVXPlorer Inivation DVS Camera over USB input inivation
EVK Cameras Prophesee DVS camera over USB input prophesee
File Reads .aedat, .aedat4, .csv, .dat, or .raw files input file x.aedat4
SynSense Speck Stream events via ZMQ input speck
UDP network Receives stream of events via the SPIF protocol input udp
Output Description Example usage
STDOUT Standard output (default output) output stdout
Ethernet over UDP Outputs to a given IP and port using the SPIF protocol output udp 10.0.0.1 1234
File: .aedat4 Output to .aedat4 format output file my_file.aedat4
File: .csv Output to comma-separated-value (CSV) file format output file my_file.csv
Viewer View live event stream output view

CLI examples

Example Syntax
View live stream of Inivation camera (requires Inivation drivers) aestream input inivation output view
Stream Prophesee camera over the network to 10.0.0.1 (requires Metavision SDK) aestream input output udp 10.0.0.1
Convert .dat file to .aedat4 aestream input example/sample.dat output file converted.aedat4

Acknowledgments

AEStream is developed by (in alphabetical order):

The work has received funding from the EC Horizon 2020 Framework Programme under Grant Agreements 785907 and 945539 (HBP) and by the Deutsche Forschungsgemeinschaft (DFG, German Research Fundation) under Germany's Excellence Strategy EXC 2181/1 - 390900948 (the Heidelberg STRUCTURES Excellence Cluster).

Thanks to Philipp Mondorf for interfacing with Metavision SDK and preliminary network code.

Citation

Please cite aestream if you use it in your work:

@misc{aestream,
  doi = {10.48550/ARXIV.2212.10719},
  url = {https://arxiv.org/abs/2212.10719},
  author = {Pedersen, Jens Egholm and Conradt, Jörg},
  title = {AEStream: Accelerated event-based processing with coroutines},
  publisher = {arXiv},
  year = {2022},
}

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

aestream-0.6.3.tar.gz (241.1 kB view details)

Uploaded Source

Built Distributions

aestream-0.6.3-cp310-cp310-manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

aestream-0.6.3-cp39-cp39-manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

aestream-0.6.3-cp38-cp38-manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

File details

Details for the file aestream-0.6.3.tar.gz.

File metadata

  • Download URL: aestream-0.6.3.tar.gz
  • Upload date:
  • Size: 241.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for aestream-0.6.3.tar.gz
Algorithm Hash digest
SHA256 eeaa9dc49465bf25de80a549b78ee767cf3b34c1047caeb42be5e089d003d0ad
MD5 c92d0b1f22f6088ef639d13da8454172
BLAKE2b-256 cbdb7819ce1797b35f60906f050c92554d35012b7ac5250412b16d2ed6da9711

See more details on using hashes here.

File details

Details for the file aestream-0.6.3-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aestream-0.6.3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 81b2f1ebfd7528669f2db20c2bb392c4cd042c4ce964373ec750fd9447b77e56
MD5 8f4e7f757ae871ffc7866fbe823f8f4c
BLAKE2b-256 92fd76a74f15b2778c9b4f483de42fb0f8b8ae99898feba95790bf73aadf13dc

See more details on using hashes here.

File details

Details for the file aestream-0.6.3-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aestream-0.6.3-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 129ba04f6f8f70413f74461e17d0a197880e179eeb2346cb57f37efabf117978
MD5 ca27f70d93decc416b6e3c65357b169e
BLAKE2b-256 fffb49b775ce59aae57579711d7fc8c8c9a1473c4c2f6116ead1f755d203547e

See more details on using hashes here.

File details

Details for the file aestream-0.6.3-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aestream-0.6.3-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1fd9aaa3f1af0302884f9d8d4262db45217e776374c5392baf47505910241df7
MD5 8c61a02ef9c22dec95411ee4a791b76d
BLAKE2b-256 57d0f5d413fea0fad3e428d9cc049edbc75c5c0de6e4d8cd0ac9fde5e20a5081

See more details on using hashes here.

Supported by

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