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

Полный список гиперпараметров аугментации, используемых в YOLO26, см. на странице конфигураций.
Генетическая эволюция и мутация
Ultralytics YOLO использует генетические алгоритмы для оптимизации гиперпараметров. Генетические алгоритмы вдохновлены механизмом естественного отбора и генетики.
- Кроссинг-аут: Каждая итерация объединяет гены из девяти конфигураций с наибольшей приспособленностью, обнаруженных на данный момент, с использованием кроссинг-аута BLX-α и отбора родительских особей с учетом приспособленности.
- Мутация: Затем рекомбинированный кандидат подвергается воздействию логарифмически-нормального мультипликативного коэффициента, применяемого к каждому гиперпараметру (с вероятностью 0,5 для каждого параметра). Сила мутации sigma линейно уменьшается с 0,2 до 0,1 в течение первых 300 итераций, благодаря чему алгоритм вначале проводит широкий поиск, а по мере сходимости — уточняет результаты. В итерации 1 нет родителей для кроссинговера, и в качестве базовой линии используются гиперпараметры обучения по умолчанию.
Подготовка к настройке гиперпараметров
Прежде чем начать процесс настройки, важно:
- Определите метрики: Определите метрики, которые вы будете использовать для оценки производительности модели. Это может быть AP50, F1-score или другие.
- Установите бюджет настройки: Определите, сколько вычислительных ресурсов вы готовы выделить. Настройка гиперпараметров может потребовать больших вычислительных затрат.
Задействованные шаги
Инициализировать гиперпараметры
Начните с разумного набора начальных гиперпараметров. Это могут быть гиперпараметры по умолчанию, установленные Ultralytics YOLO, или параметры, основанные на ваших знаниях предметной области или предыдущих экспериментах.
Мутация гиперпараметров
Используйте _mutate метод для создания нового набора гиперпараметров на основе существующего набора. The Класс Tuner обрабатывает этот процесс автоматически.
Обучить модель
Обучение выполняется с использованием измененного набора гиперпараметров. Затем производительность обучения оценивается с использованием выбранных вами метрик.
Оценка модели
Используйте такие метрики, как AP50, F1-score или пользовательские метрики, для оценки производительности модели. Процесс оценки помогает определить, лучше ли текущие гиперпараметры предыдущих.
Регистрация результатов
Очень важно сохранять как показатели производительности, так и соответствующие гиперпараметры для использования в будущем. Ultralytics YOLO сохраняет эти результаты в формате NDJSON.
Повторить
Процесс повторяется до тех пор, пока не будет достигнуто установленное количество итераций или пока показатель производительности не станет удовлетворительным. Каждая итерация основывается на знаниях, полученных в предыдущих запусках.
Описание пространства поиска по умолчанию
В следующей таблице перечислены параметры пространства поиска по умолчанию для настройки гиперпараметров в YOLO26. Каждый параметр имеет определенный диапазон значений, заданный кортежем (min, max).
| Параметр | Тип | Диапазон значений | Описание |
|---|---|---|---|
lr0 | float | (1e-5, 1e-2) | Начальная скорость обучения в начале тренировки. Более низкие значения обеспечивают более стабильное обучение, но более медленную сходимость |
lrf | float | (0.01, 1.0) | Коэффициент конечной скорости обучения как доля от lr0. Контролирует, насколько уменьшается скорость обучения во время тренировки |
momentum | float | (0.7, 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 | (1.0, 20.0) | Вес потерь ограничивающего прямоугольника в общей функции потерь. Балансирует регрессию ограничивающего прямоугольника и классификацию |
cls | float | (0.1, 4.0) | Вес потерь классификации в общей функции потерь. Более высокие значения подчеркивают правильное предсказание класса |
cls_pw | float | (0.0, 1.0) | Коэффициент взвешивания классов для устранения дисбаланса классов. Более высокие значения увеличивают вес редких классов |
dfl | float | (0.4, 12.0) | Вес DFL (Distribution Focal Loss) в общей функции потерь. Более высокие значения акцентируют внимание на точной локализации ограничивающих рамок. |
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.95) | Диапазон увеличения случайного масштабирования. Помогает модели detect объекты разных размеров |
shear | float | (0.0, 10.0) | Максимальное увеличение сдвига в градусах. Добавляет искажения, подобные перспективе, к обучающим изображениям |
perspective | float | (0.0, 0.001) | Диапазон случайного изменения перспективы. Имитирует различные углы обзора |
flipud | float | (0.0, 1.0) | Вероятность вертикального отражения изображения во время обучения. Полезна для аэрофотосъемки. |
fliplr | float | (0.0, 1.0) | Вероятность горизонтального отражения изображения. Помогает модели стать инвариантной к направлению объекта |
bgr | float | (0.0, 1.0) | Вероятность использования BGR-аугментации, которая меняет местами цветовые каналы. Может помочь с инвариантностью к цвету. |
mosaic | float | (0.0, 1.0) | Вероятность использования аугментации mosaic, которая объединяет 4 изображения. Особенно полезна для обнаружения мелких объектов. |
mixup | float | (0.0, 1.0) | Вероятность использования аугментации mixup, которая смешивает два изображения. Может повысить устойчивость модели. |
cutmix | float | (0.0, 1.0) | Вероятность использования аугментации cutmix. Объединяет области изображения, сохраняя локальные признаки |
copy_paste | float | (0.0, 1.0) | Вероятность использования аугментации copy-paste. Помогает улучшить производительность сегментации экземпляров. |
close_mosaic | float | (0.0, 10.0) | Отключает мозаику в последние N эпох для стабилизации обучения перед завершением |
Пример пользовательского пространства поиска
Вот как определить пространство поиска и использовать model.tune() метод для использования Tuner класс для настройки гиперпараметров YOLO26n на COCO8 в течение 30 эпох с оптимизатором AdamW и пропуском построения графиков, контрольных точек и валидации, кроме как на последней эпохе, для более быстрой настройки.
Предупреждение
Этот пример предназначен только для демонстрации. Гиперпараметры, полученные в результате коротких или мелкомасштабных запусков настройки, редко бывают оптимальными для реального обучения. На практике настройку следует выполнять в условиях, аналогичных полной тренировке, включая сопоставимые наборы данных, эпохи и расширения, чтобы обеспечить надежные и переносимые результаты. Быстрая настройка может сместить параметры в сторону более быстрой сходимости или краткосрочных выигрышей валидации, которые не обобщаются.
Пример
from ultralytics import YOLO
# Initialize the YOLO model
model = YOLO("yolo26n.pt")
# Define search space
search_space = {
"lr0": (1e-5, 1e-2),
"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,
)
Возобновление прерванной сессии настройки гиперпараметров
Вы можете возобновить прерванную сессию настройки гиперпараметров, передав resume=TrueВы можете дополнительно передать каталог name используется под runs/{task} чтобы возобновить обучение. В противном случае будет возобновлена последняя прерванная сессия. Также необходимо предоставить все предыдущие аргументы обучения, включая data, epochs, iterations и space.
Используя resume=True с model.tune()
from ultralytics import YOLO
# Define a YOLO model
model = YOLO("yolo26n.pt")
# Define search space
search_space = {
"lr0": (1e-5, 1e-2),
"degrees": (0.0, 45.0),
}
# Resume previous run
results = model.tune(data="coco8.yaml", epochs=50, iterations=300, space=search_space, resume=True)
# Resume tuning run with name 'tune_exp'
results = model.tune(data="coco8.yaml", epochs=50, iterations=300, space=search_space, name="tune_exp", resume=True)
Results
После успешного завершения процесса настройки гиперпараметров вы получите несколько файлов и каталогов, которые содержат результаты настройки. Ниже описано каждое из них:
Структура файла
Вот как будет выглядеть структура каталогов результатов. Каталоги обучения, такие как train1/ содержат отдельные итерации настройки, т.е. одну модель, обученную с одним набором гиперпараметров. The tune/ каталог содержит результаты настройки всех отдельных обучений модели:
runs/
└── detect/
├── train1/
├── train2/
├── ...
└── tune/
├── best_hyperparameters.yaml
├── tune_fitness.png
├── tune_results.ndjson
├── 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
tune_fitness.png
На этом графике показана зависимость критерия приспособленности от количества итераций. Он помогает визуально оценить, как генетический алгоритм работал с течением времени.
- Формат: PNG
- Использование: Визуализация производительности

В состав входит:
- Один маркер на итерацию для каждого набора данных, поэтому при выполнении с одним набором данных отображается одна точка на итерацию, а при выполнении с несколькими наборами данных — по одной точке на каждый набор данных за итерацию.
- Пунктирная линия «сглаженного среднего» рассчитано с помощью гауссового сглаживания (
sigma=3) по значениям приспособленности верхнего уровня за каждую итерацию.
tune_results.ndjson
Файл NDJSON, содержащий подробные результаты каждой итерации настройки. Каждая строка представляет собой один объект JSON, содержащий совокупную критерию приспособленности, настроенные гиперпараметры и показатели по каждому набору данных. Для настройки с одним набором данных и с несколькими наборами данных используется одинаковый формат файла.
- Формат: NDJSON
- Использование: Отслеживание результатов каждой итерации.
- Пример:
Для удобства чтения ниже приведен пример с форматированием. В реальном .ndjson В файле каждый объект хранится в отдельной строке.
{
"iteration": 1,
"fitness": 0.48628,
"hyperparameters": {
"lr0": 0.01,
"lrf": 0.01,
"momentum": 0.937,
"weight_decay": 0.0005
},
"datasets": {
"coco8": {
"metrics/precision(B)": 0.65666,
"metrics/recall(B)": 0.85,
"metrics/mAP50(B)": 0.85086,
"metrics/mAP50-95(B)": 0.64104,
"val/box_loss": 1.57958,
"val/cls_loss": 1.04986,
"val/dfl_loss": 1.32641,
"fitness": 0.64104
},
"coco8-grayscale": {
"metrics/precision(B)": 0.6582,
"metrics/recall(B)": 0.51667,
"metrics/mAP50(B)": 0.59106,
"metrics/mAP50-95(B)": 0.33152,
"val/box_loss": 1.95424,
"val/cls_loss": 1.64059,
"val/dfl_loss": 1.70226,
"fitness": 0.33152
}
},
"save_dirs": {
"coco8": "runs/detect/coco8",
"coco8-grayscale": "runs/detect/coco8-grayscale"
}
}
Верхний уровень fitness — это среднее арифметическое по каждому набору данных fitness значения. Для настройки на основе одного набора данных datasets В словаре есть одна запись, в которой fitness соответствует верхнему уровню fitness. За каждую завершённую итерацию записывается один объект JSON. Фактический save_dirs пути указаны в абсолютном виде; выше они приведены в сокращенном виде для удобства чтения.
tune_scatter_plots.png
Этот файл содержит диаграммы рассеяния, сгенерированные из tune_results.ndjson, что поможет вам наглядно представить взаимосвязь между различными гиперпараметрами и показателями производительности. Гиперпараметры, значение по умолчанию которых равно 0 (например, degrees и shear (см. ниже) могут развиваться из исходного зародыша лишь очень медленно, поскольку мутационный коэффициент, действующий по принципу умножения, имеет очень мало пространства для роста, начиная с значения, близкого к нулю.
- Формат: PNG
- Использование: Разведочный анализ данных

weights/
Этот каталог содержит сохраненные модели PyTorch для последней и лучшей итераций в процессе настройки гиперпараметров.
last.pt: last.pt — это веса из последней эпохи обучения.best.pt: best.pt веса для итерации, которая достигла наилучшего значения fitness.
Используя эти результаты, вы можете принимать более обоснованные решения для будущих обучений и анализов вашей модели. Не стесняйтесь обращаться к этим артефактам, чтобы понять, насколько хорошо работает ваша модель и как вы можете улучшить ее в дальнейшем.
Заключение
Процесс настройки гиперпараметров в Ultralytics YOLO простотой и в то же время высокой эффективностью благодаря использованию подхода на основе генетического алгоритма, сочетающего кроссинговер BLX-α с логарифмически-нормальной мутацией. Выполнение шагов, описанных в данном руководстве, поможет вам систематически настроить модель для достижения более высокой производительности.
Дополнительная литература
- Оптимизация гиперпараметров в Википедии
- Руководство по эволюции гиперпараметров YOLOv5
- Эффективная настройка гиперпараметров с Ray Tune и YOLO26
Для более глубокого понимания вы можете изучить Tuner класс исходный код и сопроводительную документацию. Если у вас возникнут какие-либо вопросы, пожелания или потребуется дополнительная помощь, обращайтесь к нам на GitHub или Discord.
Часто задаваемые вопросы
Как оптимизировать скорость обучения для Ultralytics YOLO во время настройки гиперпараметров?
Чтобы оптимизировать скорость обучения для Ultralytics YOLO, начните с установки начальной скорости обучения с помощью: lr0 параметр. Общие значения варьируются от 0.001 в 0.01. В процессе настройки гиперпараметров это значение будет изменяться для поиска оптимальных параметров. Вы можете использовать model.tune() метод для автоматизации этого процесса. Например:
Пример
from ultralytics import YOLO
# Initialize the YOLO model
model = YOLO("yolo26n.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.
Каковы преимущества использования генетических алгоритмов для настройки гиперпараметров в YOLO26?
Генетические алгоритмы в Ultralytics YOLO26 предоставляют надежный метод для исследования пространства гиперпараметров, что приводит к высокооптимизированной производительности модели. Ключевые преимущества включают:
- Эффективный поиск: метод кроссинга BLX-α объединяет гены родителей с наивысшей приспособленностью, а логарифмически нормальное распределение мутаций вносит в результат случайные изменения, позволяя обнаружить новых кандидатов.
- Избежание локальных минимумов: Внося случайность, они помогают избежать локальных минимумов, обеспечивая лучшую глобальную оптимизацию.
- Показатели эффективности: они адаптируются на основе показателя пригодности для конкретной задачи (mAP50 для задачи обнаружения).
Чтобы узнать, как генетические алгоритмы могут оптимизировать гиперпараметры, ознакомьтесь с руководством по эволюции гиперпараметров.
Сколько времени занимает процесс настройки гиперпараметров для Ultralytics YOLO?
Время, необходимое для настройки гиперпараметров с помощью Ultralytics YOLO, во многом зависит от нескольких факторов, таких как размер набора данных, сложность архитектуры модели, количество итераций и доступные вычислительные ресурсы. Например, настройка YOLO26n на наборе данных, таком как COCO8, в течение 30 эпох может занять от нескольких часов до нескольких дней, в зависимости от оборудования.
Чтобы эффективно управлять временем настройки, заранее определите четкий бюджет настройки (внутренняя ссылка на раздел). Это помогает сбалансировать распределение ресурсов и цели оптимизации.
Какие метрики следует использовать для оценки производительности модели во время настройки гиперпараметров в YOLO?
При оценке производительности модели во время настройки гиперпараметров в YOLO можно использовать несколько ключевых метрик:
- AP50: Средняя точность при пороге IoU 0.50.
- F1-Score: Гармоническое среднее точности и полноты.
- Точность и полнота: Индивидуальные метрики, указывающие на точность модели в определении истинно положительных результатов по сравнению с ложноположительными и ложноотрицательными.
Эти метрики помогают понять различные аспекты производительности вашей модели. Обратитесь к руководству Метрики производительности Ultralytics YOLO для получения всестороннего обзора.
Могу ли я использовать Ray Tune для расширенной оптимизации гиперпараметров с YOLO26?
Да, Ultralytics YOLO26 интегрируется с Ray Tune для расширенной оптимизации гиперпараметров. Ray Tune предлагает сложные алгоритмы поиска, такие как байесовская оптимизация и Hyperband, а также возможности параллельного выполнения для ускорения процесса настройки.
Чтобы использовать Ray Tune с YOLO26, просто установите use_ray=True параметр в вашем model.tune() вызов метода. Для получения более подробной информации и примеров ознакомьтесь с Руководство по интеграции Ray Tune.