COCO12-Formats Datensatz

Einführung

Der Ultralytics COCO12-Formats Datensatz ist ein spezieller Testdatensatz, der dazu entwickelt wurde, das Laden von Bildern für alle 12 unterstützten Bildformaterweiterungen zu validieren. Er enthält 12 Bilder (6 für das Training, 6 für die Validierung), die jeweils in einem anderen Format gespeichert sind, um eine umfassende Prüfung der Bildlade-Pipeline zu gewährleisten.

Dieser Datensatz ist von unschätzbarem Wert für:

  • Testen der Unterstützung von Bildformaten: Überprüfe, ob alle unterstützten Formate korrekt geladen werden
  • CI/CD-Pipelines: Automatisierte Prüfung der Formatkompatibilität
  • Debugging: Isoliere formatspezifische Probleme in Trainings-Pipelines
  • Entwicklung: Validierung neuer Formaterweiterungen oder Änderungen

Unterstützte Formate

Der Datensatz enthält jeweils ein Bild für jede der 12 unterstützten Formaterweiterungen, die in ultralytics/data/utils.py definiert sind:

FormatErweiterungBeschreibungTrain/Val
AVIF.avifAV1 Image File Format (modern)Trainieren
BMP.bmpBitmap - unkomprimiertes RasterformatTrainieren
DNG.dngDigital Negative - Adobe RAW-FormatTrainieren
HEIC.heicHigh Efficiency Image CodingTrainieren
JPEG.jpegJPEG mit voller ErweiterungTrainieren
JPG.jpgJPEG mit kurzer ErweiterungTrainieren
JP2.jp2JPEG 2000 - medizinisch/geospatialValidieren
MPO.mpoMulti-Picture Object (Stereobilder)Validieren
PNG.pngPortable Network GraphicsValidieren
TIF.tifTIFF mit kurzer ErweiterungValidieren
TIFF.tiffTagged Image File FormatValidieren
WebP.webpModernes Web-BildformatValidieren

Datensatzstruktur

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

Datensatz-YAML

Der COCO12-Formats Datensatz wird über eine YAML-Datei konfiguriert, die Datensatzpfade und Klassennamen definiert. Du kannst die offizielle coco12-formats.yaml Datei im Ultralytics GitHub Repository einsehen.

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

Anforderungen

Einige Formate erfordern zusätzliche Abhängigkeiten:

pip install pillow pillow-heif pillow-avif-plugin

AVIF Systembibliothek (Optional)

Damit OpenCV AVIF-Dateien direkt lesen kann, muss libavif vor dem Kompilieren von OpenCV installiert werden:

brew install libavif
Hinweis

Das via pip installierte opencv-python Paket enthält möglicherweise keine AVIF-Unterstützung, da es vorkompiliert ist. Ultralytics verwendet Pillow mit pillow-avif-plugin als Fallback für AVIF-Bilder, wenn OpenCV keine Unterstützung bietet.

Verwendung

Um ein YOLO Modell mit dem COCO12-Formats Datensatz zu trainieren, verwende die folgenden Beispiele:

Trainingsbeispiel
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)

Formatspezifische Hinweise

AVIF (AV1 Image File Format)

AVIF ist ein modernes Bildformat, das auf dem AV1-Videocodec basiert und eine hervorragende Kompression bietet. Erfordert pillow-avif-plugin:

pip install pillow-avif-plugin

DNG (Digital Negative)

DNG ist Adobes offenes RAW-Format, das auf TIFF basiert. Zu Testzwecken verwendet der Datensatz TIFF-basierte Dateien mit der .dng Erweiterung.

JP2 (JPEG 2000)

JPEG 2000 ist ein auf Wavelets basierender Bildkompressionsstandard, der eine bessere Kompression und Qualität als das herkömmliche JPEG bietet. Wird häufig in der medizinischen Bildgebung (DICOM), in Geodatenanwendungen und im digitalen Kino verwendet. Wird nativ sowohl von OpenCV als auch von Pillow unterstützt.

MPO (Multi-Picture Object)

MPO-Dateien werden für stereoskopische (3D) Bilder verwendet. Der Datensatz speichert Standard-JPEG-Daten mit der .mpo Erweiterung zum Testen des Formats.

HEIC (High Efficiency Image Coding)

HEIC erfordert das Paket pillow-heif für eine korrekte Kodierung:

pip install pillow-heif

Anwendungsfälle

CI/CD-Tests

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

Formatvalidierung

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}"

Zitate und Danksagungen

Wenn du den COCO-Datensatz in deiner Forschung verwendest, zitiere bitte:

Zitat
@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

Wofür wird der COCO12-Formats Datensatz verwendet?

Der COCO12-Formats Datensatz wurde für das Testen der Kompatibilität von Bildformaten in Ultralytics YOLO Trainings-Pipelines entwickelt. Er stellt sicher, dass alle 12 unterstützten Bildformate (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) korrekt geladen und verarbeitet werden.

Warum mehrere Bildformate testen?

Verschiedene Bildformate haben einzigartige Eigenschaften (Kompression, Farbtiefe, Farbräume). Das Testen aller Formate stellt sicher:

  • Robuster Code zum Laden von Bildern
  • Kompatibilität über verschiedene Datensätze hinweg
  • Frühe Erkennung von formatspezifischen Fehlern

Welche Formate erfordern spezielle Abhängigkeiten?

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

Kommentare