Ultralytics YOLO27:
Get Started

Visão geral dos conjuntos de dados de estimativa de pose#

Formatos de conjuntos de dados compatíveis#

Formato Ultralytics YOLO#

O formato dos rótulos do conjunto de dados usado para treinar modelos de pose YOLO é o seguinte:

  1. Um arquivo de texto por imagem: cada imagem do conjunto de dados tem um arquivo de texto correspondente com o mesmo nome do arquivo de imagem e a extensão ".txt".
  2. Uma linha por objeto: cada linha do arquivo de texto corresponde a uma instância de objeto na imagem.
  3. Informações do objeto por linha: cada linha contém as seguintes informações sobre a instância do objeto:
    • Índice da classe do objeto: um número inteiro que representa a classe do objeto (por exemplo, 0 para pessoa, 1 para carro etc.).
    • Coordenadas do centro do objeto: as coordenadas x e y do centro do objeto, normalizadas para ficarem entre 0 e 1.
    • Largura e altura do objeto: a largura e a altura do objeto, normalizadas para ficarem entre 0 e 1.
    • Coordenadas dos pontos-chave do objeto: os pontos-chave do objeto, normalizados para valores entre 0 e 1.

Aqui está um exemplo do formato de rótulo para uma tarefa de estimativa de pose:

Formato com pontos-chave 2D

<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>

Formato com visibilidade dos pontos-chave (inclui a visibilidade de cada ponto)

<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> ... <pxn> <pyn> <pn-visibility>

Neste formato, <class-index> é o índice da classe do objeto, <x> <y> <width> <height> são as coordenadas normalizadas da caixa delimitadora e <px1> <py1> <px2> <py2> ... <pxn> <pyn> são as coordenadas normalizadas dos pontos-chave. O canal de visibilidade é opcional, mas útil para conjuntos de dados que anotam oclusões.

Formato YAML do conjunto de dados#

A estrutura Ultralytics usa um arquivo YAML para definir o conjunto de dados e a configuração do modelo para treinar modelos de estimativa de pose. Aqui está um exemplo do formato YAML usado para definir um conjunto de dados de pose:

ultralytics/cfg/datasets/coco8-pose.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose
# Example usage: yolo train data=coco8-pose.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-pose ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8-pose # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Keypoints
kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]

# Classes
names:
  0: person

# Keypoint names per class
kpt_names:
  0:
    - nose
    - left_eye
    - right_eye
    - left_ear
    - right_ear
    - left_shoulder
    - right_shoulder
    - left_elbow
    - right_elbow
    - left_wrist
    - right_wrist
    - left_hip
    - right_hip
    - left_knee
    - right_knee
    - left_ankle
    - right_ankle

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip

Os campos train, val e test apontam para as imagens de treino, validação e teste. Cada um aceita um diretório, uma lista de diretórios ou um arquivo *.txt que lista um caminho de imagem por linha (caminhos que começam com ./ são resolvidos em relação ao arquivo *.txt). Um arquivo *.txt é útil para treinar com um subconjunto de um diretório, ignorar imagens sem rótulos ou combinar imagens de várias fontes em uma única divisão.

Caminhos de imagens em um arquivo `*.txt`
path: datasets/coco8-pose # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
kpt_shape: [17, 3] # required for pose datasets
names:
  0: person

names é um dicionário de nomes de classes. A ordem dos nomes deve corresponder à ordem dos índices de classe dos objetos nos arquivos do conjunto de dados YOLO.

(Opcional) flip_idx mapeia cada ponto-chave para sua imagem espelhada, para que o aumento de dados com inversão horizontal mantenha a consistência entre esquerda e direita em esqueletos simétricos, como o corpo ou o rosto humano. Para cinco pontos de referência faciais indexados como [olho esquerdo, olho direito, nariz, boca esquerda, boca direita] = [0, 1, 2, 3, 4], flip_idx é [1, 0, 2, 4, 3]: os pares esquerda-direita 0-1 e 3-4 trocam de posição, e o nariz mantém seu próprio índice.

(Opcional) kpt_oks_sigmas define os sigmas OKS personalizados para cada ponto-chave, usados durante o treinamento e a validação, por exemplo, [0.26, 0.25, 0.25, ...]. O comprimento da lista deve ser igual ao número de pontos-chave N de kpt_shape, e todos os valores devem ser positivos. Se omitido, são usados os sigmas para os 17 pontos-chave do COCO em kpt_shape: [17, 3] e um valor 1/N uniforme nos demais casos.

Uso#

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-pose.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)

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

Conjuntos de dados compatíveis#

Esta seção apresenta os conjuntos de dados compatíveis com o formato Ultralytics YOLO e que podem ser usados para treinar modelos de estimativa de pose. A maioria desses conjuntos de dados também está hospedada na Plataforma Ultralytics, onde você pode explorar imagens e anotações, ver estatísticas dos conjuntos de dados e cloná-los para treinamento na nuvem.

COCO-Pose#

  • Descrição: COCO-Pose é um conjunto de dados de grande escala para estimativa de pose humana, que abrange as imagens do COCO 2017 com pessoas anotadas com pontos-chave.
  • Formato dos rótulos: Igual ao formato Ultralytics YOLO descrito acima, com pontos-chave para poses humanas.
  • Número de classes: 1 (pessoa).
  • Pontos-chave: 17 tipos de pontos-chave, incluindo nariz, olhos, orelhas, ombros, cotovelos, pulsos, quadris, joelhos e tornozelos, cada um com uma dimensão de visibilidade.
  • Uso: Adequado para treinar modelos de estimativa de pose humana.
  • Observações adicionais: O conjunto de dados é baseado no desafio COCO Keypoints 2017: 58.945 imagens anotadas com 156.165 pessoas.
  • Leia mais sobre COCO-Pose

COCO8-Pose#

  • Descrição: O COCO8-Pose da Ultralytics é um conjunto de dados de estimativa de pose pequeno, mas versátil, composto pelas primeiras 8 imagens do conjunto COCO train 2017: 4 para treinamento e 4 para validação.
  • Formato dos rótulos: Igual ao formato Ultralytics YOLO descrito acima, com pontos-chave para poses humanas.
  • Número de classes: 1 (pessoa).
  • Pontos-chave: 17 tipos de pontos-chave, incluindo nariz, olhos, orelhas, ombros, cotovelos, pulsos, quadris, joelhos e tornozelos, cada um com uma dimensão de visibilidade.
  • Uso: Adequado para testar e depurar modelos de estimativa de pose ou experimentar novas abordagens de detecção de pontos-chave.
  • Observações adicionais: COCO8-Pose é ideal para verificações de sanidade e verificações de CI.
  • Leia mais sobre COCO8-Pose

Dog-Pose#

  • Descrição: O conjunto de dados Dog-Pose da Ultralytics contém 6.773 imagens de treinamento e 1.703 imagens de validação para estimativa de pontos-chave caninos.
  • Formato dos rótulos: Segue o formato Ultralytics YOLO, com anotações de vários pontos-chave específicos da anatomia dos cães.
  • Número de classes: 1 (cão).
  • Pontos-chave: 24 pontos-chave, cada um com uma dimensão de visibilidade, adaptados a poses de cães, como membros, articulações e posições da cabeça.
  • Uso: Ideal para treinar modelos que estimam poses de cães em vários cenários, da pesquisa a aplicações no mundo real.
  • Observações adicionais: As imagens de origem vêm do Stanford Dogs Dataset.
  • Leia mais sobre Dog-Pose

Pontos-chave das mãos#

  • Descrição: O conjunto de dados Hand Keypoints da Ultralytics contém 26.768 imagens, das quais 18.776 são destinadas ao treinamento e 7.992 à validação.
  • Formato dos rótulos: Igual ao formato Ultralytics YOLO descrito acima, mas com 21 pontos-chave para uma mão humana e uma dimensão de visibilidade.
  • Número de classes: 1 (mão).
  • Pontos-chave: 21 pontos-chave.
  • Uso: Ótimo para estimativa de pose das mãos humanas e reconhecimento de gestos.
  • Observações adicionais: As anotações dos pontos-chave são geradas usando o Google MediaPipe para manter a consistência dos rótulos.
  • Leia mais sobre Hand Keypoints

Tiger-Pose#

  • Descrição: O conjunto de dados Tiger-Pose da Ultralytics contém 263 imagens obtidas de um vídeo do YouTube, das quais 210 são destinadas ao treinamento e 53 à validação.
  • Formato dos rótulos: Igual ao formato Ultralytics YOLO descrito acima, com 12 pontos-chave para pose animal e sem dimensão de visibilidade.
  • Número de classes: 1 (tigre).
  • Pontos-chave: 12 pontos-chave.
  • Uso: Ótimo para estimativa de pose animal ou qualquer outra pose que não seja humana.
  • Observações adicionais: Disponibilizado sob a Licença AGPL-3.0.
  • Leia mais sobre Tiger-Pose

Adicionar o seu próprio conjunto de dados#

Se você tem seu próprio conjunto de dados e quer usá-lo para treinar modelos de estimativa de pose no formato Ultralytics YOLO, confira se ele segue o formato especificado acima em "Formato Ultralytics YOLO". Converta suas anotações para o formato exigido e especifique os caminhos, o número de classes e os nomes das classes no arquivo de configuração YAML.

Para pular totalmente a etapa de conversão, a Plataforma Ultralytics permite enviar imagens brutas, anotar pontos-chave no navegador e treinar diretamente com o conjunto de dados resultante.

Ferramenta de conversão#

A Ultralytics oferece uma ferramenta prática para converter rótulos do popular formato do conjunto de dados COCO para o formato YOLO:

Exemplo
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)

Esta ferramenta de conversão pode ser usada para converter o conjunto de dados COCO ou qualquer conjunto de dados no formato COCO para o formato Ultralytics YOLO. O parâmetro use_keypoints especifica se os pontos-chave (para estimativa de pose) devem ser incluídos nos rótulos convertidos.

Perguntas frequentes#

  • No formato Ultralytics YOLO para conjuntos de dados de estimativa de pose, cada imagem é rotulada com um arquivo de texto correspondente. Cada linha do arquivo de texto armazena informações sobre uma instância de objeto:

    • Índice da classe do objeto
    • Coordenadas do centro do objeto (x e y normalizados)
    • Largura e altura do objeto (normalizadas)
    • Coordenadas dos pontos-chave do objeto (pxn e pyn normalizados)

    Em poses 2D, os pontos-chave incluem coordenadas x e y normalizadas. Com uma dimensão de visibilidade, cada ponto-chave também tem um indicador de visibilidade. Para mais detalhes, consulte o formato Ultralytics YOLO.

  • coco-pose.yaml vem com o pacote e baixa as imagens e os rótulos no primeiro uso, sem necessidade de preparação manual:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n-pose.pt")  # carregar modelo pré-treinado
    results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)

    Para ver os detalhes do conjunto de dados, consulte COCO-Pose; para ver a lista completa de argumentos, consulte a página de Treinamento.

  • Para adicionar seu conjunto de dados:

    1. Converta suas anotações para o formato Ultralytics YOLO.

    2. Crie um arquivo de configuração YAML especificando os caminhos do conjunto de dados, o número de classes e os nomes das classes.

    3. Use o arquivo de configuração para treinar seu modelo:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n-pose.pt")
      results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

      Para ver as etapas completas, consulte a seção Como adicionar seu próprio conjunto de dados.

  • No Ultralytics YOLO, o arquivo YAML do conjunto de dados define o conjunto de dados e a configuração do modelo para treinamento. Ele especifica os caminhos para as imagens de treinamento, validação e teste, os formatos dos pontos-chave, os nomes das classes e outras opções de configuração. Esse formato estruturado ajuda a simplificar o gerenciamento dos conjuntos de dados e o treinamento dos modelos. Aqui está um exemplo do formato YAML:

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose
    # Example usage: yolo train data=coco8-pose.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8-pose ← downloads here (1 MB)
    
    # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
    path: coco8-pose # dataset root dir
    train: images/train # train images (relative to 'path') 4 images
    val: images/val # val images (relative to 'path') 4 images
    test: # test images (optional)
    
    # Keypoints
    kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
    flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
    
    # Classes
    names:
      0: person
    
    # Keypoint names per class
    kpt_names:
      0:
        - nose
        - left_eye
        - right_eye
        - left_ear
        - right_ear
        - left_shoulder
        - right_shoulder
        - left_elbow
        - right_elbow
        - left_wrist
        - right_wrist
        - left_hip
        - right_hip
        - left_knee
        - right_knee
        - left_ankle
        - right_ankle
    
    # Download script/URL (optional)
    download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip

    Leia mais sobre como criar arquivos de configuração YAML em Formato YAML do conjunto de dados.

  • A Ultralytics oferece uma ferramenta de conversão de rótulos do conjunto de dados COCO para o formato YOLO, incluindo as informações dos pontos-chave:

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)

    Esta ferramenta ajuda a integrar conjuntos de dados COCO a projetos YOLO de forma simples. Para mais detalhes, consulte a seção Ferramenta de conversão e o guia de pré-processamento de dados.

Comentários