Visão Geral de Datasets de Estimativa de Pose
Formatos de Dataset Suportados
Formato Ultralytics YOLO
O formato de label do dataset usado para treinar modelos de pose YOLO é o seguinte:
- Um arquivo de texto por imagem: Cada imagem no dataset possui um arquivo de texto correspondente com o mesmo nome do arquivo de imagem e a extensão ".txt".
- Uma linha por objeto: Cada linha no arquivo 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 keypoints do objeto: Os keypoints do objeto, normalizados para ficarem entre 0 e 1.
Aqui está um exemplo do formato de label 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 keypoints 3D (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 do dataset
O framework Ultralytics usa um formato de arquivo YAML para definir a configuração do dataset e do modelo para treinar modelos de estimativa de pose. Aqui está um exemplo do formato YAML usado para definir um dataset 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 e val 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 dataset YOLO.
(Opcional) se os pontos forem simétricos, então é necessário o flip_idx, como o lado esquerdo-direito de um humano ou rosto. Por exemplo, se assumirmos cinco keypoints de pontos de referência 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 é [1, 0, 2, 4, 3] (apenas troque o índice esquerdo-direito, isto é, 0-1 e 3-4, e não modifique outros como o nariz neste exemplo).
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)Datasets Suportados
Esta seção descreve os datasets 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 dataset de detecção de objetos, segmentação e estimativa de pose em larga escala. É um subconjunto do popular dataset COCO e foca na estimativa de pose humana. O COCO-Pose inclui múltiplos keypoints para cada instância humana.
- Formato de Label: Igual ao formato Ultralytics YOLO conforme 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 dataset é rico e diverso, contendo mais de 200 mil imagens rotuladas.
- Leia mais sobre COCO-Pose
COCO8-Pose
- Descrição: O Ultralytics COCO8-Pose é um dataset de detecção de pose pequeno, mas versátil, composto pelas 8 primeiras imagens do conjunto de treino COCO 2017, sendo 4 para treino e 4 para validação.
- Formato de Label: Igual ao formato Ultralytics YOLO conforme 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: O COCO8-Pose é ideal para verificações de sanidade e testes de CI.
- Leia mais sobre COCO8-Pose
Dog-Pose
- Descrição: O dataset Dog Pose contém 6.773 imagens de treino e 1.703 de teste, fornecendo um recurso vasto e diversificado para estimativa de keypoints caninos.
- Formato de Label: Segue o formato Ultralytics YOLO, com anotações para múltiplos keypoints específicos da anatomia canina.
- Número de Classes: 1 (Cachorro).
- Keypoints: Inclui 24 keypoints adaptados para poses de cachorros, como membros, articulações e posições da cabeça.
- Uso: Ideal para treinar modelos para estimar poses de cachorros em vários cenários, desde pesquisa até aplicações do mundo real.
- Leia mais sobre Dog-Pose
Hand Keypoints
- Descrição: O dataset de pose de keypoints da mão compreende quase 26 mil imagens, com 18.776 imagens alocadas para treino e 7.992 para validação.
- Formato de Label: 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
Tiger-Pose
- Descrição: O dataset 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 Label: Igual ao formato Ultralytics YOLO conforme descrito acima, com 12 keypoints 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.
- Leia mais sobre Tiger-Pose
Adicionando seu próprio dataset
Se você tem seu próprio dataset 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 fornece uma ferramenta de conversão conveniente para converter labels do popular formato do dataset 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 usada para converter o dataset COCO ou qualquer dataset no formato COCO para o formato Ultralytics YOLO. O parâmetro use_keypoints especifica se os keypoints (para estimativa de pose) devem ser incluídos nos labels convertidos.
FAQ
Qual é o formato Ultralytics YOLO para estimativa de pose?
O formato Ultralytics YOLO para datasets 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 possui um sinalizador de visibilidade. Para mais detalhes, veja formato Ultralytics YOLO.
Como uso o dataset COCO-Pose com o Ultralytics YOLO?
Para usar o dataset COCO-Pose com o Ultralytics YOLO:
-
Baixe o dataset e prepare seus arquivos de label no formato YOLO.
-
Crie um arquivo de configuração YAML especificando os caminhos para as imagens de treino e validação, formato dos keypoints e nomes das classes.
-
Use o arquivo de configuração para treinar:
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 treinamento.
Como posso adicionar meu próprio dataset para estimativa de pose no Ultralytics YOLO?
Para adicionar seu dataset:
-
Converta suas anotações para o formato Ultralytics YOLO.
-
Crie um arquivo de configuração YAML especificando os caminhos do dataset, número de classes e nomes das classes.
-
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 as etapas completas, confira a seção Adicionando seu próprio dataset.
Qual é a finalidade do arquivo YAML do dataset no Ultralytics YOLO?
O arquivo YAML do dataset no Ultralytics YOLO define a configuração do dataset e do modelo para treinamento. Ele especifica os caminhos para imagens de treino, validação e teste, formatos de keypoints, nomes das classes e outras opções de configuração. Este formato estruturado ajuda a simplificar o gerenciamento do dataset 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.zipLeia mais sobre como criar arquivos de configuração YAML em Formato YAML de Dataset.
Como posso converter labels do dataset COCO para o formato Ultralytics YOLO para estimativa de pose?
A Ultralytics fornece uma ferramenta de conversão para converter labels do dataset 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 detalhes, consulte a seção Ferramenta de Conversão e o guia de pré-processamento de dados.