Safety and Security Use Case#
The Safety and Security use case focuses on person-centric video analytics for environments such as entrances, corridors, store aisles, and other monitored public areas where visibility into movement and activity is important.
This guide walks you through the People Detection and Tracking predefined pipeline, which is one of the pipelines used to benchmark this use case in ViPPET.
The predefined variant runs on GPU and chains person detection, person re-identification, Deep SORT tracking, FPS reporting, and optional output/metadata publishing.
Target use case#
Use this pipeline when you need to:
keep persistent track IDs when people are briefly hidden from view,
benchmark person-tracking throughput on Intel GPU with DL Streamer.
It is best suited to fixed-camera or low-motion camera scenes such as entrances, store aisles, corridors, and public-area monitoring.
Pipeline workflow and supported models#
The predefined variant contains this runtime sequence:
gvadetectwithyolo11s(INT8) on GPU (threshold=0.5) finds person regions of interest (ROIs).gvainferencewithmars-small128(FP32) on GPU computes person embeddings for Re-ID.gvatrackwithtracking-type=deep-sortlinks detections across frames into stable tracks.gvafpscountermeasures throughput after warm-up (starting-frame=100).gvawatermarkdraws boxes/labels when rendered output is enabled.gvametaconvert+gvametapublishcan emit JSON-lines metadata.
Deep SORT parameters used in the predefined variant:
max_age=60max_cosine_distance=0.3object_class=personreid_max_age=30
Role of tracking and optional classification#
Tracking (default): Deep SORT is responsible for temporal continuity and stable IDs. The Re-ID stage (
mars-small128) helps preserve identities through short brief periods of missing detections.Optional classification (user extension): If your use case needs per-person attributes (for example protective equipment or role labels), add a classification stage after detection/tracking and keep
inference-region=roi-listplusobject-class=personso only person ROIs are classified.
Expected input video characteristics#
The predefined benchmark clip is people-detection-and-tracking.mp4 with:
resolution:
2560x1440frame rate:
~29.97 FPScodec:
H.264duration:
~23.79 s
For consistent behavior on your own content, prefer:
mostly static or smoothly moving camera,
visible full/upper body people at moderate scale,
limited motion blur and no extreme strobing,
crowd density similar to the baseline if you compare FPS directly.
Prerequisites for reproducible benchmarking#
Before benchmarking, confirm:
The GPU profile is enabled when starting ViPPET (
COMPOSE_PROFILESincludesgpu).Both models are installed:
ultralytics/public/yolo11s/INT8/yolo11s.xmlultralytics/public/mars-small128/mars_small128_fp32.xml
Input video source is fixed for all compared runs (same file, same resolution/FPS).
Benchmark mode is fixed across runs (same stream count, runtime, output mode, metadata mode).
No additional heavy workloads are running on the same host during measurements.
Step 1. Open the predefined pipeline#
Open the ViPPET UI and navigate to Pipelines.
Select People Detection and Tracking.
Open the GPU variant in Pipeline Builder.
Step 2. Verify key configuration#
In Pipeline Builder, verify the following defaults for the predefined pipeline:
Node |
Default |
Description |
|---|---|---|
Object Detection ( |
|
Detects person ROIs on the GPU and establishes the baseline detection sensitivity used by the pipeline. |
Re-ID Inference ( |
|
Computes person embeddings for re-identification on detected ROIs only, which helps preserve track identity across brief occlusions and re-entries. |
Tracker ( |
|
Links detections over time into stable person tracks using Deep SORT. |
For benchmark parity, keep these defaults unchanged and only vary one factor at a time (for example stream count or output mode).
Step 3. Run in ViPPET#
For benchmark runs, use Performance Testing:
Go to Performance.
Choose the People Detection and Tracking (GPU) variant.
Set stream count and runtime.
Select output and metadata modes (see next section).
Start the run and monitor FPS plus hardware metrics.
Live output vs non-live output behavior#
Output mode changes the measured workload:
disabled: no rendered output is persisted. This is the preferred mode for raw inference/tracking throughput.file: encoded output video is written to disk. Includes encoding and I/O overhead.live_stream: output is encoded and sent to RTSP (mediamtx). Includes encoding and streaming overhead.
In most environments, expected throughput ordering is:
disabled >= file >= live_stream
Use the same output mode across runs you compare.
Metadata handling#
gvametapublish records are JSON-lines. In ViPPET:
metadata_mode=disabled: metadata files are not produced by execution config injection.metadata_mode=file: per-stream metadata files are produced and can be read from job endpoints.
For real-time consumers during performance tests, use SSE metadata stream endpoints from the job status
(metadata_stream_urls) when available.
Known limitations#
The predefined pipeline currently ships as GPU-only variant.
It is tuned for person tracking; non-person tracking is out of scope for the predefined setup.
Strong camera shake, heavy occlusion, severe blur, or abrupt lighting shifts can degrade ID stability.
FPS from this pipeline should not be compared directly with detection-only pipelines without accounting for added Re-ID and tracking stages.
Benchmarking expectations#
When analyzing results, interpret metrics in this order:
Per Stream FPS for the primary throughput comparison.
Total FPS for host-level capacity checks.
Latency metrics (if enabled) for responsiveness and jitter.
Metadata quality checks (track continuity, ID switches) on representative clips.
For stable conclusions, run at least 3 repetitions per configuration and compare median values.