Обзор наборов данных для обнаружения объектов
Обучение надежной и точной модели обнаружения объектов требует всестороннего набора данных. В этом руководстве представлены различные форматы наборов данных, совместимые с моделью 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).
Файл с метками, соответствующий изображению выше, содержит 2 человек (класс 0
) и галстук (класс 27
):
При использовании формата Ultralytics YOLO организуйте свои обучающие и проверочные изображения и метки, как показано в примере набора данных COCO8 ниже.
Пример использования
Вот как можно использовать наборы данных в формате YOLO для обучения модели:
Пример
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640
Формат Ultralytics NDJSON
Формат NDJSON (JSON с разделителями-переводами строк) предоставляет альтернативный способ определения наборов данных для моделей Ultralytics YOLO11. В этом формате метаданные и аннотации набора данных хранятся в одном файле, где каждая строка содержит отдельный объект JSON.
Файл набора данных NDJSON содержит:
- Запись набора данных (первая строка): Содержит метаданные набора данных, включая тип задачи, названия классов и общую информацию.
- Записи изображений (последующие строки): Содержит данные отдельных изображений, включая размеры, аннотации и пути к файлам.
Пример 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"
}
{
"type": "image",
"file": "image1.jpg",
"url": "https://www.url.com/path/to/image1.jpg",
"width": 640,
"height": 480,
"split": "train",
"annotations": {
"boxes": [
[0, 0.52481, 0.37629, 0.28394, 0.41832],
[1, 0.73526, 0.29847, 0.19275, 0.33691]
]
}
}
Форматы аннотаций по задачам:
- Обнаружение:
"annotations": {"boxes": [[class_id, x_center, y_center, width, height], ...]}
- Сегментация:
"annotations": {"segments": [[class_id, x1, y1, x2, y2, ...], ...]}
- Поза:
"annotations": {"pose": [[class_id, x1, y1, v1, x2, y2, v2, ...], ...]}
- OBB:
"annotations": {"obb": [[class_id, x_center, y_center, width, height, angle], ...]}
- Классификация:
"annotations": {"classification": [class_id]}
Пример использования
Чтобы использовать набор данных NDJSON с YOLO11, просто укажите путь к .ndjson
файл:
Пример
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)
# Start training with NDJSON dataset
yolo detect train data=path/to/dataset.ndjson model=yolo11n.pt epochs=100 imgsz=640
Преимущества формата NDJSON
- Единый файл: Вся информация о наборе данных содержится в одном файле
- Потоковая передача: Может обрабатывать большие наборы данных построчно, не загружая все в память
- Интеграция с облаком: Поддерживает удаленные URL-адреса изображений для обучения на основе облака
- Расширяемость: Легко добавлять пользовательские поля метаданных
- Контроль версий: Формат одного файла хорошо работает с git и системами контроля версий
Поддерживаемые наборы данных
Ниже представлен список поддерживаемых наборов данных и краткое описание для каждого из них:
- Argoverse: Набор данных, содержащий данные 3D-трекинга и прогнозирования движения из городских сред с богатой аннотацией.
- COCO: Common Objects in Context (COCO) — это масштабный набор данных для обнаружения объектов, сегментации и создания подписей с 80 категориями объектов.
- LVIS: Масштабный набор данных для обнаружения объектов, сегментации и создания подписей с 1203 категориями объектов.
- COCO8: Уменьшенный набор, состоящий из первых 4 изображений из COCO train и COCO val, подходит для быстрой проверки.
- COCO8-Grayscale: Оттенки серого версия COCO8, созданная путем преобразования RGB в оттенки серого, полезна для оценки одноканальных моделей.
- COCO8-Multispectral: 10-канальная мультиспектральная версия COCO8, созданная путем интерполяции длин волн RGB, полезна для оценки моделей, учитывающих спектральные характеристики.
- COCO128: Уменьшенный набор, состоящий из первых 128 изображений из COCO train и COCO val, подходит для тестов.
- Global Wheat 2020: Набор данных, содержащий изображения колосьев пшеницы для Global Wheat Challenge 2020.
- Objects365: Высококачественный, масштабный набор данных для обнаружения объектов с 365 категориями объектов и более 600 тыс. аннотированных изображений.
- OpenImagesV7: Обширный набор данных от Google с 1,7 млн обучающих изображений и 42 тыс. изображений для проверки.
- SKU-110K: Набор данных, содержащий плотное обнаружение объектов в розничной торговле, с более чем 11 тысячами изображений и 1,7 миллиона ограничивающих рамок.
- HomeObjects-3K New 🚀: Набор данных предметов домашнего обихода в помещении, включающий кровати, стулья, телевизоры и многое другое — идеально подходит для приложений в области автоматизации умного дома, робототехники, дополненной реальности и анализа планировки помещений.
- VisDrone: Набор данных, содержащий данные об обнаружении объектов и отслеживании нескольких объектов, полученные с помощью изображений, снятых с дронов, с более чем 10 тыс. изображений и видеопоследовательностей.
- VOC: Набор данных Pascal Visual Object Classes (VOC) для обнаружения и сегментации объектов с 20 классами объектов и более 11 тыс. изображений.
- xView: Набор данных для обнаружения объектов на изображениях сверху с 60 категориями объектов и более 1 миллиона аннотированных объектов.
- Roboflow 100: Разнообразный эталон для обнаружения объектов со 100 наборами данных, охватывающими семь областей изображений для всесторонней оценки модели.
- Brain-tumor: Набор данных для обнаружения опухолей головного мозга включает изображения МРТ или КТ с подробной информацией о наличии, местоположении и характеристиках опухоли.
- African-wildlife: Набор данных с изображениями африканской дикой природы, включая буйволов, слонов, носорогов и зебр.
- Signature: Набор данных с изображениями различных документов с аннотированными подписями, поддерживающий проверку документов и исследования по обнаружению мошенничества.
- Medical-pills: набор данных, содержащий изображения медицинских таблеток, аннотированные для таких применений, как обеспечение качества фармацевтической продукции, сортировка таблеток и соблюдение нормативных требований.
Добавление собственного набора данных
Если у вас есть собственный набор данных и вы хотите использовать его для обучения моделей обнаружения в формате 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.
Не забывайте перепроверять, совместим ли набор данных, который вы хотите использовать, с вашей моделью и соответствует ли он необходимым соглашениям о формате. Правильно отформатированные наборы данных имеют решающее значение для обучения успешных моделей обнаружения объектов.
Часто задаваемые вопросы
Что такое формат набора данных 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. Для получения дополнительной информации посетите раздел Port or Convert Label Formats.
Какие наборы данных поддерживаются Ultralytics YOLO для обнаружения объектов?
Ultralytics YOLO поддерживает широкий спектр наборов данных, включая:
На каждой странице набора данных представлена подробная информация о структуре и использовании, адаптированная для эффективного обучения YOLO11. Ознакомьтесь с полным списком в разделе Supported Datasets.
Как начать обучение модели YOLO11 с использованием моего набора данных?
Чтобы начать обучение модели YOLO11, убедитесь, что ваш набор данных отформатирован правильно и пути определены в YAML-файле. Используйте следующий скрипт, чтобы начать обучение:
Пример
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
yolo detect train data=path/to/your_dataset.yaml model=yolo11n.pt epochs=100 imgsz=640
Обратитесь к разделу Usage для получения более подробной информации об использовании различных режимов, включая команды CLI.
Где я могу найти практические примеры использования Ultralytics YOLO для обнаружения объектов?
Ultralytics предоставляет многочисленные примеры и практические руководства по использованию YOLO11 в различных приложениях. Для получения всестороннего обзора посетите Ultralytics Blog, где вы можете найти тематические исследования, подробные руководства и истории сообщества, демонстрирующие обнаружение объектов, сегментацию и многое другое с помощью YOLO11. Для конкретных примеров ознакомьтесь с разделом Usage в документации.