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.

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

Что дальше#

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

FAQ#

Что такое формат набора данных Ultralytics YOLO и как его структурировать?#

Формат 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?#

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

from ultralytics.data.converter import convert_coco

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

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

Какие наборы данных поддерживаются Ultralytics YOLO для обнаружения объектов?#

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

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

Как начать обучение модели 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 YOLO для обнаружения объектов?#

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

Комментарии