Yolo Vision Shenzhen
Шэньчжэнь
Присоединиться сейчас
Глоссарий

Callback

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

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

Роль обратных вызовов в машинном обучении

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

При использовании высокоуровневых библиотек, таких как PyTorch или TensorFlow, обратные вызовы предоставляют способ введения логики в алгоритм оптимизации. Например, если модель хорошо обучается, обратный вызов может сохранить текущее состояние; если она перестает обучаться, обратный вызов может остановить процесс, чтобы сэкономить ресурсы. Это делает рабочий процесс машинного обучения (ML) рабочий процесс машинного обучения

Общие области применения и реальные примеры

Обратные вызовы являются универсальными и могут использоваться для широкого спектра задач во время мониторинга и оптимизации

  • Раннее прекращение: Одно из наиболее распространенных применений — раннее прекращение. Этот обратный вызов отслеживает определенный показатель, например потери валидационных данных . Если потери перестают уменьшаться в течение заданного количества эпох, обратный вызов останавливает обучение. Это предотвращает переобучения, обеспечивая хорошую обобщаемость модели на новых данных, а не запоминание данные обучения.
  • Проверка модели: при длительных тренировках сбои оборудования могут иметь катастрофические последствия. Обратный вызов проверки сохраняет веса модели через равные промежутки времени (например, каждую эпоху) или только тогда, когда модель достигает нового «лучшего» результата по таким метрикам, как точность или средней средней точности (mAP). Это гарантирует, что у вас всегда будет сохраненная версия модели с наилучшей производительностью.
  • Планирование скорости обучения: скорость обучения определяет, насколько изменяется модель в ответ на расчетную ошибку при каждом обновлении весов модели. Функция обратного вызова может динамически корректировать эту скорость, уменьшая ее при достижении плато обучения, чтобы помочь модели сходиться к оптимальному решению. Эта техника часто называется затуханием скорости обучения.
  • Регистрация и визуализация: обратные вызовы часто используются для интеграции с инструментами отслеживания экспериментов . Они передают метрики на панели инструментов, такие как TensorBoard или MLflow, позволяя специалистам по обработке данных визуализировать функции потерь и графики производительности в режиме реального времени.

Реализация обратных вызовов с Ultralytics YOLO

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

Ниже приведен краткий пример того, как определить и зарегистрировать пользовательский обратный вызов, который выводит сообщение в конце каждого эпоха обучения с помощью Python :

from ultralytics import YOLO


# Define a custom callback function
def on_train_epoch_end(trainer):
    """Callback function to execute at the end of each training epoch."""
    print(f"Epoch {trainer.epoch + 1} complete. Current Fitness: {trainer.fitness}")


# Load the YOLO26 model (latest generation)
model = YOLO("yolo26n.pt")

# Register the custom callback to the model
model.add_callback("on_train_epoch_end", on_train_epoch_end)

# Train the model with the callback active
model.train(data="coco8.yaml", epochs=3)

Обратные вызовы против хуков

Хотя это и связано, полезно отличать обратные вызовы от хуками. В таких фреймворках, как PyTorch, хуки — это, как правило, функции более низкого уровня, привязанные к конкретным tensor операциям или слоям нейронной сети для проверки или изменения градиентов и выходов во время прямого или обратного прохождения. В отличие от них, обратные вызовы — это обычно абстракции более высокого уровня, связанные с циклом обучения (начало, конец, пакетная обработка), а не с самим математическим вычислительным графом.

Дополнительное чтение и ресурсы

Для тех, кто хочет углубить свои знания об оптимизации рабочих процессов обучения, изучение настройка гиперпараметров является логичным следующим шагом. Кроме того, понимание основополагающих принципов задачам компьютерного зрения (CV) , таких как обнаружение объектов обнаружение объектов и сегментации экземпляров , позволяют понять, почему необходимо точное управление обучением с помощью обратных вызовов. Для управления этими процессами на уровне предприятия используется Ultralytics предлагает интегрированные решения, которые автоматизируют многие из этих управляемых обратными вызовами действий.

Присоединяйтесь к сообществу Ultralytics

Присоединяйтесь к будущему ИИ. Общайтесь, сотрудничайте и развивайтесь вместе с мировыми новаторами

Присоединиться сейчас