EVA is a visual data management system (think MySQL for videos).
Project description
EVA (Exploratory Video Analytics)
What is EVA?
EVA is a visual data management system (think MySQL for videos). It supports a declarative language similar to SQL and a wide range of commonly used computer vision models.
What does EVA do?
-
EVA enables querying of visual data in user facing applications by providing a simple SQL-like interface for a wide range of commonly used computer vision models.
-
EVA improves throughput by introducing sampling, filtering, and caching techniques.
-
EVA improves accuracy by introducing state-of-the-art model specialization and selection algorithms.
Table of Contents
Installation
Installation of EVA involves setting a virtual environment using miniconda and configuring git hooks.
- Clone the repository
git clone https://github.com/georgia-tech-db/eva.git
- Install the dependencies.
sh script/install/before_install.sh
export PATH="$HOME/miniconda/bin:$PATH"
sh script/install/install.sh
- Connect mysql user root with normal account and no password
sudo mysql -u root
> SELECT User,Host FROM mysql.user;
> DROP USER 'root'@'localhost';
> CREATE USER 'root'@'%' IDENTIFIED BY '';
> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
> FLUSH PRIVILEGES;
mysql -u root
refer to askubuntu
Client Testing
- Set up the server and client
-
Activate the conda environment:
conda activate eva
-
Launch EVA database Server:
python eva.py
-
Launch CLI:
python eva_cmd_client.py
- Run the
UPLOAD
command in the client terminal:
UPLOAD INFILE 'data/ua_detrac/ua_detrac.mp4' PATH 'test_video.mp4';
- Run the
LOAD
command in the client terminal: (may take a while)
LOAD DATA INFILE 'test_video.mp4' INTO MyVideo;
- Below is a basic query that should work on the client
SELECT id, data FROM MyVideo WHERE id < 5;
Development
- Install git hooks in your .git/ directory. [optional, but recommended]
conda activate eva
pre-commit install
- Ensure that all the unit test cases (including the ones you have added) run succesfully and the coding style conventions are followed.
bash script/test/test.sh
Quickstart Tutorial
Configure GPU (Recommended)
-
If your workstation has a GPU, you need to first set it up and configure it. You can run the following command first to check your hardware capabilities.
ubuntu-drivers devices
If you do have an NVIDIA GPU, and its not been configured yet, follow all the steps in this link carefully.
https://towardsdatascience.com/deep-learning-gpu-installation-on-ubuntu-18-4-9b12230a1d31
.Some pointers:
- When installing NVIDIA drivers, check the correct driver version for your GPU to avoid compatibiility issues.
- When installing cuDNN, you will have to create an account. Make sure you get the correct deb files for your OS and architecture.
-
You can run the following code in a jupyter instance to verify your GPU is working well along with PyTorch.
import torch device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') print(device)
Output of
cuda:0
indicates the presence of a GPU. (Note: 0 indicates the index of the GPU in system. Incase you have multiple GPUs, the index needs to be accordingly changed) -
Now configure the
executor
section ineva.yml
as follows:gpus: {'127.0.1.1': [0]}
127.0.1.1
is the loopback address on which the eva server is started. 0 refers to the GPU index to be used.
Sample Notebook
-
Open a terminal instance and start the server:
python eva.py
-
Open another terminal instance. Start a jupyter lab/notebook instance, and navigate to
tutorials/object_detection.ipynb
-
You might have to install ipywidgets to visualize the input video and output. Follow steps in
https://ipywidgets.readthedocs.io/en/latest/user_install.html
as per your jupyter environment. -
Run each cell one by one. Each cell is self-explanatory. If everything has been configured correctly you should be able to see a ipywidgets Video instance with the bounding boxes output of the executed query.
Architecture
EVA consists of four core components:
- EVAQL Query Parser
- Query Optimizer
- Query Execution Engine (Filters + Deep Learning Models)
- Distributed Storage Engine
Contributing
To file a bug or request a feature, please file a GitHub issue. Pull requests are welcome.
Contributors
See the people page for the full listing of contributors.
License
Copyright (c) 2018-2020 Georgia Tech Database Group Licensed under the Apache License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for evatestdb-0.0.26-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14cc4711d9b76f44bd590d32ca9f82081ac3abe49dd6e0fe65cc1f2366373e87 |
|
MD5 | 2f40fab2389bccc5c1de4838de3d1806 |
|
BLAKE2b-256 | 5c41fa02c881902e9b416f73cd6db53100b882e6869432f0c7957ac0211b384b |