Обзор наборов данных для классификации изображений#
Структура набора данных для задач классификации YOLO#
Для задач классификации Ultralytics YOLO датасет должен быть организован в определенную структуру с разделением по директориям внутри каталога root, чтобы упростить правильное обучение, тестирование и необязательные процессы валидации. Эта структура включает в себя отдельные директории для этапов обучения (train) и валидации (val), а также необязательную директорию для тестирования (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/
| |-- airplane/
| | |-- 10_airplane.png
| | |-- 11_airplane.png
| | |-- ...
| |
| |-- automobile/
| | |-- 100_automobile.png
| | |-- 101_automobile.png
| | |-- ...
| |
| |-- bird/
| | |-- 1000_bird.png
| | |-- 1001_bird.png
| | |-- ...
| |
| |-- ...
|
|-- val/ (optional)
| |-- 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 поддерживает следующие наборы данных с функцией автоматической загрузки:
- 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, убедись, что он соответствует формату, указанному выше в разделе «Dataset Structure», а затем укажи аргумент data, ссылающийся на директорию датасета при инициализации скрипта обучения.
FAQ#
Чтобы структурировать свой датасет для задач классификации Ultralytics YOLO, тебе следует использовать определенный формат с разделением по директориям. Организуй свой датасет в виде отдельных директорий для
train,testи, при желании,val. Каждая из этих директорий должна содержать поддиректории, названные в честь каждого класса, с соответствующими изображениями внутри. Это обеспечивает плавный процесс обучения и оценки. В качестве примера рассмотрим формат датасета CIFAR-10:cifar-10-/ |-- train/ | |-- airplane/ | |-- automobile/ | |-- bird/ | ... |-- test/ | |-- airplane/ | |-- automobile/ | |-- bird/ | ... |-- val/ (optional) | |-- airplane/ | |-- automobile/ | |-- bird/ | ...Для получения подробной информации посети раздел Dataset Structure for YOLO Classification Tasks.
Ultralytics YOLO поддерживает автоматическую загрузку нескольких датасетов для классификации изображений, включая Caltech 101, Caltech 256, CIFAR-10, CIFAR-100, Fashion-MNIST, ImageNet, ImageNet-10, Imagenette, Imagewoof и MNIST. Эти датасеты структурированы так, чтобы их было удобно использовать с YOLO. На странице каждого датасета приводятся дополнительные сведения о его структуре и применении.
Чтобы использовать собственный датасет с Ultralytics YOLO, убедись, что он соответствует требуемому формату директорий для задачи классификации, с отдельными директориями
train,testи, опционально,val, а также поддиректориями для каждого класса, содержащими соответствующие изображения. Как только твой датасет будет правильно структурирован, укажи аргумент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)Более подробную информацию можно найти в разделе Adding your own dataset.
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 с использованием любого из подходов. Для получения дополнительной информации посети раздел Usage и страницу Train для задач классификации.