深圳Yolo 视觉
深圳
立即加入
词汇表

回调

了解回调如何优化Ultralytics YOLO26训练。学习如何实施早期停止、检查点和自定义日志记录,以增强您的AI工作流程。

在软件工程和人工智能(AI)领域,回调(callback)是一段可执行代码,作为参数传递给其他代码,并预期在给定时间执行(回调)该参数。在深度学习(DL)框架的特定上下文中,回调是必不可少的工具,它允许开发者自定义模型训练循环的行为,而无需修改核心训练代码本身。它们充当自动化触发器,在训练过程的各个阶段执行特定操作,例如周期(epoch)的开始或结束、训练批次或整个训练会话。

回调在机器学习中的作用

训练复杂的神经网络可能需要数小时甚至数天。如果没有回调,训练过程本质上是一个运行直到完成的“黑箱”,通常需要人工监督。回调引入了可观测性和控制,允许系统根据实时性能指标进行自我调节。

当使用PyTorchTensorFlow等高级库时,回调提供了一种将逻辑注入优化算法的方法。例如,如果模型学习良好,回调可能会保存当前状态;如果模型停止学习,回调可能会停止该过程以节省资源。这使得机器学习 (ML)工作流程更加高效和健壮。

常见应用和实际案例

回调功能多样,可用于模型监控和优化期间的广泛任务。

  • 早期停止:最常见的用途之一是 早期停止。此回调函数监测特定指标,例如 验证数据 损失。如果损失在设定的 epoch 数量内停止下降,回调函数将停止训练。这可以防止 过拟合,确保模型对新数据具有良好的泛化能力,而不是记忆 训练数据
  • 模型检查点:在长时间训练运行中,硬件故障可能造成灾难性后果。检查点回调函数会定期(例如,每个epoch)或仅当模型在准确率平均精度均值 (mAP)等指标上达到新的“最佳”分数时,保存模型权重。这确保您始终拥有性能最佳模型的保存版本。
  • 学习率调度:学习率控制着模型权重每次更新时,模型根据估计误差进行改变的幅度。回调函数可以动态调整这个速率,在学习停滞时降低它,以帮助模型收敛到最优解,这种技术通常被称为学习率衰减
  • 日志记录与可视化:回调函数常用于与实验跟踪工具集成。它们将指标流式传输到TensorBoardMLflow等仪表板,使数据科学家能够实时可视化损失函数和性能图表。

使用 Ultralytics YOLO 实现回调

Ultralytics 库支持强大的回调系统,允许用户在训练YOLO26等模型期间挂钩事件。这对于在Ultralytics Platform上管理工作流程并需要自定义日志记录或控制逻辑的用户特别有用。

下面是一个简洁的示例,说明如何使用Python API定义和注册一个自定义回调,该回调在每个训练周期结束时打印一条消息:

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 Platform提供了集成解决方案,可自动化许多这些由回调驱动的行为。

让我们一起共建AI的未来!

开启您的机器学习未来之旅