Обзор наборов данных для обнаружения объектов#
Для обучения надежной и точной модели обнаружения объектов требуется исчерпывающий набор данных. В этом руководстве представлены различные форматы наборов данных, совместимые с моделью Ultralytics YOLO, а также приведены сведения об их структуре, использовании и способах конвертации между различными форматами.
Поддерживаемые форматы наборов данных#
Формат Ultralytics YOLO#
Формат Ultralytics YOLO — это формат конфигурации набора данных, который позволяет задавать корневой каталог набора данных, относительные пути к каталогам изображений обучения/валидации/тестирования или файлам *.txt, содержащим пути к изображениям, а также словарь имен классов. Вот пример:
# 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 полезен для обучения на подмножестве каталога, пропуска изображений без разметки или объединения изображений из нескольких источников в одну выборку.
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).

Файл разметки, соответствующий изображению выше, содержит 2 человека (класс 0) и галстук (класс 27):

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

Пример использования#
Вот как ты можешь использовать наборы данных в формате 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 содержит:
- Запись набора данных (первая строка): Содержит метаданные набора данных, включая тип задачи, имена классов и общую информацию
- Записи изображений (последующие строки): Содержат данные об отдельных изображениях, включая размеры, аннотации и пути к файлам
{
"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. Конкретные примеры можно найти в разделе Использование в документации.