# Ultralytics YOLO base callbacks # Trainer callbacks ---------------------------------------------------------------------------------------------------- def on_pretrain_routine_start(trainer): pass def on_pretrain_routine_end(trainer): pass def on_train_start(trainer): pass def on_train_epoch_start(trainer): pass def on_train_batch_start(trainer): pass def optimizer_step(trainer): pass def on_before_zero_grad(trainer): pass def on_train_batch_end(trainer): pass def on_train_epoch_end(trainer): pass def on_fit_epoch_end(trainer): pass def on_model_save(trainer): pass def on_train_end(trainer): pass def on_params_update(trainer): pass def teardown(trainer): pass # Validator callbacks -------------------------------------------------------------------------------------------------- def on_val_start(validator): pass def on_val_batch_start(validator): pass def on_val_batch_end(validator): pass def on_val_end(validator): pass # Predictor callbacks -------------------------------------------------------------------------------------------------- def on_predict_start(predictor): pass def on_predict_batch_start(predictor): pass def on_predict_batch_end(predictor): pass def on_predict_end(predictor): pass # Exporter callbacks --------------------------------------------------------------------------------------------------- def on_export_start(exporter): pass def on_export_end(exporter): pass default_callbacks = { # Run in trainer 'on_pretrain_routine_start': on_pretrain_routine_start, 'on_pretrain_routine_end': on_pretrain_routine_end, 'on_train_start': on_train_start, 'on_train_epoch_start': on_train_epoch_start, 'on_train_batch_start': on_train_batch_start, 'optimizer_step': optimizer_step, 'on_before_zero_grad': on_before_zero_grad, 'on_train_batch_end': on_train_batch_end, 'on_train_epoch_end': on_train_epoch_end, 'on_fit_epoch_end': on_fit_epoch_end, # fit = train + val 'on_model_save': on_model_save, 'on_train_end': on_train_end, 'on_params_update': on_params_update, 'teardown': teardown, # Run in validator 'on_val_start': on_val_start, 'on_val_batch_start': on_val_batch_start, 'on_val_batch_end': on_val_batch_end, 'on_val_end': on_val_end, # Run in predictor 'on_predict_start': on_predict_start, 'on_predict_batch_start': on_predict_batch_start, 'on_predict_batch_end': on_predict_batch_end, 'on_predict_end': on_predict_end, # Run in exporter 'on_export_start': on_export_start, 'on_export_end': on_export_end} def add_integration_callbacks(trainer): from .clearml import callbacks as clearml_callbacks from .tb import callbacks as tb_callbacks from .wb import callbacks as wb_callbacks for x in clearml_callbacks, tb_callbacks, wb_callbacks: for k, v in x.items(): trainer.add_callback(k, v) # add_callback(name, func)