Оценка позы с Ultralytics YOLO#
Оценка позы — это задача, которая заключается в определении положения определённых точек на изображении, обычно называемых ключевыми точками. Ключевые точки могут обозначать различные части объекта, например суставы, ориентиры или другие характерные признаки. Положения ключевых точек обычно представляются в виде набора двумерных координат [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 ключевых точек, каждая из которых соответствует отдельной части человеческого тела. Ниже приведено соответствие каждого индекса суставу тела:
- Нос
- Левый глаз
- Правый глаз
- Левое ухо
- Правое ухо
- Левое плечо
- Правое плечо
- Левый локоть
- Правый локоть
- Левое запястье
- Правое запястье
- Левое бедро
- Правое бедро
- Левое колено
- Правое колено
- Левая лодыжка
- Правая лодыжка
Модели#
Здесь представлены предварительно обученные модели 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-pose | 640 | 57.2 | 83.3 | 40.3 ± 0.5 | 1.8 ± 0.0 | 2.9 | 7.6 |
| YOLO26s-pose | 640 | 63.0 | 86.6 | 85.3 ± 0.9 | 2.7 ± 0.0 | 10.4 | 24.1 |
| YOLO26m-pose | 640 | 68.8 | 89.6 | 218.0 ± 1.5 | 5.0 ± 0.1 | 21.5 | 73.3 |
| YOLO26l-pose | 640 | 70.4 | 90.5 | 275.4 ± 2.4 | 6.5 ± 0.1 | 25.9 | 91.7 |
| YOLO26x-pose | 640 | 71.6 | 91.6 | 565.4 ± 3.0 | 12.2 ± 0.2 | 57.6 | 202.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 FNPredict#
Используй обученную модель 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.keypoints | Keypoints | (N) | Ключевые точки. |
result.keypoints.data | torch.float32 | (N,K,2/3) | x,y плюс необязательные данные о видимости/уверенности. |
result.keypoints.xy | torch.float32 | (N,K,2) | Ключевые точки в пикселях. |
result.keypoints.xyn | torch.float32 | (N,K,2) | Нормализованные ключевые точки. |
result.boxes | Boxes | (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 | ✅ | - |
| TorchScript | torchscript | yolo26n-pose.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-pose.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-pose_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-pose.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-pose.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-pose_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-pose.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-pose_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-pose_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-pose.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n-pose_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-pose_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-pose_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n-pose_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-pose_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-pose_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-pose_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n-pose.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n-pose_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n-pose_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n-pose.aimodel | ✅ | imgsz, 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. Полный список и сведения о производительности см. в разделе моделей.