Ultralytics YOLO27:

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

Для обучения надежной и точной модели обнаружения объектов требуется полноценный набор данных. В этом руководстве рассматриваются различные форматы наборов данных, совместимые с моделью 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 — на его высоту. Номера классов должны начинаться с нуля.

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 (JSON с разделителями строк) предоставляет альтернативный способ определения наборов данных для моделей Ultralytics YOLO. В этом формате метаданные и аннотации набора данных хранятся в одном файле, где каждая строка содержит отдельный объект JSON.

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

  1. Запись набора данных (первая строка): содержит метаданные набора данных, включая тип задачи, имена классов и общую информацию
  2. Записи изображений (последующие строки): содержат данные отдельных изображений, включая размеры, аннотации и пути к файлам
Пример NDJSON
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://platform.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 Platform метаданные сохраняются вместе с изображением, и их можно просматривать или редактировать на полноэкранной информационной панели.

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

Platform ограничивает длину ключей метаданных верхнего уровня 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 и систем контроля версий

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

Вот список поддерживаемых наборов данных и их краткое описание. Большинство из этих наборов данных также размещено на Ultralytics Platform, где ты можешь просматривать изображения и аннотации, изучать статистику наборов данных и клонировать их для обучения в облаке.

  • African-wildlife: набор данных с изображениями африканских животных, включая буйволов, слонов, носорогов и зебр.
  • Argoverse: набор данных, содержащий информацию для 3D-отслеживания и прогнозирования движения в городской среде с подробной разметкой.
  • Brain-tumor: набор данных для обнаружения опухолей мозга, содержащий изображения МРТ или КТ с информацией о наличии, расположении и характеристиках опухолей.
  • COCO: Common Objects in Context (COCO) — крупномасштабный набор данных для обнаружения объектов, сегментации и создания описаний изображений, содержащий 80 категорий объектов.
  • COCO8: Меньшая подвыборка из первых 8 изображений из обучающего набора COCO train2017 (4 для обучения и 4 для валидации), подходящая для быстрых тестов.
  • COCO8-Grayscale: версия COCO8 в градациях серого, созданная преобразованием RGB в градации серого и подходящая для оценки одноканальных моделей.
  • COCO8-Multispectral: мультиспектральная версия COCO8 с 10 каналами, созданная интерполяцией длин волн 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 «Визуальные классы объектов» (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. Полный рабочий процесс, включая сопоставление идентификаторов классов, структуру каталогов и аннотации сегментации или поз, см. в разделе Преобразование аннотаций COCO в YOLO.

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

Что дальше#

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

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

  • Формат 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. Конкретные примеры см. в разделе Использование документации.

Комментарии