videoflow/videoflow
Python framework that facilitates the quick development of complex video analysis applications and other series-processing based applications in a multiprocessing environment.
What it solves
Videoflow is a framework for building distributed video and stream processing pipelines. It allows developers to define a processing graph (a directed acyclic graph) once and run it either locally for development or on Kubernetes for production scaling, without changing the code.
How it works
- Graph-Based Architecture: Users describe a pipeline as a set of producers, processors, and consumers.
- Distributed Execution: Each node in the graph runs as an independent worker (a subprocess locally or a pod on Kubernetes) that communicates via a NATS JetStream message broker.
- Node Communication: Every node publishes its output to a specific broker subject and subscribes to the inputs of its parents, enabling complex topologies like fan-out and multi-parent joins.
- Deployment: The framework handles the compilation of the graph into Kubernetes manifests, including GPU scheduling, health probes, and autoscaling.
Who it’s for
- Developers building high-throughput video processing applications.
- ML engineers needing to deploy computer vision models (object detection, tracking, pose estimation) in a distributed environment.
- Teams requiring a seamless transition from local prototyping to Kubernetes-based production scaling.
Highlights
- Hybrid Execution: Run the same pipeline locally or on Kubernetes with zero code changes.
- Language Agnostic: Supports components written in any language as long as they are shipped as container images.
- GPU Integration: Built-in support for GPU scheduling, including handling NVIDIA device plugins and time-slicing for shared GPU access.
- Pre-built Components: Ships with off-the-shelf nodes for common vision tasks like segmentation and object detection.
Related
- Project
- Project
- Project
- Project
- Project