Skip to main content

EVA Video Database System (Think MySQL for videos).

Project description

EVA

Quickly capture information embedded in videos!

🌟 Try It Out! 🌟

EVA Video Analytics System

PyPI Status CI Status Coverage Status License Documentation Status Discuss Python Versions

What is EVA?

EVA is a new database system tailored for video analytics -- think MySQL for videos. It supports a simple SQL-like language for querying videos (e.g., finding frames in a movie with your favorite actor or find touchdowns in a football game). It comes with a wide range of commonly used computer vision models.

Why EVA?

👀 Easily query videos in user-facing applications with a simple SQL-like interface for commonly used computer vision models.

🚅 Speed up queries and save money spent on model inference using in-built sampling, caching, and filtering optimizations.

✨ Hit your target accuracy using state-of-the-art model selection and query optimization algorithms.

Links

QuickStart

  1. EVA requires Python 3.7+. To install EVA, we recommend using an virtual environment and the pip package manager:
pip install evadb
  1. Start the EVA server and the client programs
eva_server&   # launch server
eva_client    # launch client
  1. UPLOAD a video using the client (we use ua_detrac.mp4 video as an example):
UPLOAD INFILE 'data/ua_detrac/ua_detrac.mp4' PATH 'test_video.mp4';
  1. LOAD the video using the following command:
LOAD FILE 'test_video.mp4' INTO MyVideo;
  1. That's it. You can now start issuing queries over the loaded video:
SELECT id, data FROM MyVideo WHERE id < 5;

More Interesting Queries

  1. Search for frames in the video that contain a car
SELECT id, data FROM MyVideo WHERE ['car'] <@ FastRCNNObjectDetector(data).labels;

QueryResult

  1. Search for frames in the video that contain a pedestrian and a car
SELECT id, data FROM MyVideo WHERE ['pedestrian', 'car'] <@ FastRCNNObjectDetector(data).labels;
  1. Search for frames in the video with more than 3 cars
SELECT id, data FROM MyVideo WHERE Array_Count(FastRCNNObjectDetector(data).labels, 'car') > 3;
  1. Create your own user-defined function (UDF) that wraps around a vision model like FastRCNN
CREATE UDF IF NOT EXISTS MyUDF
INPUT  (frame NDARRAY UINT8(3, ANYDIM, ANYDIM))
OUTPUT (labels NDARRAY STR(ANYDIM), bboxes NDARRAY FLOAT32(ANYDIM, 4),
        scores NDARRAY FLOAT32(ANYDIM))
TYPE  Classification
IMPL  'eva/udfs/fastrcnn_object_detector.py';

Contributing to EVA

Development Environment Setup

To install EVA from source, use a virtual environment and the pip package manager. EVA requires JAVA 8 for generating the parser.

git clone https://github.com/georgia-tech-db/eva.git && cd eva
python3 -m venv test_eva_db                             # to create a virtual environment
source test_eva_db/bin/activate                         # activate virtual environment
pip install --upgrade pip
sudo -E apt install -y openjdk-11-jdk openjdk-11-jre    # to install JAVA
sh script/antlr4/generate_parser.sh                     # to generate the EVA parser
pip install -e ".[dev]"

To verify that installation is successful, run the test suite.

sh script/test/test.sh

Contributing Guidelines

To file a bug or request a feature, please use GitHub issues. Pull requests are welcome. For more information on installing from source, troublshooting,and contributing to EVA, see our contributing guidelines.

Contributors

See the people page for the full listing of contributors.

License

Copyright (c) 2018-2022 Georgia Tech Database Group Licensed under Apache License.

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

evadb-0.0.8.tar.gz (215.7 kB view details)

Uploaded Source

Built Distribution

evadb-0.0.8-py3-none-any.whl (407.0 kB view details)

Uploaded Python 3

File details

Details for the file evadb-0.0.8.tar.gz.

File metadata

  • Download URL: evadb-0.0.8.tar.gz
  • Upload date:
  • Size: 215.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.10

File hashes

Hashes for evadb-0.0.8.tar.gz
Algorithm Hash digest
SHA256 bbe55cd719bd01fc030d71796cbf852d686e8b6bfe54a1b6d309f9148b6a5bf2
MD5 3e425da54404f5c5561a4da6e8fd4da3
BLAKE2b-256 405849d63b2f4f791ccc3282acdc80630bc7c2c6eb63ae2e6a5b185ad4f9725c

See more details on using hashes here.

File details

Details for the file evadb-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: evadb-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 407.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.10

File hashes

Hashes for evadb-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 01b784ed80601cef06ea8f0246db05defe53d2ca50c458a84bef16cea6572526
MD5 24f5fab66aa2b69f455bdbe87c71970c
BLAKE2b-256 14a39b72273c1a645ffcee5703ac0f94e61f3cf3eb35db72912d62e0db357031

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