Обучение YOLOv5 на пользовательских данных#
📚 В этом руководстве объясняется, как обучить собственную пользовательскую выборку данных с помощью модели YOLOv5 🚀. Обучение пользовательских моделей — важный этап адаптации решений в области компьютерного зрения к конкретным реальным задачам, выходящим за рамки обычного обнаружения объектов.
Перед началом#
Сначала подготовь необходимую среду. Клонируй репозиторий YOLOv5 и установи необходимые зависимости из requirements.txt. Для работы необходима среда Python>=3.8.0 с PyTorch>=1.8. Если модели и наборы данных не найдены локально, они автоматически загружаются из последнего релиза YOLOv5.
git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependenciesОбучение на пользовательских данных#
Разработка пользовательской модели обнаружения объектов — итеративный процесс:
- Собери и упорядочь изображения: собери изображения, относящиеся к конкретной задаче. Важны качественные и разнообразные данные. Ознакомься с нашим руководством по сбору и аннотированию данных.
- Разметь объекты: точно аннотируй интересующие объекты на изображениях.
- Обучи модель: используй размеченные данные для обучения модели YOLOv5. Воспользуйся переносом обучения, начав с предварительно обученных весов.
- Разверни модель и получай предсказания: используй обученную модель для инференса на новых, ранее не встречавшихся данных.
- Собери сложные примеры: найди ситуации, в которых модель работает плохо (сложные случаи), и добавь в набор данных похожие примеры, чтобы повысить устойчивость модели. Повтори цикл.
Платформа Ultralytics предлагает простое решение без кода для всего цикла операций машинного обучения (MLOps), включая управление наборами данных, обучение моделей и развертывание.
Ultralytics предлагает два варианта лицензирования для разных сценариев использования:
- Лицензия AGPL-3.0: эта лицензия с открытым исходным кодом, одобренная OSI, идеально подходит студентам, исследователям и энтузиастам, заинтересованным в открытом сотрудничестве и обмене знаниями. Она требует распространять производные работы на тех же условиях лицензии. Подробности см. в файле LICENSE.
- Корпоративная лицензия: для разработки и использования в продакшене. Она позволяет без ограничений интегрировать программное обеспечение и модели ИИ Ultralytics в коммерческие продукты и сервисы, включая внутренние инструменты, автоматизированные процессы и промышленные развертывания, без выполнения требований лицензии AGPL-3.0 с открытым исходным кодом. Чтобы начать, свяжись с нами через страницу лицензирования Ultralytics.
Подробнее о вариантах лицензирования читай на странице лицензирования Ultralytics.
Перед началом обучения необходимо подготовить набор данных.
1. Создай набор данных#
Моделям YOLOv5 нужны размеченные данные, чтобы изучать визуальные характеристики классов объектов. Важно правильно организовать набор данных.
1.1 Создай dataset.yaml#
Файл конфигурации набора данных (например, coco128.yaml) описывает структуру набора данных, имена классов и пути к каталогам с изображениями. COCO128 — небольшой пример набора данных, состоящий из первых 128 изображений большого набора данных COCO. Он подходит для быстрой проверки процесса обучения и выявления возможных проблем, например переобучения.
Структура файла dataset.yaml включает:
path: корневой каталог с набором данных.train,val,test: относительные пути отpathк каталогам с изображениями или текстовыми файлами со списками путей к изображениям для обучающей, валидационной и тестовой выборок.names: словарь, связывающий индексы классов (начиная с 0) с соответствующими именами классов.
Для path можно задать абсолютный путь к каталогу (например, /home/user/datasets/coco128) или относительный путь, например ../datasets/coco128, если запускать обучение из корневого каталога репозитория YOLOv5.
Ниже показана структура 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: toothbrush1.2 Использование моделей для автоматической разметки#
Обычно данные размечают вручную, но это занимает много времени. Базовые модели могут автоматизировать или частично автоматизировать аннотирование и ускорить создание набора данных. Вот несколько моделей, которые помогут с разметкой:
- Google Gemini: крупные мультимодальные модели, такие как Gemini, отлично понимают изображения. Их можно попросить находить и определять местоположение объектов на изображениях, создавая ограничивающие рамки или описания, которые затем можно преобразовать в метки формата YOLO. Ознакомься с возможностями модели в учебном блокноте.
- SAM2 (Segment Anything Model 2): базовые модели для сегментации, такие как SAM2, могут точно находить объекты и определять их границы. Хотя такие модели в первую очередь предназначены для сегментации, полученные маски часто можно преобразовать в аннотации ограничивающих рамок для задач обнаружения объектов.
- YOLOWorld: эта модель поддерживает обнаружение объектов с открытым словарем. Можно указать интересующие объекты текстом, и YOLOWorld найдет их на изображениях без предварительного обучения на этих классах. Это можно использовать как основу для создания исходных меток, которые затем можно уточнить.
Эти модели позволяют предварительно размечать данные, сокращая объем ручной работы. Однако важно проверять и уточнять автоматически созданные метки, чтобы обеспечить их точность и согласованность: от качества меток напрямую зависит эффективность обученной модели YOLOv5. Создав и при необходимости уточнив метки, проверь, что они соответствуют формату YOLO: один файл *.txt на изображение, где каждая строка описывает объект в формате class_index x_center y_center width height (нормализованные координаты, индекс класса с нуля). Если на изображении нет интересующих объектов, соответствующий файл *.txt не нужен.
Требования к файлам *.txt в формате YOLO точны:
- Одна строка на каждую ограничивающую рамку.
- Каждая строка должна содержать:
class_index x_center y_center width height. - Координаты необходимо нормализовать до диапазона от 0 до 1. Для этого раздели значения пикселей
x_centerиwidthна полную ширину изображения, а значенияy_centerиheight— на полную высоту изображения. - Индексы классов начинаются с нуля (то есть первый класс обозначается как
0, второй — как1и так далее).

Файл меток для изображения выше с двумя объектами «person» (индекс класса 0) и одним объектом «tie» (индекс класса 27) будет выглядеть так:

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)
└── ...
2. Выбери модель#
Выбери предварительно обученную модель, чтобы начать обучение. Обучение с предварительно обученными весами значительно ускоряет процесс и повышает точность по сравнению с обучением с нуля. YOLOv5 предлагает модели разных размеров с различным балансом скорости и точности. Например, YOLOv5s — вторая по компактности и скорости модель, подходящая для сред с ограниченными ресурсами. Подробное сравнение всех доступных моделей см. в таблице README.

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 или на локальном диске соответственно. Это значительно ускоряет обучение, особенно если узким местом становятся операции ввода-вывода данных. Учти, что для этого потребуется много RAM или места на диске.
💡 Всегда обучай модели на локально хранящихся наборах данных. Доступ к данным на сетевых дисках (например, Google Drive) или в удаленном хранилище может быть значительно медленнее и снижать производительность обучения. Обычно лучше всего скопировать набор данных на локальный SSD.
Все результаты обучения, включая веса и журналы, сохраняются в каталоге runs/train/. Для каждого сеанса обучения создается новый подкаталог (например, runs/train/exp, runs/train/exp2 и т. д.). Чтобы получить практический опыт, изучи раздел об обучении в наших официальных учебных блокнотах:
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 с интерактивной демонстрацией:
Логирование и автоматизация в ClearML#
Интеграция с ClearML обеспечивает подробное отслеживание экспериментов, управление версиями наборов данных и даже удаленный запуск обучения. Включи ClearML, выполнив несколько простых действий:
- Установи пакет:
pip install clearml - Инициализируй ClearML: один раз запусти
clearml-init, чтобы подключиться к своему серверу ClearML (собственному или бесплатному тарифу).
ClearML автоматически записывает подробности экспериментов, загрузки моделей, сравнения, незакоммиченные изменения кода и установленные пакеты, обеспечивая полную воспроизводимость. Можно легко планировать задачи обучения на удаленных агентах и управлять версиями наборов данных с помощью ClearML Data. Подробности см. в руководстве по интеграции ClearML.
Локальное логирование#
Результаты обучения автоматически записываются с помощью TensorBoard и сохраняются в файлах CSV в каталоге соответствующего эксперимента (например, runs/train/exp). В журнал записываются:
- Потери и метрики производительности на обучающей и валидационной выборках.
- Примеры изображений с примененными аугментациями (например, мозаичными).
- Эталонные метки и предсказания модели для визуальной проверки.
- Основные метрики оценки, например кривые точности-полноты (PR).
- Матрицы ошибок для подробного анализа результатов по классам.
Файл results.csv обновляется после каждой эпохи, а по завершении обучения по нему строится график results.png. Кроме того, можно вручную построить график по любому файлу results.csv с помощью предоставленной служебной функции:
from utils.plots import plot_results
# Построить график результатов из каталога конкретного запуска обучения
plot_results("runs/train/exp/results.csv") # В этом же каталоге будет создан файл 'results.png'
5. Дальнейшие шаги#
После успешного завершения обучения сохраняется контрольная точка лучшей модели (best.pt), готовая к развертыванию или дальнейшей доработке. Возможные следующие шаги:
- Запусти инференс на новых изображениях или видео с помощью обученной модели через CLI или Python.
- Запусти
val.py, чтобы оценить точность модели и ее способность к обобщению на разных выборках данных (например, на отложенной тестовой выборке). - Экспортируй модель в различные форматы развертывания, например ONNX, TensorFlow SavedModel или TensorRT, чтобы оптимизировать инференс на разных платформах.
- Используй эволюционный подбор гиперпараметров, чтобы добиться дополнительного прироста производительности.
- Продолжай улучшать модель, следуя нашим советам для достижения лучших результатов обучения и постепенно добавляя более разнообразные и сложные данные на основе анализа производительности.
Поддерживаемые среды#
Ultralytics предоставляет готовые среды с необходимыми зависимостями, такими как CUDA, cuDNN, Python и PyTorch, чтобы ты мог быстро начать работу.
- Бесплатные блокноты с GPU:
- Облачные платформы:
- Google Cloud: краткое руководство по GCP
- Amazon AWS: краткое руководство по AWS
- Microsoft Azure: краткое руководство по AzureML
- Локальная настройка:
- Docker: краткое руководство по Docker
- Docker: краткое руководство по Docker
Статус проекта#
Этот значок означает, что все тесты непрерывной интеграции (CI) GitHub Actions для YOLOv5 успешно проходят. Эти строгие тесты CI охватывают основные функции, включая обучение, валидацию, инференс, экспорт и бенчмарки в операционных системах macOS, Windows и Ubuntu. Тесты запускаются автоматически каждые 24 часа и при каждом коммите кода, обеспечивая стабильность и оптимальную производительность.
Часто задаваемые вопросы#
Обучение YOLOv5 на собственном датасете включает несколько основных этапов:
- Подготовь датасет: собери изображения и разметь их. Убедись, что разметка соответствует требуемому формату YOLO. Распредели изображения и метки по каталогам
train/иval/(и, при необходимости,test/). Для помощи с разметкой или ее автоматизации можно использовать такие модели, как Google Gemini, SAM2 или YOLOWorld (см. раздел 1.2). - Настрой окружение: клонируй репозиторий YOLOv5 и установи зависимости с помощью
pip install -r requirements.txt.git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt - Создай конфигурацию датасета: укажи пути к датасету, количество классов и их названия в файле
dataset.yaml. - Начни обучение: запусти скрипт
train.py, указав пути кdataset.yaml, нужные предварительно обученные веса (например,yolov5s.pt), размер изображения, размер пакета и количество эпох.python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
- Подготовь датасет: собери изображения и разметь их. Убедись, что разметка соответствует требуемому формату YOLO. Распредели изображения и метки по каталогам
Ultralytics Platform — это комплексная платформа, созданная для упрощения всего цикла разработки моделей YOLO, зачастую без необходимости писать код. Ключевые преимущества:
- Упрощенное обучение: легко обучай модели в предварительно настроенных окружениях с помощью интуитивно понятного интерфейса.
- Интегрированное управление данными: загружай датасеты, отслеживай их версии и эффективно управляй ими на платформе.
- Мониторинг в реальном времени: отслеживай ход обучения и визуализируй метрики производительности по мере их поступления.
- Инструменты для совместной работы: работай в команде с помощью общих ресурсов, инструментов управления проектами и удобного обмена моделями.
- Развертывание без кода: развертывай обученные модели непосредственно на различных целевых платформах.
Практическое пошаговое руководство смотри в нашей статье в блоге: Как обучать собственные модели с помощью Ultralytics Platform.
Размечаешь ли ты данные вручную или используешь автоматизированные инструменты (например, упомянутые в разделе 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. При использовании автоматизированных моделей тебе понадобятся скрипты или процессы для преобразования их выходных данных (например, координат ограничивающих рамок или масок сегментации) в этот специальный нормализованный текстовый формат. Убедись, что итоговая структура датасета соответствует примеру из руководства. Подробнее см. в нашем руководстве по сбору и разметке данных.
- Создай файл
Ultralytics предлагает гибкие условия лицензирования для разных задач:
- Лицензия AGPL-3.0: эта лицензия с открытым исходным кодом подходит для академических исследований, личных проектов и случаев, когда соблюдение требований открытого ПО приемлемо. Она требует, чтобы модификации и производные работы также распространялись с открытым исходным кодом по лицензии AGPL-3.0. Ознакомься с подробностями лицензии AGPL-3.0.
- Корпоративная лицензия: коммерческая лицензия для компаний, которые интегрируют YOLOv5 в собственные продукты или сервисы. Эта лицензия отменяет обязательства по открытию исходного кода, предусмотренные AGPL-3.0, и позволяет распространять ПО с закрытым исходным кодом. Подробности и возможность запросить корпоративную лицензию смотри на нашей странице лицензирования.
Выбери лицензию, которая лучше всего соответствует требованиям твоего проекта и модели распространения.
