Link to this sectionОбучение YOLOv5 на собственных данных#
📚 В этом руководстве объясняется, как обучить собственный пользовательский набор данных с помощью модели YOLOv5 🚀. Обучение собственных моделей — это фундаментальный шаг в адаптации решений компьютерного зрения к конкретным прикладным задачам, выходящим за рамки стандартного обнаружения объектов.
Link to this sectionПеред началом#
Сначала убедись, что у тебя настроено необходимое окружение. Клонируй репозиторий 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 dependenciesLink to this sectionОбучение на собственных данных#
Разработка собственной модели обнаружения объектов — это итеративный процесс:
- Сбор и организация изображений: Собери изображения, относящиеся к твоей конкретной задаче. Качественные и разнообразные данные имеют решающее значение. Ознакомься с нашим руководством по сбору и аннотированию данных.
- Разметка объектов: точно аннотируй нужные объекты на своих изображениях.
- Обучение модели: Используй размеченные данные для обучения своей модели YOLOv5. Задействуй трансферное обучение, начиная с предобученных весов.
- Развертывание и прогнозирование: Используй обученную модель для инференса на новых, ранее не виденных данных.
- Сбор пограничных случаев: выявляй сценарии, в которых модель работает плохо (пограничные случаи), и добавляй похожие данные в свой набор, чтобы повысить устойчивость. Повторяй цикл.
Ultralytics Platform предлагает оптимизированное no-code решение для всего цикла MLOps (операций машинного обучения), включая управление наборами данных, обучение моделей и их развертывание.
Ultralytics предоставляет два варианта лицензирования для различных сценариев использования:
- Лицензия AGPL-3.0: эта лицензия с открытым исходным кодом, одобренная OSI, идеально подходит для студентов, исследователей и энтузиастов, увлеченных открытым сотрудничеством и обменом знаниями. Она требует, чтобы производные работы распространялись на условиях той же лицензии. Полную информацию смотри в файле LICENSE.
- Коммерческая лицензия: для разработки и использования в производстве эта лицензия позволяет беспрепятственно интегрировать программное обеспечение и ИИ-модели Ultralytics в бизнес-продукты и сервисы, включая внутренние инструменты, автоматизированные рабочие процессы и производственные развертывания, обходя требования открытого исходного кода AGPL-3.0. Чтобы начать, свяжись с нами через Лицензирование Ultralytics.
Изучи наши варианты лицензирования подробнее на странице Лицензирование Ultralytics.
Перед началом обучения крайне важна подготовка данных.
Link to this section1. Создание набора данных#
Моделям YOLOv5 требуются размеченные данные для изучения визуальных характеристик классов объектов. Правильная организация набора данных — ключ к успеху.
Link to this section1.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: toothbrushLink to this section1.2 Использование моделей для автоматической разметки#
Ручная разметка — это общепринятый подход, но он отнимает много времени. Фундаментальные модели могут автоматизировать или полуавтоматизировать аннотирование и ускорить создание набора данных. Примеры моделей, которые могут помочь в генерации меток:
- Google Gemini: крупные мультимодальные модели, такие как Gemini, обладают мощными возможностями понимания изображений. Им можно давать задания по идентификации и поиску объектов на изображениях, генерируя ограничивающие рамки или описания, которые можно преобразовать в метки формата YOLO. Исследуй возможности в предоставленном обучающем блокноте.
- SAM2 (Segment Anything Model 2): Фундаментальные модели, ориентированные на сегментацию, такие как SAM2, могут идентифицировать и очерчивать объекты с высокой точностью. Хотя они предназначены в основном для сегментации, полученные маски часто можно преобразовать в аннотации в виде ограничивающих рамок (bounding boxes), подходящие для задач обнаружения объектов.
- 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), выглядел бы так:

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

Link to this section3. Обучение#
Начни обучение модели с помощью скрипта 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 и т. д.). Для интерактивного практического опыта изучи раздел обучения в наших официальных блокнотах-руководствах:
Link to this section4. Визуализация#
YOLOv5 легко интегрируется с различными инструментами для визуализации прогресса обучения, оценки результатов и мониторинга производительности в режиме реального времени.
Link to this sectionЛогирование и визуализация с помощью Comet#
Comet полностью интегрирован для всестороннего отслеживания экспериментов. Визуализируй метрики в реальном времени, сохраняй гиперпараметры, управляй наборами данных и контрольными точками моделей, а также анализируй прогнозы моделей с помощью интерактивных Comet Custom Panels.
Начать очень просто:
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 для демонстрации:
Link to this sectionЛогирование и автоматизация с ClearML#
Интеграция с ClearML обеспечивает подробное отслеживание экспериментов, управление версиями наборов данных и даже удаленное выполнение обучающих прогонов. Активируй ClearML с помощью этих простых шагов:
- Установи пакет:
pip install clearml - Инициализируй ClearML: запусти
clearml-initодин раз, чтобы подключиться к своему серверу ClearML (собственному или бесплатному тарифу).
ClearML автоматически фиксирует детали экспериментов, загруженные модели, сравнения, незафиксированные изменения в коде и установленные пакеты, обеспечивая полную воспроизводимость. Ты можешь легко планировать задачи обучения на удаленных агентах и управлять версиями наборов данных с помощью ClearML Data. Ознакомься с Руководством по интеграции с ClearML для получения подробной информации.
Link to this sectionЛокальное логирование#
Результаты обучения автоматически регистрируются с помощью TensorBoard и сохраняются в виде файлов CSV в соответствующей директории эксперимента (например, runs/train/exp). Зарегистрированные данные включают:
- Функции потерь при обучении и валидации, а также метрики производительности.
- Примеры изображений с примененными аугментациями (такими как мозаика).
- Метки истинных значений (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
Link to this section5. Следующие шаги#
После успешного завершения обучения контрольная точка модели с наилучшими показателями (best.pt) сохраняется и готова к развертыванию или дальнейшей доработке. Возможные следующие шаги включают:
- Запускай инференс на новых изображениях или видео с помощью обученной модели через CLI или Python.
- Выполняй валидацию, чтобы оценить точность модели и её способность к обобщению на различных выборках данных (например, на отложенном тестовом наборе).
- Экспортируй модель в различные форматы развертывания, такие как ONNX, TensorFlow SavedModel или TensorRT для оптимизированного инференса на различных платформах.
- Используй методы настройки гиперпараметров, чтобы потенциально добиться дополнительного прироста производительности.
- Продолжай улучшать свою модель, следуя нашим Советам для достижения лучших результатов обучения и итеративно добавляя более разнообразные и сложные данные на основе анализа производительности.
Link to this sectionПоддерживаемые окружения#
Ultralytics предоставляет готовые к использованию окружения, оснащенные необходимыми зависимостями, такими как CUDA, cuDNN, Python и PyTorch, облегчая быстрый старт.
- Бесплатные GPU блокноты:
- Облачные платформы:
- Google Cloud: Руководство по быстрому запуску в GCP
- Amazon AWS: Руководство по быстрому запуску в AWS
- Microsoft Azure: AzureML Quickstart Guide
- Локальная настройка:
- Docker: Docker Quickstart Guide
- Docker: Docker Quickstart Guide
Link to this sectionСтатус проекта#
Этот значок указывает на то, что все тесты GitHub Actions Continuous Integration (CI) для YOLOv5 успешно пройдены. Эти строгие тесты CI охватывают основные функциональные возможности, включая обучение, валидацию, инференс, экспорт и бенчмарки, в операционных системах macOS, Windows и Ubuntu. Тесты выполняются автоматически каждые 24 часа и при каждом коммите кода, обеспечивая стабильность и оптимальную производительность.
Link to this sectionFAQ#
Link to this sectionКак мне обучить YOLOv5 на собственном наборе данных?#
Обучение 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
Link to this sectionПочему стоит использовать Ultralytics Platform для обучения моих моделей YOLO?#
Ultralytics Platform — это комплексная платформа, разработанная для оптимизации всего жизненного цикла разработки моделей YOLO, часто без необходимости написания кода. Ключевые преимущества включают:
- Упрощенное обучение: легко обучай модели, используя предварительно настроенные окружения и интуитивно понятный интерфейс пользователя.
- Интегрированное управление данными: загружай, версионируй и эффективно управляй своими наборами данных прямо на платформе.
- Мониторинг в реальном времени: Отслеживай ход обучения и визуализируй метрики производительности с помощью интегрированных инструментов, таких как Comet или TensorBoard.
- Функции для совместной работы: упрощает командную работу за счет общих ресурсов, инструментов управления проектами и легкого обмена моделями.
- Развертывание без написания кода: развертывай обученные модели напрямую на различные целевые платформы.
Для практического руководства ознакомься с нашим постом в блоге: How to Train Your Custom Models with Ultralytics Platform.
Link to this sectionКак мне конвертировать мои аннотированные данные в формат 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. Если ты используешь автоматизированные модели, тебе понадобятся скрипты или процессы для преобразования их вывода (например, координат ограничивающих рамок, масок сегментации) в этот специфический нормализованный текстовый формат. Убедись, что структура твоего финального набора данных соответствует примеру, приведенному в руководстве. Для получения дополнительных сведений см. наше Руководство по сбору и аннотированию данных.
Link to this sectionКакие существуют варианты лицензирования для использования YOLOv5 в коммерческих приложениях?#
Ultralytics предоставляет гибкие условия лицензирования, адаптированные под разные нужды:
- Лицензия AGPL-3.0: Эта лицензия с открытым исходным кодом подходит для академических исследований, личных проектов и ситуаций, где допустимо соблюдение требований открытого ПО. Она требует, чтобы модификации и производные работы также распространялись с открытым исходным кодом под AGPL-3.0. Ознакомься с деталями лицензии AGPL-3.0.
- Корпоративная лицензия (Enterprise License): Коммерческая лицензия, разработанная для компаний, интегрирующих YOLOv5 в проприетарные продукты или услуги. Эта лицензия снимает обязательства открытого ПО, предусмотренные AGPL-3.0, позволяя распространять закрытый код. Посети нашу страницу лицензирования для получения дополнительной информации или для запроса корпоративной лицензии (Enterprise License).
Выбери лицензию, которая наилучшим образом соответствует требованиям твоего проекта и модели распространения.
