Skip to main content

EVA Video Database System (Think MySQL for videos).

Project description

EVA

Try It Out!

Open EVA on Colab Slack Discuss on Github! PyPI License Python Versions

EVA Multimedia Database System

EVA is a database system tailored for video analytics -- think PostgreSQL for videos. It supports a SQL-like language for querying videos like:

  • examining the "emotion palette" of different actors
  • finding gameplays that lead to a touchdown in a football game

EVA comes with a wide range of commonly used computer vision models. It written in Python, and it is licensed under the Apache license.

If you are wondering why you might need a video database system, start with page on Video Database Systems. It describes how EVA lets users easily make use of deep learning models and how they can reduce money spent on inference on large image or video datasets.

The Getting Started page shows how you can use EVA for different computer vision tasks: image classification, object detection, action recognition, and how you can easily extend EVA to support your custom deep learning model in the form of user-defined functions.

The User Guides section contains Jupyter Notebooks that demonstrate how to use various features of EVA. Each notebook includes a link to Google Colab, where you can run the code by yourself.

Why EVA?

Easily combine SQL and Deep Learning to build next-generation database applications Easily query videos in user-facing applications with a SQL-like interface for commonly used computer vision models.
Speed up queries and save money spent on model inference EVA comes with a collection of built-in sampling, caching, and filtering optimizations inspired by time-tested relational database systems.
Extensible by design to support custom deep learning models EVA has first-class support for user-defined functions that wrap around your deep learning models in PyTorch.

Links

Quick Start

  1. EVA supports Python versions 3.7 through 3.10. To install EVA, we recommend using the pip package manager.
pip install evadb
  1. EVA works on Jupyter notebooks -- illustrative notebooks are available in the Tutorials folder. EVA adopts a client-server architecture and comes with a terminal-based client. To start the EVA server and a terminal-based client, use the following commands:
eva_server &   # launch server
eva_client     # launch client
  1. Load a video onto the server using the client (we use ua_detrac.mp4 video as an example):
LOAD VIDEO "data/ua_detrac/ua_detrac.mp4" INTO MyVideo;
  1. That's it! You can now start running queries over the loaded video:
SELECT id, data FROM MyVideo WHERE id < 5;
  1. Search for frames in the video that contain a car
SELECT id, data FROM MyVideo WHERE ['car'] <@ FastRCNNObjectDetector(data).labels;
Source Video Query Result
Source Video Query Result
  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. You can create a new user-defined function (UDF) that wraps around your custom vision model or an off-the-shelf 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';
  1. You can combine multiple user-defined functions in a single query to accomplish more complicated tasks.
   -- Analyse emotions of faces in a video
   SELECT id, bbox, EmotionDetector(Crop(data, bbox)) 
   FROM HAPPY JOIN LATERAL UNNEST(FaceDetector(data)) AS Face(bbox, conf)  
   WHERE id < 15;

Illustrative EVA Applications

:desert_island: Traffic Analysis Application using Object Detection Model

Source Video Query Result
Source Video Query Result

:desert_island: MNIST Digit Recognition using Image Classification Model

Source Video Query Result
Source Video Query Result

:desert_island: Movie Analysis Application using Face Detection + Emotion Classfication Models

Source Video Query Result
Source Video Query Result

Community

Join the EVA community on Slack to ask questions and to share your ideas for improving EVA.

EVA Slack Channel

Contributing to EVA

PyPI Version CI Status Coverage Status Documentation Status

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

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.1.2.tar.gz (252.6 kB view details)

Uploaded Source

Built Distribution

evadb-0.1.2-py3-none-any.whl (472.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: evadb-0.1.2.tar.gz
  • Upload date:
  • Size: 252.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.13 tqdm/4.44.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.3

File hashes

Hashes for evadb-0.1.2.tar.gz
Algorithm Hash digest
SHA256 92ac1b59cae5f4ae5ccc7247867686e6802765085be3d70460700c1975365106
MD5 d35458440c33c6e8910d4affcd0859c9
BLAKE2b-256 75e200b02fe8ab7c2ff40718cf7f83ed1c2adfafb325ad5592b2dd946db445ab

See more details on using hashes here.

File details

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

File metadata

  • Download URL: evadb-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 472.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.13 tqdm/4.44.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.3

File hashes

Hashes for evadb-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 730e15873852c6d4d1c55a9a10ca9c602bc747258588f4f9bd14920ef0f5b0b3
MD5 9edde9a12b2c9a7721cad3787940c320
BLAKE2b-256 17f0cfa67262173c9cbdcdb4a0d67d9392854dab098e5dbfe1c68acb8ba200e1

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