回调
回调
Ultralytics 框架支持将回调作为 train、val、export 和 predict 模式战略阶段的入口点。每个回调都接受一个 Trainer
, Validator
或 Predictor
对象,具体取决于操作类型。这些对象的所有属性都可以在文档的 "参考 "部分找到。
观看: 掌握Ultralytics YOLOv8 :回调
实例
通过预测返回更多信息
在本例中,我们希望在每个结果对象中返回原始帧。我们可以这样做
from ultralytics import YOLO
def on_predict_batch_end(predictor):
"""Handle prediction batch end by combining results with corresponding frames; modifies predictor results."""
_, image, _, _ = predictor.batch
# Ensure that image is a list
image = image if isinstance(image, list) else [image]
# Combine the prediction results with the corresponding frames
predictor.results = zip(predictor.results, image)
# Create a YOLO model instance
model = YOLO(f'yolov8n.pt')
# Add the custom callback to the model
model.add_callback("on_predict_batch_end", on_predict_batch_end)
# Iterate through the results and frames
for (result, frame) in model.predict(): # or model.track()
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 |
输出过程结束时触发 |