Обзор датасетов для классификации изображений#
Структура датасета для задач классификации YOLO#
Для задач классификации Ultralytics YOLO набор данных должен быть организован в определенной структуре каталогов разделения в каталоге root. Эта структура включает каталог train и каталог val (каталоги valid и validation также принимаются), а также необязательный каталог test. Если каталог проверки отсутствует, для проверки используется каталог test.
Каждый из этих каталогов должен содержать по одному подкаталогу для каждого класса в датасете. Подкаталоги называются в соответствии с классами и содержат все изображения соответствующего класса. Убедись, что имена всех файлов изображений уникальны и что они сохранены в распространённом формате, например JPEG или PNG.
Пример структуры каталогов#
Рассмотрим в качестве примера датасет CIFAR-10. Структура каталогов должна выглядеть так:
cifar-10-/
|
|-- 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
# Load a model
model = YOLO("yolo26n-cls.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="path/to/dataset", epochs=100, imgsz=640)Большинство встроенных имён датасетов (например, cifar10, imagenette или mnist160) автоматически скачивают данные и кэшируют их при первом обращении. Указывай data как путь к каталогу только после подготовки собственного датасета.
Поддерживаемые наборы данных#
Ultralytics поддерживает следующие наборы данных с автоматической загрузкой. Большинство этих наборов данных также размещены на Ultralytics Platform, где ты можешь просматривать изображения и аннотации, просматривать статистику наборов данных и клонировать их для облачного обучения.
- 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: крупномасштабный датасет для детектирования объектов и классификации изображений, содержащий более 14 миллионов изображений и 20 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:cifar-10-/ |-- 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 # Load a model model = YOLO("yolo26n-cls.pt") # load a pretrained model (recommended for training) # Train the model 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 # Load a model model = YOLO("yolo26n-cls.pt") # load a pretrained model # Train the model results = model.train(data="path/to/dataset", epochs=100, imgsz=640)Эти примеры демонстрируют простоту обучения модели YOLO любым из двух способов. Дополнительную информацию см. в разделе Использование и на странице Обучение для задач классификации.