YOLO Vision 2026:

Обзор наборов данных для обнаружения объектов#

Для обучения надежной и точной модели обнаружения объектов требуется исчерпывающий набор данных. В этом руководстве представлены различные форматы наборов данных, совместимые с моделью Ultralytics YOLO, а также приведены сведения об их структуре, использовании и способах конвертации между различными форматами.

Поддерживаемые форматы наборов данных#

Формат Ultralytics YOLO#

Формат Ultralytics YOLO — это формат конфигурации набора данных, который позволяет задавать корневой каталог набора данных, относительные пути к каталогам изображений обучения/валидации/тестирования или файлам *.txt, содержащим пути к изображениям, а также словарь имен классов. Вот пример:

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

# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8 ← downloads here (1 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: coco8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 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/coco8.zip

Каждый из файлов train, val и test принимает каталог, список каталогов или файл *.txt, в котором указан один путь к изображению на строку (пути, начинающиеся с ./, разрешаются относительно файла *.txt). Файл *.txt полезен для обучения на подмножестве каталога, пропуска изображений без разметки или объединения изображений из нескольких источников в одну выборку.

Пути к изображениям в виде `*.txt` файла
path: datasets/coco8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

Метки для этого формата должны быть экспортированы в формат YOLO из расчета один файл *.txt на изображение. Если в изображении нет объектов, файл *.txt не требуется. Файл *.txt должен быть отформатирован из расчета одна строка на объект в формате class x_center y_center width height. Координаты ограничивающей рамки должны быть в формате нормализованных xywh (от 0 до 1). Если твои рамки заданы в пикселях, тебе следует разделить x_center и width на ширину изображения, а y_center и height — на высоту изображения. Номера классов должны индексироваться с нуля (начинаться с 0).

YOLO labeled image with bounding boxes on persons and tie

Файл разметки, соответствующий изображению выше, содержит 2 человека (класс 0) и галстук (класс 27):

YOLO format label file with normalized coordinates

При использовании формата Ultralytics YOLO организуй свои изображения и метки для обучения и валидации так, как показано в примере набора данных COCO8 ниже.

YOLO dataset directory structure with train and val folders

Пример использования#

Вот как ты можешь использовать наборы данных в формате YOLO для обучения своей модели:

Пример
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Формат Ultralytics NDJSON#

Формат NDJSON (Newline Delimited JSON) предоставляет альтернативный способ определения наборов данных для моделей Ultralytics YOLO. Этот формат хранит метаданные набора данных и аннотации в одном файле, где каждая строка содержит отдельный объект JSON.

Файл набора данных NDJSON содержит:

  1. Запись набора данных (первая строка): Содержит метаданные набора данных, включая тип задачи, имена классов и общую информацию
  2. Записи изображений (последующие строки): Содержат данные об отдельных изображениях, включая размеры, аннотации и пути к файлам
Пример NDJSON
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://app.ultralytics.com/user/datasets/example",
    "class_names": { "0": "person", "1": "bicycle", "2": "car" },
    "bytes": 426342,
    "version": 0,
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2025-01-01T00:00:00Z"
}

Пользовательские метаданные изображения#

Каждая запись изображения может включать объект JSON metadata для контекста приложения, такого как условия съемки, идентификаторы оборудования или статус проверки. Поддерживаются вложенные значения. При импорте на платформу Ultralytics метаданные сохраняются вместе с этим изображением, и их можно просмотреть или отредактировать на панели информации во весь экран.

{
    "type": "image",
    "file": "airbus-wing.jpg",
    "url": "https://example.com/airbus-wing.jpg",
    "split": "train",
    "metadata": {
        "aircraft": { "family": "A350", "section": "wing" },
        "inspectionStatus": "reviewed"
    }
}

Платформа ограничивает ключи метаданных верхнего уровня 128 символами, сериализованный объект метаданных каждого изображения — 500 000 символов, а объединенные эффективные метаданные в одном импорте NDJSON — 500 000 символов.

Пример использования#

Чтобы использовать набор данных NDJSON с YOLO26, просто укажи путь к файлу .ndjson:

Пример
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)

Преимущества формата NDJSON#

  • Один файл: вся информация о наборе данных содержится в одном файле
  • Потоковая передача: можно обрабатывать большие наборы данных построчно, не загружая всё в память
  • Облачная интеграция: поддержка удаленных URL-адресов изображений для облачного обучения
  • Расширяемость: легко добавлять пользовательские поля метаданных
  • Контроль версий: формат одного файла отлично работает с git и системами контроля версий

Поддерживаемые наборы данных#

Ниже приведен список поддерживаемых наборов данных с кратким описанием каждого из них:

  • African-wildlife: набор данных с изображениями дикой природы Африки, включая буйволов, слонов, носорогов и зебр.
  • Argoverse: набор данных, содержащий данные 3D-трекинга и прогнозирования движения из городских условий с богатой разметкой.
  • Brain-tumor: набор данных для обнаружения опухолей головного мозга, включающий изображения МРТ или КТ с подробной информацией о наличии, расположении и характеристиках опухоли.
  • COCO: Common Objects in Context (COCO) — это крупномасштабный набор данных для обнаружения объектов, сегментации и создания описаний, содержащий 80 категорий объектов.
  • COCO8: меньшее подмножество из первых 4 изображений из выборок обучения и валидации COCO, подходящее для быстрых тестов.
  • COCO8-Grayscale: версия COCO8 в градациях серого, созданная путем преобразования RGB в оттенки серого, полезна для оценки одноканальных моделей.
  • COCO8-Multispectral: 10-канальная мультиспектральная версия COCO8, созданная путем интерполяции длин волн RGB, полезна для оценки моделей с учетом спектральных данных.
  • COCO12-Formats: тестовый набор данных из 12 изображений, охватывающих 12 поддерживаемых форматов изображений (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) для проверки конвейеров загрузки изображений.
  • COCO16: подмножество первых 16 изображений из COCO train2017 (8 обучающих + 8 проверочных), подходящее для быстрых тестов.
  • COCO32: подмножество первых 32 изображений из COCO train2017 (16 обучающих + 16 проверочных), подходящее для быстрых тестов.
  • COCO64: подмножество первых 64 изображений из COCO train2017 (32 обучающих + 32 проверочных), подходящее для быстрых тестов.
  • COCO128: меньшее подмножество из первых 128 изображений из COCO train2017, подходящее для тестов.
  • Construction-PPE: набор данных с изображением работников строительных площадок в размеченном защитном снаряжении, таком как каски, жилеты, перчатки, ботинки и очки, включая аннотации об отсутствии средств защиты, такие как no_helmet и no_goggle, для мониторинга соблюдения требований безопасности в реальных условиях.
  • Global Wheat 2020: набор данных, содержащий изображения колосьев пшеницы для соревнований Global Wheat Challenge 2020.
  • HomeObjects-3K: набор данных с предметами домашнего обихода, включая кровати, стулья, телевизоры и многое другое — идеально подходит для приложений автоматизации умного дома, робототехники, дополненной реальности и анализа планировки помещений.
  • KITTI: набор данных с реальными дорожными сценариями с данными стереокамер, LiDAR и GPS/IMU, используемый здесь для задач обнаружения объектов на плоскости (2D), таких как выявление автомобилей, пешеходов и велосипедистов в городских, сельских и пригородных условиях.
  • LVIS: крупномасштабный набор данных для обнаружения объектов, сегментации и создания описаний с 1203 категориями объектов.
  • Medical-pills: набор данных с изображениями медицинских таблеток, размеченный для таких задач, как контроль качества в фармацевтике, сортировка таблеток и проверка соответствия нормативным требованиям.
  • Objects365: высококачественный крупномасштабный набор данных для обнаружения объектов, содержащий 365 категорий объектов и более 600 тыс. размеченных изображений.
  • OpenImagesV7: исчерпывающий набор данных от Google, содержащий 1,7 млн обучающих изображений и 42 тыс. проверочных изображений.
  • Roboflow 100: разнообразный бенчмарк обнаружения объектов, включающий 100 наборов данных из семи доменов изображений для комплексной оценки моделей.
  • Signature: набор данных с изображениями различных документов с размеченными подписями, поддерживающий исследования в области проверки документов и обнаружения мошенничества.
  • SKU-110K: набор данных для плотного обнаружения объектов в розничной торговле, содержащий более 11 тыс. изображений и 1,7 миллиона ограничивающих рамок.
  • TT100K: изучай набор данных дорожных знаков Tsinghua-Tencent 100K (TT100K), содержащий 16 817 изображений с уличных камер по 221 категории знаков для надежного обнаружения и классификации.
  • VisDrone: набор данных, содержащий данные обнаружения и многообъектного трекинга из видеопоследовательностей и изображений, полученных с дронов, с более чем 10 тыс. изображений и видеофрагментов.
  • VOC: набор данных Pascal Visual Object Classes (VOC) для обнаружения и сегментации объектов, содержащий 20 классов объектов и более 11 тыс. изображений.
  • xView: набор данных для обнаружения объектов на аэрофотоснимках с 60 категориями объектов и более чем 1 миллионом размеченных объектов.

Добавление собственного набора данных#

Если у тебя есть собственный набор данных, и ты хочешь использовать его для обучения моделей обнаружения с помощью формата Ultralytics YOLO, убедись, что он соответствует формату, указанному выше в разделе "Формат Ultralytics YOLO". Преобразуй свои аннотации в требуемый формат и укажи пути, количество классов и имена классов в конфигурационном файле YAML.

Перенос или конвертация форматов разметки#

Формат набора данных COCO в формат YOLO#

Ты можешь легко конвертировать метки из популярного формата набора данных COCO в формат YOLO с помощью следующего фрагмента кода:

Пример
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/")

Этот инструмент конвертации можно использовать для конвертации датасета COCO или любого датасета в формате COCO в формат Ultralytics YOLO. Процесс преобразует аннотации COCO на базе JSON в более простой текстовый формат YOLO, делая его совместимым с Ultralytics YOLO models. Полный рабочий процесс, включая маппинг идентификаторов классов, структуру директорий и аннотации сегментации или поз, см. в разделе Convert COCO Annotations to YOLO.

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

Что дальше#

Когда твой набор данных отформатирован, приступай к обучению модели. Не знаешь, с какой предварительно обученной модели начать? Сравни варианты в семействе моделей YOLO26.

FAQ#

  • Формат Ultralytics YOLO — это структурированная конфигурация для определения наборов данных в твоих обучающих проектах. Она включает настройку путей к твоим изображениям для обучения, валидации и тестирования, а также соответствующим разметкам. Например:

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/detect/coco8
    # Example usage: yolo train data=coco8.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8 ← downloads here (1 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: coco8 # dataset root dir
    train: images/train # train images (relative to 'path') 4 images
    val: images/val # val images (relative to 'path') 4 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/coco8.zip

    Метки сохраняются в файлах *.txt по одному файлу на изображение, отформатированных как class x_center y_center width height с нормализованными координатами. Подробное руководство см. в примере набора данных COCO8.

  • Ты можешь конвертировать набор данных COCO в формат YOLO с помощью инструментов конвертации Ultralytics. Вот быстрый способ:

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/")

    Этот код преобразует твои аннотации COCO в формат YOLO, обеспечивая бесшовную интеграцию с моделями Ultralytics YOLO. Дополнительные сведения см. в разделе Перенос или конвертация форматов меток.

  • Ultralytics YOLO поддерживает широкий спектр наборов данных, включая:

    На каждой странице набора данных приведена подробная информация о структуре и использовании, адаптированная для эффективного обучения YOLO26. Изучи полный список в разделе Поддерживаемые наборы данных.

  • Чтобы начать обучение модели YOLO26, убедись, что твой набор данных правильно отформатирован, а пути определены в файле YAML. Используй следующий скрипт, чтобы начать обучение:

    Пример
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")  # Load a pretrained model
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

    Обратись к разделу Использование для получения более подробной информации об использовании различных режимов, включая команды CLI.

  • Ultralytics предоставляет множество примеров и практических руководств по использованию YOLO26 в различных приложениях. Для получения исчерпывающего обзора посети блог Ultralytics, где ты найдешь тематические исследования, подробные руководства и истории сообщества, демонстрирующие обнаружение объектов, сегментацию и многое другое с помощью YOLO26. Конкретные примеры можно найти в разделе Использование в документации.

Комментарии