Гид по технологиям

Обучение YOLOv8 на собственных данных — пошаговое руководство

7 min read Компьютерное зрение Обновлено 06 Dec 2025
Обучение YOLOv8 на собственных данных
Обучение YOLOv8 на собственных данных

Два человека держат лист бумаги с результатами детекции объектов, наложёнными на изображение

Введение

YOLOv8 — это современный алгоритм для обнаружения объектов в реальном времени из серии You Only Look Once от Ultralytics. Модель умеет детектировать объекты, выполнять сегментацию экземпляров, оценивать позу и классифицировать объекты в изображениях и видеопотоках. Основная цель — достичь высокой скорости и точности по сравнению с предыдущими версиями.

В этом руководстве показано, как подготовить и обучить YOLOv8 на собственном наборе данных: от создания виртуального окружения до оценки и экспорта модели в формат ONNX для продакшена.

Что вам потребуется

  • Python 3.8+ и доступ к терминалу.
  • GPU рекомендуется (CUDA + драйверы) для ускоренного обучения, но обучение возможно и на CPU для небольших наборов.
  • Набор изображений и разметка в формате, совместимом с Ultralytics/YOLO (обычно формат YOLO: .txt с классом и bbox в нормализованных координатах).

Важное: если у вас большие проекты с приватными данными, продумайте безопасность и хранение метаданных (шифрование, доступ по ролям).

Требования и установка окружения

  1. Создайте рабочую папку и виртуальное окружение:
mkdir yolov8project
cd yolov8project
python -m venv env
  1. Активируйте виртуальное окружение:
# На Windows
env/Scripts/activate

# На Linux / macOS
source env/bin/activate
  1. Установите Ultralytics (включает YOLOv8):
pip install ultralytics
  1. Быстрая проверка: запустите детекцию на тестовом изображении или видео, чтобы убедиться, что всё установлено корректно:
# детекция на изображении
yolo task=detect mode=predict model=yolov8n.pt source="path/to/image.png"

# детекция на видео
yolo task=detect mode=predict model=yolov8n.pt source="path/to/video.mp4"

Результаты появятся в папке проекта в runs/detect/exp.

Подготовка собственных данных

Основные шаги: сбор, разметка и разделение данных.

Сбор данных

Соберите разнообразные изображения с объектами, которые хотите детектировать. Обратите внимание на освещение, ракурсы и фоны. Источники: собственная съёмка, публичные датасеты (OpenImages, COCO), Kaggle. В примере использован датасет по безопасности на стройке с Kaggle.

Совет: соберите изображения с разной плотностью объектов (сильная/слабая загруженность кадра) — это улучшит обобщающую способность модели.

Разметка

Инструменты: LabelImg, CVAT, Roboflow. Разметка должна соответствовать формату YOLO (каждая строка .txt: в нормализованных координатах).

Короткое определение: нормализованные координаты — координаты bbox, отнесённые к размерам изображения (от 0 до 1).

Разделение набора данных

Разделите данные на train/valid/test. Рекомендуемые соотношения:

  • Для больших наборов: 70% train / 20% valid / 10% test.
  • Для средних или малых наборов: 80% train / 10% valid / 10% test.

Утилиты: библиотека split-folders для случайного разбиения.

Примечание: убедитесь, что распределение классов одинаково в каждом сете (stratified split), особенно при дисбалансе классов.

Конфигурация данных (config.yaml)

Создайте файл config.yaml с путями и именами классов. Пример:

path: (dataset directory path)
train: (train dataset folder path)
test: (test dataset folder path)
valid: (validation dataset folder path)

# Classes
nc: 5  # замените числом классов в вашем датасете

# Class names
names: ['class1', 'class2', 'class3', 'class4', 'class5']

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

Обучение YOLOv8 на собственных данных

Запустите обучение через CLI Ultralytics:

yolo task=detect mode=train model=yolov8n.pt data=path/to/config.yaml epochs=10 imgsz=640

Разбор параметров:

  • task: detect, segment или classify.
  • mode: train, predict, val, export и т.д.
  • model: стартовая предобученная модель (yolov8n.pt / yolov8s.pt / yolov8l.pt / yolov8x.pt).
  • epochs: количество эпох обучения.
  • imgsz: размер изображения (кратный 32).

Рекомендации:

  • Для дебага начните с небольшого числа эпох (5–10) и лёгкой модели (yolov8n).
  • Для финального тренинга используйте более крупные модели и увеличьте epochs, если модель не переобучается.

График обучения YOLOv8 на пользовательских данных

Время обучения зависит от размера набора данных, типа модели и наличия GPU.

После завершения тренировки веса сохранятся в runs/train/exp/weights/best.pt. Для инференса используйте команду:

yolo task=detect mode=predict model="runs/train/weights/best.pt" source="image.png"

Результаты детекции будут в runs/detect/exp.

Оценка модели

Для оценки используйте команду валидации:

yolo val model=yolov8n.pt data=path/to/config.yaml batch=1 imgsz=640

Типичные метрики:

  • precision (точность) — доля правильно предсказанных обнаружений среди всех предсказаний;
  • recall (полнота) — доля верно обнаруженных объектов среди всех истинных объектов;
  • F1 — гармоническое среднее precision и recall.

Интерпретация: высокая precision и низкая recall — модель боится ошибаться (более консервативна). Высокая recall и низкая precision — много ложных положительных.

Результаты валидации YOLOv8

Развертывание и экспорт модели

  1. Проверка инференса на тестовом изображении:
yolo detect predict model=path/to/best.pt source='path/to/image.jpg'
  1. Экспорт в ONNX для интеграции в приложения и ускорения инференса:
yolo export model=path/to/best.pt format=onnx

ONNX-файл можно загрузить в приложения, облачные функции или преобразовать в TensorRT для ускоренного инференса на GPU.

Изображение с обнаруженными объектами YOLOv8

Совет: перед деплоем проверьте модель на ассортименте реальных данных, которые будут в продакшене (разный свет, камеры, разрешение).

Советы по улучшению качества модели

  • Data augmentation: повороты, сдвиги, изменение яркости/контраста, Mosaic, MixUp.
  • Балансировка классов: дополнительные примеры для редких классов.
  • Настройка гиперпараметров: learning rate, batch size, weight decay.
  • Использование предобученных весов и fine-tuning вместо тренировки с нуля.
  • Сложные фоны: добавьте негативные примеры (без объектов) и hard-negative mining.

Короткая эвристика: сначала добейтесь стабильной валидации, затем увеличивайте сложность (augmentation, более глубокая модель).

Когда YOLOv8 может не подойти

  • Очень мелкие объекты на большом изображении — понадобится высокая разрешающая способность и специализированные архитетуры.
  • Крайне плотные сцены с перекрывающимися объектами — проблемы с точностью боксов; рассмотрите методы сегментации или более тонкую разметку.
  • Очень специализированные домены (медицина, спутниковые снимки) — может потребоваться кастомная архитектура и дополнительные предварительные обработки.

Альтернативные подходы

  • Detectron2 (Facebook/Meta) — мощная платформа для детекции/сегментации.
  • EfficientDet — компромисс между скоростью и точностью.
  • SSD/RetinaNet — для задач с ограниченным ресурсом и стабильной производительностью.

Практические чек-листы

Общий чек-лист перед тренировкой:

  • Виртуальное окружение и Ultralytics установлены.
  • Данные разметки проверены на соответствие формату YOLO.
  • config.yaml содержит корректные пути и имена классов.
  • Подготовлен validation set и test set.
  • Настроен мониторинг обучения (tensorboard/plots).

Роли и ответственность (коротко):

  • Data Engineer: сбор и очистка данных, хранение, разметка, разделение.
  • ML Engineer: настройка обучения, гиперпараметров, мониторинг.
  • DevOps: развёртывание модели, CI/CD, экспорт в ONNX/TensorRT, мониторинг в проде.

Критерии приёмки

  • Mean Average Precision (mAP) на test сете соответствует порогу проекта (например, >0.5 mAP).
  • Отсутствие регрессий на наборе критичных сценариев (low-light, occlusion).
  • Время инференса и потребление ресурсов укладываются в целевые SLA.
  • Модель успешно экспортируется в требуемый формат (ONNX/TensorRT).

Минимальный план действий для продакшена (SOP)

  1. Подготовить production dataset — собрать реальные примеры из продакшена.
  2. Дообучить модель (fine-tune) на production dataset.
  3. Тестовый деплой в staging-окружение с логированием предсказаний.
  4. Запустить A/B тест или shadow-mode для сравнения с текущей системой.
  5. Экспортировать стабильную версию в ONNX/TensorRT и внедрить в прод.

Критические тесты и приёмочные сценарии

  • Тесты на устойчивость: кадры с шумом, различным освещением, частичным перекрытием объектов.
  • Тесты на задержку: инференс на целевом железе при пиковых нагрузках.
  • Тесты на корректность: сравнение предсказаний с ручной разметкой на выборке.

1-строчный глоссарий

  • bbox: ограничивающий прямоугольник вокруг объекта.
  • mAP: mean Average Precision — средняя точность по всем классам и порогам IoU.
  • IoU: Intersection over Union — метрика перекрытия двух областей.

Безопасность и приватность

Если вы обрабатываете персональные данные (лица, номера и т. п.), соблюдайте правила локального законодательства о защите данных. Анонимизируйте изображения при необходимости и храните доступ к датасетам под контролем ролей.

Быстрые советы по миграции и совместимости

  • При переходе между версиями Ultralytics/YOLO проверяйте breaking changes в changelog.
  • Экспортируйте модель и прогоняйте интеграционные тесты на целевой платформе (облако или on-prem).
  • Для ускорения инференса на NVIDIA используйте TensorRT; на CPU — OpenVINO или ONNX Runtime.

Краткое резюме

YOLOv8 — гибкая и мощная модель для обнаружения объектов в реальном времени. Для качественного результата требуется аккуратная подготовка данных, корректная конфигурация и поэтапная валидация. Следуйте контрольным спискам, используйте data augmentation и мониторинг, а перед продакшеном прогоните приемочные тесты и shadow-deploy.

Важное: начните с небольшой модели и короткого цикла экспериментов, затем масштабируйте: больше данных → более крупная модель → финальный экспорт в ONNX/TensorRT.


Если нужно, могу подготовить шаблон config.yaml, пример скрипта предобработки изображений или автоматизированный pipeline для CI/CD развёртывания модели.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Аутентификация в Flask с JWT
Безопасность

Аутентификация в Flask с JWT

Проверить совместимость iPhone с 5G
Мобильные сети

Проверить совместимость iPhone с 5G

Отключить автозапуск Dropbox в Windows 11
Windows

Отключить автозапуск Dropbox в Windows 11

Автоматическое закрытие вкладок на Android
Android.

Автоматическое закрытие вкладок на Android

Как проверить орфографию в Excel
Руководство

Как проверить орфографию в Excel

Включение Map и Filled Map в Power BI
Power BI

Включение Map и Filled Map в Power BI