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

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

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

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> are coordinates of bounding box, и <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("yolo11n-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 pose train data=coco8-pose.yaml model=yolo11n-pose.pt epochs=100 imgsz=640

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

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

COCO-Pose

  • Description: COCO-Pose is a large-scale object detection, segmentation, and pose estimation dataset. It is a subset of the popular COCO dataset and focuses on human pose estimation. COCO-Pose includes multiple keypoints for each human instance.
  • Формат этикетки: Тот же формат, что и 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 ключевых точек.
  • Применение: Отлично подходит для поз животных или любых других поз, не связанных с человеком.
  • Подробнее о Поза тигра

Hand Keypoints

  • Description: Hand keypoints pose dataset comprises nearly 26K images, with 18776 images allocated for training and 7992 for validation.
  • Label Format: Same as Ultralytics YOLO format as described above, but with 21 keypoints for human hand and visible dimension.
  • Number of Classes: 1 (Hand).
  • Keypoints: 21 keypoints.
  • Usage: Great for human hand pose estimation.
  • Read more about Hand Keypoints

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

Если у тебя есть собственный набор данных и ты хочешь использовать его для обучения моделей оценки позы в формате 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 ?

To use the COCO-Pose dataset with Ultralytics YOLO:

  1. Download the dataset and prepare your label files in the YOLO format.
  2. Create a YAML configuration file specifying paths to training and validation images, keypoint shape, and class names.
  3. Use the configuration file for training:

    from ultralytics import YOLO
    
    model = YOLO("yolo11n-pose.pt")  # load pretrained model
    results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
    

    For more information, visit COCO-Pose and train sections.

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

To add your dataset:

  1. Convert your annotations to the Ultralytics YOLO format.
  2. Create a YAML configuration file specifying the dataset paths, number of classes, and class names.
  3. Use the configuration file to train your model:

    from ultralytics import YOLO
    
    model = YOLO("yolo11n-pose.pt")
    results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
    

    For complete steps, check the 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 . Подробнее об этом читай в разделе " Инструмент для конвертации ".

📅 Created 11 months ago ✏️ Updated 20 days ago

Комментарии