Conjunto de dados COCO12-Formats

Introdução

O conjunto de dados COCO12-Formats da Ultralytics é um conjunto de dados de teste especializado concebido para validar o carregamento de imagens em todas as 12 extensões de formato de imagem suportadas. Contém 12 imagens (6 para treino, 6 para validação), cada uma guardada num formato diferente para garantir um teste abrangente do pipeline de carregamento de imagens.

Este conjunto de dados é inestimável para:

  • Testar o suporte de formatos de imagem: Verifica se todos os formatos suportados carregam corretamente
  • Pipelines de CI/CD: Testes automatizados da compatibilidade de formatos
  • Depuração: Isolar problemas específicos de formato nos pipelines de treino
  • Desenvolvimento: Validar a adição ou alteração de novos formatos

Formatos Suportados

O conjunto de dados inclui uma imagem para cada uma das 12 extensões de formato suportadas, definidas em ultralytics/data/utils.py:

FormatoExtensãoDescriçãoTreino/Val
AVIF.avifAV1 Image File Format (moderno)Train
BMP.bmpBitmap - formato raster não comprimidoTrain
DNG.dngDigital Negative - formato RAW da AdobeTrain
HEIC.heicHigh Efficiency Image CodingTrain
JPEG.jpegJPEG com extensão completaTrain
JPG.jpgJPEG com extensão curtaTrain
JP2.jp2JPEG 2000 - médico/geoespacialVal
MPO.mpoMulti-Picture Object (imagens estéreo)Val
PNG.pngPortable Network GraphicsVal
TIF.tifTIFF com extensão curtaVal
TIFF.tiffTagged Image File FormatVal
WebP.webpFormato de imagem web modernoVal

Estrutura do Dataset

coco12-formats/
├── images/
│   ├── train/          # 6 images (avif, bmp, dng, heic, jpeg, jpg)
│   └── val/            # 6 images (jp2, mpo, png, tif, tiff, webp)
├── labels/
│   ├── train/          # Corresponding YOLO format labels
│   └── val/
└── coco12-formats.yaml # Dataset configuration

YAML do Dataset

O conjunto de dados COCO12-Formats está configurado através de um ficheiro YAML que define os caminhos do conjunto de dados e os nomes das classes. Podes consultar o ficheiro oficial coco12-formats.yaml no repositório GitHub da Ultralytics.

ultralytics/cfg/datasets/coco12-formats.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO12-Formats dataset (12 images testing all supported image formats) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco12-formats/
# Example usage: yolo train data=coco12-formats.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco12-formats ← 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: coco12-formats # dataset root dir
train: images/train # train images (relative to 'path') 6 images
val: images/val # val images (relative to 'path') 6 images
test: # test images (optional)

# 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: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco12-formats.zip

Requisitos

Alguns formatos requerem dependências adicionais:

pip install pillow pillow-heif pillow-avif-plugin

Biblioteca de sistema AVIF (Opcional)

Para que o OpenCV leia ficheiros AVIF diretamente, o libavif deve ser instalado antes de compilar o OpenCV:

brew install libavif
Nota

O pacote opencv-python instalado via pip pode não incluir suporte a AVIF, uma vez que é pré-compilado. A Ultralytics utiliza Pillow com pillow-avif-plugin como reserva para imagens AVIF quando o OpenCV não possui suporte.

Utilização

Para treinar um modelo YOLO no conjunto de dados COCO12-Formats, utiliza os seguintes exemplos:

Exemplo de Treino
from ultralytics import YOLO

# Load a pretrained YOLO model
model = YOLO("yolo26n.pt")

# Train on COCO12-Formats to test all image formats
results = model.train(data="coco12-formats.yaml", epochs=1, imgsz=640)

Notas Específicas sobre Formatos

AVIF (AV1 Image File Format)

AVIF é um formato de imagem moderno baseado no codec de vídeo AV1, que oferece uma excelente compressão. Requer pillow-avif-plugin:

pip install pillow-avif-plugin

DNG (Digital Negative)

DNG é o formato RAW aberto da Adobe baseado em TIFF. Para fins de teste, o conjunto de dados utiliza ficheiros baseados em TIFF com a extensão .dng.

JP2 (JPEG 2000)

JPEG 2000 é um padrão de compressão de imagem baseado em wavelets que oferece melhor compressão e qualidade do que o JPEG tradicional. É comummente utilizado em imagiologia médica (DICOM), aplicações geoespaciais e cinema digital. Suportado nativamente tanto pelo OpenCV como pelo Pillow.

MPO (Multi-Picture Object)

Os ficheiros MPO são utilizados para imagens estereoscópicas (3D). O conjunto de dados armazena dados JPEG padrão com a extensão .mpo para testes de formato.

HEIC (High Efficiency Image Coding)

HEIC requer o pacote pillow-heif para uma codificação correta:

pip install pillow-heif

Casos de Uso

Testes de CI/CD

from ultralytics import YOLO

def test_all_image_formats():
    """Test that all image formats load correctly."""
    model = YOLO("yolo26n.pt")
    results = model.train(data="coco12-formats.yaml", epochs=1, imgsz=64)
    assert results is not None

Validação de Formato

from pathlib import Path

from ultralytics.data.utils import IMG_FORMATS

# Verify all formats are represented
dataset_dir = Path("datasets/coco12-formats/images")
found_formats = {f.suffix[1:].lower() for f in dataset_dir.rglob("*.*")}
assert found_formats == IMG_FORMATS, f"Missing formats: {IMG_FORMATS - found_formats}"

Citações e Agradecimentos

Se utilizares o conjunto de dados COCO na tua investigação, por favor cita:

Citação
@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{\'a}r},
      year={2015},
      eprint={1405.0312},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

FAQ

Para que serve o conjunto de dados COCO12-Formats?

O conjunto de dados COCO12-Formats foi concebido para testar a compatibilidade de formatos de imagem nos pipelines de treino YOLO da Ultralytics. Garante que todos os 12 formatos de imagem suportados (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) são carregados e processados corretamente.

Porquê testar múltiplos formatos de imagem?

Diferentes formatos de imagem têm características únicas (compressão, profundidade de bits, espaços de cor). Testar todos os formatos garante:

  • Código robusto de carregamento de imagens
  • Compatibilidade entre conjuntos de dados diversos
  • Deteção precoce de erros específicos de formato

Quais os formatos que requerem dependências especiais?

  • AVIF: Requer pillow-avif-plugin
  • HEIC: Requer pillow-heif

Comentários