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 llamada de retorno acepta un Trainer
, Validator
o Predictor
en funci贸n del tipo de operaci贸n. Todas las propiedades de estos objetos se encuentran en la secci贸n Referencia de la documentaci贸n.
Observa: Mastering Ultralytics YOLO: Callbacks
Ejemplos
Devoluci贸n de informaci贸n adicional con Predicci贸n
En este ejemplo, queremos devolver el fotograma original con cada objeto resultado. 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 rellamadas
Aqu铆 est谩n todas las llamadas de retorno admitidas. Consulta el c贸digo fuente de las llamadas de retorno para m谩s detalles.
Llamadas del formador
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 |
Triggered at the start of each training epoch |
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 poner a cero los gradientes |
on_train_batch_end |
Se activa al final de cada lote de entrenamiento |
on_train_epoch_end |
Se activa al final de cada 茅poca de entrenamiento |
on_fit_epoch_end |
Se activa al final de cada 茅poca de ajuste |
on_model_save |
Se activa cuando se guarda 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 entrenamiento |
Llamadas de retorno 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 |
Llamadas de retorno del predictor
Devoluci贸n de llamada | Descripci贸n |
---|---|
on_predict_start |
Se activa cuando se inicia 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 la predicci贸n |
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 devoluciones de llamada de Ultralytics y c贸mo puedo utilizarlas?
Ultralytics devoluciones de llamada son puntos de entrada especializados que se activan durante etapas clave de las operaciones del modelo, como el entrenamiento, la validaci贸n, la exportaci贸n y la predicci贸n. Estas llamadas de retorno 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, consulta la secci贸n Secci贸n de referencia.
Para utilizar una llamada de retorno, puedes definir una funci贸n y a帽adirla al modelo con la funci贸n add_callback
m茅todo. Aqu铆 tienes 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 devoluciones de llamada?
Para personalizar tu rutina de entrenamiento de Ultralytics utilizando callbacks, puedes inyectar tu 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
. Te permiten a帽adir m茅tricas, procesamientos o registros personalizados.
Aqu铆 tienes un ejemplo de c贸mo registrar m茅tricas adicionales al final de cada 茅poca de entrenamiento:
from ultralytics import YOLO
def on_train_epoch_end(trainer):
"""Custom logic for additional metrics logging at the end of each training epoch."""
additional_metric = compute_additional_metric(trainer)
trainer.log({"additional_metric": additional_metric})
model = YOLO("yolo11n.pt")
model.add_callback("on_train_epoch_end", on_train_epoch_end)
model.train(data="coco.yaml", epochs=10)
Consulta la Gu铆a de Formaci贸n para obtener m谩s detalles sobre c贸mo utilizar eficazmente las llamadas de formaci贸n.
驴Por qu茅 debo utilizar llamadas de retorno 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 completos.
Por ejemplo, puede que quieras registrar m茅tricas de validaci贸n adicionales o guardar resultados intermedios para analizarlos m谩s adelante. Aqu铆 tienes un ejemplo de c贸mo registrar m茅tricas personalizadas al final de la validaci贸n:
from ultralytics import YOLO
def on_val_end(validator):
"""Log custom metrics at end of validation."""
custom_metric = compute_custom_metric(validator)
validator.log({"custom_metric": custom_metric})
model = YOLO("yolo11n.pt")
model.add_callback("on_val_end", on_val_end)
model.val(data="coco.yaml")
Consulta la Gu铆a de validaci贸n para obtener m谩s informaci贸n sobre la incorporaci贸n de devoluciones de llamada a tu proceso de validaci贸n.
驴C贸mo adjunto una llamada de retorno personalizada para el modo de predicci贸n en Ultralytics YOLO ?
Para adjuntar una llamada de retorno personalizada para el modo predicci贸n en Ultralytics YOLO , defines una funci贸n de devoluci贸n de llamada y la registras 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 funcionalidades adicionales, como el registro de datos o la transformaci贸n de resultados.
Aqu铆 tienes un ejemplo en el que se utiliza una llamada de retorno personalizada para registrar predicciones:
from ultralytics import YOLO
def on_predict_end(predictor):
"""Log predictions at the end of prediction."""
for result in predictor.results:
log_prediction(result)
model = YOLO("yolo11n.pt")
model.add_callback("on_predict_end", on_predict_end)
results = model.predict(source="image.jpg")
Para un uso m谩s completo, consulta 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 las retrollamadas en Ultralytics YOLO ?
Ultralytics YOLO admite varias implementaciones pr谩cticas de retrollamadas para mejorar y personalizar distintas fases como el entrenamiento, la validaci贸n y la predicci贸n. Algunos ejemplos pr谩cticos son:
- Registro de m茅tricas personalizadas: Registra m茅tricas adicionales en diferentes etapas, como el final de las 茅pocas de entrenamiento o validaci贸n.
- Data Augmentation: Implement custom data transformations or augmentations during prediction or training batches.
- Resultados intermedios: Guarda resultados intermedios, como predicciones o tramas, para su posterior an谩lisis o visualizaci贸n.
Ejemplo: Combinar fotogramas con resultados de predicci贸n durante la predicci贸n utilizando 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
Explora la Referencia Completa de Devoluci贸n de Llamada para encontrar m谩s opciones y ejemplos.