Ir para o conteúdo

Estimativa de Pose

Exemplos de estimativa de pose

A estimativa de pose é uma tarefa que envolve identificar a localização de pontos específicos em uma imagem, geralmente referidos como pontos-chave. Os pontos-chave podem representar várias partes do objeto como articulações, pontos de referência ou outras características distintas. As localizações dos pontos-chave são geralmente representadas como um conjunto de coordenadas 2D [x, y] ou 3D [x, y, visível].

A saída de um modelo de estimativa de pose é um conjunto de pontos que representam os pontos-chave em um objeto na imagem, geralmente junto com os escores de confiança para cada ponto. A estimativa de pose é uma boa escolha quando você precisa identificar partes específicas de um objeto em uma cena, e sua localização relativa entre si.



Assista: Estimativa de Pose com Ultralytics YOLOv8.

Dica

Modelos YOLOv8 pose usam o sufixo -pose, isto é yolov8n-pose.pt. Esses modelos são treinados no conjunto de dados COCO keypoints e são adequados para uma variedade de tarefas de estimativa de pose.

Modelos

Os modelos YOLOv8 Pose pré-treinados são mostrados aqui. Os modelos Detect, Segment e Pose são pré-treinados no conjunto de dados COCO, enquanto os modelos Classify são pré-treinados no conjunto de dados ImageNet.

Modelos são baixados automaticamente do último lançamento da Ultralytics release no primeiro uso.

Modelo tamanho
(pixels)
mAPpose
50-95
mAPpose
50
Velocidade
CPU ONNX
(ms)
Velocidade
A100 TensorRT
(ms)
parâmetros
(M)
FLOPs
(B)
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 valores são para um único modelo em escala única no conjunto de dados COCO Keypoints val2017 .
    Reproduza yolo val pose data=coco-pose.yaml device=0
  • Velocidade média em imagens COCO val usando uma instância Amazon EC2 P4d .
    Reproduza yolo val pose data=coco8-pose.yaml batch=1 device=0|cpu

Treinar

Treine um modelo YOLOv8-pose no conjunto de dados COCO128-pose.

Exemplo

from ultralytics import YOLO

# Carregar um modelo
model = YOLO('yolov8n-pose.yaml')  # construir um novo modelo a partir do YAML
model = YOLO('yolov8n-pose.pt')  # carregar um modelo pré-treinado (recomendado para treinamento)
model = YOLO('yolov8n-pose.yaml').load('yolov8n-pose.pt')  # construir a partir do YAML e transferir pesos

# Treinar o modelo
results = model.train(data='coco8-pose.yaml', epochs=100, imgsz=640)
# Construir um novo modelo a partir do YAML e começar o treinamento do zero
yolo pose train data=coco8-pose.yaml model=yolov8n-pose.yaml epochs=100 imgsz=640

# Começar treinamento de um modelo *.pt pré-treinado
yolo pose train data=coco8-pose.yaml model=yolov8n-pose.pt epochs=100 imgsz=640

# Construir um novo modelo a partir do YAML, transferir pesos pré-treinados para ele e começar o treinamento
yolo pose train data=coco8-pose.yaml model=yolov8n-pose.yaml pretrained=yolov8n-pose.pt epochs=100 imgsz=640

Formato do conjunto de dados

O formato do conjunto de dados de pose YOLO pode ser encontrado em detalhes no Guia de Conjuntos de Dados. Para converter seu conjunto de dados existente de outros formatos (como COCO etc.) para o formato YOLO, por favor, use a ferramenta JSON2YOLO da Ultralytics.

Validar

Valide a acurácia do modelo YOLOv8n-pose treinado no conjunto de dados COCO128-pose. Não é necessário passar nenhum argumento, pois o model retém seus data de treinamento e argumentos como atributos do modelo.

Exemplo

from ultralytics import YOLO

# Carregar um modelo
model = YOLO('yolov8n-pose.pt')  # carregar um modelo oficial
model = YOLO('caminho/para/melhor.pt')  # carregar um modelo personalizado

# Validar o modelo
metrics = model.val()  # nenhum argumento necessário, conjunto de dados e configurações lembradas
metrics.box.map    # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps   # uma lista contém map50-95 de cada categoria
yolo pose val model=yolov8n-pose.pt  # validar modelo oficial
yolo pose val model=caminho/para/melhor.pt  # validar modelo personalizado

Prever

Use um modelo YOLOv8n-pose treinado para executar previsões em imagens.

Exemplo

from ultralytics import YOLO

# Carregar um modelo
model = YOLO('yolov8n-pose.pt')  # carregar um modelo oficial
model = YOLO('caminho/para/melhor.pt')  # carregar um modelo personalizado

# Prever com o modelo
results = model('https://ultralytics.com/images/bus.jpg')  # prever em uma imagem
yolo pose predict model=yolov8n-pose.pt source='https://ultralytics.com/images/bus.jpg'  # prever com modelo oficial
yolo pose predict model=caminho/para/melhor.pt source='https://ultralytics.com/images/bus.jpg'  # prever com modelo personalizado

Veja detalhes completos do modo predict na página Prever.

Exportar

Exporte um modelo YOLOv8n Pose para um formato diferente como ONNX, CoreML, etc.

Exemplo

from ultralytics import YOLO

# Carregar um modelo
model = YOLO('yolov8n-pose.pt')  # carregar um modelo oficial
model = YOLO('caminho/para/melhor.pt')  # carregar um modelo treinado personalizado

# Exportar o modelo
model.export(format='onnx')
yolo export model=yolov8n-pose.pt format=onnx  # exportar modelo oficial
yolo export model=caminho/para/melhor.pt format=onnx  # exportar modelo treinado personalizado

Os formatos de exportação YOLOv8-pose disponíveis estão na tabela abaixo. Você pode prever ou validar diretamente em modelos exportados, ou seja, yolo predict model=yolov8n-pose.onnx. Exemplos de uso são mostrados para o seu modelo após a conclusão da exportação.

Formato Argumento format Modelo Metadados Argumentos
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

Veja detalhes completos da exportação na página Exportar.


Created 2023-11-13, Updated 2023-11-18
Authors: glenn-jocher (3)

Comentários