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

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

6 min read Computer Vision Обновлено 02 Jan 2026
Обучение YOLOv8 на кастомных данных
Обучение YOLOv8 на кастомных данных

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

Зачем использовать YOLOv8

YOLOv8 — это современная реализация семейства You Only Look Once от Ultralytics. Она выполняет детекцию, сегментацию, оценку поз и классификацию в реальном времени. Подойдёт как для быстрых прототипов (POC), так и для интеграции в продукт при условии правильной подготовки данных и оптимизации.

Ключевые преимущества:

  • Низкая задержка для реального времени.
  • Поддержка различных задач (detect, segment, classify).
  • Предобученные веса и удобная CLI-интеграция.

Важно: выбор варианта модели (yolov8n/s/l/x) — компромисс между скоростью и точностью.

Уровни зрелости применения (Maturity levels)

  • POC: yolov8n, небольшое количество эпох, 1–10 классов.
  • Прототип: yolov8s, расширенная аугментация и валидация по k-fold.
  • Продакшен: yolov8l/x, внимательная работа с датасетом, финетюнинг и оптимизация экспорта (ONNX, TensorRT).

1. Настройка Python‑окружения

Пошаговая установка окружения для разработки:

  1. Создайте директорию проекта и виртуальное окружение:
mkdir yolov8project

cd yolov8project
python -m venv env
  1. Активируйте виртуальное окружение:
# On Windows
env/Scripts/activate

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

# video detection
yolo task=detect mode=predict model=yolov8n.pt source="path/to/video.mp4"

Если всё прошло успешно, результаты появятся в папке runs/detect/exp внутри директории проекта.

Совет: используйте отдельный environment для каждого проекта и фиксируйте зависимостями в requirements.txt.

2. Подготовка кастомного датасета

Подготовка данных включает сбор, аннотирование и разбиение на train/val/test.

Сбор данных

Соберите разнообразные изображения, отражающие реальную вариативность сцен: освещение, ракурсы, occlusion. Источники: собственные фото, Flickr, OpenImages, Kaggle. Для примера в этой статье использовался набор изображений по безопасности на стройплощадке (Kaggle).

Совет по локализации: если в изображениях есть люди, убедитесь в соблюдении локального законодательства и требовании к согласиям для обработки изображений.

Аннотирование

Инструменты: LabelImg, CVAT, Roboflow.

  • LabelImg: прост для bounding‑box аннотаций (VOC/Yolo форматы).
  • CVAT: удобен для командной работы и сложных задач (instance tracking, segmentation).
  • Roboflow: автоматизация, предобработка и экспорт в нужный формат.

Форматы: YOLO TXT (x_center y_center width height, нормированные), COCO JSON (рекомендуется для сегментации/сложных проектов).

Разбиение данных

Рекомендуемые доли:

  • Большие датасеты: train 70% / val+test 30% (например 70/20/10).
  • Малые датасеты: train 80% / val 20% или использование k-fold.

Можно использовать утилиту split-folders для случайного разбиения на train/val/test.

3. Конфигурация для собственного датасета

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

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

# Classes
nc: 5 # replace based on your dataset's number of classes

# Class names
# replace all class names with your own classes' names
names: ['class1', 'class2', 'class3', 'class4', 'class5']

Правильно указывайте абсолютные или относительные пути. Ошибка в путях — частая причина «не видит данных» при запуске обучения.

Совет: храните конфигурацию в репозитории проекта и версионируйте её вместе с метаданными аннотаций.

4. Обучение YOLOv8 на кастомных данных

Стандартная команда для обучения:

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, track, benchmark).
  • model: предобученные веса (yolov8n/s/l/x) или путь к своим весам.
  • epochs: количество эпох; для POC 10–30, для финального обучения — 50–200+ в зависимости от данных.
  • imgsz: размер входного изображения (кратный 32).

Рекомендации по гиперпараметрам:

  • batch size выбирайте по доступной VRAM (следите за OOM).
  • lr: начальная скорость обучения по умолчанию подходит для большинства задач, но будьте готовы уменьшать при шумной обучающей выборке.
  • augmentation: активируйте аугментации (flip, mosaic, hsv) для повышения обобщающей способности.

Обучение YOLOv8 на кастомных данных — графики и логи

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

5. Инференс и сохранение весов

После успешного обучения выполните инференс с новыми весами:

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

Сохранившиеся веса обычно находятся в runs/train/exp/weights/best.pt. Результаты инференса — в runs/detect/exp.

Экспорт модели в формат для деплоя (пример ONNX):

yolo export model=path/to/best.pt format=onnx

Поддерживаемые форматы: ONNX, TorchScript, CoreML, TensorRT (через ONNX->TensorRT). Выбор зависит от целевой платформы (сервер, мобильное устройство, edge‑устройство).

6. Оценка качества модели

Команда валидации:

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

Ключевые метрики:

  • Precision: доля правильно предсказанных объектов среди всех предсказанных.
  • Recall: доля обнаруженных объектов среди всех объектов разметки.
  • F1 score: гармоническое среднее precision и recall.

Результаты валидации YOLOv8 — метрики и графики

Совет: смотрите PR curves и per‑class AP для выявления проблем по классам.

7. Деплой и эксплуатация

Базовый инференс из командной строки:

yolo detect predict model=path/to/best.pt source='path/to/image.jpg'

После экспорта в ONNX загрузите модель в приложение или SSR/Serverless‑функцию. Для реального времени на сервере используйте TensorRT или OpenVINO для ускорения.

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

Совет по CI/CD: автоматизируйте проверку качества (val) при обновлении данных или конфигурации, и откатывайте модель при падении ключевых метрик.

Когда подход не сработает (Counterexamples / ограничения)

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

Альтернативные подходы: Faster R-CNN для задач, где важна точность более чем скорость; Mask R-CNN для точной сегментации.

Методология быстрого POC (минимальная reproducible процедура)

  1. Сбор 200–1000 изображений, 2–5 классов.
  2. Аннотирование bounding boxes (YOLO формат).
  3. Разделение 80/20 train/val.
  4. Обучение yolov8n 20–50 эпох, imgsz=640.
  5. Быстрая валидация и анализ per‑class AP.
  6. Экспорт лучших весов и пробный деплой на одной машине.

Role‑based чек‑листы

  • Data Engineer:
    • Собрать метаданные и проверить баланс классов.
    • Подготовить структуру каталога для data.yaml.
  • Аннотаторы:
    • Проверить консистентность имен классов.
    • Выполнить QA аннотаций (случайная выборка 5–10%).
  • ML Инженер:
    • Настроить обучение, логирование (TensorBoard/Weights & Biases).
    • Запустить валидацию и сохранить best.pt.
  • DevOps:
    • Настроить контейнер с CUDA/ONNX Runtime.
    • Организовать автоматические тесты инференса.

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

  • AP (mAP@0.5) превышает порог, определённый бизнес‑требованием.
  • Precision и Recall по ключевым классам находятся в приемлемых пределах.
  • Система работает в заданном SLA по задержке (latency) и пропускной способности (throughput).

Отладка — часто встречаемые ошибки и как их лечить

  • “No such file or directory” при запуске train: проверьте пути в config.yaml.
  • OOM (out of memory): уменьшите batch size, уменьшите imgsz или используйте gradient accumulation.
  • Нулевая метрика по одному классу: проверьте аннотации (label mismatch, пустые bounding boxes).
  • Переобучение: уменьшите epochs, добавьте аугментации или соберите больше данных.

Конфиденциальность и соответствие требованиям (GDPR и локальные законы)

Если изображения содержат людей или личную информацию:

  • Анонимизируйте лица или получите согласие субъектов.
  • Храните данные в зашифрованном виде и логируйте доступ.
  • Документируйте срок хранения данных и цель обработки.

Короткая методика тестов принятия (Test cases)

  • Инференс одного изображения возвращает bounding boxes в json/папке с картинками.
  • Валидация запускается без ошибок и выводит метрики.
  • Экспорт ONNX загружается в целевой runtime и выполняет инференс.

Decision flowchart

flowchart TD
  A[Начало: есть ли размеченные данные?] -->|Нет| B[Собрать и аннотировать данные]
  A -->|Да| C[Подготовить config.yaml]
  C --> D[Запустить обучение]
  D --> E{Метрики удовлетворяют требованиям?}
  E -->|Да| F[Экспорт и деплой]
  E -->|Нет| G[Проанализировать: больше данных / аугментация / балансировка]
  G --> D

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

  • YOLOv8 — гибкая модель для детекции и сегментации, подходящая для POC и продакшена.
  • Ключ к успеху — качественные и репрезентативные аннотации, корректная конфигурация и мониторинг качества при деплое.
  • Экспорт в ONNX и оптимизации (TensorRT, OpenVINO) позволяют добиться требуемой производительности в проде.

Важно: начните с небольшого POC (yolov8n), отладьте pipeline данных и метрики, затем масштабируйте модель и автоматизируйте CI/CD для модели.

1‑строчная глоссарий

  • AP / mAP: Average Precision — усреднённая точность.
  • IOU: Intersection over Union — мера пересечения предсказанного и истинного бокса.
  • Epoch: проход по всему датасету во время обучения.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Сохранить вложения Gmail в Google Drive
Google Drive

Сохранить вложения Gmail в Google Drive

Как скрыть значок Windows Defender в трее
Windows

Как скрыть значок Windows Defender в трее

Как поддерживать точное время в Windows 7
Windows

Как поддерживать точное время в Windows 7

Виджет Entertainment в Windows 11 — включение и использование
Windows

Виджет Entertainment в Windows 11 — включение и использование

Проводник Windows зависает — как исправить
Windows

Проводник Windows зависает — как исправить

Как изменить пароль HBO Max — быстро и безопасно
Безопасность

Как изменить пароль HBO Max — быстро и безопасно