Ultralytics YOLO27:
Get Started

Estimativa de pose com Ultralytics YOLO#

Ultralytics YOLO pose estimation with human body keypoint detection

A estimativa de pose é uma tarefa que envolve identificar a localização de pontos específicos em uma imagem, geralmente chamados de pontos-chave. Os pontos-chave podem representar várias partes do objeto, como articulações, marcos ou outras características distintivas. As localizações dos pontos-chave costumam ser representadas como um conjunto de coordenadas 2D [x, y], opcionalmente com uma flag de visibilidade [x, y, visible].

A saída de um modelo de estimativa de pose é um conjunto de pontos que representa os pontos-chave de um objeto na imagem, geralmente acompanhado pelas pontuações de confiança de cada ponto. A estimativa de pose é uma boa opção quando você precisa identificar partes específicas de um objeto em uma cena e a localização delas em relação umas às outras.



Assista: Como executar estimativa de pose em tempo real com Ultralytics YOLO26 | Rastreamento e extração de pontos-chave 🕺
Dica

Os modelos YOLO26 Pose usam o sufixo -pose, ou seja, yolo26n-pose.pt, e são pré-treinados em pontos-chave COCO.

Modelos#

Abaixo estão os modelos YOLO26 Pose pré-treinados no conjunto de dados pontos-chave COCO.

Os modelos são transferidos automaticamente da versão mais recente do Ultralytics na primeira utilização.

Modelotamanho
(pixels)
mAPpose
50-95(e2e)
mAPpose
50(e2e)
Velocidade
CPU ONNX
(ms)
Velocidade
T4 TensorRT10
(ms)
parâmetros
(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
  • Os valores de mAPval são para um único modelo e uma única escala no conjunto de dados COCO Keypoints val2017.
    Reproduza com yolo pose val data=coco-pose.yaml device=0 nms=False
  • Velocidade média nas imagens de COCO val com ONNX em CPU e TensorRT10 numa GPU NVIDIA T4.
    Reproduz os resultados com yolo pose val data=coco-pose.yaml batch=1 device=0|cpu nms=False
  • Os valores de Params e FLOPs referem-se a modelos fundidos após a fusão de Conv/BatchNorm e a remoção do ramo de deteção não utilizado. Os pontos de controlo pré-treinados mantêm a arquitetura de treino completa e podem apresentar contagens superiores.

Consulte a prévia não lançada do YOLO27 para ver resultados preliminares de pontos-chave COCO.

Treinar#

Treine YOLO26n-pose no conjunto de dados COCO8-pose por 100 épocas, com tamanho de imagem 640. Para ver a lista completa de argumentos disponíveis, consulte a página Configuração.

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-pose.yaml")  # crie um novo modelo a partir de YAML
model = YOLO("yolo26n-pose.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-pose.pt")  # crie a partir de YAML e transfira os pesos

# Treinar o modelo
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

Consulte a página Treinar para ver todos os detalhes do modo train. Os modelos de pose também podem ser treinados com o treinamento na nuvem da Ultralytics Platform.

Formato do conjunto de dados#

Você encontra detalhes sobre o formato do conjunto de dados de pose YOLO no Guia do conjunto de dados. Para converter um conjunto de dados JSON existente de pontos-chave COCO para o formato YOLO, use a função integrada convert_coco com use_keypoints=True, conforme descrito no guia de conversão de COCO para YOLO. A anotação da Ultralytics Platform também oferece suporte a rótulos de pose com modelos de esqueleto integrados para pessoas, mãos, rostos e configurações personalizadas de pontos-chave.

Para tarefas personalizadas de estimativa de pose, você também pode explorar conjuntos de dados especializados, como Tiger-Pose para estimativa de pose animal, Hand Keypoints para rastreamento de mãos ou Dog-Pose para análise de pose canina.

Validar#

Valide a precisão do modelo YOLO26n-pose treinado. Não são necessários argumentos, pois o model mantém os data e os argumentos do treinamento como atributos do modelo: path/to/best.pt do exemplo de Treinar valida no COCO8-pose. Os pesos oficiais registram um caminho para o conjunto de dados de treinamento que não existe na sua máquina; por isso, eles recorrem ao coco8-pose.yaml padrão da tarefa e exibem um aviso. Passe data para validar em outro conjunto de dados.

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-pose.pt")  # carrega um modelo oficial
model = YOLO("path/to/best.pt")  # carregar um modelo personalizado

# Valida o modelo
metrics = model.val()  # não são necessários argumentos; o conjunto de dados e as definições são guardados
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # uma lista com mAP50-95 para cada categoria
metrics.box.image_metrics  # dicionário de métricas por imagem para caixas, com precisão, revocação, F1, TP, FP e FN
metrics.pose.map  # map50-95(P)
metrics.pose.map50  # map50(P)
metrics.pose.map75  # map75(P)
metrics.pose.maps  # uma lista com o mAP50-95(P) de cada categoria
metrics.pose.image_metrics  # dicionário de métricas por imagem para pose, com precisão, revocação, F1, TP, FP e FN

Prever#

Use um modelo YOLO26n-pose treinado para fazer previsões em imagens.

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-pose.pt")  # carrega um modelo oficial
model = YOLO("path/to/best.pt")  # carregar um modelo personalizado

# Faz previsões com o modelo
results = model("https://ultralytics.com/images/bus.jpg")  # faz uma previsão numa imagem

# Acede aos resultados
for result in results:
    xy = result.keypoints.xy  # coordenadas x e y
    xyn = result.keypoints.xyn  # normalized
    kpts = result.keypoints.data  # x, y, visibilidade (se disponível)

Consulta os detalhes completos do modo predict na página Previsão.

Saída dos resultados#

A estimativa de pose retorna um objeto Results por imagem. Os principais campos de previsão são result.keypoints, para as coordenadas da pose, e result.boxes, para as instâncias detectadas às quais esses pontos-chave pertencem.

AtributoTipoFormatoDescrição
result.keypointsKeypoints(N)Pontos-chave.
result.keypoints.datatorch.float32(N,K,2/3)x,y mais visibilidade/confiança opcional.
result.keypoints.xytorch.float32(N,K,2)Pontos-chave em pixels.
result.keypoints.xyntorch.float32(N,K,2)Pontos-chave normalizados.
result.boxesBoxes(N)Caixas de instância.

Para ver os campos Results específicos de cada tarefa, consulta a secção Resultados da previsão por tarefa.

Mapa de índices dos pontos-chave#

Os modelos YOLO26 Pose padrão preveem os 17 pontos-chave COCO; portanto, o índice k em result.keypoints.xy[:, k] corresponde a:

  1. Nariz
  2. Olho esquerdo
  3. Olho direito
  4. Orelha esquerda
  5. Orelha direita
  6. Ombro esquerdo
  7. Ombro direito
  8. Cotovelo esquerdo
  9. Cotovelo direito
  10. Pulso esquerdo
  11. Pulso direito
  12. Quadril esquerdo
  13. Quadril direito
  14. Joelho esquerdo
  15. Joelho direito
  16. Tornozelo esquerdo
  17. Tornozelo direito

Exportar#

Exporte um modelo YOLO26n-pose para outro formato, como ONNX, CoreML etc.

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-pose.pt")  # carrega um modelo oficial
model = YOLO("path/to/best.pt")  # carregar um modelo personalizado

# Exporta o modelo
model.export(format="onnx")

Os formatos de exportação disponíveis para YOLO26-pose estão na tabela abaixo. Você pode exportar para qualquer formato usando o argumento format, ou seja, format='onnx' ou format='engine'. Você pode fazer previsões ou validar diretamente em modelos exportados, como em yolo predict model=yolo26n-pose.onnx. Após a conclusão da exportação, são exibidos exemplos de uso para o seu modelo.

FormatoArgumento formatModeloMetadadosArgumentos
PyTorch-yolo26n-pose.pt✅-
TorchScripttorchscriptyolo26n-pose.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-pose.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-pose_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-pose.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-pose.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-pose.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-pose_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-pose.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-pose_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-pose.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-pose_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-pose.mnn✅imgsz, 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.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-pose_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-pose_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-pose_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None usa por predefinição saídas brutas para NMS externo. Define nms=False para selecionar uma cabeça sem NMS disponível; os formatos não suportados recorrem ao respetivo caminho de saída nativo. As entradas nms acima identificam os formatos que podem incorporar NMS com nms=True.

Consulte os detalhes completos de export na página Exportação.

Perguntas frequentes#

  • A estimativa de pose com Ultralytics YOLO26 envolve identificar pontos específicos em uma imagem, conhecidos como pontos-chave. Esses pontos-chave geralmente representam articulações ou outras características importantes do objeto. A saída inclui as coordenadas [x, y] e as pontuações de confiança de cada ponto. Os modelos YOLO26-pose são projetados especificamente para essa tarefa e usam o sufixo -pose, como yolo26n-pose.pt. Esses modelos são pré-treinados em conjuntos de dados como pontos-chave COCO e podem ser usados em várias tarefas de estimativa de pose. Para mais informações, acesse a página de estimativa de pose.

  • Para treinar um modelo YOLO26-pose em um conjunto de dados personalizado, carregue um modelo, que pode ser um modelo novo definido por um arquivo YAML ou um modelo pré-treinado. Em seguida, você pode iniciar o processo de treinamento usando o conjunto de dados e os parâmetros especificados.

    Exemplo
    from ultralytics import YOLO
    
    # Carregar um modelo
    model = YOLO("yolo26n-pose.yaml")  # crie um novo modelo a partir de YAML
    model = YOLO("yolo26n-pose.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)
    
    # Treinar o modelo
    results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

    Para ver todos os detalhes sobre treinamento, consulte a seção Treinar. Você também pode usar o treinamento na nuvem da Ultralytics Platform para treinar modelos personalizados de estimativa de pose sem escrever código.

  • A validação de um modelo YOLO26-pose consiste em avaliar sua precisão usando os mesmos parâmetros de conjunto de dados mantidos durante o treinamento. Veja um exemplo:

    Exemplo
    from ultralytics import YOLO
    
    # Carregar um modelo
    model = YOLO("yolo26n-pose.pt")  # carrega um modelo oficial
    model = YOLO("path/to/best.pt")  # carregar um modelo personalizado
    
    # Valida o modelo
    metrics = model.val()  # não são necessários argumentos; o conjunto de dados e as definições são guardados

    Para mais informações, acesse a seção Val.

  • Sim, você pode exportar um modelo YOLO26-pose para vários formatos, como ONNX, CoreML, TensorRT e outros. Isso pode ser feito usando Python ou a interface de linha de comando (CLI).

    Exemplo
    from ultralytics import YOLO
    
    # Carregar um modelo
    model = YOLO("yolo26n-pose.pt")  # carrega um modelo oficial
    model = YOLO("path/to/best.pt")  # carregar um modelo personalizado
    
    # Exporta o modelo
    model.export(format="onnx")

    Consulte a seção Exportar para mais detalhes. Os modelos exportados podem ser implantados em dispositivos de borda para aplicações em tempo real, como monitoramento de atividades físicas, análise esportiva ou robótica.

  • A Ultralytics YOLO26 oferece vários modelos de pose pré-treinados, como YOLO26n-pose, YOLO26s-pose, YOLO26m-pose, entre outros. Esses modelos variam em tamanho, precisão (mAP) e velocidade. Para ver a lista completa com mAP de pontos-chave COCO, velocidade, parâmetros e FLOPs por modelo, consulte a seção Modelos.

Comentários