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.
π 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.
- EVA requires Python 3.7+. To install EVA, we recommend using an virtual environment and the pip package manager:
pip install evadb
- Start the EVA server and the client programs
python eva/eva_server & # launch server
python eva/eva_client # launch client
- UPLOAD a video using the client (we use ua_detrac.mp4 video as an example):
LOAD FILE "data/ua_detrac/ua_detrac.mp4" INTO MyVideo;
- That's it. You can now start issuing queries over the loaded video:
SELECT id, data FROM MyVideo WHERE id < 5;
- Search for frames in the video that contain a car
SELECT id, data FROM MyVideo WHERE ['car'] <@ FastRCNNObjectDetector(data).labels;
- Search for frames in the video that contain a pedestrian and a car
SELECT id, data FROM MyVideo WHERE ['pedestrian', 'car'] <@ FastRCNNObjectDetector(data).labels;
- Search for frames in the video with more than 3 cars
SELECT id, data FROM MyVideo WHERE Array_Count(FastRCNNObjectDetector(data).labels, 'car') > 3;
- 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';
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]"
Note: If you face Pytorch CUDA compatibility issues after installation, refer this link and re-install the correct torch
and torchvision
packages with pip
To verify that installation is successful, run the test suite.
sh script/test/test.sh
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.
See the people page for the full listing of contributors.
Copyright (c) 2018-2022 Georgia Tech Database Group Licensed under Apache License.