Saltar para o conteúdo

Chamadas de retorno

Chamadas de retorno

Ultralytics suporta as rechamadas como pontos de entrada em fases estratégicas dos modos train, val, export e predict. Cada retorno de chamada aceita um Trainer, Validator, ou Predictor dependendo do tipo de operação. Todas as propriedades destes objectos podem ser encontradas na secção Referência da documentação.



Ver: Dominar Ultralytics YOLO : Callbacks

Exemplos

Retorno de informações adicionais com a Previsão

Neste exemplo, queremos devolver a moldura original com cada objeto de resultado. Eis como podemos fazer isso

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 as chamadas de retorno

Aqui estão todas as callbacks suportadas. Consulte o código-fonte das callbacks para obter detalhes adicionais.

Chamadas do formador

Chamada de retorno Descrição
on_pretrain_routine_start Acionado no início da rotina de pré-treino
on_pretrain_routine_end Acionado no final da rotina de pré-treino
on_train_start Acionado quando a formação começa
on_train_epoch_start Acionado no início de cada época de treino
on_train_batch_start Acionado no início de cada lote de treino
optimizer_step Acionado durante a etapa do optimizador
on_before_zero_grad Acionado antes de os gradientes serem colocados a zero
on_train_batch_end Acionado no final de cada lote de formação
on_train_epoch_end Acionado no final de cada época de treino
on_fit_epoch_end Acionado no final de cada época de ajuste
on_model_save Acionado quando o modelo é guardado
on_train_end Acionado quando o processo de formação termina
on_params_update Acionado quando os parâmetros do modelo são actualizados
teardown Acionado quando o processo de formação está a ser limpo

Repetições de validação

Chamada de retorno Descrição
on_val_start Acionado quando a validação começa
on_val_batch_start Acionado no início de cada lote de validação
on_val_batch_end Acionado no final de cada lote de validação
on_val_end Acionado quando a validação termina

Chamadas de retorno do preditor

Chamada de retorno Descrição
on_predict_start Acionado quando o processo de previsão é iniciado
on_predict_batch_start Acionado no início de cada lote de previsão
on_predict_postprocess_end Acionado no final do pós-processamento de previsões
on_predict_batch_end Acionado no final de cada lote de previsão
on_predict_end Acionado quando o processo de previsão termina

Chamadas de retorno do exportador

Chamada de retorno Descrição
on_export_start Acionado quando o processo de exportação é iniciado
on_export_end Acionado quando o processo de exportação termina

FAQ

O que são as chamadas de retorno Ultralytics e como é que as posso utilizar?

Ultralytics chamadas de retorno são pontos de entrada especializados acionados durante as principais fases das operações do modelo, como formação, validação, exportação e previsão. Estas rechamadas permitem a funcionalidade personalizada em pontos específicos do processo, possibilitando melhorias e modificações no fluxo de trabalho. Cada retorno de chamada aceita um Trainer, Validator, ou Predictor dependendo do tipo de operação. Para obter propriedades detalhadas desses objetos, consultar a Secção de referência.

Para utilizar um retorno de chamada, pode definir uma função e depois adicioná-la ao modelo com a função add_callback método. Eis um exemplo de como devolver informações adicionais durante a previsão:

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

Como posso personalizar a rotina de treino do Ultralytics utilizando callbacks?

Para personalizar a sua rotina de formação Ultralytics utilizando callbacks, pode injetar a sua lógica em fases específicas do processo de formação. Ultralytics YOLO fornece uma variedade de callbacks de formação, tais como on_train_start, on_train_ende on_train_batch_end. Estes permitem-lhe adicionar métricas, processamento ou registo personalizados.

Aqui está um exemplo de como registar métricas adicionais no final de cada época de treino:

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 o Guia de Formação para obter mais informações sobre como utilizar eficazmente as rechamadas de formação.

Por que razão devo utilizar as chamadas de retorno durante a validação em Ultralytics YOLO ?

Utilizar chamadas de retorno durante a validação em Ultralytics YOLO podem melhorar a avaliação do modelo, permitindo o processamento personalizado, o registo ou o cálculo de métricas. Callbacks como on_val_start, on_val_batch_ende on_val_end fornecem pontos de entrada para injetar lógica personalizada, assegurando processos de validação pormenorizados e abrangentes.

Por exemplo, pode querer registar métricas de validação adicionais ou guardar resultados intermédios para análise posterior. Aqui está um exemplo de como registar métricas personalizadas no final da validação:

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 o Guia de validação para obter mais informações sobre a incorporação de callbacks no seu processo de validação.

Como posso anexar um retorno de chamada personalizado para o modo de previsão em Ultralytics YOLO ?

Para anexar uma chamada de retorno personalizada para o modo de previsão em Ultralytics YOLO , define-se uma função de retorno de chamada e regista-se com o processo de previsão. Os callbacks de previsão comuns incluem on_predict_start, on_predict_batch_ende on_predict_end. Estes permitem a modificação dos resultados da previsão e a integração de funcionalidades adicionais, como o registo de dados ou a transformação de resultados.

Eis um exemplo em que um retorno de chamada personalizado é utilizado para registar previsões:

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 uma utilização mais abrangente, consulte o Guia de Previsão, que inclui instruções detalhadas e opções de personalização adicionais.

Quais são alguns exemplos práticos de utilização de callbacks em Ultralytics YOLO ?

Ultralytics YOLO suporta várias implementações práticas de callbacks para melhorar e personalizar diferentes fases, como a formação, a validação e a previsão. Alguns exemplos práticos incluem:

  1. Registo de métricas personalizadas: Registre métricas adicionais em diferentes estágios, como o final do treinamento ou épocas de validação.
  2. Aumento de dados: Implementar transformações ou aumentos de dados personalizados durante a previsão ou os lotes de formação.
  3. Resultados intermediários: Guardar resultados intermédios, tais como previsões ou quadros, para análise ou visualização posterior.

Exemplo: Combinação de fotogramas com resultados de previsão durante a previsão 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

Explore a Referência completa de retorno de chamada para encontrar mais opções e exemplos.

📅C riado há 1 ano ✏️ Atualizado há 2 meses

Comentários