Тренируй пользовательские данные
📚 Это руководство объясняет, как обучить свой собственный набор данных с помощью 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's.
1.3 Подготовь набор данных для YOLOv5
Независимо от того, маркируешь ты свои изображения с помощью Roboflow или нет, ты можешь использовать его для преобразования своего набора данных в формат YOLO , создания конфигурационного файла YOLOv5 YAML и размещения его для импорта в свой обучающий скрипт.
Создай бесплатный аккаунт на Roboflow и загрузите свой набор данных в Public
Рабочее пространство, пометь все неаннотированные изображения, затем создай и экспортируй версию своего набора данных в YOLOv5 Pytorch
формат.
Примечание: YOLOv5 выполняет онлайн-аугментацию во время обучения, поэтому мы не рекомендуем применять какие-либо шаги аугментации в Roboflow для обучения с YOLOv5. Но мы рекомендуем применить следующие шаги предварительной обработки:
- Auto-Orient - чтобы убрать EXIF-ориентацию из твоих изображений.
- Изменить размер (Stretch) - до квадратного входного размера твоей модели (640x640 - это YOLOv5 по умолчанию).
Создав версию, ты получишь моментальный снимок своего набора данных, так что ты всегда сможешь вернуться и сравнить с ним будущие тренировки модели, даже если впоследствии добавишь больше изображений или изменишь ее конфигурацию.
Экспорт в YOLOv5 Pytorch
формат, затем скопируй сниппет в свой обучающий скрипт или блокнот, чтобы загрузить свой набор данных.
Вариант 2: Создай набор данных вручную
2.1 Создай dataset.yaml
COCO128 Это пример небольшого обучающего набора данных, состоящего из первых 128 изображений в COCO train2017. These same 128 images are used for both training and validation to verify our training pipeline is capable of overfitting. 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 Custom Panels! 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 , просто используя его уникальный ID. Это поможет тебе следить за своими данными без лишних хлопот. Изучи учебник ClearML , чтобы узнать подробности!
Локальное протоколирование
Результаты тренировок автоматически регистрируются с помощью Tensorboard и CSV логгеры, чтобы runs/train
При этом для каждой новой тренировки создается новый каталог экспериментов. runs/train/exp2
, runs/train/exp3
, и т. д.
This directory contains train and val statistics, mosaics, labels, predictions and augmented mosaics, as well as metrics and charts including precision-recall (PR) curves and confusion matrices.
Файл с результатами results.csv
is updated after each epoch, and then plotted as 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 умозаключение на новых изображениях и видео
- Validate accuracy on train, val and test splits
- Export to TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML and TensorRT formats
- Развивай гиперпараметры, чтобы улучшить производительность
- Улучши свою модель, взяв образцы изображений из реального мира и добавив их в свой набор данных
Поддерживаемые среды
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 и установи зависимости:
- Создание конфигурации набора данных: Write 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
Формат. Убедись, что применены такие этапы предварительной обработки, как автоориентирование и изменение размера (Stretch) до квадратного размера входных данных (например, 640x640). - Скачай Dataset и интегрируй его в свой обучающий скрипт YOLOv5 .
Какие существуют варианты лицензирования для использования YOLOv5 в коммерческих приложениях?
Ultralytics предлагает два варианта лицензирования:
- AGPL-3.0 Лицензия: Лицензия с открытым исходным кодом, подходящая для некоммерческого использования, идеально подходит для студентов и энтузиастов.
- Корпоративная лицензия: Предназначена для предприятий, желающих интегрировать YOLOv5 в коммерческие продукты и услуги. Подробную информацию можно найти на странице лицензирования.
За более подробной информацией обращайся к нашему руководству по лицензированиюUltralytics .