Обзор наборов данных для обнаружения объектов
Для обучения надежной и точной модели обнаружения объектов требуется всеобъемлющий набор данных. Это руководство знакомит тебя с различными форматами наборов данных, совместимыми с моделью 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Метки для этого формата должны быть экспортированы в формат 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"
}Пример использования
Чтобы использовать набор данных 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. Конкретные примеры см. в разделе Использование в документации.