VideoPipe Framework
repository·master·Indexed 25 days ago
https://github.com/sherlockchou86/videopipeA C++ framework for video analysis and structuring featuring a plugin-oriented pipeline architecture. It supports the integration of computer vision models for object detection, tracking (Deep SORT, SORT), and behavior analysis. The framework includes a variety of nodes for inference (OpenCV DNN, TensorRT, PaddleInference), on-screen display (OSD), data brokering (Kafka, UDP, JSON), and recording, with support for multi-channel processing and hardware acceleration via CUDA and TensorRT.
What's inside VideoPipe
- cpp_llmlib is a lightweight LLM Client SDK written in modern C++. It is designed to interface with both online OpenAI-compatible services (such as Alibaba Cloud, OpenAI, and other providers) and locally hosted inference backends (such as Ollama, vLLM, and Hugging Face TGI).
Overview of cereal serialization library
mastercereal is a C++ library used for serializing objects to JSON or XML formats. It is included in this repository as a third-party dependency.Overview of nlohmann/json library
masterThenlohmann/jsonlibrary is a header-only JSON library used in VideoPipe to parse and dump JSON payloads when interacting with REST APIs from mLLM (multimodal Large Language Model) services. It provides a syntax that is easy to use, similar to working with JSON in Python.Overview of trt_vehicle capabilities
masterThe
trt_vehiclecomponent provides several computer vision capabilities for vehicle analysis:- Vehicle detector: Detects vehicles in frames.
- Vehicle plate detector and recognizer: Detects and reads license plates.
- Vehicle scanner: Scans vehicles based on the side view of the body.
- Vehicle color and type classifier: Classifies the color and type of a vehicle.
- Vehicle feature encoder: Generates features used for 1:N search or 1:1 comparison.
Overview of bhtsne (t-SNE implementation)
masterThebhtsnelibrary is an implementation of the t-SNE (t-distributed Stochastic Neighbor Embedding) algorithm. It is used to reduce high-dimensional features into 2D or 3D representations, typically for visualization purposes on a screen.Overview of kissnet dependency
masterIn the context of VideoPipe,kissnetis a lightweight, header-only socket library used specifically for logging and message brokering via the UDP protocol.Overview of cpp-httplib
mastercpp-httplib is a header-only C++ HTTP library. In the context of VideoPipe, it is used to support online LLM REST API calls (based on OpenAI protocols) and local deployments such as Ollama or vLLM.Overview of cpp_base64 library
masterThis is a base64 library derived fromhttps://github.com/ReneNyffenegger/cpp-base64. In the context of VidepPipe, it is specifically used for encoding images into base64 strings to facilitate interaction with multi-modal Large Language Models (mLLM). The library has been modified to merge.cppand.hfiles together for easier integration.Overview of VideoPipe
masterVideoPipe is a C++ based framework for video analysis and structuring. It uses a plugin-based architecture where independentNodetypes are connected like a pipeline to build video analysis applications. It is designed for low dependency, high portability, and ease of use in scenarios like video structuring, image search, face recognition, and traffic/security behavior analysis.Use Deep SORT for object tracking
masterThenodes/track/deep_sortmodule implements the Deep SORT (Simple Online and Realtime Tracking with a Deep Association Metric) algorithm for object tracking within the videopipe pipeline.Use vp_record_node to record video and images
mastervp_record_nodeis a middle node in thevideopipepipeline used to record video and images. It saves the captured media to the local disk once the recording process is finished.Because it operates asynchronously, the recording process does not block the rest of the pipeline execution.
Use the sort algorithm for tracking
masterThenodes/track/sortmodule provides a sort algorithm specifically designed for tracking tasks within the videopipe pipeline.