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:
- 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".
- 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 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 🚀 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 listando um caminho de imagem por linha (caminhos que começam com ./ são resolvidos em relação ao ficheiro *.txt). Um ficheiro *.txt é útil para treinar num subconjunto de um diretório, ignorar imagens sem etiquetas ou combinar imagens de várias fontes 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 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) flip_idx mapeia cada ponto-chave para sua imagem espelhada, para que a aumentação de inversão horizontal mantenha a esquerda e a direita consistentes em esqueletos simétricos, como um corpo ou rosto humano. Para cinco pontos 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 esquerdo-direito 0-1 e 3-4 se invertem, e o nariz mantém seu próprio índice.
(Opcional) kpt_oks_sigmas define sigmas de OKS personalizados por ponto-chave usados durante 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 cada valor deve ser positivo. Quando omitido, os sigmas de 17 pontos-chave do COCO são usados para kpt_shape: [17, 3] e um 1/N uniforme caso contrário.
Link to this sectionUso#
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 secção descreve os conjuntos de dados compatíveis com o formato Ultralytics YOLO e que podem ser utilizados para treinar modelos de pose estimation:
Link to this sectionCOCO-Pose#
- Descrição: COCO-Pose é um conjunto de dados de estimativa de pose humana em larga escala que abrange as imagens COCO 2017 que contêm pessoas com anotações de pontos-chave.
- Formato de Rótulo: Igual ao formato Ultralytics YOLO descrito acima, com keypoints para poses humanas.
- Número de Classes: 1 (pessoa).
- Pontos-chave: 17 tipos de pontos-chave, incluindo nariz, olhos, orelhas, ombros, cotovelos, pulsos, quadris, joelhos e tornozelos, cada um com uma dimensão de visibilidade.
- Uso: 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.
- Leia mais sobre COCO-Pose
Link to this sectionCOCO8-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 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 (pessoa).
- Pontos-chave: 17 tipos de pontos-chave, incluindo nariz, olhos, orelhas, ombros, cotovelos, pulsos, quadris, joelhos e tornozelos, cada um com uma dimensão de visibilidade.
- Uso: Adequado para testar e depurar modelos de estimativa de pose ou para experimentar novas abordagens de detecção de pontos-chave.
- Notas Adicionais: O COCO8-Pose é ideal para verificações de sanidade e CI checks.
- Leia mais sobre COCO8-Pose
Link to this sectionDog-Pose#
- Descrição: O conjunto de dados Dog-Pose da Ultralytics contém 6.773 imagens de treinamento e 1.703 de validação para estimativa de pontos-chave 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 (cachorro).
- Pontos-chave: 24 pontos-chave, cada um com uma dimensão de visibilidade, adaptados para poses de cachorros, 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.
- Notas Adicionais: As imagens de origem são extraídas do Stanford Dogs Dataset.
- Leia mais sobre Dog-Pose
Link to this sectionHand Keypoints#
- Descrição: O conjunto de dados Hand Keypoints da Ultralytics compreende 26.768 imagens, com 18.776 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.
- Notas Adicionais: As anotações de pontos-chave são geradas usando o Google MediaPipe para uma rotulagem consistente.
- 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 treinamento e 53 para validação.
- Formato de Rótulo: Igual ao formato Ultralytics YOLO como descrito acima, com 12 pontos-chave 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.
- Notas Adicionais: Lançado sob a AGPL-3.0 License.
- 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.
Para pular a etapa de conversão inteiramente, a Ultralytics Platform permite que você carregue imagens brutas, anote pontos-chave no navegador e treine diretamente no conjunto de dados resultante.
Link to this sectionFerramenta de Conversão#
A Ultralytics fornece uma ferramenta de conversão prática para converter etiquetas do popular formato de COCO dataset 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 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?#
coco-pose.yaml é fornecido com o pacote e baixa as imagens e rótulos no primeiro uso, portanto, 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 detalhes do conjunto de dados, consulte COCO-Pose, e a página Train para a lista completa de argumentos.
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:
-
Converta suas anotações para o formato Ultralytics YOLO.
-
Crie um arquivo de configuração YAML especificando os caminhos do conjunto de dados, 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 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.zipLeia 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 facilmente conjuntos de dados COCO em projetos YOLO. Para mais detalhes, consulta a secção Conversion Tool e o data preprocessing guide.