YOLO Vision 2026:

Visão Geral dos Conjuntos de Dados de Estimativa de Pose#

Formatos de dataset suportados#

Formato Ultralytics YOLO#

O formato de rótulo do conjunto de dados utilizado para treinar modelos de pose YOLO é o seguinte:

  1. Um arquivo de texto por imagem: Cada imagem no conjunto de dados possui 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 no 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 representando a classe do objeto (ex.: 0 para pessoa, 1 para carro, etc.).
    • Coordenadas do centro do objeto: As coordenadas x e y do centro do objeto, normalizadas para estarem entre 0 e 1.
    • Largura e altura do objeto: A largura e a altura do objeto, normalizadas para estarem entre 0 e 1.
    • Coordenadas dos keypoints do objeto: Os pontos-chave (keypoints) do objeto, normalizados para estarem entre 0 e 1.

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

Formato com keypoints 2D

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

Formato com visibilidade de keypoints (inclui visibilidade por 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 bounding box, e <px1> <py1> <px2> <py2> ... <pxn> <pyn> são as coordenadas normalizadas dos keypoints. O canal de visibilidade é opcional, mas útil para datasets que anotam oclusão.

Formato YAML de conjunto de dados#

O framework Ultralytics utiliza um formato de arquivo YAML para definir a configuração do conjunto de dados e 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 ficheiro *.txt que lista um caminho de imagem por linha (os caminhos que começam com ./ resolvem-se em relação ao ficheiro *.txt). Um ficheiro *.txt é útil para treinar num subconjunto de um diretório, ignorar imagens sem anotações ou combinar imagens de várias origens num único split.

Caminhos de imagem como 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
names:
  0: person

names é um dicionário de nomes de classes. A ordem dos nomes deve coincidir com a ordem dos índices de classes de objetos nos ficheiros do dataset YOLO.

(Opcional) flip_idx mapeia cada keypoint para a sua imagem espelhada, para que aumentações de inversão horizontal mantenham a esquerda e a direita consistentes em esqueletos simétricos, como um corpo humano ou rosto. Para cinco pontos 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 esquerdo-direito 0-1 e 3-4 trocam de lugar, e o nariz mantém o seu próprio índice.

(Opcional) kpt_oks_sigmas define sigmas OKS personalizados por keypoint usados durante o treino e validação, por ex. [0.26, 0.25, 0.25, ...]. O comprimento da lista deve ser igual ao número de keypoints N de kpt_shape, e cada valor deve ser positivo. Quando omitido, são usados os sigmas de 17 keypoints do COCO para kpt_shape: [17, 3] e um 1/N uniforme caso contrário.

Uso#

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

Datasets suportados#

Esta secção descreve os datasets que são compatíveis com o formato Ultralytics YOLO e podem ser usados para treinar modelos de pose estimation:

COCO-Pose#

  • Descrição: COCO-Pose é um conjunto de dados de estimativa de pose humana em larga escala que abrange as imagens COCO 2017 que contêm pessoas com anotações de pontos-chave.
  • Formato de Rótulo: Igual ao formato Ultralytics YOLO descrito acima, com keypoints 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.
  • Notas Adicionais: O dataset baseia-se no desafio COCO Keypoints 2017: 58.945 imagens anotadas com 156.165 pessoas.
  • Sabe mais sobre o COCO-Pose

COCO8-Pose#

  • Descrição: O Ultralytics COCO8-Pose é um dataset de pose estimation pequeno, mas versátil, composto pelas primeiras 8 imagens do conjunto COCO train 2017, 4 para treino e 4 para validação.
  • Formato de Rótulo: Igual ao formato Ultralytics YOLO descrito acima, com keypoints 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 para experimentar novas abordagens de detecção de pontos-chave.
  • Notas Adicionais: O COCO8-Pose é ideal para verificações rápidas de sanidade e CI checks.
  • Sabe mais sobre o COCO8-Pose

Dog-Pose#

  • Descrição: O dataset Ultralytics Dog-Pose contém 6.773 imagens de treino e 1.703 de validação para a estimação de keypoints em cães.
  • Formato de Rótulo: Segue o formato Ultralytics YOLO, com anotações para múltiplos keypoints específicos da anatomia canina.
  • Número de Classes: 1 (cachorro).
  • Pontos-chave: 24 pontos-chave, cada um com uma dimensão de visibilidade, adaptados para poses de cachorros, como membros, articulações e posições da cabeça.
  • Utilização: Ideal para treinar modelos para estimar poses de cães em vários cenários, desde a investigação até real-world applications.
  • Notas Adicionais: As imagens de origem são extraídas do Stanford Dogs Dataset.
  • Sabe mais sobre o Dog-Pose

Hand Keypoints#

  • Descrição: O dataset Ultralytics Hand Keypoints compreende 26.768 imagens, com 18.776 alocadas para treino e 7.992 para validação.
  • Formato de Rótulo: Igual ao formato Ultralytics YOLO descrito acima, mas com 21 keypoints para uma mão humana e uma dimensão de visibilidade.
  • Número de Classes: 1 (mão).
  • Keypoints: 21 keypoints.
  • Utilização: Excelente para a estimação de poses de mãos humanas e gesture recognition.
  • Notas Adicionais: As anotações de keypoints são geradas utilizando o Google MediaPipe para uma rotulagem consistente.
  • Sabe mais sobre Hand Keypoints

Tiger-Pose#

  • Descrição: O dataset Ultralytics Tiger-Pose compreende 263 imagens obtidas a partir de um YouTube video, com 210 imagens alocadas para treino e 53 para validação.
  • Formato de Rótulo: Igual ao formato Ultralytics YOLO como descrito acima, com 12 pontos-chave para pose animal e sem dimensão de visibilidade.
  • Número de Classes: 1 (tigre).
  • Keypoints: 12 keypoints.
  • Uso: Ótimo para pose animal ou qualquer outra pose que não seja baseada em humanos.
  • Notas Adicionais: Lançado sob a AGPL-3.0 License.
  • Sabe mais sobre o Tiger-Pose

Adicionando seu próprio dataset#

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

Para ignorar totalmente a etapa de conversão, a Ultralytics Platform permite carregar imagens em bruto, anotar keypoints no browser e treinar diretamente no dataset resultante.

Ferramenta de Conversão#

O Ultralytics fornece uma ferramenta de conversão conveniente para converter rótulos do formato popular do COCO dataset 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 dataset COCO ou qualquer dataset no formato COCO para o formato Ultralytics YOLO. O parâmetro use_keypoints especifica se deve incluir keypoints (para pose estimation) nos rótulos convertidos.

FAQ#

  • O formato Ultralytics YOLO para conjuntos de dados de estimativa de pose envolve rotular cada imagem 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 keypoints do objeto (pxn e pyn normalizados)

    Para poses em 2D, os keypoints incluem coordenadas x e y normalizadas. Com uma dimensão de visibilidade, cada keypoint também tem um sinalizador de visibilidade. Para mais detalhes, consulta Ultralytics YOLO format.

  • coco-pose.yaml vem incluído no pacote e transfere as imagens e rótulos na primeira utilização, pelo que não é necessária nenhuma preparação manual:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n-pose.pt")  # load pretrained model
    results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)

    Para detalhes sobre o dataset, consulta COCO-Pose e a página Train para ver a lista completa de argumentos.

  • 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, número de classes e 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 os passos completos, consulta a secção Adding your own dataset.

  • O arquivo YAML de conjunto de dados no Ultralytics YOLO define a configuração do conjunto de dados e do modelo para treinamento. Ele especifica caminhos para imagens de treino, validação e teste, formatos de keypoints, nomes de classes e outras opções de configuração. Este formato estruturado ajuda a simplificar o gerenciamento do conjunto de dados e o treinamento do modelo. Aqui está um exemplo de 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

    Sabe mais sobre como criar ficheiros de configuração YAML em Dataset YAML format.

  • O Ultralytics fornece uma ferramenta de conversão para converter rótulos do conjunto de dados COCO para o formato YOLO, incluindo informações de keypoints:

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

    Esta ferramenta ajuda a integrar perfeitamente datasets COCO em projetos YOLO. Para mais detalhes, consulta a secção Conversion Tool e o data preprocessing guide.

Comentários