Обзор датасетов сегментации экземпляров
Поддерживаемые форматы наборов данных
Ultralytics YOLO Формат
Формат меток датасета, используемый для обучения моделей сегментации YOLO , выглядит следующим образом:
- Один текстовый файл на изображение: Каждое изображение в наборе данных имеет соответствующий текстовый файл с тем же именем, что и файл изображения, и расширением ".txt".
- По одной строке на объект: Каждая строка в текстовом файле соответствует одному экземпляру объекта на изображении.
- Информация об объекте в каждой строке: Каждый ряд содержит следующую информацию об экземпляре объекта:
- Индекс класса объекта: Целое число, представляющее класс объекта (например, 0 для человека, 1 для машины и т.д.).
- Граничные координаты объекта: Граничные координаты вокруг области маски, нормированные на значения от 0 до 1.
Формат одной строки в файле segmentation dataset выглядит следующим образом:
В таком формате, <class-index>
это индекс класса для данного объекта, а <x1> <y1> <x2> <y2> ... <xn> <yn>
это граничные координаты маски сегментации объекта. Координаты разделены пробелами.
Вот пример формата набора данных YOLO для одного изображения с двумя объектами, состоящими из 3-точечного сегмента и 5-точечного сегмента.
0 0.681 0.485 0.670 0.487 0.676 0.487
1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104
Наконечник
- Длина каждого ряда не обязательно должна быть одинаковой.
- Каждая метка сегментации должна иметь минимум 3 точки xy:
<class-index> <x1> <y1> <x2> <y2> <x3> <y3>
Датасет в формате YAML
Фреймворк Ultralytics использует формат файла YAML для определения набора данных и конфигурации модели для обучения моделей обнаружения. Вот пример формата YAML, используемого для определения набора данных обнаружения:
# 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: ../datasets/coco8-seg # 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 (80 COCO classes)
names:
0: person
1: bicycle
2: car
# ...
77: teddy bear
78: hair drier
79: toothbrush
The train
и val
поля указывают пути к директориям, содержащим тренировочные и проверочные изображения соответственно.
names
это словарь имен классов. Порядок названий должен соответствовать порядку индексов классов объектов в файлах набора данных YOLO .
Использование
Пример
Поддерживаемые наборы данных
Поддерживаемые наборы данных
- COCO: всеобъемлющий набор данных для обнаружения объектов, сегментации и создания надписей, содержащий более 200 тысяч помеченных изображений по широкому спектру категорий.
- COCO8-seg: Компактное подмножество COCO из 8 изображений, предназначенное для быстрого тестирования обучения модели сегментации, идеально подходит для проверки CI и валидации рабочего процесса в
ultralytics
хранилище. - COCO128-seg: A smaller dataset for instance segmentation tasks, containing a subset of 128 COCO images with segmentation annotations.
- Carparts-seg: специализированный набор данных, ориентированный на сегментацию автомобильных деталей, идеально подходящий для автомобильных приложений. Он включает в себя множество автомобилей с подробными аннотациями отдельных автомобильных компонентов.
- Crack-seg: набор данных, предназначенный для сегментации трещин на различных поверхностях. Необходимая для обслуживания инфраструктуры и контроля качества, она предоставляет детальные изображения для обучения моделей, позволяющих выявить слабые места в конструкции.
- Package-seg: набор данных, посвященный сегментации различных типов упаковочных материалов и форм. Она особенно полезна для логистики и автоматизации складов, помогая разрабатывать системы для обработки и сортировки упаковки.
Добавление собственного набора данных
Если у тебя есть свой собственный набор данных и ты хочешь использовать его для обучения моделей сегментации с форматом Ultralytics YOLO , убедись, что он соответствует формату, указанному выше в разделе "ФорматUltralytics YOLO ". Преобразуй свои аннотации в нужный формат и укажи пути, количество классов и названия классов в конфигурационном файле YAML.
Перенос или преобразование форматов этикеток
Формат набора данных COCO в формат YOLO
Ты можешь легко конвертировать метки из популярного формата набора данных COCO в формат YOLO с помощью следующего фрагмента кода:
Пример
Этот инструмент конвертации можно использовать для преобразования набора данных COCO или любого другого набора данных в формате COCO в формат Ultralytics YOLO .
Не забудь перепроверить, совместим ли набор данных, который ты хочешь использовать, с твоей моделью и соблюдает ли он необходимые соглашения о формате. Правильно отформатированные наборы данных очень важны для обучения успешных моделей обнаружения объектов.
Автоматическая аннотация
Автоаннотирование - это важная функция, которая позволяет тебе генерировать набор данных для сегментации, используя предварительно обученную модель обнаружения. Она позволяет быстро и точно аннотировать большое количество изображений, не прибегая к ручной маркировке, что экономит время и силы.
Создай набор данных для сегментации с помощью модели обнаружения
Для автоаннотирования твоего набора данных с помощью фреймворка Ultralytics ты можешь использовать auto_annotate
функция, как показано ниже:
Пример
Аргумент | Тип | Описание | По умолчанию |
---|---|---|---|
data |
str |
Путь к папке, содержащей изображения, которые нужно аннотировать. | None |
det_model |
str, optional |
Предварительно обученная модель обнаружения YOLO . По умолчанию 'yolov8x.pt' . |
'yolov8x.pt' |
sam_model |
str, optional |
Предварительно обученная модель сегментации SAM . По умолчанию 'sam_b.pt' . |
'sam_b.pt' |
device |
str, optional |
Устройство, на котором будут запускаться модели. По умолчанию - пустая строка (CPU или GPU, если есть). | '' |
output_dir |
str or None, optional |
Каталог для сохранения аннотированных результатов. По умолчанию это 'labels' папку в том же каталоге, что и 'data' . |
None |
The auto_annotate
Функция принимает путь к твоим изображениям, а также дополнительные аргументы для указания предварительно обученного обнаружения и SAM Модели сегментацииустройство, на котором будут запускаться модели, и выходной каталог для сохранения аннотированных результатов.
Используя возможности предварительно обученных моделей, автоаннотация позволяет значительно сократить время и усилия, необходимые для создания высококачественных наборов данных сегментации. Эта функция особенно полезна для исследователей и разработчиков, работающих с большими коллекциями изображений, так как позволяет им сосредоточиться на разработке и оценке моделей, а не на ручном аннотировании.
ВОПРОСЫ И ОТВЕТЫ
Какие форматы наборов данных поддерживает Ultralytics YOLO для сегментации экземпляров?
Ultralytics YOLO поддерживает несколько форматов наборов данных для сегментации экземпляров, причем основным форматом является собственный формат Ultralytics YOLO . Каждое изображение в твоем наборе данных должно содержать соответствующий текстовый файл с информацией об объекте, сегментированной на несколько строк (по одной строке на объект), с указанием индекса класса и нормализованных граничных координат. Более подробные инструкции по формату датасета YOLO можно найти в обзоре Instance Segmentation Datasets.
Как преобразовать аннотации к наборам данных COCO в формат YOLO ?
Преобразовать аннотации в формате COCO в формат YOLO проще всего с помощью инструментов Ultralytics . Ты можешь использовать convert_coco
функция из ultralytics.data.converter
Модуль:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)
Этот скрипт преобразует аннотации твоего набора данных COCO в нужный формат YOLO , что делает их пригодными для обучения твоих моделей YOLO . Подробнее об этом читай в разделе " Перенос или преобразование форматов меток".
Как подготовить YAML-файл для обучения моделей Ultralytics YOLO ?
Чтобы подготовить YAML-файл для обучения моделей YOLO с помощью Ultralytics, тебе нужно определить пути к набору данных и имена классов. Вот пример конфигурации YAML:
path: ../datasets/coco8-seg # dataset root dir
train: images/train # train images (relative to 'path')
val: images/val # val images (relative to 'path')
names:
0: person
1: bicycle
2: car
# ...
Убедись, что ты обновил пути и имена классов в соответствии с твоим набором данных. Для получения дополнительной информации ознакомься с разделом Dataset YAML Format.
Что такое функция автоаннотирования в Ultralytics YOLO ?
Автоаннотация в Ultralytics YOLO позволяет тебе генерировать аннотации сегментации для твоего набора данных с помощью предварительно обученной модели обнаружения. Это значительно сокращает необходимость в ручном маркировании. Ты можешь использовать auto_annotate
функционирует следующим образом:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam_b.pt")
Эта функция автоматизирует процесс аннотирования, делая его быстрее и эффективнее. Для получения более подробной информации изучи раздел " Автоаннотация ".