Ultralytics YOLO 回调函数使用指南

Ultralytics YOLO提供了一系列回调函数,这些函数可以在模型操作的关键阶段被触发,例如训练、验证、导出和预测。通过这些回调函数,用户可以在特定点添加自定义功能,增强和修改工作流程。每个回调函数接受一个 Trainer、Validator 或 Predictor 对象,具体取决于操作类型。这些对象的属性可以在文档的参考部分找到详细信息。

回调函数示例:预测时返回额外信息

在这个示例中,希望在每个结果对象中返回原始帧。以下是如何实现这一点的示例代码:

from ultralytics import YOLO def on_predict_batch_end(predictor): ""“在预测批次结束时处理结果,将结果与对应的帧组合;修改预测器结果。”"" _, image, _, _ = predictor.batch # 确保图像是一个列表 image = image if isinstance(image, list) else [image] # 将预测结果与对应的帧组合 predictor.results = zip(predictor.results, image) # 创建一个 YOLO 模型实例 model = YOLO("yolo11n.pt") # 将自定义回调函数添加到模型 model.add_callback("on_predict_batch_end", on_predict_batch_end) # 遍历结果和帧 for result, frame in model.predict(): pass

所有回调函数

以下是所有支持的回调函数。有关更多详细信息,请参阅回调函数的源代码。

以下是一些训练过程中可用的回调函数及其描述:

  • on_pretrain_routine_start - 在预训练例程开始时触发
  • on_pretrain_routine_end - 在预训练例程结束时触发
  • on_train_start - 训练开始时触发
  • on_train_epoch_start - 每个训练周期开始时触发
  • on_train_batch_start - 每个训练批次开始时触发
  • optimizer_step - 在优化器步骤期间触发
  • on_before_zero_grad - 在梯度归零前触发
  • on_train_batch_end - 每个训练批次结束时触发
  • on_train_epoch_end - 每个训练周期结束时触发
  • on_fit_epoch_end - 每个拟合周期结束时触发
  • on_model_save - 模型保存时触发
  • on_train_end - 训练过程结束时触发
  • on_params_update - 模型参数更新时触发
  • teardown - 训练过程清理时触发

以下是一些验证过程中可用的回调函数及其描述:

  • on_val_start - 验证开始时触发
  • on_val_batch_start - 每个验证批次开始时触发
  • on_val_batch_end - 每个验证批次结束时触发
  • on_val_end -验证结束时触发

以下是一些预测过程中可用的回调函数及其描述:

  • on_predict_start -预测过程开始时触发
  • on_predict_batch_start - 每个预测批次开始时触发
  • on_predict_postprocess_end - 预测后处理结束时触发
  • on_predict_batch_end - 每个预测批次结束时触发
  • on_predict_end - 预测过程结束时触发

以下是一些导出过程中可用的回调函数及其描述:

  • on_export_start - 导出过程开始时触发
  • on_export_end - 导出过程结束时触发

常见问题解答

什么是 Ultralytics 回调函数,该如何使用它们?

Ultralytics 回调函数是在模型操作的关键阶段触发的专门入口点,如训练、验证、导出和预测。这些回调函数允许在过程中的特定点添加自定义功能,增强和修改工作流程。要使用回调函数,可以定义一个函数,然后使用 add_callback 方法将其添加到模型中。

如何使用回调函数自定义 Ultralytics 训练例程?

要使用回调函数自定义 Ultralytics 训练例程,可以在训练过程的特定阶段注入逻辑。Ultralytics YOLO提供了多种训练回调函数,如 on_train_start、on_train_end 和 on_train_batch_end。这些允许添加自定义度量、处理或日志记录。

为什么要在 Ultralytics YOLO 中使用验证回调函数?

在 Ultralytics YOLO 中使用验证回调函数可以增强模型评估,允许自定义处理、日志记录或度量计算。回调函数如 on_val_start、on_val_batch_end 和 on_val_end 提供了注入自定义逻辑的入口点,确保详细和全面的验证过程。

如何为 Ultralytics YOLO 的预测模式附加自定义回调函数

要为 Ultralytics YOLO 的预测模式附加自定义回调函数,需要定义一个回调函数并将其注册到预测过程中。常见的预测回调函数包括 on_predict_start、on_predict_batch_end 和 on_predict_end。这些允许修改预测输出并集成额外的功能,如数据日志记录或结果转换。

Ultralytics YOLO中使用回调函数的一些实际示例是什么?

Ultralytics YOLO 支持各种实际的回调函数实现,以增强和自定义不同阶段,如训练、验证和预测。一些实际示例包括:

  • 记录自定义度量:在不同阶段记录额外的度量,如训练或验证周期结束时。
  • 数据增强:在预测或训练批次期间实现自定义数据转换或增强。
  • 中间结果:保存预测或帧等中间结果,以供进一步分析或可视化。
  • 示例:在预测期间使用 on_predict_batch_end 将帧与预测结果组合:
from ultralytics import YOLO def on_predict_batch_end(predictor): ""“在预测批次结束时处理结果,将结果与对应的帧组合;修改预测器结果。”"" _, image, _, _ = predictor.batch image = image if isinstance(image, list) else [image] predictor.results = zip(predictor.results, image) model = YOLO("yolo11n.pt") model.add_callback("on_predict_batch_end", on_predict_batch_end) for result, frame in model.predict(): pass
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485