VideoHighlighter 0.8.0
New features:
- Composition Engine
- Labeler
Composition Engine
Detect higher-level actions from spatial relationships between objects (e.g. "object A inside region B N times")
Configurable via composition_rules.yaml with AND logic, majority-vote smoothing, and ghost tracking through brief occlusion
Custom Keypoint Model
Train and run your own YOLO pose model directly in the app
Select and switch custom models from the UI; model is picked up automatically after training
Labeler
Optical-flow assisted tracking between labeled frames
Custom keypoint names defined by the user
Multi-instance support — place the same keypoint multiple times per frame
Occlusion handled correctly in interpolation and optical-flow tracking
Auto-export to dataset/train/labels/ — no save dialog needed
Timeline
Waveform colored by RMS energy (percentile-normalized)
Show all detected actions by default; toggle to highlight-only view
Per-class show/hide filter for bbox overlay
Filter state (confidence thresholds, action/object visibility) persisted across sessions
◀ ▶ navigation arrows on each track row — jump to previous/next event instantly (respects active filters)
Overlay
Readable, abbreviated, non-overlapping bbox labels
Per-class show/hide filter
Bbox colors match the timeline
Training
YOLO training auto-resumes from last.pt on startup (--fresh to override)
Checkpoints, warm-start, and correct best.pt path resolution
UI
Advanced tab laid out in a 2-column grid (groups use horizontal space when maximized instead of one tall column)
Action recognition progress bar shows a single clear backend label (CUDA / OpenVINO-GPU / OpenVINO-CPU) instead of a confusing per-model device list
Bug Fixes
Intel Arc GPU now detected via OpenVINO in packaged builds (the frozen exe's CPU-only torch previously reported "No GPU found", forcing everything onto the CPU)
Auto action backend now picks the right hardware — uses OpenVINO on the Intel GPU instead of forcing R3D onto the CPU when no CUDA is present
Fixed Advanced tab overflow that pushed the Run button off-screen and blocked maximizing (notably in the frozen exe)
Reduced action timestamp / waveform bin desync from ~2s to ~0.5s
Fixed ffmpeg resolution in frozen exe for time-range processing
Fixed config.yaml resolution and save persistence in PyInstaller exe
Fixed custom action model not resolving next to the exe
Performance
Lazy loading for realtime overlay bboxes
Waveform resolution scales with video duration