Temporal reasoning over single-frame OCR
Nearby frames add evidence for whole-string candidate voting.
Engineering MVP / Prototype
Offline race bib recognition and searchable video events.
Detection → OCR → Temporal Stabilization → Video Indexing → Clip Planning
01 / Problem & constraints
Race footage introduces several practical challenges:
BibVision turns visual observations into stable, searchable bib events linked to video time.
02 / System design
Bib Detection · Iteration V3: the PC workflow connects bib detection and OCR to searchable video events and clip planning. Android experiment · RTMDet-Tiny: a separate Kotlin project explores on-device inference.
INTERACTIVE SYSTEM MAP
Offline bib recognition and searchable video events
Video or still image
Locate and validate complete bib candidates
Combine evidence across nearby frames
Searchable offline event index
Per-file observations map to a shared timeline, then to Presence intervals and ClipPlan alongside SQLite indexing.
03 / Key engineering decisions
Nearby frames add evidence for whole-string candidate voting.
Event-specific formats refine candidates while raw OCR evidence stays traceable.
Map each source fragment's local timestamps to a shared logical timeline.
Frozen data, fixed protocols, model versions, and artifact records keep comparisons traceable.
04 / Evaluation
SAVED DETECTION BENCHMARK SUMMARY
50images
66GT boxes
2negative images
V2 baselineV3 prototype baselineScore range 0–1
| Metric | V2 baseline | V3 prototype baseline |
|---|---|---|
| mAP50 Mean average precision at a 0.50 IoU matching threshold, summarizing detector performance across precision and recall. | 0.54406 | 0.92273 |
| mAP50:95 Mean average precision across IoU thresholds from 0.50 to 0.95 in 0.05 steps. | 0.30052 | 0.57318 |
| Precision @ fixed threshold TP / (TP + FP) at the displayed fixed operating point. | 0.72973 | 0.86765 |
| Recall @ fixed threshold TP / (TP + FN) at the displayed fixed operating point. | 0.40909 | 0.89394 |
| F1 @ fixed threshold The harmonic mean of precision and recall: 2 × precision × recall ÷ (precision + recall). | 0.52427 | 0.88060 |
| GT transition | Count |
|---|---|
| TP in both versions | 27 |
| V2 miss recovered by V3 | 32 |
| V2 TP missed by V3 | 0 |
| Missed by both versions | 7 |
Source: saved Stage 5.4 detection comparison summary.
Bib-detection metrics on the fixed dataset.
05 / Temporal OCR stabilization
Nearby frames provide OCR observations for whole-string voting. Raw candidates remain traceable.
ILLUSTRATIVE EXAMPLE
A0382 = 3.36 · A038B = 0.43 raw
A03823.36
A038B0.43
A03823.36
A038BExcluded from eligible candidate total
A038B remains in the raw observation view; the eligible vote total reflects candidates that pass the example format rule.
Example format: one letter + four digits. A038B remains visible as raw OCR and is excluded from this example vote.
Associates nearby-frame observations on a local track.
Weights aggregate complete observed bib strings.
Marks completion of the configured voting rule; the OCR string remains a recognition result.
06 / Video indexing & clip planning
Source fragments retain local timestamps on a logical global timeline. The indexed-replay path stores weighted decisions as BibEvent records in SQLite before generating its replay plan.
A separate continuous-file path connects per-file observations directly to Presence intervals and ClipPlan alongside the indexed SQLite workflow.
ClipPlan records source ranges and edit decisions for later rendering.
SCRIPT OUTPUT · DETECTION BOXES + RECOGNIZED BIB LABELS
Drag the timeline or select a thumbnail to seek to that moment.
OBSERVATIONS FROM THIS SCRIPT OUTPUT
Select a bib to highlight its first-to-last observed span and seek to its first observation.
Underlying footage by Miguel Guerra / Pexels
Separate timeline example.
ILLUSTRATIVE EXAMPLE
Selected example: Bib A · related items highlighted
Keep each segment’s local clock and follow observations across the shared timeline.
Local segment time: 0–15s
Local segment time: 0–15s
Local segment time: 0–15s
Map local event positions onto one continuous sequence.
Logical time follows segment order and local event positions; source segments remain separate.
Group observations for the same example bib into time ranges.
Collect relevant observation ranges into a clip plan.
Static edit-plan preview.
Teaching example: map segmented observations into a replay ClipPlan.
07 / Results, limitations & lessons learned