Обучение 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 предлагает оптимизированное no-code решение для всего цикла MLOps, включая управление наборами данных, обучение моделей и развертывание.
Ultralytics предоставляет два варианта лицензирования для разных сценариев использования:
- Лицензия AGPL-3.0: Эта одобренная OSI открытая лицензия идеально подходит для студентов, исследователей и энтузиастов, увлеченных открытым сотрудничеством и обменом знаниями. Она требует, чтобы производные работы распространялись на тех же условиях. Полную информацию см. в файле LICENSE.
- Корпоративная лицензия: Предназначена для коммерческих приложений и позволяет беспрепятственно интегрировать программное обеспечение и модели ИИ от Ultralytics в коммерческие продукты и услуги без ограничений открытого исходного кода AGPL-3.0. Если твой проект требует коммерческого развертывания, запроси Корпоративную лицензию.
Изучи подробнее наши варианты лицензирования на странице лицензирования Ultralytics.
Перед началом обучения важно подготовить набор данных.
Создание набора данных
Моделям 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: 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)
└── ...
Выбор модели
Выбери предобученную модель для запуска процесса обучения. Начало с предобученных весов значительно ускоряет обучение и повышает производительность по сравнению с обучением с нуля. YOLOv5 предлагает модели разного размера, каждая из которых по-разному балансирует скорость и точность. Например, YOLOv5s — вторая по величине и самая быстрая модель, подходящая для сред с ограниченными ресурсами. Ознакомься с таблицей в README для подробного сравнения всех доступных моделей.

Обучение
Начни обучение модели с помощью скрипта 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 или на локальный диск соответственно. Это значительно ускоряет обучение, особенно если операции ввода-вывода (I/O) являются «бутылочным горлышком». Обрати внимание, что это требует значительного объема оперативной памяти или дискового пространства.
💡 Всегда обучай, используя наборы данных, хранящиеся локально. Доступ к данным через сетевые диски (например, Google Drive) или удаленное хранилище может быть значительно медленнее и препятствовать производительности обучения. Копирование набора данных на локальный SSD — часто лучший вариант.
Все результаты обучения, включая веса и логи, сохраняются в директории runs/train/. Каждая тренировочная сессия создает новую поддиректорию (например, runs/train/exp, runs/train/exp-2 и т.д.). Для интерактивного обучения ознакомься с разделом обучения в наших официальных обучающих ноутбуках:
Визуализация
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). Логируемые данные включают:
- Значения функции потерь (loss) при обучении и валидации, а также метрики производительности.
- Примеры изображений, показывающие примененные аугментации (такие как мозаика).
- Размеченные данные (ground truth) рядом с предсказаниями модели для визуальной проверки.
- Ключевые метрики оценки, такие как кривые Precision-Recall (PR).
- Матрицы ошибок для детального анализа производительности по классам.
Файл 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
Следующие шаги
После успешного завершения обучения сохраняется чекпоинт модели с наилучшими показателями (best.pt), который готов к развертыванию или дальнейшей доработке. Возможные следующие шаги включают:
- Запуск инференса на новых изображениях или видео с использованием обученной модели через CLI или Python.
- Выполнение валидации для оценки точности модели и её способности к обобщению на различных выборках данных (например, на отложенном тестовом наборе).
- Экспорт модели в различные форматы развертывания, такие как ONNX, TensorFlow SavedModel или TensorRT для оптимизированного инференса на различных платформах.
- Применение методов настройки гиперпараметров для потенциального увеличения производительности.
- Продолжай улучшать свою модель, следуя нашим Советам для достижения лучших результатов обучения и итеративно добавляя более разнообразные и сложные данные на основе анализа производительности.
Поддерживаемые среды
Ultralytics предоставляет готовые к использованию окружения, оснащенные необходимыми зависимостями, такими как CUDA, cuDNN, Python и PyTorch, что способствует плавному старту.
- Бесплатные GPU-ноутбуки:
- Облачные платформы:
- Google Cloud: Руководство по быстрому старту GCP
- Amazon AWS: Руководство по быстрому старту AWS
- Microsoft Azure: Руководство по быстрому старту AzureML
- Локальная настройка:
Статус проекта
This badge indicates that all YOLOv5 GitHub Actions Continuous Integration (CI) tests are passing successfully. These rigorous CI tests cover the core functionalities, including training, validation, inference, export, and benchmarks, across macOS, Windows, and Ubuntu operating systems. Tests are executed automatically every 24 hours and upon each code commit, ensuring consistent stability and optimal performance.
Часто задаваемые вопросы (FAQ)
Как обучить YOLOv5 на своем пользовательском наборе данных?
Обучение YOLOv5 на пользовательском наборе данных включает несколько ключевых шагов:
- Подготовь свой датасет: собери изображения и разметь их. Убедись, что аннотации соответствуют требуемому YOLO format. Организуй изображения и метки в директории
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
Зачем использовать Ultralytics Platform для обучения моих моделей YOLO?
Ultralytics Platform — это комплексная платформа, разработанная для оптимизации всего жизненного цикла разработки моделей YOLO, зачастую без необходимости написания какого-либо кода. Ключевые преимущества включают:
- Упрощенное обучение: легко обучай модели, используя предварительно настроенные среды и интуитивно понятный пользовательский интерфейс.
- Интегрированное управление данными: эффективно загружай, контролируй версии и управляй своими датасетами внутри платформы.
- Мониторинг в реальном времени: отслеживай прогресс обучения и визуализируй метрики производительности с помощью встроенных инструментов, таких как Comet или TensorBoard.
- Функции для совместной работы: упрощает командную работу за счет общих ресурсов, инструментов управления проектами и простого обмена моделями.
- Развертывание без написания кода: развертывай обученные модели напрямую на различных целевых платформах.
Для практического руководства ознакомься с нашим постом в блоге: Как обучить собственные модели с помощью Ultralytics Platform.
Как конвертировать мои аннотированные данные в формат YOLOv5?
Независимо от того, размечаешь ты вручную или используешь автоматизированные инструменты (такие как упомянутые в разделе 1.2), итоговые метки должны быть в специфическом YOLO format, требуемом для 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. Если ты используешь автоматизированные модели, тебе понадобятся скрипты или процессы для конвертации их вывода (например, координат bbox, сегментационных масок) в этот специфический нормализованный текстовый формат. Убедись, что структура твоего итогового датасета соответствует примеру, приведенному в руководстве. Для получения более подробной информации см. наше Руководство по сбору и разметке данных.
Какие существуют варианты лицензирования для использования YOLOv5 в коммерческих приложениях?
Ultralytics предоставляет гибкое лицензирование, адаптированное под разные нужды:
- Лицензия AGPL-3.0: Эта лицензия с открытым исходным кодом подходит для академических исследований, личных проектов и ситуаций, где приемлемо соблюдение требований open-source. Она требует, чтобы модификации и производные работы также распространялись с открытым исходным кодом под AGPL-3.0. Ознакомься с деталями лицензии AGPL-3.0.
- Корпоративная лицензия (Enterprise License): коммерческая лицензия, разработанная для компаний, внедряющих YOLOv5 в закрытые продукты или сервисы. Эта лицензия снимает обязательства по открытому исходному коду AGPL-3.0, позволяя распространять закрытое ПО. Посети нашу страницу лицензирования для получения дополнительной информации или запроса Enterprise License.
Выбери лицензию, которая лучше всего соответствует требованиям твоего проекта и модели дистрибуции.
