Release Notes#

Current Release#

Version 1.1.0#

Release Date: May 2026

New:

  • Search API response format: visits[] changed to appearances[] with entry/exit similarity and frame URLs

  • Dynamic SceneScape configuration: All environment variables are now auto-generated from configs/zone_config.json via make init that replaced make init-env. In result, manual editing of .env is not required.

  • Benchmark targets now use performance-tools submodule instead of backend benchmarks

  • Two-stage offline search: Historical search now uses a two-stage pipeline — first searches enrolled POI index, then falls back to the all-detections index for non-enrolled persons

  • Multi-embedding detection index: Stores up to 5 face embeddings per tracked person (spaced 10 seconds apart) for more robust matching

  • Entry/exit frame capture: Search results include entry and exit frames per track, with zone-level entry/exit frames for dwell records

  • Track purity filter: Prevents false positives from DL Streamer track ID reuse by checking per-POI event counts and filtering tracks with < 40% purity

  • Scene export script: make export-scene exports scene config from a running SceneScape instance as an importable zip file

  • Per-camera pipeline configs: DL Streamer pipeline configs are generated dynamically per camera from zone_config.json

  • Benchmark submodule: Benchmark targets now use performance-tools submodule instead of backend benchmarks

  • Stream density benchmarking: Integrated performance-tools submodule with make benchmark, make benchmark-stream-density, make consolidate-metrics, and make plot-metrics targets

  • App-specific controller configs: Tracker and reid configs moved from SceneScape to each app’s configs/ directory (POI: cosine/0.97, SAD: L2/30)

Fixed:

  • Fixed offline search returning false positives due to missing similarity threshold

  • Fixed UI crash on search results when accessing removed search_stats fields

  • Fixed non-enrolled persons not found in search (cross-domain embedding gap between OpenVINO™ enrollment and DL Streamer runtime)

  • Resolved merge conflicts from suryam/poi branch (entry/exit grouped tracks)

Version 1.0.0#

Release Date: April 2026

Features:

  • Real-time POI face matching using FAISS cosine similarity on 256-d embeddings from face-reidentification-retail-0095

  • POI enrollment via REST API with automatic face detection and embedding generation using OpenVINO™

  • Historical search API — upload an image and get a timeline of appearances across all cameras, with region dwell times and thumbnails

  • Multi-strategy alert delivery — WebSocket (to UI), MQTT publish, webhook POST, and logging, with configurable deduplication and suppression

  • React + TypeScript UI for POI management, real-time alert monitoring, and historical investigation

  • Cache-Aside pattern for object-to-POI mapping — avoids repeated FAISS searches for the same tracked person

  • Region entry/exit tracking with dwell time computation via Intel® SceneScape regulated scene events

  • Docker Compose deployment with four services: backend, UI, Redis, and alert service

  • Full test suite with 110 passing tests covering matching, alerting, MQTT consumption, region tracking, and enrollment

OpenVINO™ Models Used:

Model

Purpose

Output

face-detection-retail-0004

Face detection

Face bounding boxes

face-reidentification-retail-0095

Face re-identification

256-d float32 vector

HW Used for Validation:

  • Intel® Xeon® Scalable Processor (4th Generation)

  • Ubuntu 22.04 LTS

Known Issues/Limitations:

  • FAISS uses IndexFlatIP (exact search) — for very large POI galleries (10,000+ embeddings), consider switching to IndexIVFFlat for approximate nearest neighbor search.

  • Thumbnail capture depends on RTSP stream availability from the camera; if RTSP is not configured, thumbnails may be empty.

  • SceneScape integration is required for region tracking and dwell time features; without SceneScape, only per-camera tracking is available.

  • Alert deduplication window is per (object_id, poi_id) pair — a different POI match for the same person will generate a new alert immediately.