Перейти к содержимому

Ultralytics YOLO Руководство по настройке гиперпараметров

Введение

Настройка гиперпараметров - это не просто одноразовая настройка, а итеративный процесс, направленный на оптимизацию показателей эффективности модели машинного обучения, таких как точность, прецизионность и отзыв. В контексте Ultralytics YOLO эти гиперпараметры могут варьироваться от скорости обучения до архитектурных деталей, таких как количество слоев или типы используемых функций активации.

Что такое гиперпараметры?

Гиперпараметры - это высокоуровневые, структурные настройки алгоритма. Они задаются перед этапом обучения и остаются неизменными во время него. Вот некоторые часто настраиваемые гиперпараметры в Ultralytics YOLO :

  • Скорость обучения lr0: Определяет размер шага на каждой итерации при движении к минимуму функции потерь.
  • Размер партии batch: Количество изображений, обрабатываемых одновременно за один проход.
  • Количество эпох epochs: Эпоха - это один полный проход вперед и назад всех обучающих примеров.
  • Особенности архитектуры: Например, количество каналов, число слоев, типы функций активации и т. д.

Визуальная настройка гиперпараметров

Полный список гиперпараметров аугментации, используемых в YOLOv8 , можно найти на странице конфигураций.

Генетическая эволюция и мутация

Ultralytics YOLO использует генетические алгоритмы для оптимизации гиперпараметров. Генетические алгоритмы вдохновлены механизмом естественного отбора и генетикой.

  • Мутация: В контексте Ultralytics YOLO мутация помогает локально перебирать пространство гиперпараметров, применяя небольшие случайные изменения к существующим гиперпараметрам, создавая новых кандидатов для оценки.
  • Кроссовер: Хотя кроссовер - популярная техника генетических алгоритмов, в настоящее время она не используется в Ultralytics YOLO для настройки гиперпараметров. В основном упор делается на мутацию для генерации новых наборов гиперпараметров.

Подготовка к настройке гиперпараметров

Прежде чем приступить к тюнингу, важно:

  1. Определи метрики: Определись с метриками, которые ты будешь использовать для оценки эффективности модели. Это может быть AP50, F1-score или другие.
  2. Установи бюджет тюнинга: Определи, сколько вычислительных ресурсов ты готов выделить. Настройка гиперпараметров может потребовать больших вычислительных затрат.

Шаги, которые необходимо выполнить

Инициализация гиперпараметров

Начни с разумного набора начальных гиперпараметров. Это могут быть либо гиперпараметры по умолчанию, установленные Ultralytics YOLO , либо что-то, основанное на твоих знаниях о предметной области или предыдущих экспериментах.

Мутируйте гиперпараметры

Используй _mutate метод, позволяющий получить новый набор гиперпараметров на основе существующего набора.

Модель поезда

Обучение проводится с использованием мутированного набора гиперпараметров. Затем оценивается эффективность обучения.

Оценить модель

Используй такие метрики, как AP50, F1-score или пользовательские метрики для оценки эффективности модели.

Результаты журнала

Очень важно записывать в журнал как показатели производительности, так и соответствующие гиперпараметры для дальнейшего использования.

Повторяй

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

Пример использования

Вот как использовать model.tune() метод, позволяющий использовать Tuner Класс для настройки гиперпараметров YOLOv8n на COCO8 в течение 30 эпох с оптимизатором AdamW и пропуском построения графиков, чекпоинтов и валидации, кроме финальной эпохи, для более быстрого тюнинга.

Пример

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO('yolov8n.pt')

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(data='coco8.yaml', epochs=30, iterations=300, optimizer='AdamW', plots=False, save=False, val=False)

Результаты

После того как ты успешно завершил процесс настройки гиперпараметров, ты получишь несколько файлов и директорий, в которых заключены результаты настройки. Ниже описывается каждый из них:

Структура файла

Вот как будет выглядеть структура каталогов с результатами. Тренировочные каталоги, такие как train1/ содержат отдельные итерации настройки, то есть одну модель, обученную с одним набором гиперпараметров. На сайте tune/ Каталог содержит результаты настройки всех индивидуальных тренировок модели:

runs/
└── detect/
    ├── train1/
    ├── train2/
    ├── ...
    └── tune/
        ├── best_hyperparameters.yaml
        ├── best_fitness.png
        ├── tune_results.csv
        ├── tune_scatter_plots.png
        └── weights/
            ├── last.pt
            └── best.pt

Описания файлов

best_hyperparameters.yaml

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

  • Формат: YAML
  • Использование: Результаты использования гиперпараметров
  • Пример:
      # 558/900 iterations complete ✅ (45536.81s)
      # Results saved to /usr/src/ultralytics/runs/detect/tune
      # Best fitness=0.64297 observed at iteration 498
      # Best fitness metrics are {'metrics/precision(B)': 0.87247, 'metrics/recall(B)': 0.71387, 'metrics/mAP50(B)': 0.79106, 'metrics/mAP50-95(B)': 0.62651, 'val/box_loss': 2.79884, 'val/cls_loss': 2.72386, 'val/dfl_loss': 0.68503, 'fitness': 0.64297}
      # Best fitness model is /usr/src/ultralytics/runs/detect/train498
      # Best fitness hyperparameters are printed below.
    
      lr0: 0.00269
      lrf: 0.00288
      momentum: 0.73375
      weight_decay: 0.00015
      warmup_epochs: 1.22935
      warmup_momentum: 0.1525
      box: 18.27875
      cls: 1.32899
      dfl: 0.56016
      hsv_h: 0.01148
      hsv_s: 0.53554
      hsv_v: 0.13636
      degrees: 0.0
      translate: 0.12431
      scale: 0.07643
      shear: 0.0
      perspective: 0.0
      flipud: 0.0
      fliplr: 0.08631
      mosaic: 0.42551
      mixup: 0.0
      copy_paste: 0.0
    

best_fitness.png

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

  • Формат: PNG
  • Использование: Визуализация производительности

Настройка гиперпараметров Фитнес против итерации

tune_results.csv

CSV-файл, содержащий подробные результаты каждой итерации в процессе настройки. Каждая строка в файле представляет одну итерацию и включает такие метрики, как fitness score, precision, recall, а также используемые гиперпараметры.

  • Формат: CSV
  • Использование: Отслеживание результатов каждой итерации.
  • Пример:
      fitness,lr0,lrf,momentum,weight_decay,warmup_epochs,warmup_momentum,box,cls,dfl,hsv_h,hsv_s,hsv_v,degrees,translate,scale,shear,perspective,flipud,fliplr,mosaic,mixup,copy_paste
      0.05021,0.01,0.01,0.937,0.0005,3.0,0.8,7.5,0.5,1.5,0.015,0.7,0.4,0.0,0.1,0.5,0.0,0.0,0.0,0.5,1.0,0.0,0.0
      0.07217,0.01003,0.00967,0.93897,0.00049,2.79757,0.81075,7.5,0.50746,1.44826,0.01503,0.72948,0.40658,0.0,0.0987,0.4922,0.0,0.0,0.0,0.49729,1.0,0.0,0.0
      0.06584,0.01003,0.00855,0.91009,0.00073,3.42176,0.95,8.64301,0.54594,1.72261,0.01503,0.59179,0.40658,0.0,0.0987,0.46955,0.0,0.0,0.0,0.49729,0.80187,0.0,0.0
    

tune_scatter_plots.png

Этот файл содержит графики разброса, созданные на основе tune_results.csv, что поможет тебе визуализировать взаимосвязь между различными гиперпараметрами и показателями производительности. Обрати внимание, что гиперпараметры, инициализированные в 0, не будут настраиваться, например degrees и shear ниже.

  • Формат: PNG
  • Использование: Эксплораторный анализ данных

Графики разброса настроек гиперпараметров

веса/

Эта директория содержит сохраненные PyTorch модели для последней и лучшей итераций в процессе настройки гиперпараметров.

  • last.pt: Last.pt - это веса, полученные в последнюю эпоху обучения.
  • best.pt: Веса best.pt для итерации, на которой был получен наилучший фитнес-балл.

Используя эти результаты, ты сможешь принимать более обоснованные решения для будущих тренировок и анализа модели. Не стесняйся обращаться к этим артефактам, чтобы понять, насколько хорошо показала себя твоя модель и как ты можешь улучшить ее в дальнейшем.

Заключение

Процесс настройки гиперпараметров в Ultralytics YOLO упрощен, но при этом является мощным, благодаря подходу, основанному на генетическом алгоритме и сфокусированному на мутации. Следуя шагам, описанным в этом руководстве, ты сможешь систематически настраивать свою модель для достижения лучшей производительности.

Дальнейшее чтение

  1. Гиперпараметрическая оптимизация в Википедии
  2. YOLOv5 Руководство по эволюции гиперпараметров
  3. Эффективная настройка гиперпараметров с помощью Ray Tune и YOLOv8

Для более глубокого понимания ты можешь изучить Tuner исходный код класса и сопутствующую документацию. Если у тебя возникнут вопросы, пожелания по функциям или понадобится дополнительная помощь, не стесняйся обращаться к нам по следующим адресам GitHub или Дискорд.



Создано 2023-11-12, Обновлено 2024-01-07
Авторы: glenn-jocher (6)

Комментарии