A tracked video is not a training dataset yet.
Your training code expects image files and label files in a specific layout. Somewhere between the timeline and that layout, frame numbers shift, IDs disappear, or a class index points at the wrong name.
This guide explains exactly what LabelOp Tracker writes when you export, which format to pick for which model, and what to check before you start a training run. Tracker is the free, in-browser video annotation app in the LabelOp family; exports are built in your browser and saved straight to your computer.
Pick the format by what you train
Tracker exports five formats from the Export tab. Each one is a ZIP named after your project and format.
| Format | Train this | Keeps track IDs | Needs JPEG frames |
|---|---|---|---|
| COCO JSON | Detection, instance segmentation, keypoints; tracking research | Yes, track_id per annotation |
Optional |
| YOLO TXT | YOLO object detection | No | Optional |
| YOLO-SEG | YOLO instance segmentation | No | Optional |
| YOLO-POSE | YOLO pose estimation | No | Yes, always included |
| YOLO-CLS | YOLO image classification | No | Yes, always included |
The short rule: if you need object identities across frames, export COCO. YOLO label formats have no field for a track ID, so identities are dropped.
What is inside each ZIP
COCO JSON
annotations.jsoncovering the frame range you choseimages/frame_NNNNNN.jpgfor each exported frame, if you turned on Include JPEG frames
Each annotation has a bounding box, area, category and track_id. Polygons and ellipses add a COCO polygon segmentation. Tracks with a pose skeleton add keypoints in the COCO-17 layout.
Two details catch people:
file_namehas no folder prefix. Images are listed asframe_000042.jpgbut stored inimages/. Point your loader's image root at theimages/folder.- Every frame in the range gets an image entry, including frames with no objects. That is useful for background examples, but it also means the image count can be larger than the number of annotated frames.
The category list keeps the full class list of the project, so category IDs stay stable even if some classes have no objects in the exported range.
YOLO TXT
labels/frame_NNNNNN.txt, one per frame, with lines ofclass cx cy w hnormalized to 0–1classes.txt, where line order is the class indeximages/frame_NNNNNN.jpgif JPEG frames are included
Frames with no objects get an empty label file, which YOLO treats as background.
This export does not write a data.yaml or a train/val split. You add both yourself. If you hit loader errors, the YOLO data.yaml errors guide covers the common ones, and remapping YOLO class IDs helps when you merge with another dataset.
YOLO-SEG
Same layout as YOLO TXT, but each line is a normalized polygon. Polygons come from drawn polygons, ellipses and Segment assist masks (SAM 2.1).
Plain boxes cannot become polygons, so frames where an exported object is only a box are left out entirely rather than written with a missing object. If every frame in the range is box-only, the export stops and tells you to pick YOLO instead. See polygon vs bounding box annotation if you are deciding which shape to draw.
YOLO-POSE
- A box plus 17 COCO joints
(x, y, visibility)per posed track train.txtandval.txtimage listsdata.yamlwithkpt_shape: [17, 3], a left/rightflip_idxand class names- Decoded JPEG frames
Tracks without joints are skipped. You need at least two posed frames, and every class in validation must also appear in training. Pose is placed by hand in Tracker; no pose-estimation model ships yet.
YOLO-CLS
Whole-frame labels, not boxes. The ZIP contains train/<class>/ and val/<class>/ folders of JPEG frames. Each class needs at least two labeled frames, and each class is split separately so both sides see every class.
How train/val splits work for one video
YOLO-POSE and YOLO-CLS exports split for you. The split is chronological: the last 20% of labeled frames go to validation, the earlier frames to training.
Neighboring video frames are nearly identical. If frame 400 is in training and frame 401 is in validation, the validation score mostly measures memory. Tracker shows a warning above these formats and offers Gap before validation (frames): that many frames just before the validation block are dropped from training, so the two sides are not direct neighbors.
Use the gap, but be clear about what it does. A split from one video is still not an independent evaluation set. Validation footage from separate videos is the honest test. The dataset split planning guide covers this in more depth.
For COCO and YOLO detection exports, split by source video or by long time blocks, not by random frames.
Export settings that matter
Frame range
Choose Annotated (first to last annotated frame), Full video, or type a start and end frame. Export only the part you reviewed.
Include JPEG frames
Frames are decoded from the video and saved as JPEG at 80% quality. Leave it off if you already extract frames with your own pipeline and only need labels. It is always on for YOLO-POSE and YOLO-CLS.
Save directly to disk
When JPEG frames are included and your browser supports it, Save directly to disk writes the ZIP to a file as it is built, which keeps large exports out of browser memory.
The checklist
Above the form, Before you export lists open review items, object and class counts, and hidden objects or classes. Hidden items are still exported; hiding only affects the view.
Frame numbers: watch the off-by-one
The app shows frame numbers starting at 1. Exported file names and COCO image IDs use the zero-based frame index, so frame 1 in the timeline is frame_000000.jpg.
This matters when you compare exports with notes, bug reports or ground truth made by hand. Decide which convention your team uses and write it down, as the video annotation workflow guide recommends.
Checks before you train
Run these on every export, even small ones:
- Open the ZIP. Confirm the folders match what your loader expects.
- Count images and label files. For YOLO, every image should have a label file, even if it is empty.
- Read
classes.txtor the COCO categories. Check that index 0 is the class you think it is. - Draw a few labels back onto their images. Pick frames with fast motion and occlusion, not only easy ones.
- For tracking work, check
track_idcontinuity on one object you know crosses an occlusion. - Train for one epoch before a long run, to catch path and format errors early.
The COCO and YOLO export formats guide covers the general format differences, and converting COCO JSON to YOLO helps if you export COCO for identities and still need YOLO labels.
Fix problems before export, not after
Most export problems are annotation problems:
- Unstable IDs: merge or split tracks and work through the ID change items in the QA tab. See auto-annotating video with object tracking for the correction loop.
- Classes named
class_N: name your classes in the Setup tab. Text-prompt (OWLv2) runs name their classes after your prompts automatically. - Duplicate boxes: clear the Duplicate items in the QA tab, or your model learns to predict two boxes per object.
Bringing annotations back in
The Import tab reads COCO JSON. If annotations carry track_id, identities are kept. If not, Tracker links boxes into tracks by class and overlap. Unsupported mask formats (RLE or multi-part masks) are reported before anything is imported.
The Media tab lets you download the original video kept in your browser.
For moving a whole project between browsers, use a project backup (.labelop.zip) from the workspace menu instead of a dataset export. A backup keeps the editable project and can include the source video.
From export to a team dataset
A Tracker export is one person's reviewed clip. When several clips become a shared dataset, LabelOp takes over: it imports annotation files, adds team review, keeps dataset versions you can compare, and exports to more formats, including Pascal VOC and CVAT.
To produce your first export, open LabelOp Tracker, run Auto-annotate on a short clip, clear the QA queue, and export COCO with JPEG frames. If you are new to the app, the Tracker walkthrough covers each step from opening a video.
FAQ
Which export format keeps object track IDs?
COCO JSON. Each annotation includes a track_id. YOLO formats have no ID field, so identities are not exported there.
Does the YOLO export include a data.yaml?
YOLO-POSE does, with train and val lists. YOLO TXT and YOLO-SEG write labels and classes.txt; you add data.yaml and your own split.
Why is my exported frame number one lower than in the app?
Exported file names and COCO image IDs use the zero-based frame index, while the app shows frames starting at 1.
Are empty frames exported?
Yes, for COCO and YOLO TXT. COCO lists them as images without annotations, and YOLO writes an empty label file, which trains as background.
Is my video uploaded during export?
No. Frames are decoded and packed into the ZIP in your browser, and the file is saved to your computer.