NOTEBOOKS

Embedding / appearance filters

Embedding / appearance filters

Recursive estimators for the appearance (ReID / DETR query / kernel) embedding a tracker carries per identity. A motion Kalman filter (see Kalman intuition) fits embeddings only awkwardly — they are high-dimensional, live on the unit sphere, and have no motion model — so trackers use one of the estimators demonstrated here instead.

Each notebook drives a real unitrack.Tracker, so it doubles as proof the library supports the method.

#NotebookMethodunitrack API
1EMAExponential moving average (steady-state scalar Kalman)EMAFuse, EMATrack
2Diagonal KalmanDiagonal random-walk Kalman (adaptive, O(D))KalmanLinear, KalmanUpdate
3vMF directionalvon Mises-Fisher directional recursive Bayes (on the sphere)vmf_state_entries
4EnKF / information filterEnsemble Kalman (high-D) + information filter (exact dual)enkf_state_entries, information_state_entries
5Gallery and learnedFeature-bank gallery (DeepSORT/MeMOT) + learned propagation (MOTR-style)gallery_state_entries, GalleryCost, LearnedProcess, LearnedObservation
6Summary benchmarkAll six side-by-side: FLOPs, speed vs D, accuracy, effort, fail/successbenchmark of all of the above

Which one?

  • EMA — cheap, robust default; no uncertainty.
  • Diagonal Kalman — EMA cost with adaptive, measurable per-dimension uncertainty.
  • vMF — the right geometry for cosine-normalised embeddings; estimate stays on the sphere and kappa is a directional confidence.
  • Information filter — exact Gaussian posterior, additive fusion of many cues (moderate D).
  • EnKF — covariance information when D is too large for a dense matrix.
  • Gallery — memory across appearance change / re-ID gaps.
  • Learned propagation — the expressive, differentiable, MOTR-style option.

Notebooks are generated from _build.py in this directory; edit the NB_* cell lists there, re-run it, then execute the notebook to refresh outputs. Edit the lists, not the .ipynb files directly — regenerating overwrites them, outputs included.