Link to this sectionОбзор наборов данных для оценки позы#
Link to this sectionПоддерживаемые форматы наборов данных#
Link to this sectionФормат 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>
Формат с видимостью ключевых точек (включает видимость для каждой точки)
<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> — это нормализованные координаты ключевых точек. Канал видимости является необязательным, но полезен для наборов данных, в которых аннотируется окклюзия.
Link to this sectionФормат 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, и не меняй другие, такие как нос в этом примере).
Link to this sectionИспользование#
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)Link to this sectionПоддерживаемые наборы данных#
В этом разделе описаны наборы данных, которые совместимы с форматом Ultralytics YOLO и могут быть использованы для обучения моделей оценки позы:
Link to this sectionCOCO-Pose#
- Описание: COCO-Pose — это крупномасштабный набор данных для обнаружения объектов, сегментации и оценки позы. Это подмножество популярного набора данных COCO, сфокусированное на оценке позы человека. COCO-Pose включает несколько ключевых точек для каждого экземпляра человека.
- Формат меток: Такой же, как формат Ultralytics YOLO, описанный выше, с ключевыми точками для поз человека.
- Количество классов: 1 (Человек).
- Ключевые точки: 17 ключевых точек, включая нос, глаза, уши, плечи, локти, запястья, бедра, колени и лодыжки.
- Использование: Подходит для обучения моделей оценки позы человека.
- Дополнительные примечания: Набор данных богат и разнообразен, содержит более 200 тыс. размеченных изображений.
- Узнай больше о COCO-Pose
Link to this sectionCOCO8-Pose#
- Описание: Ultralytics COCO8-Pose — это небольшой, но универсальный набор данных для обнаружения позы, состоящий из первых 8 изображений набора COCO train 2017: 4 для обучения и 4 для валидации.
- Формат меток: Такой же, как формат Ultralytics YOLO, описанный выше, с ключевыми точками для поз человека.
- Количество классов: 1 (Человек).
- Ключевые точки: 17 ключевых точек, включая нос, глаза, уши, плечи, локти, запястья, бедра, колени и лодыжки.
- Использование: Подходит для тестирования и отладки моделей обнаружения объектов или для экспериментов с новыми подходами к обнаружению.
- Дополнительные примечания: COCO8-Pose идеально подходит для проверок работоспособности и CI-тестов.
- Узнай больше о COCO8-Pose
Link to this sectionDog-Pose#
- Описание: Набор данных Dog-Pose содержит 6773 обучающих и 1703 тестовых изображения, предоставляя разнообразный и обширный ресурс для оценки ключевых точек собак.
- Формат меток: Следует формату Ultralytics YOLO с аннотациями для нескольких ключевых точек, специфичных для анатомии собаки.
- Количество классов: 1 (Собака).
- Ключевые точки: Включает 24 ключевые точки, адаптированные для поз собак, такие как конечности, суставы и положения головы.
- Использование: Идеально подходит для обучения моделей оценки позы собак в различных сценариях, от исследований до реальных приложений.
- Узнай больше о Dog-Pose
Link to this sectionHand Keypoints#
- Описание: Набор данных для ключевых точек рук состоит из почти 26 тыс. изображений, из которых 18 776 выделено для обучения и 7992 для валидации.
- Формат меток: Такой же, как формат Ultralytics YOLO, описанный выше, но с 21 ключевой точкой для человеческой руки и параметром видимости.
- Количество классов: 1 (Рука).
- Ключевые точки: 21 ключевая точка.
- Использование: Отлично подходит для оценки позы человеческой руки и распознавания жестов.
- Узнай больше о Hand Keypoints
Link to this sectionTiger-Pose#
- Описание: Набор данных Tiger Pose от Ultralytics состоит из 263 изображений, полученных из видео на YouTube, из которых 210 изображений выделено для обучения, а 53 — для валидации.
- Формат меток: Такой же, как формат Ultralytics YOLO, описанный выше, с 12 ключевыми точками для позы животного и без параметра видимости.
- Количество классов: 1 (Тигр).
- Ключевые точки: 12 ключевых точек.
- Использование: Отлично подходит для позы животного или любой другой позы, не основанной на человеке.
- Узнай больше о Tiger-Pose
Link to this sectionДобавление собственного набора данных#
Если у тебя есть собственный набор данных, и ты хочешь использовать его для обучения моделей оценки позы в формате Ultralytics YOLO, убедись, что он соответствует формату, указанному выше в разделе «Формат Ultralytics YOLO». Преобразуй свои аннотации в требуемый формат и укажи пути, количество классов и имена классов в файле конфигурации YAML.
Link to this sectionИнструмент преобразования#
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 указывает, следует ли включать ключевые точки (для оценки позы) в преобразованные метки.
Link to this sectionFAQ#
Link to this sectionЧто такое формат Ultralytics YOLO для оценки позы?#
Формат Ultralytics YOLO для наборов данных оценки позы предполагает наличие текстового файла для каждого изображения. Каждая строка текстового файла содержит информацию об экземпляре объекта:
- Индекс класса объекта
- Координаты центра объекта (нормализованные x и y)
- Ширина и высота объекта (нормализованные)
- Координаты ключевых точек объекта (нормализованные pxn и pyn)
Для 2D-поз ключевые точки включают нормализованные координаты x и y. При наличии параметра видимости, у каждой ключевой точки также есть флаг видимости. Для получения дополнительной информации см. Формат Ultralytics YOLO.
Link to this sectionКак использовать набор данных 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 и обучение.
Link to this sectionКак я могу добавить собственный набор данных для оценки позы в 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)Полные шаги см. в разделе Добавление собственного набора данных.
Link to this sectionКакова цель файла 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 читай в разделе Формат YAML набора данных.
Link to this sectionКак преобразовать метки набора данных 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. Подробности см. в разделе Инструмент преобразования и в руководстве по предварительной обработке данных.