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

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

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

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 Параметр задает, включать ли ключевые точки (для оценки позы) в преобразованные метки.



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

Комментарии