Обзор наборов данных для классификации изображений
Структура набора данных для задач классификации YOLO
Для Ultralytics задач классификации YOLO набор данных должен быть организован в определенную структуру разделенных каталогов в каталоге root
для обеспечения надлежащего обучения, тестирования и, при необходимости, проверки. Эта структура включает в себя отдельные каталоги для этапов обучения (train
) и тестирования (test
), с необязательным каталогом для проверки (val
).
Каждый из этих каталогов должен содержать один подкаталог для каждого класса в наборе данных. Подкаталоги называются в честь соответствующего класса и содержат все изображения для этого класса. Убедитесь, что каждый файл изображения имеет уникальное имя и хранится в общем формате, таком как 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("yolo11n-cls.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="path/to/dataset", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo classify train data=path/to/data model=yolo11n-cls.pt epochs=100 imgsz=640
Поддерживаемые наборы данных
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 изображений каждой категории MNIST из набора данных MNIST. Набор данных содержит 160 изображений.
Добавление собственного набора данных
Если у вас есть собственный набор данных и вы хотите использовать его для обучения моделей классификации с помощью Ultralytics YOLO, убедитесь, что он соответствует формату, указанному выше в разделе «Структура набора данных», а затем укажите свой data
аргумент в каталог набора данных при инициализации скрипта обучения.
Часто задаваемые вопросы
Как структурировать мой набор данных для задач классификации YOLO?
Чтобы структурировать свой набор данных для задач классификации Ultralytics YOLO, вам следует придерживаться определенного формата разделения по каталогам. Организуйте свой набор данных в отдельные каталоги для train
, test
, и, при необходимости, val
. Каждый из этих каталогов должен содержать подкаталоги, названные в честь каждого класса, с соответствующими изображениями внутри. Это облегчает процессы обучения и оценки. В качестве примера рассмотрим CIFAR-10 формат набора данных:
cifar-10-/
|-- train/
| |-- airplane/
| |-- automobile/
| |-- bird/
| ...
|-- test/
| |-- airplane/
| |-- automobile/
| |-- bird/
| ...
|-- val/ (optional)
| |-- airplane/
| |-- automobile/
| |-- bird/
| ...
Для получения более подробной информации посетите раздел Структура набора данных для задач классификации YOLO.
Какие наборы данных поддерживаются Ultralytics YOLO для классификации изображений?
Ultralytics YOLO поддерживает автоматическую загрузку нескольких наборов данных для классификации изображений, включая Caltech 101, Caltech 256, CIFAR-10, CIFAR-100, Fashion-MNIST, ImageNet, ImageNet-10, Imagenette, Imagewoof и MNIST. Эти наборы данных структурированы таким образом, что их легко использовать с YOLO. На странице каждого набора данных представлена дополнительная информация о его структуре и приложениях.
Как добавить свой собственный набор данных для классификации изображений YOLO?
Чтобы использовать свой собственный набор данных с Ultralytics YOLO, убедитесь, что он соответствует указанному формату каталогов, необходимому для задачи классификации, с отдельными train
, test
, и, при необходимости, val
каталогами и подкаталогами для каждого класса, содержащими соответствующие изображения. После того как ваш набор данных будет правильно структурирован, укажите data
аргумент в корневой каталог вашего набора данных при инициализации скрипта обучения. Вот пример на Python:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-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 для классификации изображений?
Ultralytics YOLO предлагает несколько преимуществ для классификации изображений, в том числе:
- Предварительно обученные модели: Загружайте предварительно обученные модели, такие как
yolo11n-cls.pt
чтобы быстро начать процесс обучения. - Простота использования: Простые API и команды CLI для обучения и оценки.
- Высокая производительность: Современная точность и скорость, идеально подходящие для приложений реального времени.
- Поддержка нескольких наборов данных: Бесшовная интеграция с различными популярными наборами данных, такими как CIFAR-10, ImageNet и другими.
- Сообщество и поддержка: Доступ к обширной документации и активному сообществу для устранения неполадок и улучшений.
Для получения дополнительной информации и примеров использования в реальных условиях вы можете изучить Ultralytics YOLO.
Как я могу обучить модель с использованием Ultralytics YOLO?
Обучение модели с использованием Ultralytics YOLO можно легко выполнить как в Python, так и в CLI. Вот пример:
Пример
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-cls.pt") # load a pretrained model
# Train the model
results = model.train(data="path/to/dataset", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo classify train data=path/to/data model=yolo11n-cls.pt epochs=100 imgsz=640
Эти примеры демонстрируют простой процесс обучения модели YOLO с использованием любого из подходов. Для получения дополнительной информации посетите раздел Использование и страницу Обучение для задач классификации.