Saltar 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 llamada de retorno acepta un Trainer, Validatoro 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: Dominar Ultralytics YOLOv8 : Devoluciones de llamada

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("yolov8n.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 Se activa al inicio de cada 茅poca 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 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, Validatoro 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("yolov8n.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_endy 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("yolov8n.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_endy 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("yolov8n.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_endy 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("yolov8n.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:

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



Creado 2023-11-12, Actualizado 2024-07-04
Autores: glenn-jocher (9), RizwanMunawar (1), Laughing-q (1)

Comentarios