Devoluciones de llamada
Devoluciones de llamada
Ultralytics admite retrollamadas como puntos de entrada en etapas estrat茅gicas de los modos entrenar, val, exportar y predecir. Cada devoluci贸n de llamada acepta un Trainer
, Validator
o Predictor
en funci贸n del tipo de operaci贸n. Todas las propiedades de estos objetos se pueden encontrar en la secci贸n Referencia de la documentaci贸n.
Observa: Dominio de Ultralytics YOLO : Devoluciones de llamada
Ejemplos
Devoluci贸n de informaci贸n adicional con Predicci贸n
En este ejemplo, queremos devolver el fotograma original con cada objeto resultante. As铆 es como podemos hacerlo
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("yolo11n.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
Todas las devoluciones de llamada
Aqu铆 est谩n todos los callbacks soportados. Consulte el c贸digo fuente de las retrollamadas para obtener m谩s informaci贸n.
Llamadas de los formadores
Devoluci贸n de llamada | Descripci贸n |
---|---|
on_pretrain_routine_start |
Se activa al inicio de la rutina de preentrenamiento |
on_pretrain_routine_end |
Se activa al final de la rutina de preentrenamiento |
on_train_start |
Se activa cuando comienza el entrenamiento |
on_train_epoch_start |
Se activa al inicio de cada per铆odo de entrenamiento |
on_train_batch_start |
Se activa al inicio de cada lote de entrenamiento |
optimizer_step |
Se activa durante el paso del optimizador |
on_before_zero_grad |
Se activa antes de que los gradientes se pongan a cero |
on_train_batch_end |
Se activa al final de cada lote de entrenamiento |
on_train_epoch_end |
Se activa al final de cada periodo de entrenamiento |
on_fit_epoch_end |
Se activa al final de cada 茅poca de ajuste |
on_model_save |
Se activa al guardar el modelo |
on_train_end |
Se activa cuando finaliza el proceso de entrenamiento |
on_params_update |
Se activa cuando se actualizan los par谩metros del modelo |
teardown |
Se activa cuando se est谩 limpiando el proceso de formaci贸n |
Devoluciones de llamada del validador
Devoluci贸n de llamada | Descripci贸n |
---|---|
on_val_start |
Se activa cuando comienza la validaci贸n |
on_val_batch_start |
Se activa al inicio de cada lote de validaci贸n |
on_val_batch_end |
Se activa al final de cada lote de validaci贸n |
on_val_end |
Se activa cuando finaliza la validaci贸n |
Devoluciones de predictor
Devoluci贸n de llamada | Descripci贸n |
---|---|
on_predict_start |
Se activa cuando comienza el proceso de predicci贸n |
on_predict_batch_start |
Se activa al inicio de cada lote de predicci贸n |
on_predict_postprocess_end |
Se activa al final del postprocesamiento de predicciones |
on_predict_batch_end |
Se activa al final de cada lote de predicci贸n |
on_predict_end |
Se activa cuando finaliza el proceso de predicci贸n |
Llamadas de retorno del exportador
Devoluci贸n de llamada | Descripci贸n |
---|---|
on_export_start |
Se activa cuando se inicia el proceso de exportaci贸n |
on_export_end |
Se activa cuando finaliza el proceso de exportaci贸n |
PREGUNTAS FRECUENTES
驴Qu茅 son las retrollamadas de Ultralytics y c贸mo puedo utilizarlas?
Ultralytics devoluciones de llamada son puntos de entrada especializados que se activan durante las etapas clave de las operaciones del modelo, como la formaci贸n, la validaci贸n, la exportaci贸n y la predicci贸n. Estas retrollamadas permiten una funcionalidad personalizada en puntos espec铆ficos del proceso, permitiendo mejoras y modificaciones en el flujo de trabajo. Cada llamada de retorno acepta un Trainer
, Validator
o Predictor
en funci贸n del tipo de operaci贸n. Para conocer las propiedades detalladas de estos objetos, consulte la secci贸n Secci贸n de referencia.
Para utilizar una devoluci贸n de llamada, puede definir una funci贸n y luego a帽adirla al modelo con la funci贸n add_callback
m茅todo. He aqu铆 un ejemplo de c贸mo devolver informaci贸n adicional durante la predicci贸n:
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
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
驴C贸mo puedo personalizar la rutina de entrenamiento de Ultralytics utilizando callbacks?
Para personalizar su rutina de entrenamiento Ultralytics utilizando callbacks, puede inyectar su l贸gica en etapas espec铆ficas del proceso de entrenamiento. Ultralytics YOLO proporciona una variedad de callbacks de entrenamiento tales como on_train_start
, on_train_end
y on_train_batch_end
. Permiten a帽adir m茅tricas, procesamientos o registros personalizados.
Here's an example of how to freeze BatchNorm statistics when freezing layers with callbacks:
from ultralytics import YOLO
# Add a callback to put the frozen layers in eval mode to prevent BN values from changing
def put_in_eval_mode(trainer):
n_layers = trainer.args.freeze
if not isinstance(n_layers, int):
return
for i, (name, module) in enumerate(trainer.model.named_modules()):
if name.endswith("bn") and int(name.split(".")[1]) < n_layers:
module.eval()
module.track_running_stats = False
model = YOLO("yolo11n.pt")
model.add_callback("on_train_epoch_start", put_in_eval_mode)
model.train(data="coco.yaml", epochs=10)
Consulte la Gu铆a de Formaci贸n para obtener m谩s informaci贸n sobre c贸mo utilizar eficazmente las llamadas a formaci贸n.
驴Por qu茅 debo utilizar callbacks durante la validaci贸n en Ultralytics YOLO ?
Utilizando devoluciones de llamada durante la validaci贸n en Ultralytics YOLO pueden mejorar la evaluaci贸n del modelo permitiendo el procesamiento personalizado, el registro o el c谩lculo de m茅tricas. Devoluciones de llamada como on_val_start
, on_val_batch_end
y on_val_end
proporcionan puntos de entrada para inyectar l贸gica personalizada, garantizando procesos de validaci贸n detallados y exhaustivos.
For instance, you might want to plot all the validation batches, instead of just the first 3. Here's how you can do that:
import inspect
from ultralytics import YOLO
def plot_samples(validator):
frame = inspect.currentframe().f_back.f_back
v = frame.f_locals
validator.plot_val_samples(v["batch"], v["batch_i"])
validator.plot_predictions(v["batch"], v["preds"], v["batch_i"])
model = YOLO("yolo11n.pt")
model.add_callback("on_val_batch_end", plot_samples)
model.val(data="coco.yaml")
Consulte la Gu铆a de validaci贸n para obtener m谩s informaci贸n sobre la incorporaci贸n de devoluciones de llamada en su proceso de validaci贸n.
驴C贸mo puedo adjuntar una llamada de retorno personalizada para el modo de predicci贸n en Ultralytics YOLO ?
Para adjuntar una llamada de retorno personalizada para la funci贸n modo de predicci贸n en Ultralytics YOLO , se define una funci贸n de devoluci贸n de llamada y se registra en el proceso de predicci贸n. Las llamadas de retorno de predicci贸n m谩s comunes son on_predict_start
, on_predict_batch_end
y on_predict_end
. Permiten modificar los resultados de las predicciones e integrar funciones adicionales, como el registro de datos o la transformaci贸n de resultados.
Here is an example where a custom callback is used to save predictions based on whether an object of a particular class is present:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
class_id = 2
def save_on_object(predictor):
r = predictor.results[0]
if class_id in r.boxes.cls:
predictor.args.save = True
else:
predictor.args.save = False
model.add_callback("on_predict_postprocess_end", save_on_object)
results = model("pedestrians.mp4", stream=True, save=True)
for results in results:
pass
Para un uso m谩s exhaustivo, consulte la Gu铆a de predicci贸n, que incluye instrucciones detalladas y opciones de personalizaci贸n adicionales.
驴Cu谩les son algunos ejemplos pr谩cticos del uso de callbacks en Ultralytics YOLO ?
Ultralytics YOLO soporta varias implementaciones pr谩cticas de callbacks para mejorar y personalizar diferentes fases como el entrenamiento, la validaci贸n y la predicci贸n. Algunos ejemplos pr谩cticos son:
- Registro de m茅tricas personalizadas: Registre m茅tricas adicionales en diferentes etapas, como el final de las 茅pocas de entrenamiento o validaci贸n.
- Aumento de datos: Implemente transformaciones o aumentos de datos personalizados durante la predicci贸n o los lotes de entrenamiento.
- Resultados intermedios: Guarda resultados intermedios como predicciones o fotogramas para su posterior an谩lisis o visualizaci贸n.
Ejemplo: Combinaci贸n de fotogramas con resultados de predicci贸n durante la predicci贸n mediante on_predict_batch_end
:
from ultralytics import YOLO
def on_predict_batch_end(predictor):
"""Combine prediction results with frames."""
_, 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
Explore la Referencia completa de devoluci贸n de llamada para encontrar m谩s opciones y ejemplos.