Meet YOLO26: next-gen vision AI.

Link to this sectionVisão Geral dos Conjuntos de Dados de Estimativa de Pose#

Link to this sectionFormatos de dataset suportados#

Link to this sectionFormato 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 conjuntos de dados que anotam oclusão.

Link to this sectionFormato 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 e val especificam os caminhos para os diretórios que contêm as imagens de treinamento e validação, respectivamente.

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

(Opcional) se os pontos forem simétricos, é necessário o flip_idx, como o lado esquerdo-direito de um humano ou rosto. Por exemplo, se assumirmos cinco keypoints de pontos faciais: [olho esquerdo, olho direito, nariz, boca esquerda, boca direita], e o índice original for [0, 1, 2, 3, 4], então o flip_idx será [1, 0, 2, 4, 3] (apenas trocando o índice esquerdo-direito, ou seja, 0-1 e 3-4, e sem modificar outros como o nariz neste exemplo).

Link to this sectionUso#

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)

Link to this sectionDatasets suportados#

Esta seção descreve os conjuntos de dados que são compatíveis com o formato Ultralytics YOLO e podem ser usados para treinar modelos de estimativa de pose:

Link to this sectionCOCO-Pose#

  • Descrição: COCO-Pose é um conjunto de dados de larga escala de detecção de objetos, segmentação e estimativa de pose. É um subconjunto do popular conjunto de dados COCO e foca na estimativa de pose humana. O COCO-Pose inclui múltiplos keypoints para cada instância humana.
  • Formato de Rótulo: Igual ao formato Ultralytics YOLO descrito acima, com keypoints para poses humanas.
  • Número de Classes: 1 (Humano).
  • Keypoints: 17 keypoints incluindo nariz, olhos, orelhas, ombros, cotovelos, pulsos, quadris, joelhos e tornozelos.
  • Uso: Adequado para treinar modelos de estimativa de pose humana.
  • Notas Adicionais: O conjunto de dados é rico e diversificado, contendo mais de 200 mil imagens rotuladas.
  • Leia mais sobre COCO-Pose

Link to this sectionCOCO8-Pose#

  • Descrição: O Ultralytics COCO8-Pose é um conjunto de dados de detecção de pose pequeno, porém versátil, composto pelas primeiras 8 imagens do conjunto de treino COCO 2017, sendo 4 para treinamento 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 (Humano).
  • Keypoints: 17 keypoints incluindo nariz, olhos, orelhas, ombros, cotovelos, pulsos, quadris, joelhos e tornozelos.
  • Uso: Adequado para testar e depurar modelos de detecção de objetos, ou para experimentar novas abordagens de detecção.
  • Notas Adicionais: COCO8-Pose é ideal para verificações de sanidade e verificações de CI.
  • Leia mais sobre COCO8-Pose

Link to this sectionDog-Pose#

  • Descrição: O conjunto de dados Dog Pose contém 6.773 imagens de treinamento e 1.703 de teste, fornecendo um recurso diversificado e extenso para a estimativa de keypoints caninos.
  • 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 (Cão).
  • Keypoints: Inclui 24 keypoints adaptados para poses de cães, como membros, articulações e posições da cabeça.
  • Uso: Ideal para treinar modelos para estimar poses de cães em vários cenários, desde pesquisa até aplicações do mundo real.
  • Leia mais sobre Dog-Pose

Link to this sectionHand Keypoints#

  • Descrição: O conjunto de dados de pose de keypoints de mão compreende quase 26 mil imagens, com 18.776 imagens alocadas para treinamento 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.
  • Uso: Ótimo para estimativa de pose de mão humana e reconhecimento de gestos.
  • Leia mais sobre Hand Keypoints

Link to this sectionTiger-Pose#

  • Descrição: O conjunto de dados Tiger Pose da Ultralytics compreende 263 imagens provenientes de um vídeo do YouTube, 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 keypoints para pose de 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.
  • Leia mais sobre Tiger-Pose

Link to this sectionAdicionando 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.

Link to this sectionFerramenta de Conversão#

O Ultralytics fornece uma ferramenta de conversão conveniente para converter rótulos do formato do popular 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 deseja incluir keypoints (para estimativa de pose) nos rótulos convertidos.

Link to this sectionFAQ#

Link to this sectionO que é o formato Ultralytics YOLO para estimativa de pose?#

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 2D, os keypoints incluem coordenadas x e y normalizadas. Com uma dimensão de visibilidade, cada keypoint também possui um sinalizador de visibilidade. Para mais detalhes, consulte Formato Ultralytics YOLO.

Link to this sectionComo uso o conjunto de dados COCO-Pose com o Ultralytics YOLO?#

Para usar o conjunto de dados COCO-Pose com o Ultralytics YOLO:

  1. Baixe o conjunto de dados e prepare seus arquivos de rótulo no formato YOLO.

  2. Crie um arquivo de configuração YAML especificando os caminhos para as imagens de treinamento e validação, o formato dos keypoints e os nomes das classes.

  3. Use o arquivo de configuração para o treinamento:

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

    Para mais informações, visite as seções COCO-Pose e treinar.

Link to this sectionComo posso adicionar meu próprio conjunto de dados para estimativa de pose no Ultralytics YOLO?#

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 etapas completas, verifique a seção Adicionando seu próprio conjunto de dados.

Link to this sectionQual é o propósito do arquivo YAML de conjunto de dados no Ultralytics YOLO?#

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

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

Link to this sectionComo posso converter rótulos do conjunto de dados COCO para o formato Ultralytics YOLO para estimativa de pose?#

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 conjuntos de dados COCO em projetos YOLO. Para detalhes, consulte a seção Ferramenta de Conversão e o guia de pré-processamento de dados.

Comentários