Ultralytics framework supports callbacks as entry points in strategic stages of train, val, export, and predict modes.
Each callback accepts a Trainer, Validator, or Predictor object depending on the operation type. All properties of
these objects can be found in Reference section of the docs.
Examples
Returning additional information with Prediction
In this example, we want to return the original frame with each result object. Here's how we can do that
defon_predict_batch_end(predictor):# Retrieve the batch data_,im0s,_,_=predictor.batch# Ensure that im0s is a listim0s=im0sifisinstance(im0s,list)else[im0s]# Combine the prediction results with the corresponding framespredictor.results=zip(predictor.results,im0s)# Create a YOLO model instancemodel=YOLO(f'yolov8n.pt')# Add the custom callback to the modelmodel.add_callback("on_predict_batch_end",on_predict_batch_end)# Iterate through the results and framesfor(result,frame)inmodel.track/predict():pass
All callbacks
Here are all supported callbacks. See callbacks source code for additional details.
Trainer Callbacks
Callback
Description
on_pretrain_routine_start
Triggered at the beginning of pre-training routine
on_pretrain_routine_end
Triggered at the end of pre-training routine
on_train_start
Triggered when the training starts
on_train_epoch_start
Triggered at the start of each training epoch
on_train_batch_start
Triggered at the start of each training batch
optimizer_step
Triggered during the optimizer step
on_before_zero_grad
Triggered before gradients are zeroed
on_train_batch_end
Triggered at the end of each training batch
on_train_epoch_end
Triggered at the end of each training epoch
on_fit_epoch_end
Triggered at the end of each fit epoch
on_model_save
Triggered when the model is saved
on_train_end
Triggered when the training process ends
on_params_update
Triggered when model parameters are updated
teardown
Triggered when the training process is being cleaned up