Problem & Solution

Multi-Subject Tagging in Marathon Photography — How AI Tags Every Runner

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.

Understanding the Problem

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.

Common Scenarios

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.

Traditional Approaches (And Why They Fall Short)

Manual tag-to-primary-subject only

Time: 5-10 seconds per photo with multiple runners (vs 2 seconds for single runner)Accuracy: 100% for the primary subject; 0% for secondary subjects (completely missed)

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)

Time: Fast per batch, but requires re-shooting groups and heavy editorial overheadAccuracy: 30-50% — many false positives (tagging runners to photos they aren't in) and false negatives

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)

Time: Depends on timing system integration; post-race processingAccuracy: Good for checkpoint photos at fixed locations, useless for midfield and finish line multi-runner frames

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.

How AI Vision Solves It

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.

Manual vs OCR vs AI Vision

MetricManualBasic OCRAI 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 accuracy98-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 capabilityPossible but extremely slowNot 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)

Practical Tips

1beginner

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.

2beginner

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.

3intermediate

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.

4intermediate

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.

5advanced

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.

Tag every runner in every finish line photo — automatically

Free trial: upload your last marathon finish photos (100-1000 images) and see all runners detected and tagged instantly.

Try multi-subject tagging free →

Frequently Asked Questions

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.

← All Guides