EVORAOpen the case log

What the measurements show

Generated 2026-10-09 05:09 · code ec1196f · thresholds frozen at 9325b7e before test and judge sim.

What the results support

  • When no object of the requested class is on the camera, the system says so. The frame-similarity baseline and the random baseline always return something and never answer 'nothing there'.
  • Parsing the question into class, camera and time constraints is what makes the system work at all: replacing the parsed plan with raw-text search collapses both object hits and negatives in the ablation.

What they do not show

  • Object retrieval better than chance on the main set: a random moment inside the same camera and window (the null system) scores as well as or better than our object Hit@1 on every split. The frame-similarity baseline is above it on the lenient score; see the strict comparison in the limits.
  • Better timestamp localisation than chance or the frame baseline: after the time-window boundary fix the differences are within noise, and the random baseline is not worse.
  • A benefit of track-centric indexing: frame-level retrieval is better than the full system in the ablation. The track layer is limited by detector recall on small, distant people.
  • Any effect of attribute scoring, verification or clarify-once memory: no evaluated query exercises them.

Results

Same footage, same parsed time window and camera filter for every system; only retrieval differs. n is the number of questions a metric applies to. Hit@1 counts a returned window that overlaps the labelled one; the strict Hit@1 also needs its peak moment inside it.

SystemSplitnHit@1Hit@1 strictHit@5MRRCamera accuracyTimestamp errorNegative precisionRe-asksFirst answer p50
EVORAtest190.310.310.690.440.695.3 s0.67119 ms
Frame baseline (B0)test190.620.380.690.680.778.6 s0.00048 ms
nulltest190.460.460.770.590.857.4 s0.0001 ms
EVORAdev280.390.390.560.470.6715.3 s0.90011 ms
Frame baseline (B0)dev280.560.280.560.560.7819.6 s0.00054 ms
nulldev280.220.220.560.350.5614.7 s0.0001 ms
EVORAjudge sim90.250.250.750.440.50146.8 s0.80112 ms
Frame baseline (B0)judge sim90.250.250.500.350.507.4 s0.00046 ms
nulljudge sim90.000.000.500.210.5062.9 s0.0001 ms

Extra checks

Harder or narrower question sets run on the same frozen system. They sit next to the main results above and do not replace them.

Object questions where a random moment is less likely to be right

The same kind of object question, kept only for 1-minute windows where MEVA's annotated actors fill at most half of the window, so a random moment is less likely to be right. Cameras keep their split. These windows overlap the main set: this re-weights it toward harder chance, it is not new footage.

SystemHit@1Hit@1 strictHit@5MRR
EVORA0.56 n 180.56 n 180.83 n 180.69 n 18
Random moment0.33 n 180.28 n 180.94 n 180.57 n 18
Frame baseline (B0)1.00 n 180.50 n 181.00 n 181.00 n 18
Median distance from the true moment, by split
SplitEVORARandom momentFrame baseline (B0)
dev0.9 s n 1112.3 s n 115.3 s n 11
test7.4 s n 618.1 s n 63.1 s n 6
judge sim4.4 s n 119.8 s n 13.2 s n 1

Asking once about a place, then remembering it

Questions that name an invented place instead of a camera. The first mention must trigger one clarification, later ones (including three fixed rewordings of the name) must not, and answers must come from the camera the place was bound to.

MeasureEVORA
First mentions that were asked about1.00 n 6
Questions asked that were needed1.00 n 6
Asked again after it was answered0 n 30

Asking for a colour, scored against human labels

Asking for a colour on one camera, scored against human colour labels over the labelled tracks only: does the first labelled track returned have the colour? Compared with attribute grounding switched off and with a random order of the same tracks. The colour model was tuned on part of these labels, and the labels cover a sample of tracks, so read this as an upper-leaning estimate on small n.

TracksnColour used, Hit@1Colour ignored, Hit@1Random order, Hit@1
All labelled tracks390.640.670.30
Persons270.590.630.33
Vehicles120.750.750.25

The second look at colour, against human labels

The visual check (a small local vision model) against human colour labels, through the full router. Accuracy counts only labelled tracks the check looked at; the effect compares the labelled evidence before and after candidates the check said no to are set aside. Same caveats as the colour retrieval set: a sample of labelled tracks, small n, one footage set.

MeasureValuen
Said yes when the colour was right0.69109
Said no when the colour was wrong0.83127
Hit@1 before and after the check0.67 to 0.7236
Share of right colours among the evidence, before and after0.49 to 0.6036
Questions where the check set aside every labelled track339

By capability

CapabilitySystemSplitHit@1Camera accuracyTimestamp errorNegative precision
Finding an object classEVORAtest0.50 (n 8)1.00 (n 8)4.2 s (n 8)–
Saying “nothing there”EVORAtest–––1.00 (n 4)
Finding an object classFrame baseline (B0)test1.00 (n 8)1.00 (n 8)5.9 s (n 8)–
Saying “nothing there”Frame baseline (B0)test–––0.00 (n 4)
Finding an object classnulltest0.75 (n 8)1.00 (n 8)2.9 s (n 8)–
Saying “nothing there”nulltest–––0.00 (n 4)
Finding an object classEVORAdev0.56 (n 9)1.00 (n 9)14.7 s (n 9)–
Saying “nothing there”EVORAdev–––1.00 (n 8)
Finding an object classFrame baseline (B0)dev1.00 (n 9)1.00 (n 9)12.0 s (n 9)–
Saying “nothing there”Frame baseline (B0)dev–––0.00 (n 8)
Finding an object classnulldev0.44 (n 9)1.00 (n 9)9.5 s (n 9)–
Saying “nothing there”nulldev–––0.00 (n 8)
Finding an object classEVORAjudge sim1.00 (n 1)1.00 (n 1)4.4 s (n 1)–
Saying “nothing there”EVORAjudge sim–––1.00 (n 4)
Finding an object classFrame baseline (B0)judge sim1.00 (n 1)1.00 (n 1)3.2 s (n 1)–
Saying “nothing there”Frame baseline (B0)judge sim–––0.00 (n 4)
Finding an object classnulljudge sim0.00 (n 1)1.00 (n 1)19.8 s (n 1)–
Saying “nothing there”nulljudge sim–––0.00 (n 4)

Not evaluated

Counting
MEVA labels only actors in annotated activities (parked cars and bystanders are unlabelled), so annotated counts are lower bounds and exact counts cannot be scored
Colour
no colour labels in MEVA; needs the blind human labels from scripts/colour_label_tool.py
Carrying
no bag-carrying ground truth: MEVA's carried objects are class 'other', one bag actor in 6 cameras
Paths across cameras
no cross-camera identity ground truth (MEVA actor ids are per clip and camera)

Against the baseline, test split

  1. Hit@10.310.62
  2. Hit@50.690.69
  3. MRR0.440.68
  4. Camera accuracy0.690.77
  5. Negative precision0.670.00
Scale 0 to 1 for every row; higher is better. Hover or focus a bar for its n.

What each part contributes

Each row turns one contribution off and reruns the frozen test split. A shorter bar than the full system means that part was helping; equal bars mean no effect could be measured on these questions.

Hit@1

  1. Full system0.38
  2. without Track-centric multi-granular retrieval (C1)0.46
  3. without Attribute grounding (C2)0.38
  4. without Plan-then-verify: LLM planner (C3a)0.15
  5. without Plan-then-verify: verification (C3b)0.38
  6. without Clarify-once referent memory (C4)0.38
  7. without Topology-aware cross-camera linking (C5)Not run: needs the footage re-indexed with the switch off
  8. without Motion-gated adaptive sampling (C6)Not run: needs the footage re-indexed with the switch off

Negative precision

  1. Full system0.83
  2. without Track-centric multi-granular retrieval (C1)0.83
  3. without Attribute grounding (C2)0.83
  4. without Plan-then-verify: LLM planner (C3a)0.00
  5. without Plan-then-verify: verification (C3b)0.83
  6. without Clarify-once referent memory (C4)0.83
  7. without Topology-aware cross-camera linking (C5)Not run: needs the footage re-indexed with the switch off
  8. without Motion-gated adaptive sampling (C6)Not run: needs the footage re-indexed with the switch off
The thin mark is the full system. Rows without a bar were not measured on this footage.

Time to the first answer

Dot is the median, the line runs to the 95th percentile, measured on the same machine in the same session.

  1. EVORA test19 ms · 3.37 s
  2. Frame baseline (B0) test48 ms · 62 ms
  3. null test1 ms · 2 ms
  4. EVORA dev11 ms · 350 ms
  5. Frame baseline (B0) dev54 ms · 61 ms
  6. null dev1 ms · 1 ms
  7. EVORA judge sim12 ms · 4.01 s
  8. Frame baseline (B0) judge sim46 ms · 50 ms
  9. null judge sim1 ms · 2 ms

Limits

  • Ground truth is MEVA's: it labels only actors that take part in annotated activities, so a correct but unlabelled object counts as a miss. Object scores are conservative; negatives are built only for classes absent from a camera's whole annotation.
  • Sample sizes are small (one 5-minute window, 8 cameras). Read every number together with its n.
  • The judge_sim split shares the recording day with dev and test: it checks unseen cameras, not unseen footage.
  • Thresholds were frozen before the test and judge_sim runs; nothing was tuned on them.
  • Chance level: a random moment inside the same camera and window already scores object Hit@1 0.56 (n=18), because MEVA's annotated actors are dense in time. Read every object result next to this row.
  • Hit@1 is reported two ways (pooled, n=18): ours 0.56 to 0.56; frame baseline 1.00 to 0.61; random moment 0.56 to 0.56. The lenient score counts any overlap between the returned window and the labelled one, so a system that returns long windows is right almost by construction; the strict score needs the returned peak moment inside the labelled window widened by 2 s. Compare systems on the strict score.