← Ultralytics YOLOCONTENT HISTORY

Update to Ultralytics YOLO

Snapshot Oct 24, 2026 · 13:35 UTC · version 0.5.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Ultralytics YOLO and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Use when uploading, annotating, building, converting, analyzing, or debugging datasets in Ultralytics Platform or local YOLO — Platform dataset management and Smart Annotation, data.yaml, YOLO label .txt formats, COCO/DOTA/mask conversion, auto-labeling, splits, validation, and errors like \"no labels found\" or mAP near 0. Covers detect, segment, semantic, depth, classify, pose, and OBB data.\n",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 284
    },
    {
      "relative_path": "label-formats.md",
      "size_in_bytes": 3983
    }
  ],
  "name": "yolo-datasets",
  "skill_md_contents": "---\nname: yolo-datasets\ndescription: >\n  Use when uploading, annotating, building, converting, analyzing, or debugging datasets in Ultralytics Platform or local YOLO — Platform dataset management and Smart Annotation, data.yaml, YOLO label .txt formats, COCO/DOTA/mask conversion, auto-labeling, splits, validation, and errors like \"no labels found\" or mAP near 0. Covers detect, segment, semantic, depth, classify, pose, and OBB data.\n---\n\n# Ultralytics YOLO datasets\n\nThe #1 cause of silent training failure is a malformed dataset — validate before training.\n\n## Fastest route: prepare data in Platform\n\n1. Open [Platform](https://platform.ultralytics.com), create a dataset under **Annotate**, and choose its task.\n2. Upload images, videos, ZIP/TAR archives, or NDJSON. Existing YOLO labels and COCO JSON can be imported; cloud-storage integrations can keep supported data in place.\n3. Open an image in the fullscreen editor. Use manual tools for detect, segment, semantic, classify, pose, or OBB. Switch to **Smart** mode to label with SAM (detect, segment, semantic, OBB) or a compatible official/custom YOLO model (those tasks plus pose).\n4. Review the **Classes**, **Charts**, and **Errors** tabs, fix the split, and create a numbered dataset version before important runs.\n\nPlatform datasets cover all seven YOLO tasks. Depth targets are imported rather than drawn in the editor. See [Platform Data](https://docs.ultralytics.com/platform/data) and the [Annotation Editor](https://docs.ultralytics.com/platform/data/annotation).\n\nTo train on the same dataset from local code, create an API key under **Settings > API Keys**, set `ULTRALYTICS_API_KEY`, and pass the dataset's `ul://` URI as `data`:\n\n```bash\nyolo train model=yolo26n.pt data=ul://username/datasets/dataset-slug epochs=100\n```\n\nExport NDJSON when you need a portable snapshot instead of live Platform access.\n\n## The `images` → `labels` mirror rule\n\nUltralytics finds a label file by replacing the **last** `/images/` path segment with `/labels/` and the image extension with `.txt`:\n\n```\ndataset/\n├── data.yaml\n├── images/train/  img001.jpg ...     ├── images/val/  ...\n└── labels/train/  img001.txt ...     └── labels/val/  ...\n```\n\n- Labels next to images in an `images/` dir, or in a dir not named `labels`, are **not found** → training stops with `No labels found`; if only some are missing, those images train as backgrounds.\n- Filenames must match stems exactly (case-sensitive on Linux).\n- An image with no/empty label file trains as a **background image**. A few percent of true backgrounds reduce false positives; accidentally missing labels destroy recall.\n\n## data.yaml anatomy\n\n```yaml\npath: /abs/dataset/root # prefer absolute; a relative path missing from the CWD resolves under datasets_dir\ntrain: images/train # dir, .txt file of image paths, or list of dirs\nval: images/val\ntest: images/test # optional\nnames: # 0-based, contiguous indices\n  0: person\n  1: helmet\n# pose only:\nkpt_shape: [17, 3] # [num_keypoints, dims]; dims 2 (x,y) or 3 (x,y,visibility)\nflip_idx: [0, 2, 1, ...] # L/R keypoint swap map — without it, flip augs are auto-disabled\n# semantic only (optional — polygon .txt labels in labels/ also work):\nmasks_dir: masks # per-pixel PNG mask images\n# depth only (replace names above; pair depth/{train,val}/*.png or float .npy maps):\n# nc: 1\n# names: {0: depth}\n# depth_scale: 1000 # PNG units per meter; default millimeters\n```\n\n- Classification datasets use **no yaml**: folder structure is the label (`dataset/train/<class>/*.jpg`, `dataset/val/<class>/*.jpg`); train with `data=path/to/dataset`.\n- Per-task label line formats and their gotchas: read `label-formats.md` (this folder) whenever writing or debugging label files.\n\n## Converting from other formats — use built-ins first\n\n```python\nfrom ultralytics.data.converter import convert_coco\n\nconvert_coco(labels_dir=\"coco/annotations/\", use_segments=True, cls91to80=False)  # → segment\nconvert_coco(labels_dir=\"coco/annotations/\", use_keypoints=True, cls91to80=False)  # → pose\n```\n\nOmit `use_segments` for detect labels. `cls91to80=False` keeps custom category IDs (as `category_id - 1`); leave the default `True` only for the official COCO 91-class IDs.\n\nAlso in `ultralytics.data.converter`: `convert_dota_to_yolo_obb(dota_root_path)` (DOTA → OBB), `convert_segment_masks_to_yolo_seg(masks_dir, output_dir, classes)` (index PNGs → polygons), `yolo_bbox2segment(im_dir)` (upgrade detect labels to segment via SAM), `convert_to_multispectral(path, n_channels)`.\n\nAuto-label a raw image folder (detector proposes boxes, SAM refines masks):\n\n```python\nfrom ultralytics.data.annotator import auto_annotate\n\nauto_annotate(\n    data=\"dataset/images/train\", det_model=\"yolo26x.pt\", sam_model=\"sam_b.pt\", output_dir=\"dataset/labels/train\"\n)\n```\n\nFor VOC XML/CSV there is no converter — write a small script emitting the per-task line format (normalize coords, center-based boxes).\n\n## Splitting\n\n```python\nfrom ultralytics.data.split import autosplit\n\nautosplit(path=\"dataset/images\", weights=(0.9, 0.1, 0.0))  # writes autosplit_*.txt lists\n```\n\nPoint `train:`/`val:` at the generated `.txt` files. Keep frames from the same video/scene in ONE split — per-image random splits of video frames leak near-duplicates into val and inflate mAP. For classify: `split_classify_dataset(source_dir, 0.8)`.\n\n## Validate before training (use the task-relevant steps in order)\n\n1. **YAML/path check (non-classification)** — validates required fields, resolves configured paths, checks the requested split (default `val`), and may auto-download a known dataset. It does not count or parse individual images and targets:\n\n   ```python\n   from ultralytics.data.utils import check_det_dataset\n\n   check_det_dataset(\"data.yaml\")  # detect/segment/pose/obb/semantic/depth\n   ```\n\n2. **Detection-only visual spot check** — this helper accepts five-column `class cx cy w h` rows; wrong normalization or swapped axes become visible:\n\n   ```python\n   from ultralytics.data.utils import visualize_image_annotations\n\n   visualize_image_annotations(\n       \"images/train/img001.jpg\",\n       \"labels/train/img001.txt\",\n       label_map={0: \"person\", 1: \"helmet\"},\n   )\n   ```\n\n   Do not use this helper for segment, pose, OBB, semantic, depth, or classify targets; use their task-aware trainer plots instead.\n\n3. **Task-loader smoke test** — run one epoch with matching task/model/data; this builds the real dataset and produces task-aware training plots (detection example):\n\n   ```bash\n   yolo detect train data=data.yaml model=yolo26n.pt epochs=1 fraction=0.1\n   # inspect runs/detect/train/train_batch0.jpg — boxes must sit on objects\n   ```\n\n4. **Distribution sanity** — check task-appropriate class/target balance and split leakage. For box tasks, also inspect very small boxes at train `imgsz` and the background-image share.\n\nKnown-good tiny datasets for pipeline smoke tests (auto-download): `coco8.yaml`, `coco8-seg.yaml`, `coco8-pose.yaml`, `dota8.yaml`, `cityscapes8.yaml`, `depth8.yaml`, `imagenet10`.\n\n## Related pages\n\n- `label-formats.md` — exact per-task label line formats + symptom→cause table. Read when writing labels, converting formats, or any label-related error.\n\nIf the installed version rejects an argument or format here, trust its error message and `yolo checks` over this file.\n"
}

SHA-256 of public snapshot: b7d2ca744b2047fd8bf05671cdd7d5956be55f84eb020fba08847af457a98f75