Ultralytics YOLO27:
Get Started

Обзор наборов данных для классификации изображений#

Структура набора данных для задач классификации YOLO#

Для задач классификации YOLO от Ultralytics набор данных нужно организовать в специальную структуру каталогов с разделением на выборки внутри каталога root. Эта структура включает каталог train и каталог val (также принимаются valid и validation), а каталог test можно добавить по желанию. Если каталога для валидации нет, вместо него для валидации используется каталог test. Если в корневом каталоге вообще нет train, но есть отдельная папка для каждого класса, Ultralytics автоматически разделит изображения в пропорции 80/20 и создаст каталог <root>_split с подкаталогами train и val.

Каждый из этих каталогов должен содержать по одному подкаталогу для каждого класса набора данных. Подкаталоги называются по соответствующим классам и содержат все изображения этих классов. Убедись, что имена файлов изображений уникальны и что файлы сохранены в распространённом формате, например JPEG или PNG.

Пример структуры каталогов#

Рассмотрим в качестве примера набор данных CIFAR-10. Структура каталогов должна выглядеть так:

cifar10/
|
|-- train/
|   |-- airplane/
|   |   |-- 10008_airplane.png
|   |   |-- 10009_airplane.png
|   |   |-- ...
|   |
|   |-- automobile/
|   |   |-- 1000_automobile.png
|   |   |-- 1001_automobile.png
|   |   |-- ...
|   |
|   |-- bird/
|   |   |-- 10014_bird.png
|   |   |-- 10015_bird.png
|   |   |-- ...
|   |
|   |-- ...
|
|-- test/ (optional)
|   |-- airplane/
|   |   |-- 10_airplane.png
|   |   |-- 11_airplane.png
|   |   |-- ...
|   |
|   |-- automobile/
|   |   |-- 100_automobile.png
|   |   |-- 101_automobile.png
|   |   |-- ...
|   |
|   |-- bird/
|   |   |-- 1000_bird.png
|   |   |-- 1001_bird.png
|   |   |-- ...
|   |
|   |-- ...
|
|-- val/
|   |-- airplane/
|   |   |-- 105_airplane.png
|   |   |-- 106_airplane.png
|   |   |-- ...
|   |
|   |-- automobile/
|   |   |-- 102_automobile.png
|   |   |-- 103_automobile.png
|   |   |-- ...
|   |
|   |-- bird/
|   |   |-- 1045_bird.png
|   |   |-- 1046_bird.png
|   |   |-- ...
|   |
|   |-- ...

Такой подход обеспечивает эффективное обучение модели на хорошо организованных классах и точную оценку её производительности на этапах тестирования и валидации.

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

Пример
from ultralytics import YOLO

# Загрузить модель
model = YOLO("yolo26n-cls.pt")  # загрузить предварительно обученную модель (рекомендуется для обучения)

# Обучить модель
results = model.train(data="path/to/dataset", epochs=100, imgsz=640)
Совет

Большинство встроенных имён наборов данных (например, cifar10, imagenette или mnist160) автоматически скачивают данные и сохраняют их в кэше при первом обращении. Указывай путь к папке в data только для собственного подготовленного набора данных.

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

Ultralytics поддерживает автоматическое скачивание следующих наборов данных. Большинство из них также размещено на платформе Ultralytics: там можно просматривать изображения и аннотации, изучать статистику наборов данных и копировать их для облачного обучения.

  • Caltech 101: набор данных с изображениями 101 категории объектов для задач классификации изображений.
  • Caltech 256: расширенная версия Caltech 101 с 256 категориями объектов и более сложными изображениями.
  • CIFAR-10: набор из 60 тыс. цветных изображений размером 32x32 в 10 классах — по 6 тыс. изображений на класс.
  • CIFAR-100: расширенная версия CIFAR-10 со 100 категориями объектов и 600 изображениями на класс.
  • Fashion-MNIST: набор из 70 000 изображений в градациях серого, представляющих 10 категорий одежды, для задач классификации изображений.
  • ImageNet: эталонный набор ImageNet-1k (ILSVRC-2012) для классификации изображений, содержащий 1 000 классов, 1,28 миллиона обучающих изображений и 50 000 валидационных изображений.
  • ImageNet-10: небольшое подмножество ImageNet с 10 категориями для более быстрого экспериментирования и тестирования.
  • Imagenette: небольшое подмножество ImageNet с 10 легко различимыми классами для ускорения обучения и тестирования.
  • Imagewoof: более сложное подмножество ImageNet, включающее 10 категорий пород собак для задач классификации изображений.
  • MNIST: набор из 70 000 изображений рукописных цифр в градациях серого для задач классификации изображений.
  • MNIST160: первые 8 изображений каждой цифры (0-9) из обучающей и тестовой выборок MNIST. Всего в наборе 160 изображений.

Добавление собственного набора данных#

Если у тебя есть собственный набор данных для обучения моделей классификации с Ultralytics YOLO, убедись, что он соответствует формату, описанному выше в разделе «Структура набора данных», а затем при инициализации скрипта обучения укажи каталог набора данных в аргументе data.

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

  • Чтобы структурировать набор данных для задач классификации Ultralytics YOLO, используй специальный формат каталогов с разделением на выборки. Размести данные в отдельных каталогах train и val, а при необходимости — также в test. В каждом из этих каталогов должны быть подкаталоги с именами классов и соответствующими изображениями. Это упрощает обучение и оценку модели. Пример формата набора данных см. на примере CIFAR-10:

    cifar10/
    |-- train/
    |   |-- airplane/
    |   |-- automobile/
    |   |-- bird/
    |   ...
    |-- val/
    |   |-- airplane/
    |   |-- automobile/
    |   |-- bird/
    |   ...
    |-- test/ (optional)
    |   |-- airplane/
    |   |-- automobile/
    |   |-- bird/
    |   ...

    Подробнее см. в разделе Структура набора данных для задач классификации YOLO.

  • Ultralytics YOLO поддерживает автоматическое скачивание нескольких наборов данных для классификации изображений, в том числе Caltech 101, Caltech 256, CIFAR-10, CIFAR-100, Fashion-MNIST, ImageNet, ImageNet-10, Imagenette, Imagewoof и MNIST. Эти наборы данных организованы так, чтобы их было удобно использовать с YOLO. На странице каждого набора данных приведены дополнительные сведения о его структуре и применении.

  • Чтобы использовать собственный набор данных с Ultralytics YOLO, организуй его в соответствии с требуемым для классификации форматом каталогов: создай отдельные каталоги train и val (а при необходимости — также test) и добавь в них подкаталоги для каждого класса с соответствующими изображениями. После этого при инициализации скрипта обучения укажи корневой каталог набора данных в аргументе data. Пример на Python:

    from ultralytics import YOLO
    
    # Загрузить модель
    model = YOLO("yolo26n-cls.pt")  # загрузить предварительно обученную модель (рекомендуется для обучения)
    
    # Обучить модель
    results = model.train(data="path/to/your/dataset", epochs=100, imgsz=640)

    Подробнее см. в разделе Добавление собственного набора данных.

  • Ultralytics YOLO предлагает несколько преимуществ для классификации изображений:

    • Предварительно обученные модели: загружай предварительно обученные модели, например yolo26n-cls.pt, чтобы быстрее приступить к обучению.
    • Простота использования: простые команды API и CLI для обучения и оценки.
    • Высокая производительность: передовые показатели точности и скорости — отличный выбор для приложений реального времени.
    • Поддержка различных наборов данных: простая интеграция с популярными наборами данных, такими как CIFAR-10, ImageNet и другими.
    • Сообщество и поддержка: доступ к подробной документации и активному сообществу, которое поможет устранить неполадки и улучшить решения.

    Дополнительную информацию и примеры применения в реальных задачах можно найти на странице Ultralytics YOLO.

  • Модель с помощью Ultralytics YOLO легко обучить как на Python, так и через CLI. Пример:

    Пример
    from ultralytics import YOLO
    
    # Загрузить модель
    model = YOLO("yolo26n-cls.pt")  # загрузи предварительно обученную модель
    
    # Обучить модель
    results = model.train(data="path/to/dataset", epochs=100, imgsz=640)

    В этих примерах показано, как просто обучить модель YOLO любым из двух способов. Подробнее см. в разделе Использование и на странице Обучение для задач классификации.

Комментарии