For race photographers covering Grand Tours (Tour de France, Giro, Vuelta), missing riders means missing the story of who was in the break and who got dropped. For event photographers covering sportives and gran fondos, riders who can't find their photo don't buy. A peloton frame tagged to only one or two riders is a missed opportunity for everyone else in the shot.
Understanding the problem
Multi-rider bib detection in cycling is the ability to identify and read bib numbers on multiple cyclists in the same frame, with the added complexity that bibs sit on the back of the jersey (often partly hidden behind a saddle bag or frame pack) and riders are tightly packed in 3D space with several overlap layers.
Cycling media relies on identifying peloton composition from photos — which teams and riders were in the break, who was dropped, which teams controlled the pace. All of it requires reading multiple bibs from single frames. For event photographers, the revenue model depends on each rider finding themselves somewhere in the crowd.
In this sport specifically
Cycling bib placement is unusual among race sports: bibs are on the back of the jersey, not the front, so they're invisible unless you're shooting from behind; peloton density packs many riders into a narrow strip of road, creating multiple overlap layers; riders lean in and out, bibs fold against saddle bags, and frame numbers and helmet markings compete for the same visual space; long-lens shooting from motorcycles compresses perspective and makes bib sizes inconsistent across the frame.
Where it shows up
Wide peloton shot with the full field visible, shot from a motorcycle perpendicular to the road · very common
Back bibs are visible on most riders, but they sit at varying distances (front of the bunch close, back of the bunch far) and angles (some facing the camera, some at 45 degrees, some showing only their side). Reading bibs across that range by hand means multiple manual passes.
Tight pace-line photo with riders in close formation, bodies nearly touching · very common
Even when bibs are visible, they overlap and blend into the mass of road gear. Separating individual bibs by eye is nearly impossible, and basic OCR can't split overlapping text. The detector has to reconstruct each bib from partial pixels.
Breakaway shot with a few riders at distance, shot from the front at an angle, bibs partly hidden by saddle bags and bottles · common
Back bibs are present but partially obscured by hydration packs and frame bags. Sometimes only part of the number is visible. Manual reading is slow and basic OCR fails on the partial text.
Finish-line crowd with spectators in the frame and riders bunched together · occasional
Background clutter — spectators, barriers, team staff — creates visual noise that occludes parts of back bibs. The bibs are still there, but the scene isn't clean, which makes detection harder.
Traditional approaches, and why they fall short
Manual identification from field notes (ask team staff or recognize known riders)
Several minutes per peloton photo to cross-reference sources and timing data · Reliable for well-known professional riders; much weaker for amateur and sportive cyclists who can't be recognized on sight
Doesn't scale. Grand Tour photographers shoot thousands of images per stage, and identifying full peloton composition by hand is impractical. It only works at all for elite riders whose appearances and team colors are known.
Single-rider focus tagging (tag the closest or clearest bib, skip the rest)
Fast per photo, but only captures one rider · Good on the one primary rider; everyone else in the frame is simply left untagged
Reduces a peloton of many riders to a single tag. Every secondary rider is lost, which for sportive photographers means most of the potential sales in the shot go unrealized.
Timing-system cross-reference (GPS or chip timing matched to approximate position and time)
Requires live tracking and post-processing integration · Workable for photos taken at timed checkpoint lines; weak for arbitrary en-route peloton shots
Only works if you have real-time GPS or chip timing. Most amateur sportives don't have per-rider tracking, and professional teams' positioning data isn't publicly available.
How RaceTagger handles it
RaceTagger sends each frame to a cloud AI vision model (this is a cloud step and needs an internet connection — it isn't offline processing). The model locates the riders in the frame and reads the visible bib numbers, including back bibs that are partly compressed by angle or distance. Detected numbers are then matched against the start-list CSV you upload, so a read becomes a named rider rather than just a number. Before that cloud step, a local scene check can skip frames that clearly contain no riders, so credits aren't spent on empty shots.
Key advantage
Every visible bib in a frame is a candidate, not just the closest one. A dense peloton frame can be tagged to many identified riders in a single pass instead of one — which serves both editorial use (who was in the break) and commercial use (riders finding themselves in the photo).
- Good conditions
- Clear, well-lit back bibs at a readable angle and moderate distance read reliably
- Challenging
- Spread-out fields, extreme foreshortening, and bibs partly covered by saddle bags are harder, and more reads come back with lower confidence
- Worst case
- Heavy overlap, large distance variation within one frame, or severe angle distortion produce more low-confidence reads — which are flagged for review rather than guessed
Point RaceTagger at your stage folder. It reads both JPEG and RAW files (via the embedded preview), detects the visible bibs in each frame, and matches them to your uploaded start-list. Results are written into the photos as EXIF/XMP/IPTC metadata, so the tags travel into Lightroom, Photo Mechanic or Capture One. Low-confidence bibs are flagged for a quick visual check instead of being silently accepted.
Manual vs OCR vs AI vision
| Metric | Manual | Basic OCR | RaceTagger |
|---|---|---|---|
| Processing a full stage of peloton photos | Hours of cross-referencing timing data, multiple passes and team info | Faster, but typically only one or two bibs per photo | Batch run, then a focused review of only the flagged low-confidence reads |
| Back bib detection at typical shooting distance | Reliable for known professionals; weak for amateurs | Struggles with angled and partial back bibs | Reads clear back bibs reliably; flags hard ones for review |
| Multi-rider per-photo coverage (all visible bibs) | Identifying every rider in a dense frame by hand is impractical | One or two riders at most | Treats every visible bib in the frame as a candidate |
| Distance variation within a single frame (close vs far riders) | Close bibs readable; distant bibs guessed or skipped | Accuracy drops sharply across mixed distances | Handles mixed distances better; very distant or tiny bibs are flagged for review |
| Cost model | Your time (labor for cross-referencing) | Compute cost only | Credits — 1 credit per photo analyzed |
Practical tips
- 1
Shoot from the motorcycle chase position (perpendicular to the road, alongside the peloton) for maximum bib visibility and consistent distance
Back bibs are most readable when roughly square to the camera. A side-follow position gives consistent distances and angles. A rear-follow position foreshortens bibs, and shooting from ahead shows no bibs at all.
- 2
Capture multiple frames as the peloton moves to get different layers and positions of the same riders
A motorcycle pass gives you many perspectives of the same riders. Different frames reveal different bibs — a rider hidden in one frame is clear in the next — so you don't need every bib readable in every single image.
- 3
For tight breakaway groups, position perpendicular to the road at mid-distance to maximize legibility across the group
Small breakaways are easiest to tag from ground-level positions a short distance off the road, square to the direction of travel. That angle keeps bib visibility consistent across all riders without extreme foreshortening.
- 4
Process stage photos by group type — breakaway, lead group, main field — and review the flagged reads for each separately
Small, clean groups tend to produce confident reads and little review. Dense main-field frames produce more low-confidence flags. Allocating your review time by group type, rather than scrubbing every photo, keeps the check fast.
- 5
Use frame numbers and helmet markings as secondary verification for ambiguous back bibs
A back bib is just one ID signal. Pro riders also carry frame number stickers and helmet branding. When a back bib is ambiguous, those secondary markings can confirm the read during your review pass.
Tag every rider in every peloton photo — automatically
Try it free: point RaceTagger at a folder of your peloton photos from a cyclocross, gran fondo or pro stage, upload your start-list, and see the visible riders detected and matched.
Try it free →Questions photographers ask
Does back bib detection work when riders are at an angle, not square to the camera?
Yes, though it gets harder as the angle increases. Bibs square to the camera read most reliably; at steep angles the number is compressed and the read is more likely to come back low-confidence and be flagged for review. The best results come from a perpendicular shooting position.
If a saddle bag completely covers the bib, can the AI still detect it?
Partial coverage is usually fine; complete coverage isn't — no system can read a number that isn't visible in the pixels. When a large share of the bib is obscured, the read is flagged as low confidence rather than guessed. Riders with big frame packs that fully hide the bib won't be identifiable from that frame, so a different frame is your best bet.
Does the system tell frame numbers apart from back bibs?
RaceTagger treats the back bib as the primary ID and matches detected numbers against the start-list you upload. If you include both bib-to-name and frame-number-to-name mappings in that list, it can use whichever ID is clearest in a given photo. The match always traces back to your roster, not a guess.
For time trials where riders are spaced far apart, is multi-detection still useful?
Time trials are an easier case — usually a single rider per frame, with no peloton overlap — so even single-subject detection works well. The real value of multi-rider detection is mass-start and peloton events, where many bibs share one frame.
Keep reading