Visão geral dos conjuntos de dados de estimativa de pose#
Formatos de conjuntos de dados suportados#
Formato Ultralytics YOLO#
O formato das etiquetas do conjunto de dados utilizado para treinar modelos YOLO de pose é o seguinte:
- Um ficheiro de texto por imagem: Cada imagem do conjunto de dados tem um ficheiro de texto correspondente com o mesmo nome do ficheiro de imagem e a extensão ".txt".
- Uma linha por objeto: Cada linha do ficheiro de texto corresponde a uma instância de objeto na imagem.
- 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 ficarem entre 0 e 1.
Aqui está um exemplo do formato das etiquetas 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 framework Ultralytics utiliza um formato de ficheiro 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 utilizado 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
# 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.zipOs 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 ./ são resolvidos relativamente ao ficheiro *.txt). Um ficheiro *.txt é útil para treinar com um subconjunto de um diretório, ignorar imagens sem etiquetas ou combinar imagens de várias origens numa única divisão.
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: personnames é um dicionário de nomes de classes. A ordem dos nomes deve corresponder à ordem dos índices das classes dos objetos nos ficheiros do conjunto de dados YOLO.
(Opcional) flip_idx mapeia cada ponto-chave para a sua imagem espelhada, para que o aumento com inversão horizontal mantenha a consistência entre esquerda e direita em esqueletos simétricos, como um corpo ou rosto humano. Para cinco marcos 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 o seu próprio índice.
(Opcional) kpt_oks_sigmas define sigmas OKS personalizados por ponto-chave, utilizados durante o treino 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. Quando omitidos, os sigmas dos 17 pontos-chave do COCO são utilizados para kpt_shape: [17, 3] e um 1/N uniforme é utilizado nos restantes casos.
Utilização#
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)Conjuntos de dados suportados#
Esta seção descreve os conjuntos de dados que são compatíveis com o formato do Ultralytics YOLO e podem ser usados para treinar modelos de estimação de pose. A maioria desses conjuntos de dados também está hospedada na Plataforma Ultralytics, onde podes navegar pelas 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 estimativa de pose humana em grande escala, que abrange as imagens do COCO 2017 que contêm pessoas anotadas com pontos-chave.
- Formato das etiquetas: 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, ancas, joelhos e tornozelos, cada um com uma dimensão de visibilidade.
- Utilização: adequado para treinar modelos de estimativa de pose humana.
- Notas adicionais: o conjunto de dados baseia-se no desafio COCO Keypoints 2017: 58,945 imagens anotadas com 156,165 pessoas.
- Lê mais sobre o 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 treino e 4 para validação.
- Formato das etiquetas: 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, ancas, joelhos e tornozelos, cada um com uma dimensão de visibilidade.
- Utilização: adequado para testar e depurar modelos de estimativa de pose ou experimentar novas abordagens de deteção de pontos-chave.
- Notas adicionais: o COCO8-Pose é ideal para verificações de sanidade e verificações de CI.
- Lê mais sobre o COCO8-Pose
Dog-Pose#
- Descrição: o conjunto de dados Dog-Pose da Ultralytics contém 6,773 imagens de treino e 1,703 imagens de validação para a estimativa de pontos-chave caninos.
- Formato das etiquetas: segue o formato Ultralytics YOLO, com anotações para vários pontos-chave específicos da anatomia canina.
- 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.
- Utilização: ideal para treinar modelos que estimem poses de cães em vários cenários, desde investigação até aplicações no mundo real.
- Notas adicionais: as imagens de origem provêm do Stanford Dogs Dataset.
- Lê mais sobre o 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 foram destinadas ao treino e 7,992 à validação.
- Formato das etiquetas: 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.
- Utilização: excelente para a estimativa de pose de mãos humanas e reconhecimento de gestos.
- Notas adicionais: as anotações dos pontos-chave são geradas utilizando o Google MediaPipe para garantir uma rotulagem consistente.
- Lê mais sobre Hand Keypoints
Tiger-Pose#
- Descrição: o conjunto de dados Tiger-Pose da Ultralytics contém 263 imagens provenientes de um vídeo do YouTube, das quais 210 foram destinadas ao treino e 53 à validação.
- Formato das etiquetas: igual ao formato Ultralytics YOLO descrito acima, com 12 pontos-chave para poses de animais e sem dimensão de visibilidade.
- Número de classes: 1 (tigre).
- Pontos-chave: 12 pontos-chave.
- Utilização: excelente para poses de animais ou qualquer outra pose que não seja humana.
- Notas adicionais: disponibilizado sob a Licença AGPL-3.0.
- Lê mais sobre o Tiger-Pose
Adicionar o teu próprio conjunto de dados#
Se tens o teu próprio conjunto de dados e gostarias de o utilizar para treinar modelos de estimativa de pose com o formato Ultralytics YOLO, certifica-te de que segue o formato especificado acima em "Formato Ultralytics YOLO". Converte as tuas anotações para o formato necessário e especifica os caminhos, o número de classes e os nomes das classes no ficheiro de configuração YAML.
Para ignorares completamente a etapa de conversão, a Ultralytics Platform permite-te carregar imagens não processadas, anotar pontos-chave no navegador e treinar diretamente no conjunto de dados resultante.
Ferramenta de conversão#
A Ultralytics fornece uma ferramenta de conversão prática para converter etiquetas do formato do popular conjunto de dados COCO para o formato YOLO:
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. O parâmetro use_keypoints especifica se os pontos-chave (para estimativa de pose) devem ser incluídos nas etiquetas convertidas.
Perguntas frequentes#
O formato Ultralytics YOLO para conjuntos de dados de estimativa de pose envolve a rotulagem de cada imagem com um ficheiro de texto correspondente. Cada linha do ficheiro 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)
Para 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, consulta o formato Ultralytics YOLO.
coco-pose.yamlé incluído no pacote e transfere as imagens e as etiquetas na primeira utilização, pelo que não é necessária 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 obteres detalhes sobre o conjunto de dados, consulta COCO-Pose e a página Train para veres a lista completa de argumentos.
Para adicionares o teu conjunto de dados:
-
Converte as tuas anotações para o formato Ultralytics YOLO.
-
Cria um ficheiro de configuração YAML que especifique os caminhos do conjunto de dados, o número de classes e os nomes das classes.
-
Utiliza o ficheiro de configuração para treinar o teu modelo:
from ultralytics import YOLO model = YOLO("yolo26n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Para veres os passos completos, consulta a secção Adicionar o teu próprio conjunto de dados.
-
O ficheiro YAML do conjunto de dados no Ultralytics YOLO define a configuração do conjunto de dados e do modelo para o treino. Especifica os caminhos para as imagens de treino, validação e teste, as formas dos pontos-chave, os nomes das classes e outras opções de configuração. Este formato estruturado ajuda a simplificar a gestão do conjunto de dados e o treino do modelo. 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.zipLê mais sobre a criação de ficheiros de configuração YAML em Formato YAML de conjuntos de dados.
A Ultralytics fornece uma ferramenta de conversão para converter as etiquetas do conjunto de dados COCO para o formato YOLO, incluindo 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 facilmente conjuntos de dados COCO em projetos YOLO. Para mais detalhes, consulta a secção Ferramenta de conversão e o guia de pré-processamento de dados.