Оценка позы

YOLO pose estimation with human body keypoint detection

Оценка позы — это задача, которая включает определение местоположения конкретных точек на изображении, обычно называемых ключевыми точками. Ключевые точки могут представлять различные части объекта, такие как суставы, ориентиры или другие характерные особенности. Расположение ключевых точек обычно представляется в виде набора 2D-координат [x, y] или 3D-координат [x, y, visible].

Результатом работы модели оценки позы является набор точек, представляющих ключевые точки на объекте на изображении, обычно вместе с показателями достоверности для каждой точки. Оценка позы — это хороший выбор, если тебе нужно идентифицировать определенные части объекта на сцене и их расположение относительно друг друга.



Watch: How to Run Real-Time Pose Estimation with Ultralytics YOLO26 | Tracking & Keypoints Extraction 🕺
Совет

Модели YOLO26 pose используют суффикс -pose, например, yolo26n-pose.pt. Эти модели обучены на наборе данных COCO keypoints и подходят для множества задач оценки позы.

В стандартной модели YOLO26 pose содержится 17 ключевых точек, каждая из которых представляет отдельную часть человеческого тела. Ниже представлено сопоставление каждого индекса с соответствующим суставом тела:

  1. Нос
  2. Левый глаз
  3. Правый глаз
  4. Левое ухо
  5. Правое ухо
  6. Левое плечо
  7. Правое плечо
  8. Левый локоть
  9. Правый локоть
  10. Левое запястье
  11. Правое запястье
  12. Левое бедро
  13. Правое бедро
  14. Левое колено
  15. Правое колено
  16. Левая лодыжка
  17. Правая лодыжка

Модели

Здесь представлены предобученные модели Pose от Ultralytics YOLO26. Модели Detect, Segment и Pose предобучены на наборе данных COCO, в то время как модели Classify предобучены на наборе данных ImageNet.

Модели автоматически загружаются из последнего релиза Ultralytics при первом использовании.

Модельразмер
(пиксели)
mAPpose
50-95(e2e)
mAPpose
50(e2e)
Скорость
CPU ONNX
(мс)
Скорость
T4 TensorRT10
(мс)
параметры
(М)
FLOPs
(Б)
YOLO26n-pose64057.283.340.3 ± 0.51.8 ± 0.02.97.5
YOLO26s-pose64063.086.685.3 ± 0.92.7 ± 0.010.423.9
YOLO26m-pose64068.889.6218.0 ± 1.55.0 ± 0.121.573.1
YOLO26l-pose64070.490.5275.4 ± 2.46.5 ± 0.125.991.3
YOLO26x-pose64071.691.6565.4 ± 3.012.2 ± 0.257.6201.7
  • mAPval значения указаны для одномодельного одномасштабного режима на наборе данных COCO Keypoints val2017.
    Воспроизведи с помощью yolo val pose data=coco-pose.yaml device=0
  • Скорость усреднена по изображениям COCO val с использованием инстанса Amazon EC2 P4d.
    Воспроизведи с помощью yolo val pose data=coco-pose.yaml batch=1 device=0|cpu
  • Значения Params и FLOPs указаны для объединенной (fused) модели после model.fuse(), которая объединяет слои Conv и BatchNorm и, для моделей end2end, удаляет вспомогательную «один-ко-многим» голову детекции. Предварительно обученные чекпоинты сохраняют полную архитектуру обучения и могут показывать более высокие значения.

Обучение (Train)

Обучи модель YOLO26-pose на наборе данных COCO8-pose. Набор данных COCO8-pose — это небольшой пример набора данных, который идеально подходит для тестирования и отладки твоих моделей оценки позы.

Пример
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.yaml")  # build a new model from YAML
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-pose.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

Полную информацию о режиме train смотри на странице Train. Модели Pose также можно обучать на облачных GPU через Ultralytics Platform.

Формат набора данных

Формат набора данных YOLO pose подробно описан в Руководстве по наборам данных. Чтобы конвертировать существующий набор данных из других форматов (например, COCO и др.) в формат YOLO, пожалуйста, используй инструмент JSON2YOLO от Ultralytics. Ultralytics Platform также поддерживает аннотирование поз с помощью встроенных шаблонов скелетов для людей, рук, лиц и пользовательских макетов ключевых точек.

Для пользовательских задач оценки позы ты также можешь изучить специализированные наборы данных, такие как Tiger-Pose для оценки позы животных, Hand Keypoints для отслеживания рук или Dog-Pose для анализа поз собак.

Валидация (Val)

Проверь точность обученной модели YOLO26n-pose на наборе данных COCO8-pose. Аргументы не требуются, так как model сохраняет свои обучающие data и аргументы в качестве атрибутов модели.

Пример
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # a list containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary for box with precision, recall, F1, TP, FP, and FN
metrics.pose.map  # map50-95(P)
metrics.pose.map50  # map50(P)
metrics.pose.map75  # map75(P)
metrics.pose.maps  # a list containing mAP50-95(P) for each category
metrics.pose.image_metrics  # per-image metrics dictionary for pose with precision, recall, F1, TP, FP, and FN

Прогнозирование

Используй обученную модель YOLO26n-pose для запуска предсказаний на изображениях. Режим predict позволяет выполнять инференс на изображениях, видео или потоках в реальном времени.

Пример
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    xy = result.keypoints.xy  # x and y coordinates
    xyn = result.keypoints.xyn  # normalized
    kpts = result.keypoints.data  # x, y, visibility (if available)

Полные детали режима predict смотри на странице Предсказание.

Экспорт (Export)

Экспортируй модель YOLO26n Pose в другой формат, такой как ONNX, CoreML и т. д. Это позволит тебе развернуть модель на различных платформах и устройствах для инференса в реальном времени.

Пример
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

Доступные форматы экспорта для YOLO26-pose приведены в таблице ниже. Ты можешь экспортировать в любой формат, используя аргумент format, например, format='onnx' или format='engine'. Ты можешь предсказывать или проверять напрямую на экспортированных моделях, например, yolo predict model=yolo26n-pose.onnx. Примеры использования показаны для твоей модели после завершения экспорта.

ФорматАргумент formatМодельМетаданныеАргументы
PyTorch-yolo26n-pose.pt-
TorchScripttorchscriptyolo26n-pose.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-pose.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-pose_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-pose.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-pose.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-pose_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-pose.pbimgsz, batch, device
TF Litetfliteyolo26n-pose.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-pose_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-pose_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-pose_paddle_model/imgsz, batch, device
MNNmnnyolo26n-pose.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-pose_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-pose_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-pose_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-pose_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-pose_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-pose_deepx_model/imgsz, int8, data, optimize, device

Смотри полные сведения об export на странице Экспорт.

Часто задаваемые вопросы (FAQ)

Что такое оценка позы с помощью Ultralytics YOLO26 и как это работает?

Оценка позы с помощью Ultralytics YOLO26 включает идентификацию конкретных точек, известных как ключевые точки, на изображении. Эти ключевые точки обычно представляют суставы или другие важные особенности объекта. Результат включает [x, y] координаты и показатели достоверности для каждой точки. Модели YOLO26-pose специально разработаны для этой задачи и используют суффикс -pose, например, yolo26n-pose.pt. Эти модели предобучены на таких наборах данных, как COCO keypoints, и могут использоваться для различных задач оценки позы. Для получения дополнительной информации посети страницу оценки позы.

Как я могу обучить модель YOLO26-pose на пользовательском наборе данных?

Обучение модели YOLO26-pose на пользовательском наборе данных включает загрузку модели: либо новой модели, определенной YAML-файлом, либо предобученной модели. Затем ты можешь начать процесс обучения, используя указанный тобой набор данных и параметры.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.yaml")  # build a new model from YAML
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

Для получения подробной информации об обучении обратись к разделу Train. Ты также можешь использовать Ultralytics Platform для no-code подхода к обучению пользовательских моделей оценки позы.

Как мне проверить (валидировать) обученную модель YOLO26-pose?

Валидация модели YOLO26-pose включает оценку ее точности с использованием тех же параметров набора данных, которые были сохранены во время обучения. Вот пример:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered

Для получения дополнительной информации посети раздел Val.

Могу ли я экспортировать модель YOLO26-pose в другие форматы и как?

Да, ты можешь экспортировать модель YOLO26-pose в различные форматы, такие как ONNX, CoreML, TensorRT и другие. Это можно сделать с помощью Python или интерфейса командной строки (CLI).

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

Обратись к разделу Export для получения подробностей. Экспортированные модели можно развернуть на граничных устройствах для приложений реального времени, таких как отслеживание фитнеса, спортивный анализ или робототехника.

Какие существуют модели Ultralytics YOLO26-pose и каковы их показатели производительности?

Ultralytics YOLO26 предлагает различные предобученные модели pose, такие как YOLO26n-pose, YOLO26s-pose, YOLO26m-pose и другие. Эти модели различаются по размеру, точности (mAP) и скорости. Например, модель YOLO26n-pose достигает mAPpose50-95 в 50.0 и mAPpose50 в 81.0. Полный список и подробности производительности можно найти в разделе Models.

Комментарии