Обзор наборов данных для оценки позы
Поддерживаемые форматы наборов данных
Формат Ultralytics YOLO
Формат меток набора данных, используемый для обучения моделей YOLO для оценки позы, выглядит следующим образом:
- Один текстовый файл на изображение: каждое изображение в наборе данных имеет соответствующий текстовый файл с тем же именем, что и файл изображения, и расширением ".txt".
- Одна строка на объект: каждая строка в текстовом файле соответствует одному экземпляру объекта на изображении.
- Информация об объекте в строке: каждая строка содержит следующую информацию об экземпляре объекта:
- Индекс класса объекта: целое число, представляющее класс объекта (например, 0 для человека, 1 для автомобиля и т. д.).
- Координаты центра объекта: x и y координаты центра объекта, нормализованные в диапазоне от 0 до 1.
- Ширина и высота объекта: ширина и высота объекта, нормализованные в диапазоне от 0 до 1.
- Координаты ключевых точек объекта: ключевые точки объекта, нормализованные в диапазоне от 0 до 1.
Вот пример формата меток для задачи оценки позы:
Формат с 2D ключевыми точками
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>
Формат с 3D ключевыми точками (включает видимость для каждой точки)
<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> <pxn> <pyn> <pn-visibility>
В этом формате <class-index> — это индекс класса объекта, <x> <y> <width> <height> — нормализованные координаты bounding box, а <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
# Keypoint names per class
kpt_names:
0:
- nose
- left_eye
- right_eye
- left_ear
- right_ear
- left_shoulder
- right_shoulder
- left_elbow
- right_elbow
- left_wrist
- right_wrist
- left_hip
- right_hip
- left_knee
- right_knee
- left_ankle
- right_ankle
# 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("yolo26n-pose.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8-pose.yaml", 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 идеально подходит для быстрой проверки и CI проверок.
- Подробнее о COCO8-Pose
Dog-Pose
- Описание: Набор данных Dog-Pose содержит 6773 изображения для обучения и 1703 для теста, предоставляя разнообразный и обширный ресурс для оценки ключевых точек собак.
- Формат меток: Соответствует формату Ultralytics YOLO с аннотациями для нескольких ключевых точек, специфичных для анатомии собаки.
- Количество классов: 1 (Собака).
- Ключевые точки: Включает 24 ключевые точки, адаптированные к позам собак, такие как конечности, суставы и положения головы.
- Использование: Идеально подходит для обучения моделей оценки позы собаки в различных сценариях, от исследований до реальных приложений.
- Подробнее о Dog-Pose
Hand Keypoints
- Описание: Набор данных с ключевыми точками рук содержит почти 26 тысяч изображений: 18 776 для обучения и 7992 для валидации.
- Формат меток: Аналогичен формату Ultralytics YOLO, описанному выше, но с 21 ключевой точкой для кисти руки человека и измерением видимости.
- Количество классов: 1 (Рука).
- Ключевые точки: 21 ключевая точка.
- Использование: Отлично подходит для оценки позы кисти руки человека и распознавания жестов.
- Подробнее о Hand Keypoints
Tiger-Pose
- Описание: Набор данных Ultralytics Tiger-Pose состоит из 263 изображений, полученных из видео на YouTube: 210 изображений для обучения и 53 для валидации.
- Формат меток: Аналогичен формату Ultralytics YOLO, описанному выше, с 12 ключевыми точками для позы животного и без измерения видимости.
- Количество классов: 1 (Тигр).
- Ключевые точки: 12 ключевых точек.
- Использование: Отлично подходит для позы животных или любой другой позы, не связанной с человеком.
- Подробнее о Tiger-Pose
Добавление собственного набора данных
Если у тебя есть собственный набор данных и ты хочешь использовать его для обучения моделей оценки позы с форматом Ultralytics YOLO, убедись, что он соответствует формату, указанному выше в разделе "Ultralytics YOLO format". Преобразуй свои аннотации в требуемый формат и укажи пути, количество классов и названия классов в 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 определяет, нужно ли включать ключевые точки (для оценки позы) в преобразованные метки.
Часто задаваемые вопросы (FAQ)
Что такое формат Ultralytics YOLO для оценки позы?
Формат Ultralytics YOLO для наборов данных оценки позы предполагает наличие текстового файла для каждого изображения. Каждая строка текстового файла хранит информацию об экземпляре объекта:
- Индекс класса объекта
- Координаты центра объекта (нормализованные x и y)
- Ширина и высота объекта (нормализованные)
- Координаты ключевых точек объекта (нормализованные pxn и pyn)
Для 2D поз ключевые точки включают координаты пикселей. Для 3D каждая ключевая точка также имеет флаг видимости. Для получения подробной информации см. Ultralytics YOLO format.
Как использовать набор данных COCO-Pose с Ultralytics YOLO?
Чтобы использовать набор данных COCO-Pose с Ultralytics YOLO:
-
Скачай набор данных и подготовь файлы меток в формате YOLO.
-
Создай YAML-файл конфигурации, указав пути к обучающим и валидационным изображениям, форму ключевых точек и названия классов.
-
Используй файл конфигурации для обучения:
from ultralytics import YOLO model = YOLO("yolo26n-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("yolo26n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Для выполнения всех шагов ознакомься с разделом Adding your own dataset.
Какова цель 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
# Keypoint names per class
kpt_names:
0:
- nose
- left_eye
- right_eye
- left_ear
- right_ear
- left_shoulder
- right_shoulder
- left_elbow
- right_elbow
- left_wrist
- right_wrist
- left_hip
- right_hip
- left_knee
- right_knee
- left_ankle
- right_ankle
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zipПодробнее о создании YAML-файлов конфигурации читай в разделе Dataset YAML format.
Как преобразовать метки набора данных 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. Подробности см. в разделе Conversion Tool и в руководстве по предобработке данных.