Chamadas de retorno
Chamadas de retorno
Ultralytics suporta callbacks 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.
Observa: Dominar Ultralytics YOLOv8 : Callbacks
Exemplos
Devolver informações adicionais com a Previsão
Neste exemplo, queremos devolver a moldura original com cada objeto de resultado. Vê 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("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 as chamadas de retorno
Aqui estão todas as callbacks suportadas. Vê o código fonte das callbacks para mais detalhes.
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 otimizador |
on_before_zero_grad |
Acionado antes de os gradientes serem colocados a zero |
on_train_batch_end |
Acionado no final de cada lote de treino |
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 do validador
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 |
Callbacks do Predictor
Chamada de retorno | Descrição |
---|---|
on_predict_start |
Acionado quando o processo de previsão começa |
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 accionados durante as principais fases das operações do modelo, como formação, validação, exportação e previsão. Estas chamadas de retorno permitem uma funcionalidade personalizada em pontos específicos do processo, permitindo 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, podes definir uma função e depois adicioná-la ao modelo com a função add_callback
método. Segue 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("yolov8n.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 rotina de treino do Ultralytics utilizando callbacks, podes injetar a tua lógica em fases específicas do processo de treino. Ultralytics YOLO fornece uma variedade de callbacks de treino, tais como on_train_start
, on_train_end
e on_train_batch_end
. Estes permitem-te 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("yolov8n.pt")
model.add_callback("on_train_epoch_end", on_train_epoch_end)
model.train(data="coco.yaml", epochs=10)
Consulta o Guia de Formação para obteres mais informações sobre como utilizar eficazmente as rechamadas de formação.
Porque é que devo utilizar callbacks durante a validação em Ultralytics YOLO ?
Utilizando chamadas de retorno durante a validação em Ultralytics YOLO pode melhorar a avaliação do modelo, permitindo o processamento personalizado, o registo ou o cálculo de métricas. Chamadas de retorno como on_val_start
, on_val_batch_end
e on_val_end
fornecem pontos de entrada para injetar lógica personalizada, garantindo processos de validação detalhados e abrangentes.
Por exemplo, podes 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("yolov8n.pt")
model.add_callback("on_val_end", on_val_end)
model.val(data="coco.yaml")
Consulta o Guia de validação para obteres mais informações sobre a incorporação de callbacks no teu processo de validação.
Como posso anexar um retorno de chamada personalizado para o modo de previsão em Ultralytics YOLO ?
Para anexar um retorno de chamada personalizado para o modo de previsão em Ultralytics YOLO , define uma função de retorno de chamada e regista-a no processo de previsão. Os callbacks de previsão comuns incluem on_predict_start
, on_predict_batch_end
e 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.
Segue-se um exemplo em que é utilizado um retorno de chamada personalizado 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("yolov8n.pt")
model.add_callback("on_predict_end", on_predict_end)
results = model.predict(source="image.jpg")
Para uma utilização mais abrangente, consulta 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:
- Regista métricas personalizadas: Regista métricas adicionais em diferentes fases, como o fim do treino ou épocas de validação.
- Aumento de dados: Implementa transformações ou aumentos de dados personalizados durante a previsão ou os lotes de formação.
- Resultados intermediários: Guarda resultados intermédios, como previsões ou molduras, para análise ou visualização posterior.
Exemplo: Combinação de quadros com resultados de previsão durante a previsão usando 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 a Referência completa de retorno de chamada para encontrar mais opções e exemplos.
Criado em 2023-11-12, Atualizado em 2024-07-04
Autores: glenn-jocher (9), RizwanMunawar (1), Laughing-q (1)