Repository navigation
v2.0.0 — AI-driven privacy masking
v2.0.0 — major release
InteractiveMask now applies privacy masks per detected object instead of per tile. The system recognises people, cyclists and vehicles by itself via a local AI model and blurs only those — the rest of the camera frame stays fully visible. Fully GDPR-compliant: no facial recognition, no number-plate reading, no external database links.
Backward compatible with v1.3.x. Customers without a suitable GPU keep the v1.x masking behaviour unchanged; AI is strictly opt-in per camera.
What's new
AI-driven object masking
- Three categories, colour-coded: Person (red), TwoWheeler (orange), Vehicle (blue)
- Per-camera configuration: enable / disable, category selection, confidence threshold with hysteresis, mask padding, region-of-interest polygon
- Two rendering styles: colour-coded silhouette or classic CCTV source-blur
- Mask opacity slider (20–100 %) per camera
- Redesigned per-camera AI settings dialog in the app's card style
Per-tile AI reveal (F2)
- Small "AI" pill in the top-left of any tile with active AI detections
- Click → authenticate (PIN or AD, same policy as v1.x unmask) → pick duration (30 s / 1 min / 5 min / until remask)
- Live countdown badge in the top-right, one click to remask early
- Every reveal is audited (reviewer identity + duration + reason)
- Per-detection reveal is intentionally not supported — privacy first
Adaptive load management (F3)
- Runtime monitor watches rolling p95 inference latency
- Three-step degradation ladder with hysteresis to prevent flapping:
- Frame-skip multiplier raised per tile
- AI auto-disabled on the lowest-priority cameras
- Global AI fallback (all tiles show live image without overlay)
- Each transition writes an audit event; affected tiles show a small "AI paused (load)" badge
- Automatic recovery when load drops; no operator action required
Plus
- In-app manual chapter 10 "AI masking" with operator-facing walkthrough (NL + EN)
- About tab shows live AI runtime info: model, execution provider, inference latency, frame counter
- Full audit-log coverage for the AI lifecycle:
AiDetectorInit,AiDetectorFault,AiDetectorStopped,AiRevealRequested,AiRevealExpired,AiDetectorDegraded,AiDetectorRestored - ONNX Runtime DirectML bumped 1.20.1 → 1.24.4
- Centralised inference coordinator (no more native crashes under concurrent submissions)
- Carry-over polish from the v1.3 pre-release review (dead loc keys, persistent audit-log handle, hot-path closure-allocation removal, periodic web-session sweep, PIN-counter consistency fix)
What it does not do
- No facial recognition
- No licence-plate / OCR / plate-string storage
- No links to external databases
- NVR recordings are unaffected — masking is applied on the kiosk screen only
System requirements
- Windows 10 22H2 or Windows 11 23H2 / 24H2, 64-bit
- DirectML-capable GPU (NVIDIA RTX, AMD 700-series, Intel Arc; driver from 2020 or newer)
- 4 GB free on system drive
- LAN access to the IDIS NVR
Installer
InteractiveMask-2.0.0.msi (180.8 MB, signed by IDIS Nederland BV)
- SHA-256:
6D503F5D0C9838C5BBC41DF77FD22896F38E87ACCF3CCA6F94A066386FFB9DEC - Certificate: CN=IDIS Nederland BV, valid until 4 April 2027
- Self-contained: bundles the .NET 9 runtime, ONNX Runtime DirectML, and the YOLO26 models — no separate runtime install needed
- Upgrade: double-click on a host running v1.x; the old version is replaced in-place and configuration is preserved
Unattended deployment
msiexec /i InteractiveMask-2.0.0.msi /qn INTERACTIVEMASK_LANGUAGE=en(Replace en with nl, de, fr, or es to pre-seed the UI language for SCCM / Intune rollouts.)
Documentation
- Full release notes:
docs/release-notes-2.0.0.md - Build note (IT / support):
docs/buildnote-2.0.0.md - Architecture:
docs/architecture-v2-ai.md - Roadmap:
docs/roadmap.md