Ultralytics YOLO27:

Оценка позы с Ultralytics YOLO#

Ultralytics YOLO pose estimation with human body keypoint detection

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

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



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

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

В стандартной модели позы YOLO26 используется 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, модели Semantic — на Cityscapes, а модели Classify — на наборе данных ImageNet.

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

Модельразмер
(пиксели)
mAPpose
50-95(e2e)
mAPpose
50(e2e)
Скорость
CPU ONNX
(мс)
Скорость
T4 TensorRT10
(мс)
параметры
(M)
FLOPs
(B)
YOLO26n-pose64057.283.340.3 ± 0.51.8 ± 0.02.97.6
YOLO26s-pose64063.086.685.3 ± 0.92.7 ± 0.010.424.1
YOLO26m-pose64068.889.6218.0 ± 1.55.0 ± 0.121.573.3
YOLO26l-pose64070.490.5275.4 ± 2.46.5 ± 0.125.991.7
YOLO26x-pose64071.691.6565.4 ± 3.012.2 ± 0.257.6202.3
  • Значения mAPval указаны для одной модели с одним масштабом на наборе данных COCO Keypoints val2017.
    Воспроизвести можно с помощью yolo val pose data=coco-pose.yaml device=0 nms=False
  • Значение скорости усреднено по изображениям COCO val с использованием экземпляра Amazon EC2 P4d.
    Воспроизвести можно с помощью yolo val pose data=coco-pose.yaml batch=1 device=0|cpu nms=False
  • Значения Params и FLOPs приводятся для слитных моделей после свертки/пакетной нормализации (Conv/BatchNorm folding) и удаления неиспользуемой ветки детекции. Предварительно обученные контрольные точки сохраняют полную архитектуру обучения и могут показывать большие значения.

Смотри предварительный просмотр невыпущенного YOLO27 для получения предварительных результатов по ключевым точкам COCO.

Обучение#

Обучи модель 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 смотри на странице Обучение. Модели позы также можно обучать с помощью облачного обучения на платформе Ultralytics.

Формат датасета#

Формат датасета для оценки позы YOLO подробно описан в Dataset Guide. Чтобы конвертировать существующий датасет в формате JSON COCO keypoints в формат YOLO, используй встроенную функцию convert_coco с use_keypoints=True, как описано в COCO to YOLO guide. Разметка платформы Ultralytics также поддерживает разметку поз со встроенными шаблонами скелетов для людей, рук, лиц и пользовательских ключевых точек.

Для пользовательских задач оценки позы можно также изучить специализированные наборы данных, например 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

Predict#

Используй обученную модель 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 см. на странице Predict.

Выходные данные результатов#

Оценка позы возвращает по одному объекту Results для каждого изображения. Основные поля предсказания — result.keypoints для координат позы и result.boxes для обнаруженных экземпляров, которым принадлежат эти ключевые точки.

АтрибутТипФормаОписание
result.keypointsKeypoints(N)Ключевые точки.
result.keypoints.datatorch.float32(N,K,2/3)x,y плюс необязательные данные о видимости/уверенности.
result.keypoints.xytorch.float32(N,K,2)Ключевые точки в пикселях.
result.keypoints.xyntorch.float32(N,K,2)Нормализованные ключевые точки.
result.boxesBoxes(N)Области экземпляров.

Описание специфичных для задач полей Results для всех задач см. в разделе Результаты предсказаний по задачам.

Экспорт#

Экспортируй модель 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, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-pose.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-pose_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-pose.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-pose.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-pose_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-pose.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-pose_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-pose_paddle_model/imgsz, batch, device
MNNmnnyolo26n-pose.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-pose_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-pose_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-pose_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-pose_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-pose_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-pose_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-pose_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-pose.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-pose_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-pose_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms
Apple Core AIcoreaiyolo26n-pose.aimodelimgsz, batch, quantize

nms=None по умолчанию выдает сырые результаты для внешнего NMS. Установи nms=False, чтобы выбрать доступный головной модуль без NMS; неподдерживаемые форматы возвращаются к своему родному пути вывода. Записи nms выше определяют форматы, которые могут встраивать NMS с помощью nms=True.

Полное описание export см. на странице Экспорт.

Часто задаваемые вопросы#

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

  • Обучение модели 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)

    Подробные сведения об обучении см. в разделе обучения. Для обучения пользовательских моделей оценки позы без написания кода также можно использовать облачное обучение на платформе Ultralytics.

  • Проверка модели 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

    Дополнительную информацию см. в разделе проверки.

  • Да, модель 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")

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

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

Комментарии