Ultralytics YOLO Руководство понастройке гиперпараметров
Введение
Настройка гиперпараметров - это не просто одноразовая настройка, а итеративный процесс, направленный на оптимизацию показателей эффективности модели машинного обучения, таких как точность, прецизионность и отзыв. В контексте Ultralytics YOLO эти гиперпараметры могут варьироваться от скорости обучения до архитектурных деталей, таких как количество слоев или типы используемых функций активации.
Что такое гиперпараметры?
Гиперпараметры - это высокоуровневые, структурные настройки алгоритма. Они задаются перед этапом обучения и остаются неизменными во время него. Вот некоторые часто настраиваемые гиперпараметры в Ultralytics YOLO:
- Скорость обучения
lr0
: Определяет размер шага на каждой итерации, двигаясь к минимуму в функция потерь. - Размер партии
batch
: Количество изображений, обрабатываемых одновременно за один проход. - Количество эпох
epochs
: Эпоха - это один полный проход вперед и назад всех обучающих примеров. - Специфика архитектуры: Например, количество каналов, число слоев, типы функций активации и т. д.
Полный список гиперпараметров аугментации, используемых в YOLO11, можно найти на странице конфигураций.
Генетическая эволюция и мутация
Ultralytics YOLO использует генетические алгоритмы для оптимизации гиперпараметров. Генетические алгоритмы вдохновлены механизмом естественного отбора и генетикой.
- Мутация: В контексте Ultralytics YOLO мутация помогает локально перебирать пространство гиперпараметров, применяя небольшие случайные изменения к существующим гиперпараметрам, создавая новых кандидатов для оценки.
- Кроссовер: Хотя кроссовер - популярная техника генетических алгоритмов, в настоящее время она не используется в Ultralytics YOLO для настройки гиперпараметров. В основном упор делается на мутацию для генерации новых наборов гиперпараметров.
Подготовка к настройке гиперпараметров
Прежде чем приступить к тюнингу, важно:
- Определи метрики: Определись с метриками, которые ты будешь использовать для оценки эффективности модели. Это может быть AP50, F1-score или другие.
- Установи бюджет тюнинга: Определи, сколько вычислительных ресурсов ты готов выделить. Настройка гиперпараметров может потребовать больших вычислительных затрат.
Шаги, которые необходимо выполнить
Инициализация гиперпараметров
Начни с разумного набора начальных гиперпараметров. Это могут быть либо гиперпараметры по умолчанию, установленные Ultralytics YOLO, либо что-то, основанное на твоих знаниях о предметной области или предыдущих экспериментах.
Мутируйте гиперпараметры
Используй _mutate
метод, позволяющий получить новый набор гиперпараметров на основе существующего набора.
Модель поезда
Обучение проводится с использованием мутированного набора гиперпараметров. Затем оценивается эффективность обучения.
Оценить модель
Используй такие метрики, как AP50, F1-score или пользовательские метрики для оценки эффективности модели.
Результаты журнала
Очень важно записывать в журнал как показатели производительности, так и соответствующие гиперпараметры для дальнейшего использования.
Повторяй
Процесс повторяется до тех пор, пока либо не будет достигнуто заданное количество итераций, либо метрика производительности не станет удовлетворительной.
Пример использования
Вот как использовать model.tune()
метод, позволяющий использовать Tuner
Класс для настройки гиперпараметров YOLO11n на COCO8 для 30 эпох с оптимизатором AdamW и пропуском построения графиков, чекпоинтов и валидации, кроме финальной эпохи, для более быстрого тюнинга.
Пример
Результаты
После того как ты успешно завершил процесс настройки гиперпараметров, ты получишь несколько файлов и директорий, в которых заключены результаты настройки. Ниже описывается каждый из них:
Структура файла
Вот как будет выглядеть структура каталогов с результатами. Тренировочные каталоги, такие как 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 упрощен и в то же время эффективен благодаря подходу, основанному на генетическом алгоритме и ориентированному на мутацию. Следуя шагам, описанным в этом руководстве, ты сможешь систематически настраивать свою модель для достижения лучшей производительности.
Дальнейшее чтение
- Гиперпараметрическая оптимизация в Википедии
- Руководство по эволюции гиперпараметров YOLOv5
- Эффективная настройка гиперпараметров с помощью Ray Tune и YOLO11
Для более глубокого понимания ты можешь изучить Tuner
исходный код класса и сопутствующую документацию. Если у тебя возникнут вопросы, пожелания по функциям или понадобится дополнительная помощь, не стесняйся обращаться к нам по следующим адресам GitHub или Дискорд.
ВОПРОСЫ И ОТВЕТЫ
Как оптимизировать скорость обучения для Ultralytics YOLO во время настройки гиперпараметров?
Чтобы оптимизировать скорость обучения для Ultralytics YOLO , начни с установки начальной скорости обучения, используя lr0
параметр. Обычные значения варьируются от 0.001
на 0.01
. В процессе настройки гиперпараметров это значение будет изменяться, чтобы найти оптимальную настройку. Ты можешь использовать model.tune()
метод, позволяющий автоматизировать этот процесс. Например:
Пример
Более подробную информацию ты можешь найти на странице конфигурации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 .
Могу ли я использовать Ultralytics HUB для настройки гиперпараметров моделей YOLO ?
Да, ты можешь использовать Ultralytics HUB для настройки гиперпараметров моделей YOLO . HUB - это платформа без кода, позволяющая легко загружать наборы данных, обучать модели и эффективно выполнять настройку гиперпараметров. Он обеспечивает отслеживание и визуализацию прогресса и результатов настройки в реальном времени.
Узнай больше об использовании Ultralytics HUB для настройки гиперпараметров в документации Ultralytics HUB Cloud Training.