Перейти к содержанию

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

Введение

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



Смотреть: Как настроить гиперпараметры для повышения эффективности модели 🚀

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

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

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

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

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

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

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

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

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

Прежде чем начать процесс настройки, необходимо:

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

Этапы работы

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

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

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

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

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

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

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

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

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

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

Повторите

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

Описание пространства поиска по умолчанию

В следующей таблице перечислены параметры пространства поиска по умолчанию для настройки гиперпараметров в YOLO11. Каждый параметр имеет свой диапазон значений, определяемый кортежем (min, max).

Параметр Тип Диапазон значений Описание
lr0 float (1e-5, 1e-1) Начальная скорость обучения в начале обучения. Более низкие значения обеспечивают более стабильное обучение, но медленную сходимость
lrf float (0.01, 1.0) Коэффициент конечной скорости обучения в долях от lr0. Контролирует, насколько уменьшается скорость обучения во время тренировки
momentum float (0.6, 0.98) Коэффициент импульса SGD. Более высокие значения помогают поддерживать постоянное направление градиента и могут ускорить сходимость
weight_decay float (0.0, 0.001) Коэффициент регуляризации L2 для предотвращения перебора. Большие значения усиливают регуляризацию
warmup_epochs float (0.0, 5.0) Количество эпох для разминки скорости линейного обучения. Помогает предотвратить раннюю нестабильность обучения
warmup_momentum float (0.0, 0.95) Начальный импульс во время фазы разминки. Постепенно увеличивается до конечного значения импульса
box float (0.02, 0.2) Вес потерь в граничных коробках в общей функции потерь. Баланс между регрессией и классификацией
cls float (0.2, 4.0) Вес потери классификации в функции общих потерь. Более высокие значения подчеркивают правильность предсказания классов
hsv_h float (0.0, 0.1) Случайный диапазон увеличения оттенка в цветовом пространстве HSV. Помогает модели обобщить все цветовые вариации
hsv_s float (0.0, 0.9) Произвольный диапазон увеличения насыщенности в пространстве HSV. Моделирует различные условия освещения
hsv_v float (0.0, 0.9) Диапазон увеличения случайного значения (яркости). Помогает модели работать с различными уровнями экспозиции
degrees float (0.0, 45.0) Максимальное увеличение поворота в градусах. Помогает модели стать инвариантной к ориентации объекта
translate float (0.0, 0.9) Максимальное увеличение перевода в долях от размера изображения. Повышает устойчивость к изменению положения объекта
scale float (0.0, 0.9) Произвольный диапазон увеличения масштаба. Помогает модели обнаруживать объекты разных размеров
shear float (0.0, 10.0) Максимальное увеличение сдвига в градусах. Добавляет перспективные искажения к учебным изображениям
perspective float (0.0, 0.001) Произвольный диапазон увеличения перспективы. Имитирует различные углы обзора
flipud float (0.0, 1.0) Вероятность вертикального переворота изображения во время обучения. Полезно при съемке с высоты/воздуха
fliplr float (0.0, 1.0) Вероятность горизонтального переворота изображения. Помогает модели стать инвариантной к направлению движения объекта
mosaic float (0.0, 1.0) Вероятность использования мозаичного увеличения, которое объединяет 4 изображения. Особенно полезно для обнаружения мелких объектов
mixup float (0.0, 1.0) Вероятность использования дополнения mixup, которое смешивает два изображения. Может повысить устойчивость модели
copy_paste float (0.0, 1.0) Вероятность использования дополнения copy-paste. Помогает улучшить производительность сегментации экземпляров

Пример пользовательского пространства поиска

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

Пример

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolo11n.pt")

# Define search space
search_space = {
    "lr0": (1e-5, 1e-1),
    "degrees": (0.0, 45.0),
}

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(
    data="coco8.yaml",
    epochs=30,
    iterations=300,
    optimizer="AdamW",
    space=search_space,
    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-файл, содержащий подробные результаты каждой итерации в процессе настройки. Каждая строка в файле представляет одну итерацию и включает такие метрики, как оценка пригодности, точность, отзыв, а также используемые гиперпараметры.

  • Формат: 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 и YOLO11

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

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Как оптимизировать скорость обучения для Ultralytics YOLO при настройке гиперпараметров?

Чтобы оптимизировать скорость обучения для Ultralytics YOLO , начните с установки начальной скорости обучения, используя lr0 параметр. Обычные значения варьируются от 0.001 на 0.01. В процессе настройки гиперпараметров это значение будет изменяться, чтобы найти оптимальную настройку. Вы можете использовать model.tune() метод для автоматизации этого процесса. Например:

Пример

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolo11n.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)

Более подробную информацию можно найти на странице конфигурацииUltralytics YOLO .

Каковы преимущества использования генетических алгоритмов для настройки гиперпараметров в YOLO11?

Генетические алгоритмы в Ultralytics YOLO11 обеспечивают надежный метод исследования пространства гиперпараметров, что приводит к высокой оптимизации работы модели. Основные преимущества включают:

  • Эффективный поиск: Генетические алгоритмы, такие как мутация, могут быстро исследовать большой набор гиперпараметров.
  • Избегание локальных минимумов: Вводя случайность, они помогают избежать локальных минимумов, обеспечивая лучшую глобальную оптимизацию.
  • Метрики производительности: Они адаптируются на основе показателей производительности, таких как AP50 и F1-score.

Чтобы узнать, как генетические алгоритмы могут оптимизировать гиперпараметры, ознакомьтесь с руководством по эволюции гиперпараметров.

Сколько времени занимает процесс настройки гиперпараметров для Ultralytics YOLO ?

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

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

Какие метрики следует использовать для оценки эффективности модели при настройке гиперпараметров в YOLO?

При оценке производительности модели в процессе настройки гиперпараметров в YOLO можно использовать несколько ключевых показателей:

  • AP50: средняя точность при пороге IoU, равном 0,50.
  • F1-Score: Среднее гармоническое значение показателей precision и recall.
  • Precision и Recall: Индивидуальные метрики, показывающие точность модели в определении истинно положительных результатов по сравнению с ложноположительными и ложноотрицательными.

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

Могу ли я использовать Ray Tune для расширенной оптимизации гиперпараметров в YOLO11?

Да, Ultralytics YOLO11 интегрируется с Ray Tune для расширенной оптимизации гиперпараметров. Ray Tune предлагает сложные алгоритмы поиска, такие как байесовская оптимизация и гиперполоса, а также возможности параллельного выполнения для ускорения процесса настройки.

Чтобы использовать Ray Tune с YOLO11, просто установите use_ray=True параметр в вашем model.tune() вызов метода. Для получения более подробной информации и примеров ознакомьтесь с Руководство по интеграции Ray Tune.

📅 Создано 1 год назад ✏️ Обновлено 8 дней назад

Комментарии