You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

15 KiB

comments description
true Узнайте, как использовать Ultralytics YOLOv8 для задач оценки позы. Найдите предварительно обученные модели, узнайте, как обучать, проверять, предсказывать и экспортировать свои собственные.

Оценка позы

Примеры оценки позы

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

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

Смотрите: Оценка позы с Ultralytics YOLOv8.

!!! Tip "Совет"

Модели _pose_ YOLOv8 используют суффикс `-pose`, т.е. `yolov8n-pose.pt`. Эти модели обучены на наборе данных [COCO keypoints](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco-pose.yaml) и подходят для различных задач оценки позы.

Модели

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

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

Модель размер
(пиксели)
mAPpose
50-95
mAPpose
50
Скорость
CPU ONNX
(мс)
Скорость
A100 TensorRT
(мс)
параметры
(М)
FLOPs
(Б)
YOLOv8n-pose 640 50.4 80.1 131.8 1.18 3.3 9.2
YOLOv8s-pose 640 60.0 86.2 233.2 1.42 11.6 30.2
YOLOv8m-pose 640 65.0 88.8 456.3 2.00 26.4 81.0
YOLOv8l-pose 640 67.6 90.0 784.5 2.59 44.4 168.6
YOLOv8x-pose 640 69.2 90.2 1607.1 3.73 69.4 263.2
YOLOv8x-pose-p6 1280 71.6 91.2 4088.7 10.04 99.1 1066.4
  • mAPval значения для одной модели одиночного масштаба на наборе данных COCO Keypoints val2017.
    Воспроизводится с помощью: yolo val pose data=coco-pose.yaml device=0
  • Скорость усреднена по изображениям COCO val на Amazon EC2 P4d инстансе.
    Воспроизводится с помощью: yolo val pose data=coco8-pose.yaml batch=1 device=0|cpu

Обучение

Обучите модель YOLOv8-pose на наборе данных COCO128-pose.

!!! Example "Пример"

=== "Python"

    ```python
    from ultralytics import YOLO

    # Загрузить модель
    model = YOLO('yolov8n-pose.yaml')  # создать новую модель из YAML
    model = YOLO('yolov8n-pose.pt')  # загрузить предварительно обученную модель (рекомендуется для обучения)
    model = YOLO('yolov8n-pose.yaml').load('yolov8n-pose.pt')  # создать из YAML и перенести веса

    # Обучить модель
    results = model.train(data='coco8-pose.yaml', epochs=100, imgsz=640)
    ```
=== "CLI"

    ```bash
    # Создать новую модель из YAML и начать обучение с нуля
    yolo pose train data=coco8-pose.yaml model=yolov8n-pose.yaml epochs=100 imgsz=640

    # Начать обучение с предварительно обученной модели *.pt
    yolo pose train data=coco8-pose.yaml model=yolov8n-pose.pt epochs=100 imgsz=640

    # Создать новую модель из YAML, перенести предварительно обученные веса и начать обучение
    yolo pose train data=coco8-pose.yaml model=yolov8n-pose.yaml pretrained=yolov8n-pose.pt epochs=100 imgsz=640
    ```

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

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

Проверка

Проверьте точность обученной модели YOLOv8n-pose на наборе данных COCO128-pose. Аргументы не нужны, так как model запоминает свои data и аргументы как атрибуты модели.

!!! Example "Пример"

=== "Python"

    ```python
    from ultralytics import YOLO

    # Загрузить модель
    model = YOLO('yolov8n-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 для каждой категории
    ```
=== "CLI"

    ```bash
    yolo pose val model=yolov8n-pose.pt  # проверить официальную модель
    yolo pose val model=path/to/best.pt  # проверить свою модель
    ```

Предсказание

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

!!! Example "Пример"

=== "Python"

    ```python
    from ultralytics import YOLO

    # Загрузить модель
    model = YOLO('yolov8n-pose.pt')  # загрузить официальную модель
    model = YOLO('path/to/best.pt')  # загрузить свою модель

    # Сделать предсказание моделью
    results = model('https://ultralytics.com/images/bus.jpg')  # предсказать по изображению
    ```
=== "CLI"

    ```bash
    yolo pose predict model=yolov8n-pose.pt source='https://ultralytics.com/images/bus.jpg'  # предсказать официальной моделью
    yolo pose predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg'  # предсказать своей моделью
    ```

Полные детали работы в режиме predict смотрите на странице Predict.

Экспорт

Экспортируйте модель YOLOv8n Pose в другой формат, такой как ONNX, CoreML и т.д.

!!! Example "Пример"

=== "Python"

    ```python
    from ultralytics import YOLO

    # Загрузить модель
    model = YOLO('yolov8n-pose.pt')  # загрузить официальную модель
    model = YOLO('path/to/best.pt')  # загрузить свою обученную модель

    # Экспортировать модель
    model.export(format='onnx')
    ```
=== "CLI"

    ```bash
    yolo export model=yolov8n-pose.pt format=onnx  # экспортировать официальную модель
    yolo export model=path/to/best.pt format=onnx  # экспортировать свою обученную модель
    ```

Доступные форматы экспорта модели YOLOv8-pose приведены в таблице ниже. Вы можете делать предсказания или проверки непосредственно с экспортированных моделей, например, yolo predict model=yolov8n-pose.onnx. Примеры использования показаны для вашей модели после завершения экспорта.

Формат Аргумент format Модель Метаданные Аргументы
PyTorch - yolov8n-pose.pt -
TorchScript torchscript yolov8n-pose.torchscript imgsz, optimize
ONNX onnx yolov8n-pose.onnx imgsz, half, dynamic, simplify, opset
OpenVINO openvino yolov8n-pose_openvino_model/ imgsz, half
TensorRT engine yolov8n-pose.engine imgsz, half, dynamic, simplify, workspace
CoreML coreml yolov8n-pose.mlpackage imgsz, half, int8, nms
TF SavedModel saved_model yolov8n-pose_saved_model/ imgsz, keras
TF GraphDef pb yolov8n-pose.pb imgsz
TF Lite tflite yolov8n-pose.tflite imgsz, half, int8
TF Edge TPU edgetpu yolov8n-pose_edgetpu.tflite imgsz
TF.js tfjs yolov8n-pose_web_model/ imgsz
PaddlePaddle paddle yolov8n-pose_paddle_model/ imgsz
ncnn ncnn yolov8n-pose_ncnn_model/ imgsz, half

Полные детали экспорта смотрите на странице Export.