Basketball · Computer vision annotation

Basketball video annotation that keeps every ID.

Player tracking that survives screens and camera cuts, court keypoints, pixel masks, pose and box-score events. Labelled by people who know the game, checked three times.

See what we label

NBA · NCAA · FIBA · HIGH SCHOOL · 3X3

ID 1ID 2ID 3ID 4ID 5ID 6ID 7ID 8ID 9ID 10
TRACKING
ID LEDGERCUTS SURVIVED · 0
ID 1
ID 2
ID 3
ID 4
ID 5
ID 6
ID 7
ID 8
ID 9
ID 10

Illustrative simulation. Real labels follow your ID rules.

5

Label types, one supplier

3 layers

QA on every delivery

Native res

Masks at source resolution

Free

Pilot: one clip, up to about 10 minutes

What we label

Five kinds of label. Pick the layer.

Choose a label type to see what it looks like on a court and what lands in your delivery.

Every player boxed, every ID kept.

A box and a persistent ID for every player, held through screens, pile-ups and camera cuts, with team and jersey attached when they can be read.

  • Bounding box per player per frame
  • Persistent track ID across cuts and replays
  • Team, role and jersey attributes
  • Unknown state instead of guessed links

FORMATS · MOT, COCO video, JSON

TRACKING & RE-ID · EXAMPLEHOMEAWAY
ID 1ID 2ID 3ID 6ID 9

Illustrative example drawn on a regulation NBA court.

The hard part

The hard part of basketball is identity.

Ten players in similar kit, screens on every possession, and a director cutting between cameras. A box can be perfect in every frame while the ID on it is wrong. So identity gets its own written rules before anyone labels.

  • Scope

    How long an ID must hold: a shot, a clip, the full game.

  • Re-entry

    Whether a player who leaves and returns keeps the same ID.

  • Evidence

    Jersey, motion, position, appearance: ranked, written down.

  • Unknown

    A real option, so nobody guesses after a pile-up.

  • Read the full ID rules we publish

Sample output

Files your pipeline reads.

Boxes and IDs per frame, named court keypoints, class-index masks and timestamped events, in JSON, COCO, MOT or your own structure.

{
"frame": 1200,
"shot_id": 3,
"players": [
{ "track_id": 1, "team": "home", "jersey": "23",
"bbox_xywh": [812, 402, 64, 168], "visible": true },
{ "track_id": 6, "team": "away", "jersey": null,
"jersey_note": "not readable",
"bbox_xywh": [874, 398, 61, 171], "visible": true }
],
"court_keypoints": [
{ "name": "free_throw_center", "xy": [1182, 402], "visible": true }
]
}

Example structure with synthetic labels, not a real game. Your delivery follows your spec.

Example JSON

How it works

Video in. Labels out.

  1. 01

    Send footage

    Broadcast feeds, fixed gym cameras or practice video. A link or a bucket is enough.

  2. 02

    Agree the spec

    Classes, keypoints, ID rules and court template written down and versioned before anyone labels.

  3. 03

    Label and check

    An annotator labels, a basketball specialist reviews, a senior auditor signs off.

  4. 04

    Receive data

    Files in your format with a QA report, ready for your training pipeline.

Footage we handle

Any court. Any camera.

Each kind of basketball video fails in its own way. Here is what we do about it.

Broadcast

Cuts, replays and close-ups break tracks, so IDs are re-linked after each cut and court keypoints re-solved per shot.

Fixed gym camera

Wide lenses and small players make numbers unreadable, so identity leans on team, position and movement.

3x3 and outdoor

Non-standard courts and changing light, so the court template and classes are fixed to your venue first.

Practice and drills

Repetitive movement suits pose and shot-form work, so keypoint rules are set for the motions you study.

Quality you can check

Errors caught before you train.

Most costly basketball label errors are swapped IDs after a screen and landmarks placed on the wrong line in a tight shot. Each layer looks for a different kind of mistake, and every delivery ships with a QA report.

How to check any vendor's labels
LAYER 1

Primary annotator

Labels every frame to the agreed spec: boxes, IDs, points, masks or events.

LAYER 2

Specialist reviewer

Checks basketball logic: the right player after a screen, the right landmark on a tight shot.

LAYER 3

Senior auditor

Audits a sample against the spec, including every camera cut, and signs off the QA report.

Pricing

Quoted per project. Tested for free.

PER PROJECT

Priced by task and volume

Boxes, keypoints, masks and events take different effort, so we quote after a short call and a look at your footage and spec.

How our pricing works

FREE PILOT

Your hardest possession

One clip, up to about 10 minutes, labelled with full QA and returned in 3 business days. No contract, no payment.

Questions

What CV teams ask us.

Can you keep player IDs across camera cuts?

Yes. We agree the ID rules first: how long an ID must hold, what evidence links two appearances, and when a player is marked unknown instead of guessed. Our player re-ID labeling guide sets out the rules we work to.

Read the re-ID labeling guide
Do you deliver segmentation masks at native resolution?

Yes. Masks are single-channel class-index PNGs at the source resolution, using a class map you approve before work starts.

Can you use our own classes, keypoints or court template?

Yes. We work to your spec, ours, or a mix, and version it so a change mid-project never silently alters earlier frames.

Which courts do you handle?

NBA, NCAA, FIBA, high-school and 3x3 courts. Their dimensions differ, so the court template is fixed per project before keypoints are labelled.

How is basketball annotation priced?

Per project, by task, footage volume and label density. We quote after a short call and a look at your footage. New clients start with a free pilot.

Can you check labels another vendor produced?

Yes. We can review an existing dataset against your spec and report the errors we find before you train on it.

About our quality review

Free pilot

Send us the clip your model gets wrong.

The screens, the scrums under the rim, the cut to a close-up. We label it and send the QA report.

Or write to us