Оценка позы с Ultralytics YOLO#
Оценка позы — это задача, в которой определяется расположение конкретных точек на изображении, обычно называемых ключевыми точками. Ключевые точки могут обозначать различные части объекта, например суставы, ориентиры или другие характерные признаки. Их расположение обычно задаётся набором 2D-координат [x, y], при необходимости с флагом видимости [x, y, visible].
Модель оценки позы выдаёт набор точек, обозначающих ключевые точки объекта на изображении, обычно вместе с оценками достоверности для каждой точки. Оценка позы подходит, когда нужно определить конкретные части объекта в сцене и их расположение относительно друг друга.
Смотри: Как выполнять оценку позы в реальном времени с Ultralytics YOLO26 | Трекинг и извлечение ключевых точек 🕺
В моделях YOLO26 Pose используется суффикс -pose, например yolo26n-pose.pt; они предобучены на ключевых точках COCO.
Модели#
Ниже представлены модели YOLO26 Pose, предобученные на наборе данных ключевых точек COCO.
Модели автоматически загружаются из последнего релиза Ultralytics при первом использовании.
| Модель | размер (пиксели) | mAPпоза 50-95(e2e) | mAPпоза 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 pose val data=coco-pose.yaml device=0 nms=False - Скорость рассчитана как среднее значение по изображениям COCO val: ONNX на CPU и TensorRT10 на GPU NVIDIA T4.
Воспроизведи результаты с помощьюyolo pose val data=coco-pose.yaml batch=1 device=0|cpu nms=False. - Значения Params и FLOPs указаны для объединённых моделей после свёртки Conv/BatchNorm и удаления неиспользуемой ветви обнаружения. Предварительно обученные контрольные точки сохраняют полную архитектуру обучения, поэтому их показатели могут быть выше.
Предварительные результаты по ключевым точкам COCO см. в предварительной версии YOLO27, ещё не выпущенной.
Обучение#
Обучай YOLO26n-pose на наборе данных COCO8-pose в течение 100 эпох с размером изображения 640. Полный список доступных аргументов см. на странице Конфигурация.
from ultralytics import YOLO
# Загрузить модель
model = YOLO("yolo26n-pose.yaml") # создать новую модель из YAML
model = YOLO("yolo26n-pose.pt") # загрузить предварительно обученную модель (рекомендуется для обучения)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-pose.pt") # создать модель из YAML и перенести веса
# Обучить модель
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)Полное описание режима train см. на странице Обучение. Модели оценки позы также можно обучать с помощью облачного обучения на платформе Ultralytics.
Формат датасета#
Подробное описание формата наборов данных YOLO для оценки позы см. в руководстве по наборам данных. Чтобы преобразовать существующий набор данных JSON с ключевыми точками COCO в формат YOLO, используй встроенную функцию convert_coco с use_keypoints=True, как описано в руководстве по преобразованию COCO в YOLO. В инструменте аннотирования платформы Ultralytics также поддерживаются метки позы и встроенные шаблоны скелетов для человека, кисти, лица и пользовательских схем ключевых точек.
Для пользовательских задач оценки позы также можно изучить специализированные наборы данных: Tiger-Pose для оценки позы животных, Hand Keypoints для отслеживания кистей или Dog-Pose для анализа позы собак.
Валидация#
Проверь точность обученной модели YOLO26n-pose. Аргументы не нужны, так как model хранит использованные при обучении data и аргументы в атрибутах модели: path/to/best.pt из примера обучения выполняет валидацию на COCO8-pose. В официальных весах указан путь к набору данных для обучения, которого нет на твоём компьютере, поэтому при выводе предупреждения используется значение по умолчанию для задачи coco8-pose.yaml. Чтобы выполнить валидацию на другом наборе данных, укажи data.
from ultralytics import YOLO
# Загрузить модель
model = YOLO("yolo26n-pose.pt") # загрузить официальную модель
model = YOLO("path/to/best.pt") # загрузить пользовательскую модель
# Валидировать модель
metrics = model.val() # аргументы не нужны, набор данных и настройки сохранены
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # список значений mAP50-95 для каждой категории
metrics.box.image_metrics # словарь метрик для каждого изображения: точность, полнота, F1, TP, FP и FN для рамки
metrics.pose.map # map50-95(P)
metrics.pose.map50 # map50(P)
metrics.pose.map75 # map75(P)
metrics.pose.maps # список, содержащий mAP50-95(P) для каждой категории
metrics.pose.image_metrics # словарь метрик для каждого изображения: точность, полнота, F1, TP, FP и FN для позыПредсказание#
Используй обученную модель YOLO26n-pose, чтобы запускать предсказания для изображений.
from ultralytics import YOLO
# Загрузить модель
model = YOLO("yolo26n-pose.pt") # загрузить официальную модель
model = YOLO("path/to/best.pt") # загрузить пользовательскую модель
# Получи предсказания с помощью модели
results = model("https://ultralytics.com/images/bus.jpg") # получи предсказание для изображения
# Обратись к результатам
for result in results:
xy = result.keypoints.xy # координаты x и y
xyn = result.keypoints.xyn # normalized
kpts = result.keypoints.data # x, y, видимость (если доступна)Полное описание режима 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, специфичных для каждой задачи, см. в разделе Результаты предсказаний по задачам.
Карта индексов ключевых точек#
Стандартные модели YOLO26 Pose предсказывают 17 ключевых точек COCO, поэтому индекс k в result.keypoints.xy[:, k] соответствует:
- Нос
- Левый глаз
- Правый глаз
- Левое ухо
- Правое ухо
- Левое плечо
- Правое плечо
- Левый локоть
- Правый локоть
- Левое запястье
- Правое запястье
- Левое бедро
- Правое бедро
- Левое колено
- Правое колено
- Левая лодыжка
- Правая лодыжка
Экспорт#
Экспортируй модель YOLO26n-pose в другой формат, например ONNX, CoreML и т. д.
from ultralytics import YOLO
# Загрузить модель
model = YOLO("yolo26n-pose.pt") # загрузить официальную модель
model = YOLO("path/to/best.pt") # загрузить пользовательскую модель
# Экспортировать модель
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 |
| Apple Core AI | coreai | yolo26n-pose.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n-pose_saved_model/ | ✅ | imgsz, 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 |
| LiteRT | litert | yolo26n-pose.tflite | ✅ | imgsz, quantize, batch, 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 |
| Hailo | hailo | yolo26n-pose_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n-pose_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n-pose_xilinx_model/ | ✅ | imgsz, name, quantize, data, fraction, opset, simplify, device |
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 # Загрузить модель model = YOLO("yolo26n-pose.yaml") # создать новую модель из YAML model = YOLO("yolo26n-pose.pt") # загрузить предварительно обученную модель (рекомендуется для обучения) # Обучить модель results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Подробные сведения об обучении см. в разделе «Обучение». Для обучения пользовательских моделей оценки позы без написания кода можно также воспользоваться облачным обучением на платформе Ultralytics.
Валидация модели YOLO26-pose позволяет оценить её точность с использованием параметров набора данных, сохранённых при обучении. Пример:
Примерfrom ultralytics import YOLO # Загрузить модель model = YOLO("yolo26n-pose.pt") # загрузить официальную модель model = YOLO("path/to/best.pt") # загрузить пользовательскую модель # Валидировать модель metrics = model.val() # аргументы не нужны, набор данных и настройки сохраненыПодробнее см. в разделе «Валидация».
Да, ты можешь экспортировать модель YOLO26-pose в различные форматы, например ONNX, CoreML, TensorRT и другие. Для этого можно использовать Python или интерфейс командной строки (CLI).
Примерfrom ultralytics import YOLO # Загрузить модель model = YOLO("yolo26n-pose.pt") # загрузить официальную модель model = YOLO("path/to/best.pt") # загрузить пользовательскую модель # Экспортировать модель model.export(format="onnx")Подробнее см. в разделе «Экспорт». Экспортированные модели можно развернуть на периферийных устройствах для приложений реального времени, например для отслеживания физической активности, анализа спортивных состязаний или робототехники.
Ultralytics YOLO26 предлагает различные предобученные модели оценки позы, например YOLO26n-pose, YOLO26s-pose, YOLO26m-pose и другие. Модели различаются размером, точностью (mAP) и скоростью. Полный список с показателями mAP по ключевым точкам COCO, скоростью, количеством параметров и FLOPs для каждой модели см. в разделе Модели.