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

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

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

Прежде чем начать

Сначала убедитесь, что у вас настроено необходимое окружение. Клонируйте репозиторий YOLOv5 и установите необходимые зависимости из requirements.txt. A Python.8.0 окружение с PyTorch.8 необходимо. Модели и наборы данных автоматически загружаются из последней версии YOLOv5 выпуск если они не найдены локально.

git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependencies

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

Диаграмма цикла активного обучения Ultralytics , показывающая сбор данных, маркировку, обучение, развертывание и сбор крайних случаев

Разработка пользовательской модели обнаружения объектов - это итеративный процесс:

  1. Собирайте и упорядочивайте изображения: Соберите изображения, относящиеся к конкретной задаче. Очень важно получить высококачественные и разнообразные данные. См. наше руководство по сбору данных и аннотированию.
  2. Пометить объекты: Точно обозначьте интересующие вас объекты на изображениях.
  3. Обучите модель: Используйте помеченные данные для обучения модели YOLOv5 . Используйте возможности трансферного обучения, начав с предварительно обученных весов.
  4. Развертывание и прогнозирование: Используйте обученную модель для выводов на новых, неизвестных данных.
  5. Соберите крайние случаи: Определите сценарии, в которых модель работает плохо(крайние случаи), и добавьте аналогичные данные в свой набор данных, чтобы повысить надежность. Повторите цикл.

Ultralytics HUB предлагает оптимизированное решение без кода для всего цикла операций машинного обучения (MLOps), включая управление набором данных, обучение моделей и развертывание.

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

Ultralytics предлагает два варианта лицензирования для различных сценариев использования:

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

Более подробная информация о возможностях лицензирования представлена на странице ЛицензированиеUltralytics .

Прежде чем приступить к обучению, необходимо подготовить набор данных.

1. Создайте набор данных

Для изучения визуальных характеристик классов объектов моделям YOLOv5 требуются маркированные данные. Правильная организация набора данных - ключевой момент.

1.1 Создать dataset.yaml

Файл конфигурации набора данных (например, coco128.yaml) описывает структуру набора данных, имена классов и пути к каталогам с изображениями. COCO128 служит небольшим набором данных, включающим первые 128 изображений из обширного набора. COCO набор данных. Это полезно для быстрого тестирования обучающего конвейера и диагностики потенциальных проблем, таких как оверфиттинг.

Сайт dataset.yaml Структура файла включает:

  • path: Корневой каталог, содержащий набор данных.
  • train, val, test: Относительные пути из path к каталогам с изображениями или текстовым файлам, в которых указаны пути к изображениям для обучающего, проверочного и тестового наборов.
  • names: Словарь, отображающий индексы классов (начиная с 0) на соответствующие им имена классов.

Ниже приведена структура для coco128.yaml (вид на GitHub):

# Dataset root directory relative to the yolov5 directory
path: ../datasets/coco128

# Train/val/test sets: specify directories, *.txt files, or lists
train: images/train2017 # 128 images for training
val: images/train2017 # 128 images for validation
test: # Optional path to test images

# Classes (example using 80 COCO classes)
names:
    0: person
    1: bicycle
    2: car
    # ... (remaining COCO classes)
    77: teddy bear
    78: hair drier
    79: toothbrush

1.2 Использование моделей для автоматической маркировки

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

  • БлизнецыGoogle : Большие мультимодальные модели, такие как Gemini, обладают мощными возможностями понимания изображений. Их можно попросить идентифицировать и найти объекты на изображениях, создавая ограничительные рамки или описания, которые можно преобразовать в метки формата YOLO . Изучите его потенциал в прилагаемом учебном блокноте.
  • SAM2 (Segment Anything Model 2): Фундаментальные модели, ориентированные на сегментацию, такие как SAM2, позволяют идентифицировать и очерчивать объекты с высокой точностью. Хотя в первую очередь они предназначены для сегментации, полученные маски часто могут быть преобразованы в аннотации ограничительных рамок, подходящие для задач обнаружения объектов.
  • YOLOWorld: Эта модель предлагает возможности обнаружения объектов с открытым словарем. Вы можете предоставить текстовые описания интересующих вас объектов, и YOLOWorld сможет найти их на изображениях без предварительного обучения этим конкретным классам. Это может быть использовано в качестве отправной точки для создания начальных меток, которые затем можно уточнить.

Использование таких моделей позволяет выполнить этап "предварительной маркировки", сократив ручную работу. Однако очень важно просматривать и уточнять автоматически сгенерированные метки, чтобы обеспечить точность и согласованность, поскольку их качество напрямую влияет на производительность обученной модели YOLOv5 . После создания (и возможного уточнения) меток убедитесь, что они соответствуют YOLO формат: один *.txt файл для каждого изображения, каждая строка которого представляет объект как class_index x_center y_center width height (нормализованные координаты, класс с нулевой индексацией). Если на изображении нет объектов, представляющих интерес, нет и соответствующего *.txt необходим файл.

Формат YOLO *.txt точные спецификации файлов:

  • Одна строка для каждой границы объекта.
  • Каждый ряд должен содержать: class_index x_center y_center width height.
  • Координаты должны быть нормализованный в диапазоне от 0 до 1. Чтобы добиться этого, разделите значения пикселей на x_center и width на общую ширину изображения и разделите y_center и height на общую высоту изображения.
  • Индексы классов индексируются нулями (т.е. первый класс представлен 0, второй - по 1, и так далее).

Пример изображения с двумя людьми и галстуком с аннотацией

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

Пример содержимого файла метки формата YOLO для аннотированного изображения

1.3 Организация каталогов

Структурируйте свой наборы данных как показано ниже. По умолчанию YOLOv5 предполагает, что каталог набора данных (например, /coco128) для проживания в пределах /datasets папка, расположенная прилегающий к сайт /yolov5 каталог репозитория.

YOLOv5 автоматически находит метки для каждого изображения, подставляя последний экземпляр /images/ в пути к изображению с /labels/. Например:

../datasets/coco128/images/im0.jpg # Path to the image file
../datasets/coco128/labels/im0.txt # Path to the corresponding label file

Рекомендуемая структура каталогов такова:

/datasets/
└── coco128/  # Dataset root
    ├── images/
    │   ├── train2017/  # Training images
    │   │   ├── 000000000009.jpg
    │   │   └── ...
    │   └── val2017/    # Validation images (optional if using same set for train/val)
    │       └── ...
    └── labels/
        ├── train2017/  # Training labels
        │   ├── 000000000009.txt
        │   └── ...
        └── val2017/    # Validation labels (optional if using same set for train/val)
            └── ...

Диаграмма, показывающая рекомендуемую структуру каталога наборов данных YOLOv5

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

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

Сравнительная таблица моделей YOLOv5 с указанием размера, скорости и точности

3. Поезд

Начните обучение модели используя train.py сценарий. Основные аргументы включают:

  • --img: Определяет вход размер изображения (например, --img 640). Большие размеры обычно дают лучшую точность, но требуют больше памяти GPU .
  • --batch: Определяет размер партии (например, --batch 16). Выберите самый большой размер, с которым может справиться ваш GPU .
  • --epochs: Указывает общее количество тренировок эпохи (например, --epochs 100). Одна эпоха представляет собой полный проход по всему обучающему набору данных.
  • --data: Путь к себе dataset.yaml файл (например, --data coco128.yaml).
  • --weights: Путь к файлу с начальными весами. Использование предварительно обученных весов (например, --weights yolov5s.pt) настоятельно рекомендуется для ускорения сходимости и получения более высоких результатов. Для обучения с нуля (не рекомендуется, если у вас не очень большой набор данных и нет особых потребностей) используйте --weights '' --cfg yolov5s.yaml.

Предварительно обученные веса автоматически загружаются из последней версии YOLOv5 , если не найдены локально.

# Example: Train YOLOv5s on the COCO128 dataset for 3 epochs
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt

Оптимизируйте скорость тренировок

💡 Работа --cache ram или --cache disk для кэширования изображений набора данных в RAM или локальный диск, соответственно. Это значительно ускоряет обучение, особенно когда операции ввода/вывода данных являются узким местом. Обратите внимание, что для этого требуется значительный объем оперативной памяти или дискового пространства.

Локальное хранилище данных

💡 Всегда обучайтесь на наборах данных, хранящихся локально. Доступ к данным с сетевых дисков (например, Google Drive) или удаленных хранилищ может быть значительно медленнее и снижать производительность обучения. Копирование набора данных на локальный SSD-накопитель часто является лучшей практикой.

Все результаты обучения, включая веса и журналы, сохраняются в файле runs/train/ каталог. Каждый сеанс обучения создает новый подкаталог (например, runs/train/exp, runs/train/exp2, и т.д.). Чтобы получить интерактивный практический опыт, изучите раздел обучения в наших официальных учебных тетрадях: Open In Colab Открыть в Kaggle

4. Визуализируйте

YOLOv5 легко интегрируется с различными инструментами для визуализации тренировочного прогресса, оценки результатов и мониторинга эффективности в режиме реального времени.

Comet Ведение журнала и визуализация 🌟 НОВИНКА

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

Приступить к работе очень просто:

pip install comet_ml                                                          # 1. Install Comet library
export COMET_API_KEY=YOUR_API_KEY_HERE                                        # 2. Set your Comet API key (create a free account at Comet.ml)
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. Train your model - Comet automatically logs everything!

Углубляйтесь в поддерживаемые функции в нашем Руководство по интеграции Comet. Подробнее о возможностях Comet можно узнать из их официального сайта документация. Попробуйте использовать блокнот Comet Colab Notebook для демонстрации в реальном времени: Open In Colab

Пользовательский интерфейс Comet , показывающий метрики и визуализации тренировок YOLOv5

ClearML Ведение журнала и автоматизация 🌟 НОВИНКА

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

  • Установите пакет: pip install clearml
  • Инициализируйте ClearML: Запустить clearml-init один раз, чтобы подключиться к вашему серверу ClearML (либо самостоятельному, либо на сервере бесплатный уровень).

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

Пользовательский интерфейс управления экспериментом ClearML показывает графики и журналы для тренировочного прогона YOLOv5

Локальное протоколирование

Результаты тренировок автоматически регистрируются с помощью TensorBoard и сохраняется как CSV файлы в конкретной директории эксперимента (например, runs/train/exp). Зарегистрированные данные включают:

  • Потери при обучении и проверке, а также показатели производительности.
  • Образцы изображений, демонстрирующих примененные дополнения (например, мозаики).
  • Метки истины и предсказания модели для визуального контроля.
  • Ключевые метрики оценки, такие как кривые Precision-Recall (PR).
  • Матрицы запутывания для детального анализа производительности в зависимости от класса.

Пример результатов локального протоколирования, включая графики и мозаики изображений, полученных в ходе тренировки YOLOv5

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

from utils.plots import plot_results

# Plot results from a specific training run directory
plot_results("runs/train/exp/results.csv")  # This will generate 'results.png' in the same directory

Пример графика results.png, показывающего такие метрики обучения, как mAP, precision, recall и loss за несколько эпох.

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

После успешного завершения обучения контрольная точка для модели с наилучшими показателями (best.pt) сохранен и готов к развертыванию или дальнейшей доработке. Возможные следующие шаги включают:

  • Запустите вывод на новых изображениях или видео с использованием обученной модели с помощью CLI или Python.
  • Проведите валидацию, чтобы оценить точность модели и ее обобщающие способности на различных фрагментах данных (например, на тестовом наборе).
  • Экспортируйте модель в различные форматы развертывания, например ONNX, TensorFlow SavedModelили TensorRT для оптимизированных выводов на различных платформах.
  • Используйте методы настройки гиперпараметров, чтобы потенциально получить дополнительный прирост производительности.
  • Продолжайте совершенствовать свою модель, следуя нашим советам для достижения наилучших результатов обучения и итеративно добавляя более разнообразные и сложные данные на основе анализа эффективности.

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

Ultralytics предоставляет готовые к использованию среды, оснащенные такими необходимыми зависимостями, как CUDAи cuDNN, Pythonи PyTorchчто способствует плавному старту.

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

Значок состояния непрерывной интеграции YOLOv5

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

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Часто задаваемые вопросы

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

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

  1. Подготовьте набор данных: Собирайте изображения и аннотируйте их. Убедитесь, что аннотации соответствуют требованиям YOLO формат. Организуйте изображения и метки в train/ и val/ (и по желанию test/) каталогов. Рассмотрите возможность использования таких моделей, как Близнецы Google, SAM2, или YOLOWorld для помощи или автоматизации процесса маркировки (см. раздел 1.2).
  2. Настройте окружение: Клонируйте репозиторий YOLOv5 и установите зависимости, используя pip install -r requirements.txt.
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. Создание конфигурации набора данных: Определите путь к набору данных, количество классов и имена классов в dataset.yaml файл.
  4. Начать обучение: Выполнить train.py скрипт, указав пути к вашим dataset.yaml, желаемые предварительно обученные веса (например, yolov5s.pt), размер изображения, размер партии и количество эпох.
    python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
    

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

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

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

Для получения практического руководства ознакомьтесь с нашей статьей в блоге: Как обучать пользовательские модели с помощью Ultralytics HUB.

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

Независимо от того, делаете ли вы аннотацию вручную или используете автоматизированные инструменты (например, те, что упоминались в разделе 1.2), итоговые метки должны быть в специальном форматеYOLO , требуемом YOLOv5:

  • Создайте один .txt файл для каждого изображения. Имя файла должно совпадать с именем изображения (например, image1.jpg соответствует image1.txt). Поместите эти файлы в labels/ параллельно с каталогом images/ каталог (например, ../datasets/mydataset/labels/train/).
  • Каждая строка в .txt Файл представляет собой аннотацию одного объекта и имеет формат: class_index center_x center_y width height.
  • Координаты (center_x, center_y, width, height) должен быть нормализованный (значения от 0,0 до 1,0) относительно размеров изображения.
  • Индексы классов на нулевой основе (первый класс 0, второй - 1, и т.д.).

Многие инструменты для ручного аннотирования предлагают прямой экспорт в формат YOLO . Если вы используете автоматизированные модели, вам понадобятся скрипты или процессы для преобразования их выходных данных (например, координат ограничительных рамок, масок сегментации) в этот специфический нормализованный текстовый формат. Убедитесь, что конечная структура набора данных соответствует приведенному в руководстве примеру. Для получения более подробной информации см. наше Руководство по сбору данных и аннотированию.

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

Ultralytics обеспечивает гибкое лицензирование, соответствующее различным потребностям:

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

Выберите лицензию, которая лучше всего соответствует требованиям вашего проекта и модели распространения.



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

Комментарии