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.
He aqu铆 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)
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.
Por ejemplo, es posible que desee registrar m茅tricas de validaci贸n adicionales o guardar resultados intermedios para su posterior an谩lisis. Este es 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")
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.
A continuaci贸n se muestra un ejemplo en el que se utiliza una devoluci贸n de llamada 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 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.