Перейти к содержимому

Обзор датасетов сегментации экземпляров

Поддерживаемые форматы наборов данных

Ultralytics YOLO Формат

Формат меток датасета, используемый для обучения моделей сегментации YOLO , выглядит следующим образом:

  1. Один текстовый файл на изображение: Каждое изображение в наборе данных имеет соответствующий текстовый файл с тем же именем, что и файл изображения, и расширением ".txt".
  2. По одной строке на объект: Каждая строка в текстовом файле соответствует одному экземпляру объекта на изображении.
  3. Информация об объекте в каждой строке: Каждый ряд содержит следующую информацию об экземпляре объекта:
    • Индекс класса объекта: Целое число, представляющее класс объекта (например, 0 для человека, 1 для машины и т.д.).
    • Граничные координаты объекта: Граничные координаты вокруг области маски, нормированные на значения от 0 до 1.

Формат одной строки в файле segmentation dataset выглядит следующим образом:

<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>

В таком формате, <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 .

Использование

Пример

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-seg.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640

Поддерживаемые наборы данных

Поддерживаемые наборы данных

  • COCO: всеобъемлющий набор данных для обнаружения объектов, сегментации и создания надписей, содержащий более 200 тысяч помеченных изображений по широкому спектру категорий.
  • COCO8-seg: Компактное подмножество COCO из 8 изображений, предназначенное для быстрого тестирования обучения модели сегментации, идеально подходит для проверки CI и валидации рабочего процесса в ultralytics хранилище.
  • Carparts-seg: специализированный набор данных, ориентированный на сегментацию автомобильных деталей, идеально подходящий для автомобильных приложений. Он включает в себя множество автомобилей с подробными аннотациями отдельных автомобильных компонентов.
  • Crack-seg: набор данных, предназначенный для сегментации трещин на различных поверхностях. Необходимая для обслуживания инфраструктуры и контроля качества, она предоставляет детальные изображения для обучения моделей, позволяющих выявить слабые места в конструкции.
  • Package-seg: набор данных, посвященный сегментации различных типов упаковочных материалов и форм. Она особенно полезна для логистики и автоматизации складов, помогая разрабатывать системы для обработки и сортировки упаковки.

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

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

Перенос или преобразование форматов этикеток

Формат набора данных COCO в формат YOLO

Ты можешь легко конвертировать метки из популярного формата набора данных COCO в формат YOLO с помощью следующего фрагмента кода:

Пример

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

Этот инструмент конвертации можно использовать для преобразования набора данных COCO или любого другого набора данных в формате COCO в формат Ultralytics YOLO .

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

Автоматическая аннотация

Автоаннотирование - это важная функция, которая позволяет тебе генерировать набор данных для сегментации, используя предварительно обученную модель обнаружения. Она позволяет быстро и точно аннотировать большое количество изображений, не прибегая к ручной маркировке, что экономит время и силы.

Создай набор данных для сегментации с помощью модели обнаружения

Для автоаннотирования твоего набора данных с помощью фреймворка Ultralytics ты можешь использовать auto_annotate функция, как показано ниже:

Пример

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam_b.pt")
Аргумент Тип Описание По умолчанию
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")

Эта функция автоматизирует процесс аннотирования, делая его быстрее и эффективнее. Для получения более подробной информации изучи раздел " Автоаннотация ".



Создано 2023-11-12, Обновлено 2024-07-04
Авторы: glenn-jocher (12), Burhan-Q (1)

Комментарии