Salta para o conteúdo

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

Formatos de conjuntos de dados suportados

Ultralytics YOLO formato

O formato da etiqueta do conjunto de dados utilizado para treinar os modelos de pose do YOLO é o seguinte:

  1. Um ficheiro de texto por imagem: Cada imagem do conjunto de dados tem um ficheiro de texto correspondente com o mesmo nome que o ficheiro de imagem e a extensão ".txt".
  2. Uma linha por objeto: Cada linha no ficheiro de texto corresponde a uma instância de objeto na imagem.
  3. Informação 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 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 do ponto-chave do objeto: Os pontos-chave do objeto, normalizados para estarem entre 0 e 1.

Segue-se um exemplo do formato da etiqueta para a tarefa de estimativa de pose:

Formata com Dim = 2

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

Formata com Dim = 3

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

Neste formato, <class-index> é o índice da classe do objeto,<x> <y> <width> <height> são as coordenadas da caixa delimitadora, e <px1> <py1> <px2> <py2> ... <pxn> <pyn> são as coordenadas de píxeis 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 deteção. Aqui está um exemplo do formato YAML usado para definir um conjunto de dados de deteção:

# 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: ../datasets/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 dictionary
names:
  0: person

O train e val especificam os caminhos para os directórios que contêm as imagens de treino e de validação, respetivamente.

names é um dicionário de nomes de classes. A ordem dos nomes deve corresponder à ordem dos índices das classes de objectos nos ficheiros do conjunto de dados YOLO .

(Opcional) se os pontos forem simétricos, então precisas de flip_idx, como o lado esquerdo-direito de um humano ou de um rosto. Por exemplo, se assumirmos cinco pontos-chave da marca facial: [olho esquerdo, olho direito, nariz, boca esquerda, boca direita], e o índice original é [0, 1, 2, 3, 4], então flip_idx é [1, 0, 2, 4, 3] (troca apenas o índice esquerdo-direito, ou seja, 0-1 e 3-4, e não modifica outros como o nariz neste exemplo).

Utilização

Exemplo

from ultralytics import YOLO

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

# Train the model
results = model.train(data='coco128-pose.yaml', epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco128-pose.yaml model=yolov8n-pose.pt epochs=100 imgsz=640

Conjuntos de dados suportados

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

COCO-Pose

  • Descrição: COCO-Pose é um conjunto de dados de deteção de objectos, segmentação e estimativa de pose em grande escala. É um subconjunto do popular conjunto de dados COCO e concentra-se na estimativa da pose humana. COCO-Pose inclui múltiplos pontos-chave para cada instância humana.
  • Formato da etiqueta: Igual ao formato Ultralytics YOLO 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, ancas, 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 etiquetadas.
  • Ler mais sobre COCO-Pose

COCO8-Pose

  • Descrição: Ultralytics COCO8-Pose é um pequeno, mas versátil conjunto de dados de deteção de pose composto pelas primeiras 8 imagens do conjunto COCO train 2017, 4 para treino e 4 para validação.
  • Formato da etiqueta: Igual ao formato Ultralytics YOLO 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, ancas, joelhos e tornozelos.
  • Utilização: Adequado para testar e depurar modelos de deteção de objectos, ou para experimentar novas abordagens de deteção.
  • Notas adicionais: COCO8-Pose é ideal para verificações de sanidade e verificações de IC.
  • Ler mais sobre COCO8-Pose

Pose de tigre

  • Descrição: Ultralytics Este conjunto de dados de pose de animais inclui 263 imagens provenientes de um vídeo do YouTube, com 210 imagens alocadas para treino e 53 para validação.
  • Formato da etiqueta: Igual ao formato Ultralytics YOLO descrito acima, com 12 pontos-chave para a pose do animal e sem dimensão visível.
  • Número de classes: 1 (Tigre).
  • Pontos-chave: 12 pontos-chave.
  • Usa: Ótimo para a pose de animais ou qualquer outra pose que não seja humana.
  • Ler mais sobre a pose do tigre

Adicionar o teu próprio conjunto de dados

Se tiveres o teu próprio conjunto de dados e quiseres utilizá-lo para treinar modelos de estimativa de pose com o formato Ultralytics YOLO , certifica-te de que segue o formato especificado acima em "Ultralytics YOLO format". Converte suas anotações para o formato necessário e especifica os caminhos, o número de classes e os nomes das classes no arquivo de configuração YAML.

Ferramenta de conversão

Ultralytics fornece uma ferramenta de conversão conveniente para converter etiquetas 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 utilizada para converter o conjunto de dados COCO ou qualquer conjunto de dados no formato COCO para o formato Ultralytics YOLO . A ferramenta use_keypoints especifica se os pontos-chave (para a estimativa da pose) devem ser incluídos nas etiquetas convertidas.



Criado em 2023-11-12, Atualizado em 2023-12-03
Autores: glenn-jocher (5)

Comentários