Обучение пользовательским данным
📚 В этом руководстве рассказывается о том, как обучить свой собственный набор данных с помощью YOLOv5 🚀.
Прежде чем начать
Клонируйте репо и установите файл requirements.txt в Python>=3.8.0 в окружении, включая PyTorch>=1.8. Модели и наборы данных загружаются автоматически из последнегорелиза YOLOv5 .
git clone https://github.com/ultralytics/yolov5 # clone
cd yolov5
pip install -r requirements.txt # install
Обучение на пользовательских данных
Создание пользовательской модели для обнаружения объектов - это итеративный процесс сбора и систематизации изображений, маркировки интересующих вас объектов, обучения модели, ее развертывания в естественных условиях для получения прогнозов, а затем использования развернутой модели для сбора примеров крайних случаев для повторения и улучшения.
Лицензирование
Ultralytics предлагает два варианта лицензирования:
- ЛицензияAGPL-3.0 , одобренная OSI лицензия с открытым исходным кодом, идеально подходящая для студентов и энтузиастов.
- Лицензия Enterprise для компаний, желающих внедрить наши модели искусственного интеллекта в свои продукты и услуги.
Дополнительные сведения см. на сайте Ultralytics Лицензирование.
YOLOv5 Для изучения классов объектов в этих данных модели необходимо обучать на маркированных данных. Существует два варианта создания набора данных перед началом обучения:
Вариант 1: Создать Roboflow Набор данных
1.1 Сбор изображений
Ваша модель будет учиться на собственном примере. Обучение на изображениях, похожих на те, которые она увидит в естественных условиях, имеет первостепенное значение. В идеале нужно собрать множество изображений с той же конфигурацией (камера, угол обзора, освещение и т. д.), с которой вы в конечном итоге развернете свой проект.
Если это невозможно, вы можете начать с общедоступного набора данных для обучения первоначальной модели, а затем выбирать изображения из дикой природы в процессе вывода, чтобы итеративно улучшать набор данных и модель.
1.2 Создание этикеток
После сбора изображений вам нужно аннотировать интересующие вас объекты, чтобы создать базовую истину для обучения модели.
Roboflow Annotate - это простой веб-инструмент для управления и маркировки изображений с помощью вашей команды и их экспорта в формате аннотацийYOLOv5.
1.3 Подготовка набора данных для YOLOv5
Независимо от того, маркируете ли вы свои изображения с помощью Roboflow или нет, вы можете использовать его для преобразования вашего набора данных в формат YOLO , создания конфигурационного файла YOLOv5 YAML и размещения его для импорта в ваш обучающий скрипт.
Создайте бесплатную учетную запись Roboflow и загрузите свой набор данных в Public
Рабочее пространство, пометьте все неаннотированные изображения, затем создайте и экспортируйте версию вашего набора данных в YOLOv5 Pytorch
формат.
Примечание: YOLOv5 выполняет онлайн-аугментацию во время обучения, поэтому мы не рекомендуем применять шаги аугментации в Roboflow для обучения с помощью YOLOv5. Но мы рекомендуем применить следующие шаги предварительной обработки:
- Автоориентация - удаление ориентации EXIF из изображений.
- Изменить размер (Stretch) - до квадратного входного размера вашей модели (640x640 - YOLOv5 по умолчанию).
Создав версию, вы получите моментальный снимок вашего набора данных, так что вы всегда сможете вернуться и сравнить с ним будущие тренировки модели, даже если позже добавите больше изображений или измените конфигурацию.
Экспорт в YOLOv5 Pytorch
формат, затем скопируйте сниппет в свой обучающий скрипт или блокнот для загрузки набора данных.
Вариант 2: Создание набора данных вручную
2.1 Создать dataset.yaml
COCO128 Это пример небольшого обучающего набора данных, состоящего из первых 128 изображений в COCO train2017. Эти же 128 изображений используются как для обучения, так и для проверки, чтобы убедиться, что наш обучающий конвейер способен оверфиттинг. data/coco128.yaml, показанный ниже, является файлом конфигурации набора данных, который определяет 1) корневой каталог набора данных path
и относительные пути к train
/ val
/ test
каталоги изображений (или *.txt
файлы с путями к изображениям) и 2) класс names
словарь:
# 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: ../datasets/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes (80 COCO classes)
names:
0: person
1: bicycle
2: car
# ...
77: teddy bear
78: hair drier
79: toothbrush
2.2 Создание этикеток
После использования инструмента аннотации для маркировки изображений экспортируйте этикетки в YOLO формат, с одним *.txt
файл на изображение (если на изображении нет объектов, то нет *.txt
файл обязателен). Сайт *.txt
спецификации файлов:
- Одна строка на объект
- Каждый ряд
class x_center y_center width height
формат. - Координаты ящика должны быть в нормализованный xywh формат (от 0 до 1). Если поля в пикселях, разделите
x_center
иwidth
по ширине изображения, иy_center
иheight
по высоте изображения. - Номера классов имеют нулевую индексацию (начинаются с 0).
Файл этикеток, соответствующий приведенному выше изображению, содержит 2 человека (класс 0
) и ничья (класс 27
):
2.3 Организация каталогов
Организуйте изображения и метки поездов и валов в соответствии с приведенным ниже примером. YOLOv5 предполагает. /coco128
находится внутри /datasets
каталог рядом с сайт /yolov5
каталог. YOLOv5 автоматическое определение местоположения этикеток для каждого изображения заменив последний экземпляр /images/
в каждом пути изображения с /labels/
. Например:
3. Выберите модель
Выберите предварительно обученную модель для начала обучения. Здесь мы выбрали YOLOv5s, вторую по размеру и самую быструю из доступных моделей. Полное сравнение всех моделей приведено в таблице README.
4. Поезд
Обучите модель YOLOv5s на COCO128, указав набор данных, размер партии, размер изображения и либо предварительно обученную модель --weights yolov5s.pt
(рекомендуется), или произвольно инициализированный --weights '' --cfg yolov5s.yaml
(не рекомендуется). Предварительно обученные веса автоматически загружаются из последний выпуск YOLOv5.
Наконечник
💡 Добавить --cache ram
или --cache disk
для ускорения обучения (требует значительных ресурсов оперативной памяти/диска).
Наконечник
💡 Всегда обучайтесь на локальном наборе данных. Монтированные или сетевые диски, например Google Drive, будут работать очень медленно.
Все результаты обучения сохраняются в runs/train/
с увеличивающимися каталогами запуска, т.е. runs/train/exp2
, runs/train/exp3
и т.д. Более подробную информацию вы найдете в разделе "Обучение" нашего учебника.
5. Визуализируйте
Comet Ведение журнала и визуализация 🌟 НОВИНКА
Comet теперь полностью интегрирован с YOLOv5. Отслеживайте и визуализируйте показатели модели в реальном времени, сохраняйте гиперпараметры, наборы данных и контрольные точки модели, а также визуализируйте предсказания модели с помощью пользовательских панелейComet . Comet позволяет вам никогда не терять контроль над своей работой и легко делиться результатами и сотрудничать в командах любого размера!
Приступить к работе очень просто:
pip install comet_ml # 1. install
export COMET_API_KEY=<Your API Key> # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. train
Чтобы узнать больше обо всех поддерживаемых функциях Comet для этой интеграции, ознакомьтесь с Comet Учебное пособие. Если вы хотите узнать больше о сайте Comet, посетите наш сайт. документация. Для начала попробуйте блокнот Comet Colab Notebook:
ClearML Ведение журнала и автоматизация 🌟 НОВИНКА
ClearML полностью интегрирован в YOLOv5 для отслеживания результатов экспериментов, управления версиями наборов данных и даже удаленного выполнения тренировок. Чтобы включить ClearML:
pip install clearml
- запустить
clearml-init
для подключения к серверу ClearML
Вы получите все отличные функции, ожидаемые от менеджера экспериментов: обновление в реальном времени, загрузку моделей, сравнение экспериментов и т. д., но ClearML также отслеживает незафиксированные изменения и установленные пакеты, например. Благодаря этому ClearML Tasks (так мы называем эксперименты) также воспроизводимы на разных машинах! С помощью всего 1 дополнительной строки мы можем запланировать YOLOv5 учебную задачу в очередь на выполнение любым количеством ClearML -агентов (рабочих).
Вы можете использовать ClearML Data для версионирования вашего набора данных, а затем передать его на YOLOv5 , просто используя его уникальный идентификатор. Это поможет вам следить за своими данными без лишних хлопот. Подробности можно узнать в учебникеClearML !
Локальное протоколирование
Результаты тренировок автоматически регистрируются в журнале Tensorboard и CSV регистраторы для runs/train
, причем для каждой новой тренировки создается новый каталог экспериментов. runs/train/exp2
, runs/train/exp3
, и т.д.
Эта директория содержит статистику по обучению и оценке, мозаики, метки, предсказания и дополненные мозаики, а также метрики и графики, включая кривые "точность-возврат " (PR) и матрицы путаницы.
Файл результатов results.csv
обновляется после каждого эпоха, а затем строится как results.png
(ниже) после завершения обучения. Вы также можете построить график любого results.csv
файл вручную:
from utils.plots import plot_results
plot_results("path/to/results.csv") # plot 'results.csv' as 'results.png'
Следующие шаги
После того как модель обучена, вы можете использовать свою лучшую контрольную точку best.pt
к:
- Запустите CLI или Python умозаключение на новых изображениях и видео
- Проверьте точность на тренировочном, валидном и тестовом сплитах
- Экспорт в TensorFlowKeras, ONNX, TFlite, TF.js, CoreML и TensorRT форматы.
- Изменение гиперпараметров для повышения производительности
- Улучшите свою модель, взяв образцы реальных изображений и добавив их в свой набор данных.
Поддерживаемые среды
Ultralytics предоставляет ряд готовых к использованию окружений, в каждом из которых предустановлены такие необходимые зависимости, как CUDA, CUDNN, Python, и PyTorchдля запуска ваших проектов.
- Бесплатные блокноты GPU:
- Google Облако: Руководство по быстрому запуску GCP
- Amazon: Руководство по быстрому запуску AWS
- Azure: Руководство по быстрому запуску AzureML
- Docker: Руководство по быстрому запуску Docker
Статус проекта
Этот значок означает, что все тесты непрерывной интеграции (CI) YOLOv5 GitHub Actions успешно пройдены. Эти CI-тесты тщательно проверяют функциональность и производительность YOLOv5 по различным ключевым аспектам: обучение, валидация, вывод, экспорт и контрольные показатели. Они обеспечивают стабильную и надежную работу на macOS, Windows и Ubuntu, причем тесты проводятся каждые 24 часа и при каждом новом коммите.
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Как обучить YOLOv5 на пользовательском наборе данных?
Обучение YOLOv5 на пользовательском наборе данных включает в себя несколько этапов:
- Подготовьте набор данных: Соберите и пометьте изображения. Используйте такие инструменты, как Roboflow для упорядочивания данных и экспорта в форматYOLOv5 .
- Настройка среды: Клонируйте репо YOLOv5 и установите зависимости:
- Создание конфигурации набора данных: Написать a
dataset.yaml
файл, определяющий пути train/val и имена классов. - Обучение модели:
Какие инструменты можно использовать для аннотирования набора данных YOLOv5 ?
Вы можете использовать Roboflow Annotate, интуитивно понятный веб-инструмент для маркировки изображений. Он поддерживает совместную работу и экспортирует данные в формат YOLOv5 . После сбора изображений используйте Roboflow для эффективного создания и управления аннотациями. Другие варианты включают такие инструменты, как LabelImg и CVAT для локальных аннотаций.
Почему я должен использовать Ultralytics HUB для обучения своих моделей YOLO ?
Ultralytics HUB предлагает комплексную платформу для обучения, развертывания и управления моделями YOLO , не требующую обширных навыков кодирования. Преимущества использования Ultralytics HUB включают:
- Простое обучение моделей: Упрощает процесс обучения благодаря предварительно настроенным средам.
- Управление данными: Удобное управление наборами данных и контроль версий.
- Мониторинг в режиме реального времени: Интегрирует такие инструменты, как Comet для отслеживания и визуализации показателей в режиме реального времени.
- Сотрудничество: Идеально подходит для командных проектов с общими ресурсами и простым управлением.
Как преобразовать аннотированные данные в формат YOLOv5 ?
Чтобы преобразовать аннотированные данные в формат YOLOv5 , используйте Roboflow:
- Загрузите набор данных в рабочую область Roboflow .
- Пометьте изображения, если они еще не помечены.
- Генерация и экспорт набор данных в
YOLOv5 Pytorch
формат. Убедитесь, что применены такие этапы предварительной обработки, как автоориентация и изменение размера (растяжение) до квадратного размера входного изображения (например, 640x640). - Загрузите набор данных и интегрируйте его в свой сценарий обучения YOLOv5 .
Каковы возможности лицензирования для использования YOLOv5 в коммерческих приложениях?
Ultralytics предлагает два варианта лицензирования:
- AGPL-3.0 Лицензия: Лицензия с открытым исходным кодом, подходящая для некоммерческого использования, идеально подходит для студентов и энтузиастов.
- Корпоративная лицензия: Предназначена для предприятий, желающих интегрировать YOLOv5 в коммерческие продукты и услуги. Для получения подробной информации посетите нашу страницу Лицензирование.
Более подробную информацию вы найдете в нашем руководстве по лицензированиюUltralytics .