Skip to content

Changelog

[0.3.0-beta] - 2026-04-04

Added

  • L2CS-Net gaze backend — dual classification heads, 3.92° MAE on MPIIGaze (vs 11° for MGaze)
  • UniGaze gaze backend — ViT + MAE pre-training, best cross-dataset accuracy (~9.4°, non-commercial license)
  • Backend registry — automatic discovery of gaze backends from GazeTracking/Backends/
  • Unified pitchyaw pipelinepitchyaw_pipeline.py shared by all pitch/yaw-based backends
  • Live matplotlib dashboard — real-time per-tracker charts during processing (GUI/live_dashboard.py)
  • Dashboard bridge — thread-safe GUI-to-dashboard data flow (GUI/live_dashboard_bridge.py)
  • Post-run chart generation — time-series charts via DataCollection/chart_output.py (--charts flag)
  • Global CSV — cross-video summary and per-condition statistics for project mode (DataCollection/global_csv.py)
  • Matplotlib dashboard rendererDataCollection/dashboard_matplotlib.py replaces OpenCV drawing
  • Face anonymization--anonymize blur|black with configurable padding and temporal smoothing
  • Auxiliary video streams — per-participant secondary cameras (eye-tracking, FPV) via AuxStreamConfig
  • Participant ID mapping — custom labels via pid_map in project.yaml and participant_ids.py
  • ProjectConfig / ProjectOutputConfig — study metadata dataclasses for project mode
  • Example project templateProjects/ExampleProject/ with project.yaml
  • CollapsibleGroupBox widget — expandable/collapsible GUI sections
  • GazelleSnap plugin — snap-augmented Gazelle gaze backend
  • GazeBoost plugin — gaze-informed object detection boost using pitchyaw pipeline
  • Device auto-detectionutils/device.py for CUDA/MPS/CPU hardware selection
  • Plugin protocol methodsdashboard_data(), latest_metric(), latest_metrics(), dashboard_widget(), generate_charts()
  • Performance flags--fast-mode, --skip-phenomena N, --lite-overlay, --no-dashboard, --profile
  • Gaze convergence tips--gaze-tips + --tip-radius for multi-person gaze convergence visualization

Changed

  • MGaze relocated from Plugins/GazeTracking/MGaze/ to GazeTracking/Backends/MGaze/
  • CLI flags renamed--gaze-model--mgaze-model, --gaze-arch--mgaze-arch, --gaze-dataset--mgaze-dataset
  • GazeConfig.adaptive_ray — type changed from bool to str ("off" / "extend" / "snap")
  • ja_conf_gate renamed to hit_conf_gate — broader semantics beyond joint attention
  • Adaptive snap scoring — new parameters: snap_bbox_scale, snap_w_dist, snap_w_size, snap_w_intersect
  • GazeConfig additionsdetect_extend, detect_extend_scope, forward_gaze_threshold
  • TrackerConfig — added reid_max_dist (default 200, up from 120)
  • OutputConfig — added charts_path, pid_map, aux_streams, anonymize, anonymize_padding, video_name, conditions
  • Plugin signaturescsv_rows(), console_summary(), dashboard_section() now accept pid_map kwarg
  • Gaze processing — global motion compensation for camera jitter, deterministic left-to-right track-ID assignment, improved re-ID with histogram-weighted matching
  • GUI gaze tab — horizontal/vertical splitter layout, backend selection with per-backend config panels, device selector, settings reorganization, preset system
  • GUI project tab — complete rebuild with pipeline YAML loader, participants table, metadata editor, conditions support
  • CSV output — grouped tracker sections (Dyadic Interactions, Individual Gaze Behavior, Group Dynamics), project mode columns
  • Dashboard outputfinalize_video() method, lite overlay mode, configurable element visibility
  • Geometry utilsbbox_diagonal(), trig caching in ray_hits_cone(), squared-distance optimizations

Fixed

  • Heatmap output filepath handling for project structure
  • Snap hysteresis tracker consistency
  • Forward gaze dead zone producing errant rays near pitch/yaw zero
  • Face re-ID resilience to camera movement (grace period + global motion compensation)
  • Duplicate "face" label on video output

Breaking Changes

  • --gaze-model / --gaze-arch / --gaze-dataset CLI flags renamed to --mgaze-* prefix
  • GazeConfig.adaptive_ray type changed from bool to str
  • GazeConfig.adaptive_snap_mode removed (replaced by snap_bbox_scale and scoring weights)
  • GazeConfig.ja_conf_gate renamed to hit_conf_gate
  • MGaze plugin path changed from Plugins/GazeTracking/MGaze/ to GazeTracking/Backends/MGaze/
  • dashboard_section(), csv_rows(), console_summary() signatures changed (added pid_map kwarg)
  • Phenomena tracker __init__ no longer returns separate ja_tracker — JA unified into tracker list

[0.2.0-beta] - 2026-04-01

Added

  • Initial public beta release
  • Multi-person gaze tracking pipeline (Detection -> Gaze -> Phenomena -> Data)
  • Plugin architecture (Gaze backends, Object Detection, Phenomena, Data Collection)
  • PyQt6 GUI with Gaze Tracker, Visual Prompt Builder, and Project tabs
  • 8 built-in phenomena detectors (joint attention, mutual gaze, social referencing, gaze following, gaze aversion, scanpath analysis, gaze leadership, attention span)
  • MGaze and Gazelle gaze estimation backends
  • YOLOE-based object detection with visual prompts
  • Project mode for batch video processing
  • YAML pipeline configuration
  • CSV, heatmap, and video overlay outputs
  • AGPL-3.0 license