Ir al contenido

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, Validatoro 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, Validatoro 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_endy 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_endy 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_endy 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:

  1. Registro de m茅tricas personalizadas: Registre m茅tricas adicionales en diferentes etapas, como el final de las 茅pocas de entrenamiento o validaci贸n.
  2. Aumento de datos: Implemente transformaciones o aumentos de datos personalizados durante la predicci贸n o los lotes de entrenamiento.
  3. 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.

Creado hace 1 a帽o 鉁忥笍 Actualizado hace 1 mes

Comentarios