Ultralytics YOLO27:

Датасет COCO128#

Введение#

Ultralytics COCO128 — небольшой, но универсальный датасет обнаружения объектов, состоящий из первых 128 изображений набора COCO train 2017. Он отлично подходит для тестирования и отладки моделей обнаружения объектов, а также для экспериментов с новыми подходами к обнаружению. Благодаря 128 изображениям датасет достаточно мал, чтобы с ним было легко работать, и при этом достаточно разнообразен, чтобы проверять обучающие конвейеры на ошибки и проводить первичную проверку перед обучением на более крупных датасетах.



Смотри: Обзор датасета Ultralytics COCO

Этот датасет предназначен для использования с платформой Ultralytics и YOLO26.

Структура набора данных#

COCO128 содержит первые 128 изображений из набора COCO train 2017, размеченных с использованием 80 названий классов COCO (71 из них встречается на этих изображениях) в формате разметки YOLO. Одни и те же 128 изображений используются и для обучения, и для валидации, что делает датасет компактным и удобным для быстрой первичной проверки:

coco128/
├── images/
│   └── train2017/   # 128 images (used for both train and val)
└── labels/
    └── train2017/

Файл YAML набора данных#

Для задания конфигурации датасета используется YAML-файл. Он содержит сведения о путях к данным, классах и другие необходимые данные. Для датасета COCO128 файл coco128.yaml хранится по адресу https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco128.yaml.

ultralytics/cfg/datasets/coco128.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO128 dataset https://www.kaggle.com/datasets/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco128
# Example usage: yolo train data=coco128.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco128 ← downloads here (7 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco128.zip

Использование#

Датасет COCO128 (7 МБ) загружается автоматически при первом запуске обучения. Чтобы обучить модель YOLO26n на COCO128 в течение 100 эпох с размером изображения 640, используй следующие фрагменты кода. Полный список доступных аргументов см. на странице обучения модели.

Пример обучения
from ultralytics import YOLO

# Загрузить модель
model = YOLO("yolo26n.pt")  # загрузить предварительно обученную модель (рекомендуется для обучения)

# Обучить модель
results = model.train(data="coco128.yaml", epochs=100, imgsz=640)

Примеры изображений и аннотаций#

Вот несколько примеров изображений из датасета COCO128 с соответствующими аннотациями:

COCO128 object detection dataset mosaic training batch
  • Мозаичное изображение: на изображении показан обучающий батч, составленный из мозаично объединённых изображений датасета. Мозаичное объединение — это метод, применяемый во время обучения: несколько изображений объединяются в одно, чтобы увеличить разнообразие объектов и сцен в каждом обучающем батче. Это помогает модели лучше обобщать данные для объектов разных размеров, с разными соотношениями сторон и в разных контекстах.

Этот пример демонстрирует разнообразие и сложность изображений в датасете COCO128, а также преимущества использования мозаичного объединения изображений в процессе обучения.

Цитирование и благодарности#

Если ты используешь датасет COCO в исследовательской или разработческой работе, укажи в ссылках следующую статью:

Цитата
@misc{lin2015microsoft,
      title={Microsoft COCO: Common Objects in Context},
      author={Tsung-Yi Lin and Michael Maire and Serge Belongie and Lubomir Bourdev and Ross Girshick and James Hays and Pietro Perona and Deva Ramanan and C. Lawrence Zitnick and Piotr Dollár},
      year={2015},
      eprint={1405.0312},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Мы благодарим консорциум COCO за создание и поддержку этого ценного ресурса для сообщества компьютерного зрения. Подробнее о датасете COCO и его создателях можно узнать на сайте датасета COCO.

Часто задаваемые вопросы#

  • Датасет Ultralytics COCO128 — это компактная подвыборка из первых 128 изображений датасета COCO train 2017. В основном он используется для тестирования и отладки моделей обнаружения объектов, экспериментов с новыми подходами к обнаружению и проверки обучающих конвейеров перед переходом к более крупным датасетам. С ним удобно быстро перебирать варианты, а разнообразия данных достаточно, чтобы получить содержательный тестовый пример.

  • Для обучения модели YOLO26 на датасете COCO128 можно использовать Python или команды CLI. Вот как это сделать:

    Пример обучения
    from ultralytics import YOLO
    
    # Загрузи предварительно обученную модель
    model = YOLO("yolo26n.pt")
    
    # Обучить модель
    results = model.train(data="coco128.yaml", epochs=100, imgsz=640)

    Дополнительные параметры и варианты обучения см. в документации по обучению.

  • Как показано на примерах изображений, мозаичное увеличение данных объединяет несколько обучающих изображений в одно составное изображение. Этот метод дает несколько преимуществ при обучении на COCO128:

    • Увеличивает разнообразие объектов и контекстов в каждом обучающем батче
    • Улучшает способность модели обобщать данные при разных размерах объектов и соотношениях сторон
    • Повышает точность обнаружения объектов разных масштабов
    • Позволяет извлечь максимум пользы из небольшого датасета, создавая более разнообразные обучающие примеры

    Этот метод особенно полезен для небольших датасетов, таких как COCO128, поскольку помогает моделям извлекать более устойчивые признаки из ограниченного объема данных.

  • По размеру COCO128 (128 изображений) занимает промежуточное положение между COCO8 (8 изображений) и полным датасетом COCO (более 118 тыс. изображений):

    • COCO8: Всего 8 изображений (4 для обучения, 4 для валидации) — идеально для быстрых тестов и отладки
    • COCO128: 128 изображений — баланс между размером и разнообразием
    • Полный COCO: Более 118 тыс. обучающих изображений — исчерпывающий датасет, но требующий значительных ресурсов

    COCO128 — удачный компромисс: он разнообразнее COCO8, но гораздо удобнее полного датасета COCO для экспериментов и начальной разработки моделей.

  • Хотя COCO128 в первую очередь предназначен для обнаружения объектов, аннотации датасета можно адаптировать для других задач компьютерного зрения:

    • Сегментация экземпляров: используй маски сегментации, предоставленные в аннотациях
    • Обнаружение ключевых точек: для изображений с людьми, размеченными ключевыми точками
    • Перенос обучения: используй датасет как отправную точку для дообучения моделей под собственные задачи

    Для специализированных задач, таких как сегментация, рассмотрите специализированные варианты, например COCO8-seg, которые содержат подходящие аннотации.

Комментарии