Meet YOLO26: next-gen vision AI.

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

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

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

Link to this sectionФормат 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

Разметки для этого формата должны быть экспортированы в формат 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

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

Вот как ты можешь использовать наборы данных в формате 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)

Link to this sectionФормат 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"
}

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

Чтобы использовать набор данных 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)

Link to this sectionПреимущества формата NDJSON#

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

Link to this sectionПоддерживаемые наборы данных#

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

  • African-wildlife: набор данных с изображениями африканской дикой природы, включая буйволов, слонов, носорогов и зебр.
  • Argoverse: набор данных, содержащий данные 3D-трекинга и прогнозирования движения в городских условиях с подробными аннотациями.
  • Brain-tumor: набор данных для обнаружения опухолей головного мозга, включающий изображения МРТ или КТ с данными о наличии, расположении и характеристиках опухоли.
  • COCO: Common Objects in Context (COCO) — это масштабный набор данных для обнаружения объектов, сегментации и описания изображений, состоящий из 80 категорий объектов.
  • COCO8: меньшее подмножество из первых 4 изображений из COCO train и COCO val, подходящее для быстрых тестов.
  • 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) для проверки конвейеров загрузки изображений.
  • 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), состоящий из 100 000 изображений уличного вида и более 30 000 размеченных дорожных знаков для надежного обнаружения и классификации.
  • VisDrone: набор данных, содержащий данные обнаружения и отслеживания нескольких объектов с изображений, снятых дронами, с более чем 10 тыс. изображений и видеопоследовательностей.
  • VOC: набор данных Pascal Visual Object Classes (VOC) для обнаружения и сегментации объектов, содержащий 20 классов объектов и более 11 тыс. изображений.
  • xView: набор данных для обнаружения объектов на изображениях с высоты птичьего полета, содержащий 60 категорий объектов и более 1 миллиона размеченных объектов.

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

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

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

Link to this sectionФормат набора данных 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.

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

Link to this sectionFAQ#

Link to this sectionЧто такое формат набора данных 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.

Link to this sectionКак преобразовать набор данных COCO в формат YOLO?#

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

from ultralytics.data.converter import convert_coco

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

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

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

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

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

Link to this sectionКак начать обучение модели 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.

Link to this sectionГде я могу найти практические примеры использования Ultralytics YOLO для обнаружения объектов?#

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

Комментарии