Salta para o conteúdo

Conjunto de dados COCO-Pose

O conjunto de dados COCO-Pose é uma versão especializada do conjunto de dados COCO (Common Objects in Context), concebido para tarefas de estimativa de pose. Aproveita as imagens e etiquetas do COCO Keypoints 2017 para permitir o treino de modelos como YOLO para tarefas de estimativa de pose.

Pose imagem de amostra

Modelos pré-treinados COCO-Pose

Modelo tamanho
(pixéis)
mAPpose
50-95
mAPpose
50
Velocidade
CPU ONNX
(ms)
Velocidade
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
YOLOv8n-pose 640 50.4 80.1 131.8 1.18 3.3 9.2
YOLOv8s-pose 640 60.0 86.2 233.2 1.42 11.6 30.2
YOLOv8m-pose 640 65.0 88.8 456.3 2.00 26.4 81.0
YOLOv8l-pose 640 67.6 90.0 784.5 2.59 44.4 168.6
YOLOv8x-pose 640 69.2 90.2 1607.1 3.73 69.4 263.2
YOLOv8x-pose-p6 1280 71.6 91.2 4088.7 10.04 99.1 1066.4

Características principais

  • O COCO-Pose baseia-se no conjunto de dados COCO Keypoints 2017, que contém 200 mil imagens rotuladas com pontos-chave para tarefas de estimativa de pose.
  • O conjunto de dados suporta 17 pontos-chave para figuras humanas, facilitando a estimativa detalhada da pose.
  • Tal como o COCO, fornece métricas de avaliação padronizadas, incluindo Object Keypoint Similarity (OKS) para tarefas de estimativa de pose, tornando-o adequado para comparar o desempenho do modelo.

Estrutura do conjunto de dados

O conjunto de dados COCO-Pose está dividido em três subconjuntos:

  1. Train2017: Este subconjunto contém uma parte das 118K imagens do conjunto de dados COCO, anotadas para treinar modelos de estimativa de pose.
  2. Val2017: Este subconjunto contém uma seleção de imagens utilizadas para efeitos de validação durante a formação do modelo.
  3. Teste2017: Este subconjunto é constituído por imagens utilizadas para testar e aferir os modelos treinados. As anotações da verdade terrestre para este subconjunto não estão disponíveis publicamente e os resultados são enviados para o servidor de avaliação COCO para avaliação do desempenho.

Aplicações

O conjunto de dados COCO-Pose é usado especificamente para treinar e avaliar modelos de aprendizagem profunda em tarefas de deteção de pontos-chave e estimativa de pose, como o OpenPose. O grande número de imagens anotadas e as métricas de avaliação padronizadas do conjunto de dados fazem dele um recurso essencial para pesquisadores e profissionais de visão computacional focados na estimativa de pose.

Conjunto de dados YAML

Um ficheiro YAML (Yet Another Markup Language) é utilizado para definir a configuração do conjunto de dados. Contém informações sobre os caminhos do conjunto de dados, classes e outras informações relevantes. No caso do conjunto de dados COCO-Pose, o ficheiro coco-pose.yaml é mantido em https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco-pose.yaml.

ultralytics/cfg/datasets/coco-pose.yaml

# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO 2017 dataset https://cocodataset.org by Microsoft
# Documentation: https://docs.ultralytics.com/datasets/pose/coco/
# Example usage: yolo train data=coco-pose.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco-pose  ← downloads here (20.1 GB)

# 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/coco-pose # dataset root dir
train: train2017.txt # train images (relative to 'path') 118287 images
val: val2017.txt # val images (relative to 'path') 5000 images
test: test-dev2017.txt # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794

# 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: |
  from ultralytics.utils.downloads import download
  from pathlib import Path

  # Download labels
  dir = Path(yaml['path'])  # dataset root dir
  url = 'https://github.com/ultralytics/yolov5/releases/download/v1.0/'
  urls = [url + 'coco2017labels-pose.zip']  # labels
  download(urls, dir=dir.parent)
  # Download data
  urls = ['http://images.cocodataset.org/zips/train2017.zip',  # 19G, 118k images
          'http://images.cocodataset.org/zips/val2017.zip',  # 1G, 5k images
          'http://images.cocodataset.org/zips/test2017.zip']  # 7G, 41k images (optional)
  download(urls, dir=dir / 'images', threads=3)

Utilização

Para treinar um modelo YOLOv8n-pose no conjunto de dados COCO-Pose para 100 épocas com um tamanho de imagem de 640, podes utilizar os seguintes snippets de código. Para obter uma lista abrangente dos argumentos disponíveis, consulta a página de treino do modelo.

Exemplo de comboio

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='coco-pose.yaml', epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco-pose.yaml model=yolov8n.pt epochs=100 imgsz=640

Exemplos de imagens e anotações

O conjunto de dados COCO-Pose contém um conjunto diversificado de imagens com figuras humanas anotadas com pontos-chave. Aqui estão alguns exemplos de imagens do conjunto de dados, juntamente com as anotações correspondentes:

Imagem de amostra do conjunto de dados

  • Imagem em mosaico: Esta imagem demonstra um lote de treino composto por imagens do conjunto de dados em mosaico. O mosaico é uma técnica utilizada durante o treino que combina várias imagens numa única imagem para aumentar a variedade de objectos e cenas em cada lote de treino. Isto ajuda a melhorar a capacidade do modelo de generalizar para diferentes tamanhos de objectos, proporções e contextos.

O exemplo mostra a variedade e complexidade das imagens no conjunto de dados COCO-Pose e os benefícios da utilização de mosaicos durante o processo de formação.

Citações e agradecimentos

Se utilizares o conjunto de dados COCO-Pose no teu trabalho de investigação ou desenvolvimento, cita o seguinte documento:

@misc{lin2015microsoft,
      title={Microsoft COCO: Common Objects in Context},
      author={Tsung-Yi Lin and Michael Maire and Serge Belongie and Lubomir Bourdev and Ross Girshick and James Hays and Pietro Perona and Deva Ramanan and C. Lawrence Zitnick and Piotr Dollár},
      year={2015},
      eprint={1405.0312},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Gostaríamos de agradecer ao COCO Consortium pela criação e manutenção deste valioso recurso para a comunidade de visão computacional. Para mais informações sobre o conjunto de dados COCO-Pose e os seus criadores, visita o sítio Web do conjunto de dados COCO.



Criado em 2023-11-12, Atualizado em 2024-04-17
Autores: glenn-jocher (4), RizwanMunawar (1), Laughing-q (1)

Comentários