Skip to content

πŸ’§ Visual Data Preparation (VDP) is an open-source tool to seamlessly integrate Vision AI with the modern data stack

License

Notifications You must be signed in to change notification settings

hirajanwin/vdp

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Visual Data Preparation: open-source visual data ETL


Visual Data Preparation (VDP) Β  Twitter URL

GitHub release (latest SemVer including pre-releases) License Apache-2.0 Discord Integration Test

Visual Data Preparation (VDP) is an open-source visual data ETL tool to streamline the end-to-end visual data processing pipeline:

  1. Extract unstructured visual data from pre-built data sources such as cloud/on-prem storage, or IoT devices

  2. Transform it into analysable structured data by Vision AI models

  3. Load the transformed data into warehouses, applications, or other destinations

Highlights

  • πŸš€ The fastest way to build end-to-end visual data pipelines - building a pipeline is like assembling LEGO blocks

  • ⚑️ High-performing backends implemented in Go with Triton Inference Server for unleashing the full power of NVIDIA GPU architecture (e.g., concurrency, scheduler, batcher) supporting TensorRT, PyTorch, TensorFlow, ONNX, Python and more.

  • πŸ–±οΈ One-click import & deploy ML/DL models from popular GitHub, Hugging Face or cloud storage managed by version control tools like DVC or ArtiVC

  • πŸ“¦ Standardised vision task structured output formats to streamline with data warehouse

  • πŸ”Œ Pre-built ETL data connectors for extensive data access integrated with Airbyte

  • πŸͺ’ Build pipelines for diverse scenarios - SYNC for real-time inference and ASYNC for on-demand workload

  • 🧁 Scalable API-first microservice design for great developer experience - seamless integration to modern data stack at any scale

  • 🀠 Build for every Vision AI and Data practitioner - The no-/low-code interface helps take off your AI Researcher/AI Engineer/Data Engineer/Data Scientist hat and put on the all-rounder hat to deliver more with VDP

Online demos

Want to showcase your ML/DL models? We also offer fully-managed VDP on Instill Cloud. Please sign up the form and we will reach out to you.

Object Detection: YOLOv4 vs. YOLOv7

We use VDP to import the official YOLOv4 and YOLOv7 models pre-trained with only MS-COCO dataset. VDP instantly gives us the endpoints to perform inference. Try out the live demo VDP Demo

Why we build VDP

Before we started to build VDP, we had fought with streaming large volume data (billions of images a day!) to automate vision tasks using deep learning-based computer vision, sweating blood to build everything from scratch.

We've learned that model serving for an effective end-to-end data flow concerns not only high throughput and low latency but also cost efficiency, and these criteria are non-trivial to achieve altogether. Nonetheless, we had successfully built a battle-proven model serving system in-house and have the system run in production for years.

What we had built can actually be modularised into working components to be generalised to a broader spectrum of vision tasks and industry sectors. We think it's about time to share the experiences and to extend the system to make Vision AI more accessible to everyone.

The goal of VDP is to seamlessly bring Vision AI into the modern data stack with a standardised framework. Check our blog post Missing piece in modern data stack: visual data preparation on how this tool can make a significant impact on unstructured visual data processing across different stakeholders.

How VDP works

The core concept of VDP is pipeline. A pipeline is an end-to-end workflow that automates a sequence of tasks to process visual data. Each pipeline is defined and formed by a recipe that contains three components:

  1. source: where the pipeline starts. It connects the source of image and video data to be processed.

  2. model instances: a series of deployed Vision AI models to process the ingested visual data in parallel and generate structured outputs

  3. destination: where to send the structured outputs

Based on the mode of a pipeline, it will extract and process the visual data, and send the outputs to the destination every time the trigger event occurs.

Check out the pipeline recipe example below. This recipe defines that the pipeline accepts HTTP requests, processes the request data using YOLOv4 model, and returns the outputs in HTTP responses. With this simple configuration, now we have a pipeline equivalent to a powerful HTTP prediction server πŸš€.

{
    "recipe": {
        "source": "source-connectors/source-http",
        "model_instances": [
            "models/yolov4/instances/v1.0-cpu"
        ],
        "destination": "destination-connectors/destination-http"
    }
}

Note

We use connector as a general term to represent data source and destination. Please find the supported connectors here.

Guidance philosophy

VDP is built with open heart and we expect VDP to be exposed to more MLOps integrations. It is implemented with microservice and API-first design principle. Instead of building all components from scratch, we've decided to adopt sophisticated open-source tools:

We hope VDP can also enrich the open-source communities in a way to bring more practical use cases in unstructured visual data processing.

Prerequisites

  • macOS or Linux - VDP works on macOS or Linux, but does not support Windows.

  • Docker and Docker Compose - VDP uses Docker Compose (compose file version: 3.9) to run all services at local. Please install Docker and Docker Compose before using VDP.

Quick start

Execute the following commands to start pre-built images with all the dependencies:

$ git clone https://github.com/instill-ai/vdp.git && cd vdp

# Launch all services
$ make all

πŸš€ That's it! Once all the services are up with health status, the UI is ready to go at http://localhost:3000!

Here is a step-by-step guide to build your first pipeline.

Warning

The image of model-backend (~2GB) and Triton Inference Server (~11GB) can take a while to pull, but this should be an one-time effort at the first setup.

Shut down VDP

To shut down all running services:

$ make down

Model Hub

We curate a list of ready-to-use models for VDP. These models are from different sources and have been tested by our team. Want to contribute a new model? Please create an issue, we are happy to test and add it to the list πŸ‘.

Model Task Sources Framework CPU GPU Notes
MobileNet v2 Image classification GitHub ONNX βœ… βœ…
YOLOv4 Object detection GitHub, GitHub-DVC ONNX βœ… βœ…
YOLOv7 Object detection GitHub, GitHub-DVC ONNX βœ… βœ…
Detectron2 Keypoint R-CNN R50-FPN Keypoint detection GitHub, GitHub-DVC PyTorch βœ… ❌

Note: The GitHub-DVC source in the table means importing a model into VDP from a GitHub repository that uses DVC to manage large files.

Documentation

πŸ“” Documentation & tutorials are coming soon!

πŸ“˜ API Reference

The gRPC protocols in protobufs provide the single source of truth for the VDP APIs. The genuine protobuf documentation can be found in our Buf Scheme Registry (BSR).

For the OpenAPI documentation, access http://localhost:3001 after make all, or simply run make doc.

Contribution

We love contribution to VDP in any forms:

Note Code in the main branch tracks under-development progress towards the next release and may not work as expected. If you are looking for a stable alpha version, please use latest release.

Community support

For general help using VDP, you can use one of these channels:

  • GitHub - bug reports, feature requests, project discussions and contributions

  • Discord - live discussion with the community and our team

  • Newsletter & Twitter - get the latest updates

If you are interested in hosting service of VDP, we've started signing up users to our private alpha. Get early access and we'll contact you when we're ready.

License

See the LICENSE file for licensing information.

About

πŸ’§ Visual Data Preparation (VDP) is an open-source tool to seamlessly integrate Vision AI with the modern data stack

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Makefile 86.7%
  • Shell 13.3%