Этап обучения - Самый долгий этап в зависимости от размера датасета и мощности железа
Время обучения по нашим замерам:
Windows, RTX 4070: ~400 изображений - около 3 часов.
Mac M4: ~4000 изображений - заняло два дня...
По метрикам после 20 эпох:
mAP50: ~0.45
Precision: ~0.67
Recall: ~0.4
Маловато, но для прототипа и учебной задачи - более чем рабочий результат.
Для production-задачи желательны значения mAP50 от 0.7+ в зависимости от критичности ошибок.
Разницу в результатах «на глаз» не заметил. Размер датасета — не решающий фактор, там много нюансов от качества разметки, разнообразия кадров, настройки обучения и других критериев.
Для первого быстрого теста хватит и 200 изображений.
В примере стоит 100 эпох обучения, я остановил после 20.
save_period можно поставить 5, например - чтобы меньше ждать до следующего сохранения.
Код для обучения:
from ultralytics import YOLO
import torch
# Проверка device
device = "mps" if torch.backends.mps.is_available() else "cpu"
print(f"Обучение на: {device}")
# Загрузить модель
print("Загрузка модели yolov8s...")
model = YOLO("yolov8s.pt")
# Запустить обучение
print("Начинаем обучение...")
results = model.train(
# Основные параметры
data="/путь_до_вашей_папки/data.yaml", # указываем свой путь
epochs=100,
imgsz=640,
device=device,
# Параметры обучения
batch=16,
patience=20, # early stopping после 20 эпох без улучшения
save=True, # сохранять чекпойнты
save_period=10, # сохранять каждые 10 эпох
# Augmentation
hsv_h=0.015,
hsv_s=0.7,
hsv_v=0.4,
degrees=10.0,
translate=0.1,
scale=0.5,
flipud=0.5,
fliplr=0.5,
# Оптимизация
lr0=0.01,
lrf=0.01,
momentum=0.937,
weight_decay=0.0005,
warmup_epochs=3.0,
# Сохранение результатов
project=".",
name="yolov8s_ppe",
exist_ok=False, # создать новую папку если существует
# Валидация
val=True,
split=0.1, # 10% на валидацию
# Логирование
verbose=True,
)
print("Обучение завершено!")
print(f"Результаты сохранены в: runs/detect/yolov8s_ppe")
Запуск обучения можно сделать из терминала, на Windows так и поступили. Команда с минимальными настройками:
yolo task=detect mode=train model=yolov8s.pt data="C:/путь_до_вашей_папки/data.yaml" epochs=100 imgsz=640
Запуск обученной модели
Готовая модель сохраняется в файл best.pt - его можно спокойно переносить на другие машины и запускать там, где установлен Python и ultralytics
Код для запуска в комментах
Следующим этапом можно пойти дальше и разметить свой датасет, но я пока не уверен стоит ли оно того 🤷🏻♂️
Эти знания можно применить для реализации своих идей хоть сейчас.
От распознавания пролетающих птиц до определения брака на конвейере.
Было полезно? )
Если где-то не хватило инфы - пишите, дополню пост.
З.Ы. Если кто-то попробует обучить свою модель - напишите, пожалуйста, что по результатам и впечатлениям 🤗
2/2