Перейти к содержимому

Тренируй пользовательские данные

📚 Это руководство объясняет, как обучить свой собственный набор данных с помощью 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 активное обучение

Создание пользовательской модели для обнаружения твоих объектов - это итеративный процесс сбора и систематизации изображений, маркировки интересующих тебя объектов, обучения модели, ее развертывания в дикой природе для составления прогнозов, а затем использования этой развернутой модели для сбора примеров крайних случаев для повторения и улучшения.

Лицензирование

Ultralytics предлагает два варианта лицензирования:

  • ЛицензияAGPL-3.0 - одобренная OSI лицензия с открытым исходным кодом, идеально подходящая для студентов и энтузиастов.
  • Лицензия Enterprise для предприятий, которые хотят внедрить наши модели искусственного интеллекта в свои продукты и услуги.

Более подробную информацию ты найдешь на сайте Ultralytics Лицензирование.

YOLOv5 Модели должны быть обучены на меченых данных, чтобы узнать классы объектов в этих данных. Есть два варианта создания набора данных перед началом обучения:

Вариант 1: Создай Roboflow Набор данных

1.1 Собери изображения

Твоя модель будет учиться на собственном примере. Обучение на изображениях, похожих на те, которые она увидит в естественных условиях, имеет огромное значение. В идеале ты должен собрать множество изображений с той же конфигурацией (камера, ракурс, освещение и т.д.), с которой ты в итоге будешь разворачивать свой проект.

Если это невозможно, ты можешь начать с публичного набора данных, чтобы обучить свою начальную модель, а затем в процессе вычисления выбирать изображения из дикой природы, чтобы итеративно улучшать набор данных и модель.

1.2 Создание ярлыков

Когда ты соберешь изображения, тебе нужно будет аннотировать интересующие тебя объекты, чтобы создать базовую истину, на которой будет обучаться твоя модель.

YOLOv5 Точность

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

Экспорт в YOLOv5 Pytorch формат, затем скопируй сниппет в свой обучающий скрипт или блокнот, чтобы загрузить свой набор данных.

Roboflow Загрузочный фрагмент набора данных

Вариант 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).

Roboflow Аннотации

Файл с метками, соответствующий изображению выше, содержит 2 человека (класс 0) и ничья (класс 27):

Roboflow Предварительная обработка массива данных

2.3 Организуй каталоги

Организуй изображения и метки для поездов и валов в соответствии с приведенным ниже примером. YOLOv5 предполагает. /coco128 находится внутри /datasets каталог рядом с . /yolov5 каталог. YOLOv5 Автоматически определяет местонахождение этикеток для каждого изображения заменив последний экземпляр /images/ в каждом пути изображения с /labels/. Например:

../datasets/coco128/images/im0.jpg  # image
../datasets/coco128/labels/im0.txt  # label

YOLOv5 Структура набора данных

3. Выберите модель

Выбери предварительно обученную модель, с которой начнешь обучение. Здесь мы выбрали YOLOv5s, вторую по размеру и самую быструю из доступных моделей. Полное сравнение всех моделей смотри в нашей таблице README.

YOLOv5 модели

4. Поезд

Обучи модель YOLOv5s на COCO128, указав набор данных, размер партии, размер изображения и либо предварительно обученную модель --weights yolov5s.pt (рекомендуется), или случайно инициализированный --weights '' --cfg yolov5s.yaml (не рекомендуется). Предварительно обученные веса автоматически загружаются из Последний выпуск YOLOv5.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

Наконечник

💡 Добавь --cache ram или --cache disk для ускорения тренировок (требует значительных ресурсов оперативной памяти/диска).

Наконечник

💡 Всегда тренируйся на локальном наборе данных. Смонтированные или сетевые диски вроде Google Drive будут работать очень медленно.

Все результаты тренировок сохраняются в runs/train/ с увеличивающимися директориями запуска, то есть runs/train/exp2, runs/train/exp3 И так далее. Подробнее об этом читай в разделе "Обучение" нашего обучающего блокнота. Open In Colab Откройся в Kaggle

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: Open In Colab

YOLO UI

ClearML Логирование и автоматизация 🌟 НОВИНКА

ClearML полностью интегрирован в YOLOv5 , чтобы отслеживать ход твоих экспериментов, управлять версиями наборов данных и даже удаленно выполнять тренировочные прогоны. Чтобы включить ClearML:

  • pip install clearml
  • запусти clearml-init чтобы подключиться к серверу ClearML

Ты получишь все отличные функции, ожидаемые от менеджера экспериментов: обновления в реальном времени, загрузку моделей, сравнение экспериментов и т. д., но ClearML также отслеживает незафиксированные изменения и, например, установленные пакеты. Благодаря этому ClearML Tasks (именно так мы называем эксперименты) также воспроизводимы на разных машинах! С помощью всего 1 дополнительной строки мы можем запланировать YOLOv5 тренировочную задачу в очередь на выполнение любым количеством ClearML -агентов (рабочих).

Ты можешь использовать ClearML Data для версионирования своего набора данных, а затем передать его на YOLOv5 , просто используя его уникальный ID. Это поможет тебе следить за своими данными без лишних хлопот. Изучи учебник ClearML , чтобы узнать подробности!

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'

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, чтобы дать старт твоим проектам.

Статус проекта

YOLOv5 CI

Этот значок означает, что все тесты непрерывной интеграции (CI) YOLOv5 GitHub Actions успешно пройдены. Эти CI-тесты тщательно проверяют функциональность и производительность YOLOv5 по различным ключевым аспектам: обучение, валидация, вывод, экспорт и бенчмарки. Они обеспечивают стабильную и надежную работу на macOS, Windows и Ubuntu, причем тесты проводятся каждые 24 часа и при каждом новом коммите.

ВОПРОСЫ И ОТВЕТЫ

Как обучить YOLOv5 на своем пользовательском наборе данных?

Обучение YOLOv5 на пользовательском наборе данных включает в себя несколько этапов:

  1. Подготовь свой набор данных: Собери и пометь изображения. Используй такие инструменты, как Roboflow чтобы упорядочить данные и экспортировать их в форматYOLOv5 .
  2. Настройка среды: Клонируй репо YOLOv5 и установи зависимости:
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. Создание конфигурации набора данных: Write a dataset.yaml файл, определяющий пути train/val и названия классов.
  4. Обучи модель:
    python train.py --img 640 --epochs 3 --data dataset.yaml --weights yolov5s.pt
    

Какие инструменты я могу использовать для аннотирования набора данных YOLOv5 ?

Ты можешь использовать Roboflow Annotate- интуитивно понятный веб-инструмент для маркировки изображений. Он поддерживает совместную работу в команде и экспортирует данные в формат YOLOv5 . После сбора изображений используй Roboflow для эффективного создания и управления аннотациями. Другие варианты включают такие инструменты, как LabelImg и CVAT для локальных аннотаций.

Почему я должен использовать Ultralytics HUB для обучения своих моделей YOLO ?

Ultralytics HUB предлагает комплексную платформу для обучения, развертывания и управления моделями YOLO , не требующую обширных навыков кодирования. Преимущества использования Ultralytics HUB включают в себя:

  • Легкое обучение моделей: Упрощает процесс обучения заранее настроенная среда.
  • Управление данными: Легко управляй наборами данных и контролем версий.
  • Мониторинг в реальном времени: Интегрирует такие инструменты, как Comet для отслеживания и визуализации показателей в реальном времени.
  • Сотрудничество: Идеально подходит для командных проектов с общими ресурсами и простым управлением.

Как преобразовать аннотированные данные в формат YOLOv5 ?

Чтобы преобразовать аннотированные данные в формат YOLOv5 , используй Roboflow:

  1. Загрузи свой набор данных в рабочую область Roboflow .
  2. Пометьте изображения, если они еще не помечены.
  3. Генерация и экспорт набор данных в YOLOv5 Pytorch Формат. Убедись, что применены такие этапы предварительной обработки, как автоориентирование и изменение размера (Stretch) до квадратного размера входных данных (например, 640x640).
  4. Скачай Dataset и интегрируй его в свой обучающий скрипт YOLOv5 .

Какие существуют варианты лицензирования для использования YOLOv5 в коммерческих приложениях?

Ultralytics предлагает два варианта лицензирования:

  • AGPL-3.0 Лицензия: Лицензия с открытым исходным кодом, подходящая для некоммерческого использования, идеально подходит для студентов и энтузиастов.
  • Корпоративная лицензия: Предназначена для предприятий, желающих интегрировать YOLOv5 в коммерческие продукты и услуги. Подробную информацию можно найти на странице лицензирования.

За более подробной информацией обращайся к нашему руководству по лицензированиюUltralytics .

📅 Created 1 year ago ✏️ Updated 25 days ago

Комментарии