Обзор наборов данных для оценки позы
Поддерживаемые форматы наборов данных
Формат Ultralytics YOLO
Формат меток набора данных, используемый для обучения моделей определения позы YOLO, выглядит следующим образом:
- Один текстовый файл на изображение: каждое изображение в наборе данных имеет соответствующий текстовый файл с тем же именем, что и файл изображения, и расширением ".txt".
- Одна строка на объект: каждая строка в текстовом файле соответствует одному экземпляру объекта на изображении.
- Информация об объекте в строке: каждая строка содержит следующую информацию об экземпляре объекта:
- Индекс класса объекта: целое число, представляющее класс объекта (например, 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> <pn-visibility>
В этом формате, <class-index>
это индекс класса объекта,<x> <y> <width> <height>
это координаты ограничивающего прямоугольникаи <px1> <py1> <px2> <py2> ... <pxn> <pyn>
это пиксельные координаты ключевых точек. Координаты разделены пробелами.
Формат YAML набора данных
Платформа Ultralytics использует формат YAML-файлов для определения набора данных и конфигурации модели для обучения моделей оценки позы. Вот пример формата YAML, используемого для определения набора данных позы:
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose/
# Example usage: yolo train data=coco8-pose.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8-pose ← downloads here (1 MB)
# 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: 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
names:
0: person
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
Параметр 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
- Описание: COCO-Pose — это масштабный набор данных для обнаружения объектов, сегментации и оценки позы. Это подмножество популярного набора данных COCO, ориентированное на оценку позы человека. COCO-Pose включает несколько ключевых точек для каждого экземпляра человека.
- Формат меток: Тот же, что и формат Ultralytics YOLO, описанный выше, с ключевыми точками для поз человека.
- Количество классов: 1 (человек).
- Ключевые точки: 17 ключевых точек, включая нос, глаза, уши, плечи, локти, запястья, бедра, колени и лодыжки.
- Применение: Подходит для обучения моделей оценки позы человека.
- Дополнительные примечания: Датасет богат и разнообразен, содержит более 200 тысяч размеченных изображений.
- Подробнее о COCO-Pose
COCO8-Pose
- Описание: Ultralytics COCO8-Pose — это небольшой, но универсальный датасет для определения позы, состоящий из первых 8 изображений из набора COCO train 2017: 4 для обучения и 4 для валидации.
- Формат меток: Тот же, что и формат Ultralytics YOLO, описанный выше, с ключевыми точками для поз человека.
- Количество классов: 1 (человек).
- Ключевые точки: 17 ключевых точек, включая нос, глаза, уши, плечи, локти, запястья, бедра, колени и лодыжки.
- Применение: Подходит для тестирования и отладки моделей обнаружения объектов или для экспериментов с новыми подходами к обнаружению.
- Дополнительные примечания: COCO8-Pose идеально подходит для sanity check и CI checks.
- Подробнее о COCO8-Pose
Tiger-Pose
- Описание: Датасет Tiger Pose от Ultralytics содержит 263 изображения, полученные из видео на YouTube, из которых 210 изображений выделены для обучения и 53 для валидации.
- Формат меток: Тот же, что и формат Ultralytics YOLO, описанный выше, с 12 ключевыми точками для позы животного и без видимого измерения.
- Количество классов: 1 (Тигр).
- Ключевые точки: 12 ключевых точек.
- Применение: Отлично подходит для определения позы животных или любой другой позы, не основанной на человеке.
- Подробнее о Tiger-Pose
Ключевые точки рук
- Описание: Набор данных о позах с ключевыми точками рук содержит около 26 тысяч изображений, из которых 18776 изображений выделено для обучения и 7992 для валидации.
- Формат меток: Тот же, что и формат Ultralytics YOLO, описанный выше, но с 21 ключевой точкой для человеческой руки и видимым измерением.
- Количество классов: 1 (Рука).
- Ключевые точки: 21 ключевая точка.
- Применение: Отлично подходит для оценки позы человеческой руки и распознавания жестов.
- Подробнее о Hand Keypoints
Dog-Pose
- Описание: Набор данных Dog Pose содержит около 6000 изображений, предоставляя разнообразный и обширный ресурс для обучения и валидации моделей оценки позы собаки.
- Формат меток: Соответствует формату Ultralytics YOLO с аннотациями для нескольких ключевых точек, специфичных для анатомии собаки.
- Количество классов: 1 (Собака).
- Ключевые точки: Включает 24 ключевые точки, адаптированные к позам собаки, такие как конечности, суставы и положение головы.
- Применение: Идеально подходит для обучения моделей оценке позы собак в различных сценариях, от исследований до реальных приложений.
- Узнайте больше о Dog-Pose
Добавление собственного набора данных
Если у вас есть собственный набор данных и вы хотите использовать его для обучения моделей оценки позы с помощью формата 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:
- Загрузите набор данных и подготовьте файлы меток в формате YOLO.
- Создайте файл конфигурации YAML, указав пути к изображениям для обучения и проверки, форму ключевых точек и имена классов.
-
Используйте файл конфигурации для обучения:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") # load pretrained model results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
Для получения дополнительной информации посетите разделы COCO-Pose и train.
Как добавить свой собственный набор данных для оценки позы в Ultralytics YOLO?
Чтобы добавить свой набор данных:
- Преобразуйте свои аннотации в формат Ultralytics YOLO.
- Создайте файл конфигурации YAML, указав пути к набору данных, количество классов и имена классов.
-
Используйте файл конфигурации для обучения вашей модели:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
Чтобы выполнить все шаги, обратитесь к разделу Добавление собственного набора данных.
Каково назначение YAML-файла набора данных в Ultralytics YOLO?
YAML-файл набора данных в Ultralytics YOLO определяет конфигурацию набора данных и модели для обучения. Он указывает пути к обучающим, проверочным и тестовым изображениям, формы ключевых точек, названия классов и другие параметры конфигурации. Этот структурированный формат помогает оптимизировать управление набором данных и обучение модели. Вот пример формата YAML:
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose/
# Example usage: yolo train data=coco8-pose.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8-pose ← downloads here (1 MB)
# 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: 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
names:
0: person
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
Узнайте больше о создании файлов конфигурации YAML в разделе Формат 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. Подробности см. в разделе Инструмент преобразования и руководстве по предварительной обработке данных.