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

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

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

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

Чтобы использовать набор данных 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 изображений, охватывающий все поддерживаемые форматы изображений (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) для проверки конвейеров загрузки изображений.
  • COCO128: меньшее подмножество из первых 128 изображений из обучающей и валидационной выборок COCO, подходящее для тестов.
  • Construction-PPE: набор данных с рабочими на строительных площадках с размеченным защитным снаряжением, таким как каски, жилеты, перчатки, ботинки и очки, включая аннотации об отсутствии оборудования, такие как no_helmet, no_googles для мониторинга соблюдения требований в реальных условиях.
  • 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 миллионом аннотированных объектов.

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

Если у тебя есть собственный набор данных и ты хочешь использовать его для обучения моделей обнаружения в формате 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.

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

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

Комментарии