At marathon finish lines, 10-20 runners cross simultaneously. Each one is a paying customer. But traditional tagging captures only 1-2 bibs per photo — and misses the other 18-19 runners who are also looking for their photo.
Missed runners = missed sales. A photo with 15 runners that you tag to only 2 runners means 13 customers won't find their photo and won't buy. At $8-12 per photo, that's $100+ in lost revenue per frame.
Multi-subject bib detection is the ability to identify and read multiple race numbers in a single photograph, where runners are at different distances, angles, and partial occlusions. This is fundamentally different from single-subject tagging — it requires detecting all bibs in the frame, not just the dominant one.
Marathon photography is a numbers game. Event photographers can shoot 20,000-100,000+ images per event. The revenue model depends on every participant being able to find and buy their photos. If your workflow only tags the leader in a 15-runner finish line shot, you've lost 14 sales immediately.
In specifically:
Marathon events are uniquely challenging for multi-subject detection: mass-start formats mean hundreds of runners visible at once in any given frame; finish line compression where 10-20 runners cross within 30 seconds; varied body types and clothing that occludes bibs differently; paper bibs that fold and shift as runners move; and the sheer density of the field makes each bib smaller and harder to isolate.
Finish line, 15 runners crossing in 5 seconds, bibs at distances from 2 to 20 meters away
very common✗ Single-subject tagging identifies the closest runner (bib clearly visible) and tags that photo to 1 participant. The other 14 bibs — visible but smaller, at angles, or partially obscured — are completely ignored. Photo database shows 15 images but only 1 tagged participant.
Mass-start photo with 25 runners visible in a wide shot, bibs at varying sizes and clarity
very common✗ OCR focuses on the largest/clearest bib and gives up on the others. Manual tagging of multi-bib photos is so slow that photographers tag only the 'primary' runner. Database records 25 runners in photo but 24 go unmatched.
Mid-race pack photo where 8 runners are bunched together, bibs overlapping and at different angles
common✗ Bibs partially overlap in the frame. Traditional systems can't separate overlapping subjects. They either read one bib and miss the rest, or read a garbled combination. Confidence on overlapping bibs is too low to trust.
Water station photo with 12 runners at various distances and directions, some facing away, bibs at different angles and distances
common✗ Mix of front-facing (clear bibs) and angled/side views (distorted bibs) in one frame. Single-subject systems pick the clearest one and miss the rest. The 8 side-angle bibs go completely undetected.
Manual tag-to-primary-subject only
⚠ Scaling nightmare. On a 50,000-photo marathon, even 5 seconds per multi-runner shot means 40+ additional hours. Most photographers give up and tag only the first/closest runner, leaving 70% of secondary runners untagged.
Batch keyword tagging (apply one set of bibs to all photos from a time period)
⚠ Creates database junk. Runners find photos they're not in; untagged photos proliferate. Unusable for precise delivery.
Timing chip cross-reference only (match chip time to runner database, skip visual tagging)
⚠ Doesn't solve the visual identification problem. A photo of 8 runners at mile 15 can't be matched to specific runner names without reading the visible bibs.
AI vision models process the entire scene and detect all human subjects in the frame, then locate bib regions on each detected body and read the number independently for each runner. The system doesn't try to separate overlapping subjects — it identifies bibs across the entire image and outputs a list: [bib #456, bib #203, bib #789, etc.]. Each detected bib associates that photo with that participant.
Key advantage
Scale and accuracy simultaneously. The AI reads ALL visible bibs in one pass — not just the biggest or closest. A 15-runner finish line photo gets 15 bib detections and the photo gets tagged to 15 participants. Every runner gets a photo hit in their gallery.
96-98% per-bib accuracy when all subjects are 2-10 meters away with clear front-facing bibs
Good conditions
89-94% when runners are mixed distance, some side-angles, partial occlusion by other runners
Challenging
78-85% with confidence flags when extreme overlap, heavy motion blur, or extreme distance variation
Worst case
Upload your finish line burst sequence. RaceTagger detects every bib in each frame and outputs a JSON file: [{photo_id: '001.CR3', bibs: [456, 203, 789, ...]}, ...]. Each bib automatically tags that photo to that participant. Output XMP sidecars for Lightroom import. Low-confidence bibs are flagged for quick human verification — typically 6-10% of detected bibs.
| Metric | Manual | Basic OCR | AI Vision (RaceTagger) |
|---|---|---|---|
| Processing time (50,000 finish line photos with avg 12 runners each) | 120-180 hours (team of 5 people for days) | 90-120 minutes (but low accuracy on secondary bibs) | ~3 hours (batch) + ~4 hours review of flagged detections |
| Primary subject detection accuracy | 98-100% | 75-85% | 96-98% |
| Secondary subject detection (2nd-10th runner per photo) | 20-30% (most are skipped) | 5-15% | 89-94% |
| Photos with 5+ runners: full multi-detection capability | Possible but extremely slow | Not reliable (1-2 bibs max) | All visible bibs detected consistently |
| Cost per 50,000 photos | €3,000-4,500 (labor) | €50-100 (compute) | €150-250 (tokens) |
Shoot continuous burst at the finish line — let AI sort which frames have which bibs
With 10-15 runners per minute at peak finish, burst mode captures multiple angles and moments. The AI finds the clearest bib readings across all frames automatically. You don't need to predict the perfect single moment.
Position yourself for chest-level bib visibility, not top-down or from behind
Front-facing bibs are easiest to read and detect. From a ground-level position perpendicular to the finish line, you get 10-15 bibs in clear view per frame. Top-down angles (bridge, platform) foreshorten bibs and make multi-detection harder.
Separate your shooting positions: dedicated finish line photographer focuses on bibs, pace photographer captures emotion
For multi-subject accuracy, dedicate one photographer to the 2-meter zone with lens angles that maximize bib visibility. Other photographers can shoot wide for emotion/editorial. The bib photographer's workflow becomes: maximize multi-bib detection rather than composition.
Process multi-subject photos separately from single-runner photos in your workflow
Flag photos with 5+ runners for different QA. Single-subject photos need ~1 second review. Multi-subject photos need 5-10 seconds to verify all detected bibs. Allocating review time per category speeds up the overall workflow.
Use the confidence scores to prioritize manual review — start with low-confidence bibs first
RaceTagger outputs confidence per bib (0-100). Sort flagged bibs by confidence ascending. The 78-85% confidence bibs need human eye. The 95%+ confidence bibs can auto-publish. This saves hours of review time on large events.
Free trial: upload your last marathon finish photos (100-1000 images) and see all runners detected and tagged instantly.
Try multi-subject tagging free →Does multi-bib detection work on photos where runners are bunched together and bibs are overlapping?
Yes, with caveats. The AI detects bib regions independently, so overlapping bodies don't prevent bib reading. However, if a bib is 70%+ obscured by another runner's body, confidence flags it for review. Expect 85-88% accuracy on heavily bunched photos vs 95%+ on spread-out runners.
If a runner appears in 20 different photos (full event coverage), does the photo tagging avoid duplicates?
RaceTagger doesn't deduplicate runners across photos — it tags each photo independently to each detected bib. So runner #456 appears in 20 photos, and the database shows 20 hits for #456. This is correct behavior — the runner DID appear in 20 photos, and all 20 are valid galleries for them to browse.
What if two runners have nearly identical-looking bibs (e.g., #1234 and #1234... wait, those are the same)?
Race bibs are unique per event, so duplicate numbers shouldn't occur. However, if handwriting or printing is poor (#1234 looks like #1284), the AI returns both possibilities with confidence scores. The starting list integration resolves ambiguity — if #1284 isn't in the race, the AI falls back to #1234.
For very large multi-runner photos (25+ runners visible), is accuracy still acceptable?
At 25+ runners, visual crowding increases and average accuracy drops to 82-88%. However, even at lower confidence, the system still detects most bibs. The key is the manual review step — flagging uncertain detections for quick human verification keeps the error rate acceptable for commercial use.