Meet YOLO26: next-gen vision AI.

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 dependencies

Link to this sectionОбучение на собственных данных#

Диаграмма цикла активного обучения Ultralytics

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

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

Платформа Ultralytics предлагает оптимизированное 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: toothbrush

Link to this section1.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 и так далее).

Example image with two persons and a tie annotated

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

YOLO format label file content example

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)
            └── ...

YOLOv5 recommended dataset directory structure

Link to this section2. Выбор модели#

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

Comparison chart of YOLOv5 models showing size, speed, and accuracy

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 и т. д.). Для интерактивного практического опыта изучи раздел обучения в наших официальных блокнотах-руководствах: Open In Colab Open In Kaggle

Link to this section4. Визуализация#

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

Link to this sectionЛогирование и визуализация с помощью 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 для демонстрации в реальном времени: Open In Colab

Comet UI showing YOLOv5 training metrics and visualizations

Link to this sectionЛогирование и автоматизация с ClearML#

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

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

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

ClearML experiment management UI for YOLOv5

Link to this sectionЛокальное логирование#

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

  • Функции потерь при обучении и валидации, а также метрики производительности.
  • Примеры изображений с примененными аугментациями (такими как мозаика).
  • Метки истинных значений (Ground truth) вместе с предсказаниями модели для визуальной проверки.
  • Ключевые метрики оценки, такие как кривые Precision-Recall (PR).
  • Матрицы ошибок для детального анализа производительности по классам.
YOLOv5 local logging results with charts and mosaics

Файл 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

YOLOv5 results.png training metrics plot

Link to this section5. Следующие шаги#

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

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

Link to this sectionПоддерживаемые окружения#

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

Link to this sectionСтатус проекта#

YOLOv5 Continuous Integration Status Badge

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

Link to this sectionFAQ#

Link to this sectionКак мне обучить YOLOv5 на собственном наборе данных?#

Обучение YOLOv5 на собственном наборе данных включает несколько ключевых шагов:

  1. Подготовь свой набор данных: собери изображения и разметь их. Убедись, что аннотации соответствуют требуемому YOLO format. Организуй изображения и метки в директории train/ и val/ (и, при необходимости, test/). Рассмотри использование таких моделей, как Google Gemini, 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

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).

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

Комментарии