Skip to content

Implementation of custom bytetrack demo for real time stream analysis [GSoC'2026] - #4420

Open
Vishwa2684 wants to merge 23 commits into
openvinotoolkit:mainfrom
Vishwa2684:gsoc_bytetrack
Open

Implementation of custom bytetrack demo for real time stream analysis [GSoC'2026]#4420
Vishwa2684 wants to merge 23 commits into
openvinotoolkit:mainfrom
Vishwa2684:gsoc_bytetrack

Conversation

@Vishwa2684

@Vishwa2684 Vishwa2684 commented Jul 30, 2026

Copy link
Copy Markdown

@atobiszei @dtrawins

Summary

This PR adds a ByteTrack Real-Time Stream Analysis demo for OpenVINO Model Server (OVMS).

The demo reuses the MediaPipe ByteTrack graph from demos/mediapipe/bytetrack with the yolox_tiny model and integrates it with the real_time_stream_analysis Python client. This enables object detection and multi-object tracking on RTSP streams using OVMS.

Key Changes

Directory Structure

Directory Description
demos/mediapipe/bytetrack MediaPipe ByteTrack OVMS demo and configuration
src/bytetrack ByteTrack utilities and ByteTrack calculator
src/yolox Utilities for processing YOLOX-Tiny output tensors and converting them into detections

What's Included

  • A new MediaPipe ByteTrack demo in demos/mediapipe/bytetrack.
  • Setup instructions covering model conversion, OVMS deployment, and RTSP streaming.
  • A client.py example for running inference with:
    • Video input and output.
    • RTSP input and output streams.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a new MediaPipe ByteTrack demo that integrates OVMS + the existing real-time stream analysis Python client to run object detection + multi-object tracking on RTSP streams. It also updates the MediaPipe build integration and adjusts streaming timestamp handling in the KFS graph executor.

Changes:

  • Adds a new demos/mediapipe/bytetrack demo (graph, OVMS config, and setup README).
  • Extends the real-time stream analysis Python demo CLI to pass FFmpeg output dimensions through to StreamClient.
  • Updates MediaPipe/Bazel integration (new ByteTrack calculators dependency; changes MediaPipe git_repository source) and adds stricter timestamp monotonicity checks for streaming.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
WORKSPACE Switches the MediaPipe repository source (currently to a fork/branch).
third_party/mediapipe_calculators/BUILD Adds ByteTrack calculators target to the OVMS MediaPipe calculators aggregation library.
src/kfs_frontend/kfs_graph_executor_impl.cpp Changes timestamp deserialization/defaulting and adds stream-level monotonic timestamp enforcement.
demos/real_time_stream_analysis/python/client.py Adds CLI args for FFmpeg output width/height and forwards them to StreamClient.
demos/mediapipe/bytetrack/README.md Introduces demo setup/run instructions for ByteTrack RTSP streaming demo.
demos/mediapipe/bytetrack/config.json Adds OVMS config for the YOLOX model + ByteTrack MediaPipe graph.
demos/mediapipe/bytetrack/bytetrack_ovms.pbtxt Adds the MediaPipe graph wiring OpenVINO/OVMS inference + ByteTrack tracking + overlay.
Suppressed comments (1)

src/kfs_frontend/kfs_graph_executor_impl.cpp:1147

  • The inline comment "// this method" is not descriptive. Either remove it or replace with a comment that explains what the function does.
// this method
Status createAndPushPacketsImpl(

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread third_party/mediapipe_calculators/BUILD Outdated
Comment thread demos/mediapipe/bytetrack/bytetrack_ovms.pbtxt Outdated
Comment thread WORKSPACE
Comment thread src/kfs_frontend/kfs_graph_executor_impl.cpp Outdated
Comment thread src/kfs_frontend/kfs_graph_executor_impl.cpp Outdated
Comment thread src/kfs_frontend/kfs_graph_executor_impl.cpp Outdated
Comment thread demos/real_time_stream_analysis/python/client.py Outdated
Comment thread demos/mediapipe/bytetrack/README.md Outdated
Comment thread demos/mediapipe/bytetrack/README.md Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@dtrawins

Copy link
Copy Markdown
Collaborator

make sdl-check is failing with error:
No header files detected:
./demos/mediapipe/bytetrack/bytetrack_ovms.pbtxt
Could you add it to exception list in ci/lib_search.py

@Vishwa2684

Vishwa2684 commented Aug 12, 2026

Copy link
Copy Markdown
Author

@atobiszei @dtrawins I've written code for custom calculator OVYoloXTensorsToDetections in src/yolox, and wrote a script to download OpenVINO/yolox_tiny-fp16-ov model weights and write class labels from the model config.

@Vishwa2684
Vishwa2684 requested a review from dtrawins August 12, 2026 11:28
@Vishwa2684
Vishwa2684 force-pushed the gsoc_bytetrack branch 2 times, most recently from 4a0b8f8 to bf1c022 Compare August 13, 2026 18:13
@Vishwa2684

Copy link
Copy Markdown
Author

@dtrawins Why is the ci failing? Could you share the logs?

@Vishwa2684
Vishwa2684 force-pushed the gsoc_bytetrack branch 7 times, most recently from 7d36dd6 to 2b2ba29 Compare August 19, 2026 22:07
@atobiszei

atobiszei commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

Earlier on there was CI hiccup with network connectivity. Currently tests are ongoing but we already have documentation test failing:
@Vishwa2684

[2026-08-20T13:59:07.171Z] ------------------------------ Captured log call -------------------------------

[2026-08-20T13:59:07.171Z] INFO     STEP:logger.py:204 ==================== test_commands_ovms: Get commands from file ====================

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.common_parser:logger.py:204 Working on file: /opt/home/k8sworker/ci-ai/workspace/vmsc_Oncommit_ovms_build_PR-4420/demos/mediapipe/bytetrack/README.md

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: pip install -r requirements.txt

[2026-08-20T13:59:07.171Z] 

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: python download_models.py --model OpenVINO/yolox_tiny-fp16-ov

[2026-08-20T13:59:07.171Z] 

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: docker run --rm -d -p 8554:8554 -e RTSP_PROTOCOLS=tcp bluenviron/mediamtx:latest

[2026-08-20T13:59:07.171Z] 

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: docker run -d -v $PWD:/demo -p 9000:9000 openvino/model_server:latest --config_path /demo/config.json --port 9000

[2026-08-20T13:59:07.171Z] 

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: python client.py --grpc_address localhost:9000 --input_stream 0 --output_stream screen

[2026-08-20T13:59:07.171Z] 

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: curl -L "https://raw.githubusercontent.com/FoundationVision/ByteTrack/main/videos/palace.mp4" -o video.mp4

[2026-08-20T13:59:07.171Z] python client.py --grpc_address localhost:9000 --input_stream video.mp4 --output_stream output.mp4

[2026-08-20T13:59:07.171Z] 

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: ffmpeg -f dshow -video_size 1280x720 -i video="HP True Vision FHD Camera" -f rtsp -rtsp_transport tcp rtsp://localhost:8554/channel1

[2026-08-20T13:59:07.171Z] 

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: python client.py --grpc_address localhost:9000 --input_stream rtsp://localhost:8554/channel1 --output_stream rtsp://localhost:8554/channel2 --model_name ByteTrack --input_name input_video

[2026-08-20T13:59:07.171Z] 

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: ffplay -rtsp_transport tcp -vf "scale=704:704,format=yuv420p" rtsp://localhost:8554/channel2

[2026-08-20T13:59:07.171Z] 

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: ffplay -loglevel verbose -rtsp_transport tcp rtsp://localhost:8554/channel2

[2026-08-20T13:59:07.171Z] 

[2026-08-20T13:59:07.171Z] INFO     STEP:logger.py:204 ==================== test_commands_ovms: Run commands and check outputs ====================

[2026-08-20T13:59:07.171Z] INFO     shell command:logger.py:204 Executing cmd: python3 -m venv .venv (cwd: /tmp/pytest-of-k8sworker/pytest-77/test_commands_ovms_raw_False_D1, daemon: False)

[2026-08-20T13:59:07.171Z] INFO     shell command:logger.py:204 Finish process: 

[2026-08-20T13:59:07.171Z] Exit code: 0

[2026-08-20T13:59:07.171Z] Stdout: 

[2026-08-20T13:59:07.171Z] Stderr: 

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.command_checker.command_validator:logger.py:204 Created virtual environment at: /tmp/pytest-of-k8sworker/pytest-77/test_commands_ovms_raw_False_D1

[2026-08-20T13:59:07.171Z] INFO     shell command:logger.py:204 Executing cmd: source /tmp/pytest-of-k8sworker/pytest-77/test_commands_ovms_raw_False_D1/.venv/bin/activate && pip3 install --upgrade pip && pip3 install --upgrade virtualenv && pip install -r requirements.txt (cwd: /tmp/pytest-of-k8sworker/pytest-77/test_commands_ovms_raw_False_D1, daemon: False)

[2026-08-20T13:59:07.171Z] INFO     shell command:logger.py:204 Finish process: 

[2026-08-20T13:59:07.171Z] Exit code: 1

[2026-08-20T13:59:07.171Z] Stdout: Requirement already satisfied: pip in ./.venv/lib/python3.12/site-packages (24.0)

[2026-08-20T13:59:07.171Z] Collecting pip

[2026-08-20T13:59:07.171Z]   Using cached pip-26.2.1-py3-none-any.whl.metadata (4.6 kB)

[2026-08-20T13:59:07.171Z] Using cached pip-26.2.1-py3-none-any.whl (1.8 MB)

[2026-08-20T13:59:07.171Z] Installing collected packages: pip

[2026-08-20T13:59:07.171Z]   Attempting uninstall: pip

[2026-08-20T13:59:07.171Z]     Found existing installation: pip 24.0

[2026-08-20T13:59:07.171Z]     Uninstalling pip-24.0:

[2026-08-20T13:59:07.171Z]       Successfully uninstalled pip-24.0

[2026-08-20T13:59:07.171Z] Successfully installed pip-26.2.1

[2026-08-20T13:59:07.171Z] Collecting virtualenv

[2026-08-20T13:59:07.171Z]   Using cached virtualenv-21.7.4-py3-none-any.whl.metadata (3.5 kB)

[2026-08-20T13:59:07.171Z] Collecting distlib<1,>=0.3.7 (from virtualenv)

[2026-08-20T13:59:07.171Z]   Using cached distlib-0.4.3-py2.py3-none-any.whl.metadata (5.3 kB)

[2026-08-20T13:59:07.171Z] Collecting filelock<4,>=3.24.2 (from virtualenv)

[2026-08-20T13:59:07.171Z]   Using cached filelock-3.32.3-py3-none-any.whl.metadata (2.0 kB)

[2026-08-20T13:59:07.171Z] Collecting platformdirs<5,>=3.9.1 (from virtualenv)

[2026-08-20T13:59:07.171Z]   Using cached platformdirs-4.11.3-py3-none-any.whl.metadata (5.5 kB)

[2026-08-20T13:59:07.171Z] Collecting python-discovery>=1.4.2 (from virtualenv)

[2026-08-20T13:59:07.171Z]   Using cached python_discovery-1.5.2-py3-none-any.whl.metadata (5.1 kB)

[2026-08-20T13:59:07.171Z] Using cached virtualenv-21.7.4-py3-none-any.whl (5.3 MB)

[2026-08-20T13:59:07.171Z] Using cached distlib-0.4.3-py2.py3-none-any.whl (470 kB)

[2026-08-20T13:59:07.171Z] Using cached filelock-3.32.3-py3-none-any.whl (98 kB)

[2026-08-20T13:59:07.171Z] Using cached platformdirs-4.11.3-py3-none-any.whl (23 kB)

[2026-08-20T13:59:07.171Z] Using cached python_discovery-1.5.2-py3-none-any.whl (38 kB)

[2026-08-20T13:59:07.171Z] Installing collected packages: distlib, platformdirs, filelock, python-discovery, virtualenv

[2026-08-20T13:59:07.171Z] 

[2026-08-20T13:59:07.171Z] Successfully installed distlib-0.4.3 filelock-3.32.3 platformdirs-4.11.3 python-discovery-1.5.2 virtualenv-21.7.4

[2026-08-20T13:59:07.171Z] 

[2026-08-20T13:59:07.171Z] Stderr: ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'

[2026-08-20T13:59:07.171Z] --------------------------- Captured stderr teardown ---------------------------

[2026-08-20T13:59:07.171Z] [] 2026-08-20 15:59:14,084 - context - INFO: calling <bound method OvmsCommandValidator._dispose of <ovms.object_model.uat.ovms_command_validator.OvmsCommandValidator object at 0x7e1814692510>> to /get object to/ clean.

[2026-08-20T13:59:07.171Z] [] 2026-08-20 15:59:14,094 - common_libs.uat.command_checker.command_validator - INFO: Cleaned work directory: /tmp/pytest-of-k8sworker/pytest-77/test_commands_ovms_raw_False_D1

[2026-08-20T13:59:07.171Z] [] 2026-08-20 15:59:14,094 - common_libs.uat.command_checker.command_validator - INFO: Changed work directory to: /tmp/pytest-of-k8sworker/pytest-77/test_commands_ovms_raw_False_D1

[2026-08-20T13:59:07.171Z] [] 2026-08-20 15:59:14,094 - tests.conftest - INFO: Logs saved: /artifact/test_log/commands_%5Bdemos__mediapipe__bytetrack__README.md%5D_20260820_155914.log

[2026-08-20T13:59:07.171Z] ---------------------------- Captured log teardown -----------------------------

[2026-08-20T13:59:07.171Z] INFO     context:logger.py:204 calling <bound method OvmsCommandValidator._dispose of <ovms.object_model.uat.ovms_command_validator.OvmsCommandValidator object at 0x7e1814692510>> to /get object to/ clean.

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.command_checker.command_validator:logger.py:204 Cleaned work directory: /tmp/pytest-of-k8sworker/pytest-77/test_commands_ovms_raw_False_D1

[2026-08-20T13:59:07.171Z] INFO     common_libs.uat.command_checker.command_validator:logger.py:204 Changed work directory to: /tmp/pytest-of-k8sworker/pytest-77/test_commands_ovms_raw_False_D1

[2026-08-20T13:59:07.171Z] INFO     tests.conftest:logger.py:204 Logs saved: /artifact/test_log/commands_%5Bdemos__mediapipe__bytetrack__README.md%5D_20260820_155914.log

[2026-08-20T13:59:07.171Z] =============================== warnings summary ===============================

[2026-08-20T13:59:07.171Z] .venv/lib/python3.12/site-packages/dateutil/tz/tz.py:37

[2026-08-20T13:59:07.171Z]   /opt/home/k8sworker/ci-ai/workspace/vmsc_Oncommit_ovms_build_PR-4420/documentation_tests/.venv/lib/python3.12/site-packages/dateutil/tz/tz.py:37: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).

[2026-08-20T13:59:07.171Z]     EPOCH = datetime.datetime.utcfromtimestamp(0)

[2026-08-20T13:59:07.171Z] 

[2026-08-20T13:59:07.171Z] -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

[2026-08-20T13:59:07.171Z] =========================== short test summary info ============================

[2026-08-20T13:59:07.171Z] FAILED tests/non_functional/documentation/test_documentation_commands.py::TestDocumentationCommands::test_commands_ovms[raw=False-DOCKER-UBUNTU24-CPU-demos/mediapipe/bytetrack/README.md] - tests.functional.utils.assertions.DocumentationCommandsException: 

[2026-08-20T13:59:07.171Z] DOCKER

[2026-08-20T13:59:07.171Z] Unexpected return code detected during executing cmd: source /tmp/pytest-of-k8sworker/pytest-77/test_commands_ovms_raw_False_D1/.venv/bin/activate && pip3 install --upgrade pip && pip3 install --upgrade virtualenv && pip install -r requirements.txt 

[2026-08-20T13:59:07.171Z] 	Code: 1

[2026-08-20T13:59:07.171Z] 	Stderr: ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'

[2026-08-20T13:59:07.171Z] =========== 1 failed, 2 skipped, 711 deselected, 1 warning in 4.42s ============

@Vishwa2684
Vishwa2684 force-pushed the gsoc_bytetrack branch 4 times, most recently from 282fed7 to 33bb5d2 Compare August 21, 2026 07:13
@Vishwa2684

Copy link
Copy Markdown
Author

@atobiszei @dtrawins I've edited the README by including the commands step by step, Could you tell me why the CI is failing?

@atobiszei

atobiszei commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator
[2026-08-21T07:58:18.941Z] [  SKIPPED ] GGUFDownloaderPullHfModelWithServerTests/GGUFDownloaderPullHfModelParameterizedWithServer.PositiveDownloadAndStart/Qwen_Qwen2_5_7B_Instruct_GGUF_qwen2_5_7b_instruct_q4_k_m_00001_of_00002_gguf

[2026-08-21T07:58:18.941Z] [  FAILED  ] 1 test, listed below:

[2026-08-21T07:58:18.941Z] [  FAILED  ] WhitelistRegistered.MediapipeCalculatorsList

[2026-08-21T07:58:18.941Z] 

[2026-08-21T07:58:18.941Z]  1 FAILED TEST

[2026-08-21T07:58:18.941Z]   YOU HAVE 7 DISABLED TESTS

You can run bazel test --test_filter=* //src:ovms_test inside build container to check failing unit tests.

Documentation test is still failing:

[2026-08-21T08:30:49.452Z] =================================== FAILURES ===================================

[2026-08-21T08:30:49.452Z] _ TestDocumentationCommands.test_commands_ovms[raw=False-DOCKER-UBUNTU24-CPU-demos/mediapipe/bytetrack/README.md] _

[2026-08-21T08:30:49.452Z] 

[2026-08-21T08:30:49.452Z] self = <tests.non_functional.documentation.test_documentation_commands.TestDocumentationCommands object at 0x732ceb255f40>

[2026-08-21T08:30:49.452Z] context = <tests.functional.utils.context.Context object at 0x732ceaf6b890>

[2026-08-21T08:30:49.452Z] file_path = 'demos/mediapipe/bytetrack/README.md'

[2026-08-21T08:30:49.452Z] command_validator = <ovms.object_model.uat.ovms_command_validator.OvmsCommandValidator object at 0x732ceaf8ab40>

[2026-08-21T08:30:49.452Z] huggingface_login = None

[2026-08-21T08:30:49.452Z] intel_sample_videos = '/opt/home/k8sworker/sample-videos'

[2026-08-21T08:30:49.452Z] 

[2026-08-21T08:30:49.452Z]     @pytest.mark.api_regression

[2026-08-21T08:30:49.452Z]     @pytest.mark.devices_supported_for_test(TargetDevice.CPU, TargetDevice.GPU, TargetDevice.NPU)

[2026-08-21T08:30:49.452Z]     @pytest.mark.os_types_supported_for_test(OsType.Ubuntu24, OsType.Redhat, OsType.Windows)

[2026-08-21T08:30:49.452Z]     @pytest.mark.parametrize("file_path", file_paths)

[2026-08-21T08:30:49.452Z]     @pytest.mark.ovms_types_supported_for_test(OvmsType.DOCKER, OvmsType.BINARY)

[2026-08-21T08:30:49.452Z]     def test_commands_ovms(

[2026-08-21T08:30:49.452Z]             self, context: Context, file_path, command_validator, huggingface_login, intel_sample_videos

[2026-08-21T08:30:49.452Z]     ):

[2026-08-21T08:30:49.452Z]         """

[2026-08-21T08:30:49.452Z]         <b>Description:</b>

[2026-08-21T08:30:49.452Z]         Validate commands in the OVMS repository.

[2026-08-21T08:30:49.452Z]     

[2026-08-21T08:30:49.452Z]         <b>Input data:</b>

[2026-08-21T08:30:49.452Z]         1. md files from repository

[2026-08-21T08:30:49.452Z]     

[2026-08-21T08:30:49.452Z]         <b>Requires:</b>

[2026-08-21T08:30:49.452Z]         1. protoc (sudo apt install protobuf-compiler -y)

[2026-08-21T08:30:49.452Z]     

[2026-08-21T08:30:49.452Z]         <b>Expected results:</b>

[2026-08-21T08:30:49.452Z]         Test passes when all commands are executed without errors and outputs match expected outputs (if provided).

[2026-08-21T08:30:49.452Z]     

[2026-08-21T08:30:49.452Z]         <b>Steps:</b>

[2026-08-21T08:30:49.452Z]         1. Get commands from file

[2026-08-21T08:30:49.452Z]         2. Run commands and check outputs

[2026-08-21T08:30:49.452Z]         """

[2026-08-21T08:30:49.452Z]         skip_if_runtime(

[2026-08-21T08:30:49.452Z]             file_path == "demos/code_local_assistant/README.md" and

[2026-08-21T08:30:49.452Z]             context.target_device == TargetDevice.GPU and

[2026-08-21T08:30:49.452Z]             context.base_os == OsType.Redhat,

[2026-08-21T08:30:49.452Z]             f"Demo: {file_path} for GPU is supported only on PTL hosts",    # CVS-180042

[2026-08-21T08:30:49.452Z]         )

[2026-08-21T08:30:49.452Z]     

[2026-08-21T08:30:49.452Z]         skip_if_runtime(

[2026-08-21T08:30:49.452Z]             file_path == "demos/image_generation/README.md" and

[2026-08-21T08:30:49.452Z]             context.target_device == TargetDevice.CPU and

[2026-08-21T08:30:49.452Z]             "spr" not in platform.node() and

[2026-08-21T08:30:49.452Z]             "gnr" not in platform.node(),

[2026-08-21T08:30:49.452Z]             f"Demo: {file_path} for CPU is supported only on SPR/GNR hosts",

[2026-08-21T08:30:49.452Z]         )

[2026-08-21T08:30:49.452Z]     

[2026-08-21T08:30:49.452Z]         cpu_commands_not_supported = file_path in [

[2026-08-21T08:30:49.452Z]             "demos/code_local_assistant/README.md",

[2026-08-21T08:30:49.452Z]             "demos/integration_with_OpenWebUI/README.md",

[2026-08-21T08:30:49.452Z]             "demos/llm_npu/README.md",

[2026-08-21T08:30:49.452Z]             "demos/vlm_npu/README.md",

[2026-08-21T08:30:49.452Z]             "docs/llm/quickstart.md",

[2026-08-21T08:30:49.452Z]         ] or (context.base_os == OsType.Windows and file_path in [

[2026-08-21T08:30:49.452Z]             "demos/continuous_batching/README.md",

[2026-08-21T08:30:49.452Z]             "demos/continuous_batching/agentic_ai/README.md",

[2026-08-21T08:30:49.452Z]             "demos/continuous_batching/rag/README.md",

[2026-08-21T08:30:49.452Z]         ])

[2026-08-21T08:30:49.452Z]         skip_if_runtime(

[2026-08-21T08:30:49.452Z]             cpu_commands_not_supported and context.target_device == TargetDevice.CPU,

[2026-08-21T08:30:49.452Z]             f"Demo: {file_path} is not supported for CPU target device",

[2026-08-21T08:30:49.452Z]         )

[2026-08-21T08:30:49.452Z]     

[2026-08-21T08:30:49.452Z]         step("Get commands from file")

[2026-08-21T08:30:49.452Z]         no_python_files = [

[2026-08-21T08:30:49.452Z]             "demos/universal-sentence-encoder/README.md",

[2026-08-21T08:30:49.452Z]             "docs/python_support/quickstart.md",

[2026-08-21T08:30:49.452Z]             "extras/llama_swap/README.md",

[2026-08-21T08:30:49.452Z]         ]

[2026-08-21T08:30:49.452Z]         commands = self.get_commands(context, file_path) if file_path in no_python_files \

[2026-08-21T08:30:49.452Z]             else self.get_commands_with_python(context, file_path)

[2026-08-21T08:30:49.452Z]         assert commands, f"No commands found in file: {file_path}"

[2026-08-21T08:30:49.452Z]     

[2026-08-21T08:30:49.452Z]         gpu_commands_not_supported = all([f" {TargetDevice.GPU}" not in command for command in commands]) or \

[2026-08-21T08:30:49.452Z]              file_path in ["docs/deploying_server_docker.md"]

[2026-08-21T08:30:49.452Z]         skip_if_runtime(

[2026-08-21T08:30:49.452Z]             gpu_commands_not_supported and context.target_device == TargetDevice.GPU,

[2026-08-21T08:30:49.452Z]             "No commands found for GPU target device",

[2026-08-21T08:30:49.452Z]         )

[2026-08-21T08:30:49.452Z]     

[2026-08-21T08:30:49.452Z]         npu_commands_not_supported = all([f" {TargetDevice.NPU}" not in command for command in commands])

[2026-08-21T08:30:49.452Z]         skip_if_runtime(

[2026-08-21T08:30:49.452Z]             npu_commands_not_supported and context.target_device == TargetDevice.NPU,

[2026-08-21T08:30:49.452Z]             "No commands found for NPU target device",

[2026-08-21T08:30:49.452Z]         )

[2026-08-21T08:30:49.452Z]     

[2026-08-21T08:30:49.452Z]         step("Run commands and check outputs")

[2026-08-21T08:30:49.452Z]         enable_skip = not any([

[2026-08-21T08:30:49.452Z]             cpu_commands_not_supported and gpu_commands_not_supported,

[2026-08-21T08:30:49.452Z]             cpu_commands_not_supported and npu_commands_not_supported,

[2026-08-21T08:30:49.452Z]             gpu_commands_not_supported and npu_commands_not_supported,

[2026-08-21T08:30:49.452Z]         ])

[2026-08-21T08:30:49.452Z] >       command_validator.run_commands(

[2026-08-21T08:30:49.452Z]             commands,

[2026-08-21T08:30:49.452Z]             enable_skip_export_models=enable_skip,

[2026-08-21T08:30:49.452Z]             enable_skip_start_ovms=enable_skip,

[2026-08-21T08:30:49.452Z]             enable_skip_based_on_model=file_path == "demos/continuous_batching/agentic_ai/README.md",

[2026-08-21T08:30:49.452Z]             update_ovms_binary=file_path != "docs/pull_optimum_cli.md",

[2026-08-21T08:30:49.452Z]         )

[2026-08-21T08:30:49.452Z] 

[2026-08-21T08:30:49.452Z] tests/non_functional/documentation/test_documentation_commands.py:363: 

[2026-08-21T08:30:49.452Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

[2026-08-21T08:30:49.452Z] ovms/object_model/uat/ovms_command_validator.py:211: in run_commands

[2026-08-21T08:30:49.452Z]     super().run_commands(

[2026-08-21T08:30:49.452Z] common_libs/uat/command_checker/command_validator.py:134: in run_commands

[2026-08-21T08:30:49.452Z]     self._run_command_lines(

[2026-08-21T08:30:49.452Z] common_libs/uat/command_checker/command_validator.py:150: in _run_command_lines

[2026-08-21T08:30:49.452Z]     stdout, stderr = self.run_command_line(command_line, async_run, async_pattern, timeout, docker_commands)

[2026-08-21T08:30:49.452Z]                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[2026-08-21T08:30:49.452Z] common_libs/uat/command_checker/command_validator.py:597: in run_command_line

[2026-08-21T08:30:49.452Z]     self.proc._check_output(

[2026-08-21T08:30:49.452Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

[2026-08-21T08:30:49.452Z] 

[2026-08-21T08:30:49.452Z] self = <tests.functional.utils.process.UnixProcess object at 0x732ceaf8a1b0>

[2026-08-21T08:30:49.452Z] code = 128, _stdout = ''

[2026-08-21T08:30:49.452Z] stderr = 'fatal: not a git repository (or any of the parent directories): .git\n'

[2026-08-21T08:30:49.452Z] cmd = 'git checkout custom_bytetrack_graph'

[2026-08-21T08:30:49.452Z] exception_type = <class 'tests.functional.utils.assertions.DocumentationCommandsException'>

[2026-08-21T08:30:49.452Z] exit_code_check = 0

[2026-08-21T08:30:49.452Z] 

[2026-08-21T08:30:49.452Z]     def _check_output(self, code, _stdout, stderr, cmd, exception_type=OvmsTestException, exit_code_check=0):

[2026-08-21T08:30:49.452Z]         exception = None

[2026-08-21T08:30:49.452Z]         if self.policy['log-check-output']['exit-code'] and code != exit_code_check:

[2026-08-21T08:30:49.452Z]             exception = exception_type(

[2026-08-21T08:30:49.452Z]                 f'Unexpected return code detected during executing cmd: {cmd} \n\tCode: {code}\n\tStderr: {stderr}'

[2026-08-21T08:30:49.452Z]             )

[2026-08-21T08:30:49.452Z]         if self.policy['log-check-output']['stderr'] and stderr:

[2026-08-21T08:30:49.452Z]             exception = exception_type(f'Detect non empty stderr during executing cmd: {cmd}\n\tStderr: {stderr}')

[2026-08-21T08:30:49.452Z]         if exception:

[2026-08-21T08:30:49.452Z]             exception.set_process_details(cmd, code, _stdout, stderr)

[2026-08-21T08:30:49.452Z] >           raise exception

[2026-08-21T08:30:49.452Z] E           tests.functional.utils.assertions.DocumentationCommandsException: 

[2026-08-21T08:30:49.452Z] E           DOCKER

[2026-08-21T08:30:49.452Z] E           Unexpected return code detected during executing cmd: git checkout custom_bytetrack_graph 

[2026-08-21T08:30:49.452Z] E           	Code: 128

[2026-08-21T08:30:49.452Z] E           	Stderr: fatal: not a git repository (or any of the parent directories): .git

[2026-08-21T08:30:49.452Z] 

[2026-08-21T08:30:49.452Z] tests/functional/utils/process.py:165: DocumentationCommandsException

[2026-08-21T08:30:49.452Z] ---------------------------- Captured stderr setup -----------------------------

[2026-08-21T08:30:49.452Z] [] 2026-08-21 10:30:52,719 - tests.functional.fixtures.ovms - INFO: Running test on platform: ov-ptl-23

[2026-08-21T08:30:49.453Z] ------------------------------ Captured log setup ------------------------------

[2026-08-21T08:30:49.453Z] INFO     tests.functional.fixtures.ovms:logger.py:204 Running test on platform: ov-ptl-23

[2026-08-21T08:30:49.453Z] ----------------------------- Captured stderr call -----------------------------

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:52,721 - STEP - INFO: ==================== test_commands_ovms: Get commands from file ====================

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:52,721 - common_libs.uat.common_parser - INFO: Working on file: /opt/home/k8sworker/ci-ai/workspace/vmsc_Oncommit_ovms_build_PR-4420/demos/mediapipe/bytetrack/README.md

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:52,722 - common_libs.uat.common_parser - INFO: Found command: git clone https://github.com/Vishwa2684/model_server

[2026-08-21T08:30:49.453Z] git checkout custom_bytetrack_graph

[2026-08-21T08:30:49.453Z] cd demos/mediapipe/bytetrack

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:52,723 - common_libs.uat.common_parser - INFO: Found command: pip install -r requirements.txt

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:52,723 - common_libs.uat.common_parser - INFO: Found command: python download_models.py --model OpenVINO/yolox_tiny-fp16-ov

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:52,723 - common_libs.uat.common_parser - INFO: Found command: docker run -d -v $PWD:/demo -p 9000:9000 openvino/model_server:latest --config_path /demo/config.json --port 9000

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:52,723 - common_libs.uat.common_parser - INFO: Found command: cd ../../real_time_stream_analysis/python

[2026-08-21T08:30:49.453Z] python client.py --grpc_address localhost:9000 --input_stream 0 --output_stream screen --model_name ByteTrack --input_name input_video

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:52,723 - STEP - INFO: ==================== test_commands_ovms: Run commands and check outputs ====================

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:52,725 - shell command - INFO: Executing cmd: git clone https://github.com/Vishwa2684/model_server (cwd: /tmp/pytest-of-k8sworker/pytest-88/test_commands_ovms_raw_False_D1, daemon: False)

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,157 - shell command - INFO: Finish process: 

[2026-08-21T08:30:49.453Z] Exit code: 0

[2026-08-21T08:30:49.453Z] Stdout: 

[2026-08-21T08:30:49.453Z] Stderr: Cloning into 'model_server'...

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,157 - shell command - INFO: Executing cmd: git checkout custom_bytetrack_graph (cwd: /tmp/pytest-of-k8sworker/pytest-88/test_commands_ovms_raw_False_D1, daemon: False)

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,162 - shell command - INFO: Finish process: 

[2026-08-21T08:30:49.453Z] Exit code: 128

[2026-08-21T08:30:49.453Z] Stdout: 

[2026-08-21T08:30:49.453Z] Stderr: fatal: not a git repository (or any of the parent directories): .git

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,260 - ovms.hooks.hooks - INFO: Finishing test session for test run type:  in the following folder: /opt/home/k8sworker/ci-ai/workspace/vmsc_Oncommit_ovms_build_PR-4420/documentation_tests

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,260 - ovms.hooks.hooks - INFO: ==================== TEST TYPE STATUS REPORT - BEGIN ====================

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,260 - ovms.hooks.hooks - INFO: ==================== TEST TYPE STATUS REPORT - END ====================

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,260 - ovms.hooks.hooks - INFO: Exit status is: 1

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,264 - tests.functional.utils.hooks - INFO: Removing self reserved ports

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,264 - tests.functional.utils.reservation_manager.manager - INFO: json_data: {'envs': {'TT_REST_OVMS_STARTING_PORT': '30000', 'TT_PORTS_POOL_SIZE': '333', 'TT_GRPC_OVMS_STARTING_PORT': '30333', 'TT_HAPROXY_STARTING_PORT': '30666', 'TT_HAPROXY_PORT_POOL_SIZE': '333'}, 'reservation_file': '/tmp/reservation_manager-30000-31000-independent', 'shell_envs_file': '/tmp/20260821_103034_475708_clyheb0p_k8sworker/reservation.env'}

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,264 - tests.functional.utils.reservation_manager.manager - INFO: reservation_lock_path: /tmp/reservation_manager-30000-31000-independent

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,264 - tests.functional.utils.reservation_manager.manager - INFO: Removing reservation lock path: /tmp/reservation_manager-30000-31000-independent

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] ------------------------------ Captured log call -------------------------------

[2026-08-21T08:30:49.453Z] INFO     STEP:logger.py:204 ==================== test_commands_ovms: Get commands from file ====================

[2026-08-21T08:30:49.453Z] INFO     common_libs.uat.common_parser:logger.py:204 Working on file: /opt/home/k8sworker/ci-ai/workspace/vmsc_Oncommit_ovms_build_PR-4420/demos/mediapipe/bytetrack/README.md

[2026-08-21T08:30:49.453Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: git clone https://github.com/Vishwa2684/model_server

[2026-08-21T08:30:49.453Z] git checkout custom_bytetrack_graph

[2026-08-21T08:30:49.453Z] cd demos/mediapipe/bytetrack

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: pip install -r requirements.txt

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: python download_models.py --model OpenVINO/yolox_tiny-fp16-ov

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: docker run -d -v $PWD:/demo -p 9000:9000 openvino/model_server:latest --config_path /demo/config.json --port 9000

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] INFO     common_libs.uat.common_parser:logger.py:204 Found command: cd ../../real_time_stream_analysis/python

[2026-08-21T08:30:49.453Z] python client.py --grpc_address localhost:9000 --input_stream 0 --output_stream screen --model_name ByteTrack --input_name input_video

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] INFO     STEP:logger.py:204 ==================== test_commands_ovms: Run commands and check outputs ====================

[2026-08-21T08:30:49.453Z] INFO     shell command:logger.py:204 Executing cmd: git clone https://github.com/Vishwa2684/model_server (cwd: /tmp/pytest-of-k8sworker/pytest-88/test_commands_ovms_raw_False_D1, daemon: False)

[2026-08-21T08:30:49.453Z] INFO     shell command:logger.py:204 Finish process: 

[2026-08-21T08:30:49.453Z] Exit code: 0

[2026-08-21T08:30:49.453Z] Stdout: 

[2026-08-21T08:30:49.453Z] Stderr: Cloning into 'model_server'...

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] INFO     shell command:logger.py:204 Executing cmd: git checkout custom_bytetrack_graph (cwd: /tmp/pytest-of-k8sworker/pytest-88/test_commands_ovms_raw_False_D1, daemon: False)

[2026-08-21T08:30:49.453Z] INFO     shell command:logger.py:204 Finish process: 

[2026-08-21T08:30:49.453Z] Exit code: 128

[2026-08-21T08:30:49.453Z] Stdout: 

[2026-08-21T08:30:49.453Z] Stderr: fatal: not a git repository (or any of the parent directories): .git

[2026-08-21T08:30:49.453Z] --------------------------- Captured stderr teardown ---------------------------

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,225 - context - INFO: calling <bound method OvmsCommandValidator._dispose of <ovms.object_model.uat.ovms_command_validator.OvmsCommandValidator object at 0x732ceaf8ab40>> to /get object to/ clean.

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,253 - common_libs.uat.command_checker.command_validator - INFO: Cleaned work directory: /tmp/pytest-of-k8sworker/pytest-88/test_commands_ovms_raw_False_D1

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,253 - common_libs.uat.command_checker.command_validator - INFO: Changed work directory to: /tmp/pytest-of-k8sworker/pytest-88/test_commands_ovms_raw_False_D1

[2026-08-21T08:30:49.453Z] [] 2026-08-21 10:30:57,253 - tests.conftest - INFO: Logs saved: /artifact/test_log/commands_%5Bdemos__mediapipe__bytetrack__README.md%5D_20260821_103057.log

[2026-08-21T08:30:49.453Z] ---------------------------- Captured log teardown -----------------------------

[2026-08-21T08:30:49.453Z] INFO     context:logger.py:204 calling <bound method OvmsCommandValidator._dispose of <ovms.object_model.uat.ovms_command_validator.OvmsCommandValidator object at 0x732ceaf8ab40>> to /get object to/ clean.

[2026-08-21T08:30:49.453Z] INFO     common_libs.uat.command_checker.command_validator:logger.py:204 Cleaned work directory: /tmp/pytest-of-k8sworker/pytest-88/test_commands_ovms_raw_False_D1

[2026-08-21T08:30:49.453Z] INFO     common_libs.uat.command_checker.command_validator:logger.py:204 Changed work directory to: /tmp/pytest-of-k8sworker/pytest-88/test_commands_ovms_raw_False_D1

[2026-08-21T08:30:49.453Z] INFO     tests.conftest:logger.py:204 Logs saved: /artifact/test_log/commands_%5Bdemos__mediapipe__bytetrack__README.md%5D_20260821_103057.log

[2026-08-21T08:30:49.453Z] =============================== warnings summary ===============================

[2026-08-21T08:30:49.453Z] .venv/lib/python3.12/site-packages/dateutil/tz/tz.py:37

[2026-08-21T08:30:49.453Z]   /opt/home/k8sworker/ci-ai/workspace/vmsc_Oncommit_ovms_build_PR-4420/documentation_tests/.venv/lib/python3.12/site-packages/dateutil/tz/tz.py:37: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).

[2026-08-21T08:30:49.453Z]     EPOCH = datetime.datetime.utcfromtimestamp(0)

[2026-08-21T08:30:49.453Z] 

[2026-08-21T08:30:49.453Z] -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

[2026-08-21T08:30:49.453Z] =========================== short test summary info ============================

[2026-08-21T08:30:49.453Z] FAILED tests/non_functional/documentation/test_documentation_commands.py::TestDocumentationCommands::test_commands_ovms[raw=False-DOCKER-UBUNTU24-CPU-demos/mediapipe/bytetrack/README.md] - tests.functional.utils.assertions.DocumentationCommandsException: 

[2026-08-21T08:30:49.453Z] DOCKER

[2026-08-21T08:30:49.453Z] Unexpected return code detected during executing cmd: git checkout custom_bytetrack_graph 

[2026-08-21T08:30:49.453Z] 	Code: 128

[2026-08-21T08:30:49.453Z] 	Stderr: fatal: not a git repository (or any of the parent directories): .git

[2026-08-21T08:30:49.453Z] =========== 1 failed, 2 skipped, 711 deselected, 1 warning in 6.49s ============

@Vishwa2684
Vishwa2684 force-pushed the gsoc_bytetrack branch 2 times, most recently from a138cad to b5da86c Compare August 21, 2026 13:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 28 out of 29 changed files in this pull request and generated 16 comments.

Comment thread src/bytetrack/calculators/matching_utils.h
Comment thread src/bytetrack/calculators/bytetrack_calculator.cc Outdated
Comment thread src/bytetrack/calculators/bytetrack_calculator.cc Outdated
Comment thread src/bytetrack/calculators/basetrack.h Outdated
Comment thread src/bytetrack/calculators/bytetrack_calculator.cc Outdated
return absl::OkStatus();
}

absl::Status Process(CalculatorContext* cc) final {
Comment thread src/bytetrack/calculators/BUILD
Comment thread src/bytetrack/utils/detection_color_by_id_calculator.cc
Comment thread src/bytetrack/calculators/strack.h Outdated
Comment thread demos/mediapipe/bytetrack/README.md Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants