Ir para o conteúdo

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

Formatos de Conjunto de Dados Suportados

Formato YOLO da Ultralytics

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

  1. Um arquivo de texto por imagem: Cada imagem no 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 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 inteiro representando 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 estarem entre 0 e 1.
    • Largura e altura do objeto: A largura e altura do objeto, normalizadas para estarem entre 0 e 1.
    • Coordenadas dos pontos-chave do objeto: Os pontos-chave do objeto, normalizados para estarem entre 0 e 1.

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

Formato com Dim = 2

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

Formato com Dim = 3

<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 para o objeto,<x> <y> <width> <height> são as coordenadas da bounding box, e <px1> <py1> <px2> <py2> ... <pxn> <pyn> são as coordenadas de pixel dos pontos-chave. As coordenadas são separadas por espaços.

Formato YAML do Conjunto de Dados

A estrutura Ultralytics usa um formato de 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 🚀 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

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

O train e val os campos especificam os caminhos para os diretórios que contêm as imagens de treinamento e validação, respectivamente.

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

(Opcional) se os pontos forem simétricos, então precisa de flip_idx, como o lado esquerdo-direito do humano ou rosto. Por exemplo, se assumirmos cinco pontos-chave de referência facial: [olho esquerdo, olho direito, nariz, boca esquerda, boca direita], e o índice original for [0, 1, 2, 3, 4], então flip_idx é [1, 0, 2, 4, 3] (apenas troque o índice esquerdo-direito, ou seja, 0-1 e 3-4, e não modifique outros como o nariz neste exemplo).

Utilização

Exemplo

from ultralytics import YOLO

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

# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo pose train data=coco8-pose.yaml model=yolo11n-pose.pt epochs=100 imgsz=640

Conjuntos de Dados 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:

COCO-Pose

  • Descrição: COCO-Pose é um conjunto de dados de grande escala para detecção de objetos, segmentação e estimativa de pose. É um subconjunto do popular conjunto de dados COCO e se concentra na estimativa de pose humana. COCO-Pose inclui vários pontos-chave para cada instância humana.
  • Formato de Rótulo: O mesmo que o formato Ultralytics YOLO, conforme descrito acima, com pontos-chave para poses humanas.
  • Número de Classes: 1 (Humano).
  • Pontos-chave: 17 pontos-chave, incluindo nariz, olhos, orelhas, ombros, cotovelos, pulsos, quadris, joelhos e tornozelos.
  • Utilização: 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

COCO8-Pose

  • Descrição: Ultralytics COCO8-Pose é um conjunto de dados pequeno, mas versátil, de detecção de pose, composto pelas 8 primeiras imagens do conjunto de treino COCO 2017, 4 para treino e 4 para validação.
  • Formato de Rótulo: O mesmo que o formato Ultralytics YOLO, conforme descrito acima, com pontos-chave para poses humanas.
  • Número de Classes: 1 (Humano).
  • Pontos-chave: 17 pontos-chave, incluindo nariz, olhos, orelhas, ombros, cotovelos, pulsos, quadris, joelhos e tornozelos.
  • Utilização: 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

Tiger-Pose

  • Descrição: O conjunto de dados Ultralytics Tiger Pose compreende 263 imagens provenientes de um Vídeo do YouTube, com 210 imagens alocadas para treinamento e 53 para validação.
  • Formato de Etiqueta: O mesmo que o formato YOLO Ultralytics, conforme descrito acima, com 12 pontos-chave para pose de animal e sem dimensão visível.
  • Número de Classes: 1 (Tigre).
  • Pontos-chave: 12 pontos-chave.
  • Utilização: Ótimo para pose de animais ou qualquer outra pose que não seja baseada em humanos.
  • Leia mais sobre Tiger-Pose

Pontos-Chave da Mão

  • Descrição: O conjunto de dados de pose de pontos-chave da mão compreende quase 26 mil imagens, com 18776 imagens alocadas para treinamento e 7992 para validação.
  • Formato de Etiqueta: O mesmo que o formato YOLO Ultralytics, conforme descrito acima, mas com 21 pontos-chave para a mão humana e dimensão visível.
  • Número de Classes: 1 (Mão).
  • Pontos-chave: 21 pontos-chave.
  • Uso: Ótimo para estimativa de pose da mão humana e reconhecimento de gestos.
  • Leia mais sobre Hand Keypoints

Dog-Pose

  • Descrição: O conjunto de dados Dog Pose contém aproximadamente 6.000 imagens, fornecendo um recurso diversificado e extenso para treinamento e validação de modelos de estimativa de pose de cães.
  • Formato de Etiqueta: Segue o formato YOLO Ultralytics, com anotações para múltiplos pontos-chave específicos da anatomia canina.
  • Número de Classes: 1 (Cachorro).
  • Pontos-chave: Inclui 24 pontos-chave 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

Adicionando seu próprio conjunto de dados

Se você tem 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 segue o formato especificado acima em "Formato Ultralytics YOLO". Converta suas anotações para o formato necessário e especifique os caminhos, número de classes e nomes das classes no arquivo de configuração YAML.

Ferramenta de Conversão

A Ultralytics oferece uma ferramenta de conversão conveniente para converter rótulos do popular formato de 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 use_keypoints parâmetro especifica se deve incluir keypoints (para estimativa de pose) nos rótulos convertidos.

FAQ

O 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 de pixel. Para 3D, cada keypoint também tem um indicador de visibilidade. Para mais detalhes, consulte Formato Ultralytics YOLO.

Como uso o conjunto de dados COCO-Pose com Ultralytics YOLO?

Para usar o conjunto de dados COCO-Pose com 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 treinamento:

    from ultralytics import YOLO
    
    model = YOLO("yolo11n-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 train.

Como 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, 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("yolo11n-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.

Qual é o propósito do arquivo YAML do conjunto de dados no Ultralytics YOLO?

O arquivo YAML do dataset no Ultralytics YOLO define o dataset e a configuração do modelo para treinamento. Ele especifica caminhos para imagens de treinamento, validação e teste, formas de pontos-chave, nomes de classes e outras opções de configuração. Este formato estruturado ajuda a otimizar o gerenciamento de datasets e o treinamento de modelos. 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

# 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.

Como posso converter rótulos de conjuntos de dados COCO para o formato Ultralytics YOLO para estimativa de pose?

A Ultralytics fornece uma ferramenta de conversão para converter rótulos de conjuntos 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 obter detalhes, consulte a seção Ferramenta de Conversão e o guia de pré-processamento de dados.



📅 Criado há 1 ano ✏️ Atualizado há 15 dias

Comentários