Skip to main content

Changelog

Pose Estimation filter release notes

v0.1.14 - 2026-09-23Direct link to v0.1.14 - 2026-09-23

ChangedDirect link to Changed

  • Bump the openfilter dependency to 1.4.0

v0.1.13 - 2026-08-20Direct link to v0.1.13 - 2026-08-20

ChangedDirect link to Changed

  • Build the filter image on openfilter-base:py3.14 (was py3.11). The published wheel supports Python 3.14, so the image now ships 3.14. Running on 3.10–3.13 is unaffected.

v0.1.12 - 2026-08-18Direct link to v0.1.12 - 2026-08-18

ChangedDirect link to Changed

  • Update the openfilter dependency to 1.3.0
  • Add Python 3.13 and 3.14 support: raise the requires-python ceiling to <3.15; the CI test matrix now runs 3.10–3.14.

v0.1.11 - 2026-08-10Direct link to v0.1.11 - 2026-08-10

ChangedDirect link to Changed

  • Build the image on openfilter-base (weekly apt-upgraded python-slim) instead of a stale python:X.Y.Z-slim pin, clearing the OS-package CVEs the pin carried.
  • Update the openfilter dependency to 1.2.2

v0.1.10 - 2026-08-04Direct link to v0.1.10 - 2026-08-04

ChangedDirect link to Changed

  • Update openfilter[all] to >=1.2.1
  • Pin the Docker base to python:3.11.12-slim.
  • Refresh the docker-compose.yaml openfilter utility image tags to 1.2.1 and pin the filter's own image to the release version.

v0.1.9 - 2026-04-27Direct link to v0.1.9 - 2026-04-27

ChangedDirect link to Changed

  • Documentation pass: updated backend status table to clearly describe mediapipe as a core dependency and RTMPose as optional install (.[rtmpose] / .[rtmpose-gpu]).
  • Added .[rtmpose-gpu] install variant to README installation section.
  • Clarified per-backend behavior in config matrix: threshold is RTMPose-only (MediaPipe ignores it); model_path is required for MediaPipe and ignored by RTMPose; confidence_strategy defaults and supported values are now per-backend; device notes docker-compose defaults to gpu.
  • Updated docs/overview.md to reflect RTMPose optional install and keypoint_mean-only confidence strategy.
  • Bumped POSE_ESTIMATION_IMAGE_TAG in .env.example to v0.1.9.

v0.1.8 - 2026-04-24Direct link to v0.1.8 - 2026-04-24

FixedDirect link to Fixed

  • Restore RELEASE.md heading format

v0.1.7 - 2026-04-23Direct link to v0.1.7 - 2026-04-23

ChangedDirect link to Changed

  • Bump openfilter SDK, align CI workflow with shared release gate (source-paths)

  • Bump openfilter dependency to >=0.1.30.

v0.1.6 - 2026-04-20Direct link to v0.1.6 - 2026-04-20

ChangedDirect link to Changed

  • Migrate Dockerfile from deprecated filter_base to python:3.11-slim with source install
  • Simplify filter.mk build-image (plain docker build, no GAR secrets)
  • Simplify Makefile install (pip install -e .[dev], no GAR auth)

v0.1.5 - 2026-04-20Direct link to v0.1.5 - 2026-04-20

ChangedDirect link to Changed

  • Add create-release.yaml for GAR premium publishing
  • Remove old ci.yaml
  • Switch to shared security-scan
  • Update Makefile IMAGE to premium-filters/
  • Bump openfilter to >=0.1.27

ChangedDirect link to Changed

  • Docker image: install libnvidia-gl-${NVIDIA_GL_MAJOR} (default 535) alongside Mesa GL/EGL libs so MediaPipe’s GPU delegate can use the NVIDIA EGL/GLES ICD instead of falling back to llvmpipe (CPU GL). Override with docker build --build-arg NVIDIA_GL_MAJOR=<driver major> to match the host GPU driver.

v0.1.4 - 2026-04-07Direct link to v0.1.4 - 2026-04-07

ChangedDirect link to Changed

  • Renamed the public device value from "cuda" to "gpu" (FILTER_DEVICE=gpu) so the setting is backend-agnostic. Each backend maps "gpu" to its own runtime internally: RTMPose uses CUDAExecutionProvider via onnxruntime; MediaPipe uses Delegate.GPU via EGL.
  • Added EGL_PLATFORM=surfaceless to Docker Compose env for MediaPipe GPU: MediaPipe uses OpenGL ES via EGL (not CUDA), and headless NVIDIA Docker requires this env var for EGL context initialization to succeed.

BreakingDirect link to Breaking

  • scripts/run_pose_estimation_pipeline.py no longer reads backward-compatible env aliases. Use the FILTER_* variables (and WEBVIS_PORT) only. Removed aliases: POSE_BACKEND → FILTER_BACKEND, DEVICE → FILTER_DEVICE, MODEL_PATH → FILTER_MODEL_PATH, MAX_PERSONS → FILTER_NUM_POSES, THRESHOLD → FILTER_THRESHOLD, DRAW_VISUALIZATION → FILTER_DRAW_VISUALIZATION, VISUALIZATION_TOPIC → FILTER_VISUALIZATION_TOPIC, PORT → WEBVIS_PORT.

FixedDirect link to Fixed

  • Added nvidia-cublas-cu12 and nvidia-cudnn-cu12 pip packages to the Docker image to provide libcublasLt.so.12 and cuDNN runtime libraries required by onnxruntime-gpu>=1.18. Without these, the CUDA provider failed silently and inference ran on CPU despite effective_device=gpu being logged.
  • Fixed misleading effective_device=gpu log output when CUDA libraries are missing: RTMPoseBackend._provider_order now probes libonnxruntime_providers_cuda.so via ctypes.CDLL before claiming CUDA is available, triggering accurate CPU fallback and logging when libs are absent.
  • Added full set of CUDA toolkit Python packages to the Docker image (nvidia-cuda-runtime-cu12, nvidia-cublas-cu12, nvidia-cudnn-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cusolver-cu12, nvidia-cusparse-cu12) required by onnxruntime-gpu>=1.18 for GPU inference. These libs are not provided by the NVIDIA container runtime (driver only). ldconfig is run post-install to register all lib dirs system-wide.
  • Added tqdm to the Docker image pip install: rtmlib is installed with --no-deps to prevent pip from pulling CPU-only onnxruntime, but this also skipped tqdm, causing ModuleNotFoundError at startup.

v0.1.3 - 2026-03-28Direct link to v0.1.3 - 2026-03-28

AddedDirect link to Added

  • Docker image now bundles RTMPose runtime dependencies: onnxruntime-gpu and rtmlib, with onnxruntime-gpu installed before pip install --no-deps rtmlib so the resolver does not replace GPU wheels with the CPU-only onnxruntime package.

RemovedDirect link to Removed

  • Removed exploratory notebooks mediapipe.ipynb and rtmpose.ipynb.

FixedDirect link to Fixed

  • Added missing runtime system libraries for MediaPipe in Docker image (libgles2, libegl1, libgl1) to prevent startup crashes caused by missing libGLESv2.so.2 / libEGL.so.1.
  • Reduced noisy runtime output by making FILTER_MQ_LOG optional in docker-compose.yaml (instead of forcing pretty output).
  • Improved per-frame logging behavior to keep INFO logs concise and move detailed pose metadata payloads to DEBUG.

v0.1.2 - 2026-03-27Direct link to v0.1.2 - 2026-03-27

AddedDirect link to Added

  • Added RTMPose backend implementation with pluggable backend factory registration.
  • Added shared output schema mapping for RTMPose in frame.data["meta"] (task, model, confidence, keypoints) with append-only merge behavior.
  • Added CPU/CUDA runtime handling for RTMPose with clean fallback from CUDA to CPU when provider/runtime is unavailable.
  • Added CI-safe mock-based tests for RTMPose schema parity, fallback semantics, and optional dependency messaging.
  • Added RTMPose optional dependency extras in pyproject.toml (rtmpose, rtmpose-gpu) to keep default install path CI-safe.
  • Added RTMPose usage paths in README.md, QUICKSTART.md, .env.example, and pipeline script env handling (FILTER_* with script aliases).

v0.1.1 - 2026-03-23Direct link to v0.1.1 - 2026-03-23

AddedDirect link to Added

  • MediaPipe pose-estimation path in FilterPoseEstimation with append-only frame.data["meta"] enrichment (task, model, confidence, keypoints).
  • CI-safe unit tests for config defaults, GPU fallback behavior, multi-person mapping, and metadata preservation.
  • Quickstart updates for data/example.mp4, compose env overrides, and .env.example.

v0.1.0 - 2025-02-22Direct link to v0.1.0 - 2025-02-22

AddedDirect link to Added

  • Initial Release: new Pose Estimation filter