Skip to content
NAMEFRAMECommercial PreviewApply for Pilot
Object detection

Detection data, priced by the scene rather than by the box.

Object detection is the task synthetic data is most obviously good at, because the annotation it needs is the one that scales worst by hand. A dense frame is an hour of somebody’s afternoon; the reference capture on this site carries 4,378 boxes and cost nothing per box.

Ground truth
class + axis-aligned box
Formats
YOLO, COCO
Boxes in the sample
1,813
Classes
6
An airbase frame with derived detection boxes over vehicles, containers, crates, barrels and people
Derived 2D bounding boxesMap_Airbase_Demo, frame 000004Unreal Engine 5.8, 1920×1080

The schema

Two formats from one capture, and they carry the same information in the two conventions the ecosystem actually uses.

# YOLO: labels/train/<frame>.txt — class id, centre x, centre y, w, h (normalised)
5 0.63125000 0.82546296 0.06041667 0.08055556

# COCO: annotations/instances.json — bbox is [x, y, width, height] in pixels
{ "image_id": 4, "category_id": 2, "bbox": [1697, 564, 223, 200],
  "area": 26339, "iscrowd": 0 }

What makes these boxes different

  • Occlusion is handled, not estimated. The box comes from the object’s visible pixels in the identity buffer, so a crate two-thirds behind a container gets the box for the third you can see.
  • Truncation is labelled. 168 instances in the reference capture touch a frame edge, kept and flagged rather than dropped, because a detector has to handle them.
  • Degenerate boxes never reach the file. Under 8 pixels a side, or an aspect ratio past 6:1, and the instance is rejected at derivation.

Read the distributions before you train

A detection dataset is defined more by its size and distance distribution than by its frame count, and both are measurable in advance.

Size

median 23.26 px across

2,263 of the instances are small by COCO’s definition, 1,802 medium, 313 large. An aerial capture is a small-object problem, and training at 640 pixels throws most of it away.

Distance

median 78.87 m

Instances sit between 33.19 and 187.81 metres from the camera, concentrated between 40 and 120. If your deployment is at fifteen metres, this capture is not the one you want.

Balance

18 barrels per tank

Class counts follow the scene, not a target. Decide whether to weight the loss or spawn differently before the first epoch, not after.

# train straight from the pack
yolo detect train data=data.yaml model=yolo11s.pt epochs=100 imgsz=1024

# imgsz matters more than usual here: at 640 the median 23.26px object
# is roughly 8px, which is below most detectors' useful floor

Limitations, specific to detection

Three things that will bite, in the order they usually do.

The domain gap is task-specific

Detection is relatively forgiving of appearance differences compared to fine-grained classification, but “relatively” is not “immune”. Evaluate against real data.

One scene is one prior

A model trained on this capture learns airbase tarmac in daylight. Variety needs more scenes and more conditions, which is cheap to run and real work to author.

Perfect labels are unusual labels

Real detection sets have annotator noise, and models trained on them learn to tolerate it. A perfectly labelled synthetic set is a different distribution in a way that occasionally matters.