Перейти к содержанию

Набор данных COCO12-Форматы

Введение

The Ultralytics COCO12-Formats — это специализированный тестовый набор данных, предназначенный для проверки загрузки изображений во всех 12 поддерживаемых форматах. Он содержит 12 изображений (6 для обучения, 6 для проверки), каждое из которых сохранено в отдельном формате, чтобы обеспечить всестороннее тестирование процесса загрузки изображений.

Этот набор данных имеет неоценимое значение для:

  • Проверка поддержки форматов изображений: убедитесь, что все поддерживаемые форматы загружаются правильно.
  • CI/CD-конвейеры: автоматическое тестирование совместимости форматов
  • Отладка: выделение проблем, связанных с форматом, в конвейерах обучения
  • Разработка: Проверка новых добавлений или изменений формата

Поддерживаемые форматы

Набор данных включает по одному изображению для каждого из 12 поддерживаемых расширений форматов, определенных в ultralytics/data/utils.py:

ФорматРасширениеОписаниеПоезд/Валь
AVIF.avifФормат файла изображения AV1 (современный)Обучение
BMP.bmpBitmap — несжатый растровый форматОбучение
DNG.dngЦифровой негатив — формат Adobe RAWОбучение
HEIC.heicВысокоэффективное кодирование изображенийОбучение
JPEG.jpegJPEG с полным расширениемОбучение
JPG.jpgJPEG с коротким расширениемОбучение
JP2.jp2JPEG 2000 — медицина/геопространственные данныеВалидация
MPO.mpoОбъект с несколькими изображениями (стереоизображения)Валидация
PNG.pngPortable Network GraphicsВалидация
TIF.tifTIFF с коротким расширениемВалидация
TIFF.tiffФормат файлов с тегами изображенийВалидация
WebP.webpСовременный формат веб-изображенийВалидация

Структура набора данных

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-файл набора данных

Набор данных COCO12-Formats настраивается с помощью файла YAML, в котором определяются пути к наборам данных и имена классов. Вы можете ознакомиться с официальным coco12-formats.yaml файл в репозиторий Ultralytics GitHub.

ultralytics.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

Генерация набора данных

Набор данных можно сгенерировать с помощью предоставленного скрипта, который конвертирует исходные изображения из COCO8 COCO128 все поддерживаемые форматы:

from ultralytics.data.scripts.generate_coco12_formats import generate_coco12_formats

# Generate the dataset
generate_coco12_formats()

Требования

Некоторые форматы требуют дополнительных зависимостей:

pip install pillow pillow-heif pillow-avif-plugin

Библиотека системы AVIF (опционально)

Чтобы OpenCV напрямую читать файлы AVIF, libavif должно быть установлено before создание OpenCV:

brew install libavif
sudo apt install libavif-dev libavif-bin
git clone -b v1.2.1 https://github.com/AOMediaCodec/libavif.git
cd libavif
cmake -B build -DAVIF_CODEC_AOM=SYSTEM -DAVIF_BUILD_APPS=ON
cmake --build build --config Release --parallel
sudo cmake --install build

Примечание

Установленный с помощью pip opencv-python Пакет может не включать поддержку AVIF, так как он предварительно скомпилирован. Ultralytics Pillow с pillow-avif-plugin в качестве запасного варианта для изображений AVIF, когда OpenCV поддерживает их.

Использование

Чтобы обучить YOLO на наборе данных COCO12-Formats, используйте следующие примеры:

Пример обучения

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)
# Train YOLO on COCO12-Formats
yolo detect train data=coco12-formats.yaml model=yolo26n.pt epochs=1 imgsz=640

Примечания по формату

AVIF (формат файлов изображений AV1)

AVIF — это современный формат изображений, основанный на видеокодеке AV1, который обеспечивает отличное сжатие. Требуется pillow-avif-plugin:

pip install pillow-avif-plugin

DNG (цифровой негатив)

DNG — это открытый формат RAW от Adobe, основанный на TIFF. Для тестирования в наборе данных используются файлы на основе TIFF с расширением .dng расширение.

JP2 (JPEG 2000)

JPEG 2000 — это стандарт сжатия изображений на основе вейвлетов, обеспечивающий лучшее сжатие и качество, чем традиционный JPEG. Обычно используется в медицинской визуализации (DICOM), геопространственных приложениях и цифровом кино. Нативно поддерживается как OpenCV Pillow.

MPO (объект с несколькими изображениями)

Файлы MPO используются для стереоскопических (3D) изображений. Набор данных хранит стандартные данные JPEG с .mpo расширение для тестирования формата.

HEIC (высокоэффективное кодирование изображений)

HEIC требует pillow-heif пакет для правильной кодировки:

pip install pillow-heif

Случаи использования

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

Проверка формата

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

Цитирование и благодарности

Если вы используете набор COCO в своих исследованиях, пожалуйста, укажите следующую ссылку:

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

Часто задаваемые вопросы

Для чего используется набор данных COCO12-Formats?

Набор данных COCO12-Formats предназначен для тестирования совместимости форматов изображений в конвейерахYOLO Ultralytics YOLO . Он обеспечивает правильную загрузку и обработку всех 12 поддерживаемых форматов изображений (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP).

Зачем тестировать несколько форматов изображений?

Различные форматы изображений имеют уникальные характеристики (сжатие, битовая глубина, цветовые пространства). Тестирование всех форматов гарантирует:

  • Надежный код загрузки изображений
  • Совместимость между различными наборами данных
  • Раннее обнаружение ошибок, связанных с форматом

Какие форматы требуют особых зависимостей?

  • AVIF: Требуется pillow-avif-plugin
  • HEIC: Требуется pillow-heif

Могу ли я добавить новые тесты формата?

Да! Измените generate_coco12_formats.py скрипт, чтобы включить дополнительные форматы. Убедитесь, что вы также обновили IMG_FORMATS в ultralytics/data/utils.py.



📅 Создано 0 дней назад ✏️ Обновлено 0 дней назад
glenn-jocher

Комментарии