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

Обучение 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
Автор
Редакция

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

Пересылка почты Outlook ↔ Gmail: полное руководство
Почта

Пересылка почты Outlook ↔ Gmail: полное руководство

Как узнать, что пора менять батарейку AirTag
Гаджеты

Как узнать, что пора менять батарейку AirTag

Как удалить устройства из Google Home
Умный дом

Как удалить устройства из Google Home

Вернуть «Open command window here» в Windows 11
Windows

Вернуть «Open command window here» в Windows 11

Подключение Bluetooth-наушников к Wear OS
Гаджеты

Подключение Bluetooth-наушников к Wear OS

Запустить успешную страницу на Patreon
Монетизация

Запустить успешную страницу на Patreon