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

Обзор наборов данных для оценки позы

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

Ultralytics YOLO Формат

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

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

Вот пример формата метки для задачи оценки позы:

Формат с Dim = 2

<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>

Формат с Dim = 3

<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> <pxn> <pyn> <p2-visibility>

В таком формате, <class-index> это индекс класса для данного объекта,<x> <y> <width> <height> это координаты ограничительной рамки, а <px1> <py1> <px2> <py2> ... <pxn> <pyn> это пиксельные координаты ключевых точек. Координаты разделены пробелами.

Датасет в формате 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-pose  # 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)

# Keypoints
kpt_shape: [17, 3]  # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]

# Classes dictionary
names:
  0: person

The train и val поля указывают пути к директориям, содержащим тренировочные и проверочные изображения соответственно.

names это словарь имен классов. Порядок названий должен соответствовать порядку индексов классов объектов в файлах набора данных YOLO .

(Необязательно) Если точки симметричны, то нужно сделать flip_idx, например, левая-правая сторона человека или лица. Например, если мы предполагаем пять ключевых точек лицевого ориентира: [левый глаз, правый глаз, нос, левый рот, правый рот], а исходный индекс - [0, 1, 2, 3, 4], то flip_idx - [1, 0, 2, 4, 3] (просто поменяй местами лево-правый индекс, то есть 0-1 и 3-4, и не изменяй остальные, например нос в этом примере).

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

Пример

from ultralytics import YOLO

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

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

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

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

COCO-Pose

  • Описание: COCO-Pose - это крупномасштабный набор данных для обнаружения, сегментации объектов и оценки позы. Он является подмножеством популярного набора COCO и ориентирован на оценку позы человека. COCO-Pose включает в себя несколько ключевых точек для каждого экземпляра человека.
  • Формат этикетки: Тот же формат, что и Ultralytics YOLO , описанный выше, с ключевыми точками для человеческих поз.
  • Количество классов: 1 (человек).
  • Ключевые точки: 17 ключевых точек, включая нос, глаза, уши, плечи, локти, запястья, бедра, колени и лодыжки.
  • Применение: Подходит для обучения моделей оценки человеческой позы.
  • Дополнительные примечания: Набор данных богат и разнообразен, он содержит более 200 тысяч помеченных изображений.
  • Подробнее о КОКО-Позе

COCO8-Pose

  • Описание: Ultralytics COCO8-Pose - это небольшой, но универсальный набор данных для определения позы, состоящий из первых 8 изображений из набора COCO train 2017: 4 для обучения и 4 для проверки.
  • Формат этикетки: Тот же формат, что и Ultralytics YOLO , описанный выше, с ключевыми точками для человеческих поз.
  • Количество классов: 1 (человек).
  • Ключевые точки: 17 ключевых точек, включая нос, глаза, уши, плечи, локти, запястья, бедра, колени и лодыжки.
  • Применение: Подходит для тестирования и отладки моделей обнаружения объектов, а также для экспериментов с новыми подходами к обнаружению.
  • Дополнительные примечания: COCO8-Pose идеально подходит для проверок на вменяемость и CI-проверки.
  • Подробнее о COCO8-Pose

Поза тигра

  • Описание: Ultralytics Этот набор данных по позе животных состоит из 263 изображений, взятых из видео на YouTube, причем 210 изображений были выделены для обучения, а 53 - для проверки.
  • Формат этикетки: Такой же, как и формат Ultralytics YOLO , описанный выше, с 12 ключевыми точками для позы животного и без видимого измерения.
  • Количество классов: 1 (Тигр).
  • Ключевые точки: 12 ключевых точек.
  • Применение: Отлично подходит для поз животных или любых других поз, не связанных с человеком.
  • Подробнее о Поза тигра

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

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

Инструмент для преобразования

Ultralytics предоставляет удобный инструмент для конвертации меток из популярного формата наборов данных COCO в формат YOLO :

Пример

from ultralytics.data.converter import convert_coco

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

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

ВОПРОСЫ И ОТВЕТЫ

Что такое формат Ultralytics YOLO для оценки позы?

Формат Ultralytics YOLO для наборов данных по оценке позы предполагает маркировку каждого изображения соответствующим текстовым файлом. Каждая строка текстового файла хранит информацию об экземпляре объекта:

  • Индекс класса объекта
  • Координаты центра объекта (нормализованные x и y)
  • Ширина и высота объекта (нормализованные)
  • Координаты ключевых точек объекта (нормализованные pxn и pyn)

Для 2D-позы ключевые точки включают в себя координаты пикселей. Для 3D каждая ключевая точка также имеет флаг видимости. Более подробную информацию ты найдешь на сайте Ultralytics YOLO .

Как использовать набор данных COCO-Pose с Ultralytics YOLO ?

Чтобы использовать набор данных COCO-Pose с Ultralytics YOLO : 1. Загрузи набор данных и подготовь файлы меток в формате YOLO . 2. Создай конфигурационный файл YAML, в котором укажи пути к тренировочным и проверочным изображениям, форму ключевых точек и имена классов. 3. Используй файл конфигурации для обучения:

```python
from ultralytics import YOLO

model = YOLO("yolov8n-pose.pt")  # load pretrained model
results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
```

For more information, visit [COCO-Pose](coco.md) and [train](../../modes/train.md) sections.

Как добавить свой собственный набор данных для оценки позы в Ultralytics YOLO ?

Чтобы добавить свой набор данных: 1. Преобразуй свои аннотации в формат Ultralytics YOLO . 2. Создай конфигурационный файл YAML, указав пути к набору данных, количество классов и названия классов. 3. Используй файл конфигурации для обучения своей модели:

```python
from ultralytics import YOLO

model = YOLO("yolov8n-pose.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
```

For complete steps, check the [Adding your own dataset](#adding-your-own-dataset) section.

Каково назначение YAML-файла набора данных в Ultralytics YOLO ?

YAML-файл набора данных в Ultralytics YOLO определяет набор данных и конфигурацию модели для обучения. В нем указываются пути к тренировочным, проверочным и тестовым изображениям, формы ключевых точек, названия классов и другие параметры конфигурации. Такой структурированный формат помогает упростить управление набором данных и обучение модели. Вот пример формата YAML:

path: ../datasets/coco8-pose
train: images/train
val: images/val
names:
  0: person

Подробнее о создании конфигурационных файлов YAML читай в формате Dataset YAML.

Как преобразовать метки набора данных COCO в формат Ultralytics YOLO для оценки позы?

Ultralytics предоставляет инструмент для преобразования меток наборов данных COCO в формат YOLO , включая информацию о ключевых точках:

from ultralytics.data.converter import convert_coco

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

Этот инструмент помогает легко интегрировать наборы данных COCO в проекты YOLO . Подробнее об этом читай в разделе " Инструмент для конвертации ".



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

Комментарии