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 или пользовательские метрики для оценки эффективности модели. Процесс оценки помогает определить, лучше ли текущие гиперпараметры, чем предыдущие.
Результаты журнала
Очень важно регистрировать как показатели производительности, так и соответствующие гиперпараметры для дальнейшего использования. 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 упрощен и в то же время эффективен благодаря подходу, основанному на генетическом алгоритме и ориентированному на мутацию. Следуя шагам, описанным в этом руководстве, вы сможете систематически настраивать свою модель для достижения лучшей производительности.
Дальнейшее чтение
- Гиперпараметрическая оптимизация в Википедии
- 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 .
Могу ли я использовать Ray Tune для расширенной оптимизации гиперпараметров в YOLO11?
Да, Ultralytics YOLO11 интегрируется с Ray Tune для расширенной оптимизации гиперпараметров. Ray Tune предлагает сложные алгоритмы поиска, такие как байесовская оптимизация и гиперполоса, а также возможности параллельного выполнения для ускорения процесса настройки.
Чтобы использовать Ray Tune с YOLO11, просто установите use_ray=True
параметр в вашем model.tune()
вызов метода. Для получения более подробной информации и примеров ознакомьтесь с Руководство по интеграции Ray Tune.