Salta para o conteĆŗdo

Conjunto de dados COCO

O conjunto de dados COCO (Common Objects in Context) Ć© um conjunto de dados de deteĆ§Ć£o, segmentaĆ§Ć£o e legendagem de objectos em grande escala. Foi concebido para incentivar a investigaĆ§Ć£o numa grande variedade de categorias de objectos e Ć© normalmente utilizado para aferir modelos de visĆ£o por computador. Ɖ um conjunto de dados essencial para investigadores e programadores que trabalham em tarefas de deteĆ§Ć£o de objectos, segmentaĆ§Ć£o e estimativa de pose.

CaracterĆ­sticas principais

  • O COCO contĆ©m 330K imagens, com 200K imagens com anotaƧƵes para tarefas de deteĆ§Ć£o de objectos, segmentaĆ§Ć£o e legendagem.
  • O conjunto de dados inclui 80 categorias de objectos, incluindo objectos comuns como carros, bicicletas e animais, bem como categorias mais especĆ­ficas como guarda-chuvas, malas de mĆ£o e equipamento desportivo.
  • As anotaƧƵes incluem caixas delimitadoras de objectos, mĆ”scaras de segmentaĆ§Ć£o e legendas para cada imagem.
  • O COCO fornece mĆ©tricas de avaliaĆ§Ć£o padronizadas, como a precisĆ£o mĆ©dia (mAP) para deteĆ§Ć£o de objectos e a recuperaĆ§Ć£o mĆ©dia (mAR) para tarefas de segmentaĆ§Ć£o, tornando-o adequado para comparar o desempenho do modelo.

Estrutura do conjunto de dados

O conjunto de dados COCO estĆ” dividido em trĆŖs subconjuntos:

  1. Treina2017: Este subconjunto contĆ©m 118K imagens para treinar modelos de deteĆ§Ć£o de objectos, segmentaĆ§Ć£o e legendagem.
  2. Val2017: Este subconjunto tem 5K imagens utilizadas para efeitos de validaĆ§Ć£o durante a formaĆ§Ć£o do modelo.
  3. Test2017: Este subconjunto Ć© composto por 20 mil 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 Ć© amplamente utilizado para treinar e avaliar modelos de aprendizagem profunda na deteĆ§Ć£o de objetos (como YOLO, Faster R-CNN e SSD), segmentaĆ§Ć£o de instĆ¢ncias (como Mask R-CNN) e deteĆ§Ć£o de pontos-chave (como OpenPose). O conjunto diversificado de categorias de objectos do conjunto de dados, o grande nĆŗmero de imagens anotadas e as mĆ©tricas de avaliaĆ§Ć£o padronizadas fazem dele um recurso essencial para investigadores e profissionais de visĆ£o computacional.

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, o ficheiro coco.yaml Ć© mantido em https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml.

ultralytics/cfg/datasets/coco.yaml

# Ultralytics YOLO šŸš€, AGPL-3.0 license
# COCO 2017 dataset https://cocodataset.org by Microsoft
# Documentation: https://docs.ultralytics.com/datasets/detect/coco/
# Example usage: yolo train data=coco.yaml
# parent
# ā”œā”€ā”€ ultralytics
# ā””ā”€ā”€ datasets
#     ā””ā”€ā”€ coco  ā† 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 # 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

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: |
  from ultralytics.utils.downloads import download
  from pathlib import Path

  # Download labels
  segments = True  # segment or box labels
  dir = Path(yaml['path'])  # dataset root dir
  url = 'https://github.com/ultralytics/yolov5/releases/download/v1.0/'
  urls = [url + ('coco2017labels-segments.zip' if segments else 'coco2017labels.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 no conjunto de dados COCO 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.pt')  # load a pretrained model (recommended for training)

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

Exemplos de imagens e anotaƧƵes

O conjunto de dados COCO contĆ©m um conjunto diversificado de imagens com vĆ”rias categorias de objectos e cenas complexas. 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 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 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 por criar e manter este valioso recurso para a comunidade da visĆ£o computacional. Para mais informaƧƵes sobre o conjunto de dados COCO e os seus criadores, visita o sĆ­tio Web do conjunto de dados COCO.



Criado em 2023-11-12, Atualizado em 2023-11-22
Autores: glenn-jocher (3), Laughing-q (1)

ComentƔrios