Перейти к содержанию

Обучение пользовательским данным

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

1.3 Подготовка набора данных для YOLOv5

Независимо от того, маркируете ли вы свои изображения с помощью Roboflow или нет, вы можете использовать его для преобразования вашего набора данных в формат YOLO , создания конфигурационного файла YOLOv5 YAML и размещения его для импорта в ваш обучающий скрипт.

Создайте бесплатную учетную запись Roboflow и загрузите свой набор данных в Public Рабочее пространство, пометьте все неаннотированные изображения, затем создайте и экспортируйте версию вашего набора данных в YOLOv5 Pytorch формат.

Примечание: YOLOv5 выполняет онлайн-аугментацию во время обучения, поэтому мы не рекомендуем применять шаги аугментации в Roboflow для обучения с помощью YOLOv5. Но мы рекомендуем применить следующие шаги предварительной обработки:

Рекомендуемые этапы предварительной обработки

  • Автоориентация - удаление ориентации EXIF из изображений.
  • Изменить размер (Stretch) - до квадратного входного размера вашей модели (640x640 - YOLOv5 по умолчанию).

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

Экспорт в формат YOLOv5

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

Roboflow фрагмент загрузки набора данных

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

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 . 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 , просто используя его уникальный идентификатор. Это поможет вам следить за своими данными без лишних хлопот. Подробности можно узнать в учебникеClearML !

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'

результаты.png

Следующие шаги

После того как модель обучена, вы можете использовать свою лучшую контрольную точку best.pt к:

  • Запустите CLI или Python умозаключение на новых изображениях и видео
  • Проверьте точность на тренировочном, валидном и тестовом сплитах
  • Экспорт в TensorFlowKeras, ONNX, TFlite, TF.js, CoreML и TensorRT форматы.
  • Изменение гиперпараметров для повышения производительности
  • Улучшите свою модель, взяв образцы реальных изображений и добавив их в свой набор данных.

Поддерживаемые среды

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. Создание конфигурации набора данных: Написать 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 формат. Убедитесь, что применены такие этапы предварительной обработки, как автоориентация и изменение размера (растяжение) до квадратного размера входного изображения (например, 640x640).
  4. Загрузите набор данных и интегрируйте его в свой сценарий обучения YOLOv5 .

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

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

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

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

📅 Создано 1 год назад ✏️ Обновлено 1 месяц назад

Комментарии