Glossário

Chamada de retorno

Explora o papel essencial das chamadas de retorno na aprendizagem automática - ferramentas que monitorizam, controlam e automatizam a formação de modelos para uma maior precisão, flexibilidade e eficiência.

Treina os modelos YOLO simplesmente
com Ultralytics HUB

Aprende mais

Callbacks são funções ou conjuntos de funções executadas em estágios específicos durante a execução de um processo maior, como o treinamento de um modelo de aprendizado de máquina. No contexto de IA e ML, as callbacks fornecem um mecanismo poderoso para monitorar estados internos, influenciar o comportamento do loop de treinamento e automatizar ações sem modificar o código principal da estrutura de treinamento. Elas atuam como ganchos no pipeline de treinamento, permitindo que os desenvolvedores injetem lógica personalizada em pontos predefinidos, como o início ou o fim de uma época, lote ou todo o processo de treinamento.

Compreender os callbacks na aprendizagem automática

Durante o treino do modelo, vários eventos ocorrem sequencialmente: o treino começa, um época inicia, um lote é processado, ocorre a validação, termina uma época e, finalmente, conclui o treino. Os retornos de chamada permitem-te ativar acções específicas associadas a estes eventos. Por exemplo, podes querer guardar os pesos do modelo sempre que a precisão da validação melhorar, registar métricas numa ferramenta de visualização como TensorBoardou interrompe o treino mais cedo se o modelo deixar de melhorar. Estruturas como Keras e bibliotecas como a ultralytics O pacote Python utiliza fortemente callbacks para oferecer flexibilidade e extensibilidade.

Callbacks no Ultralytics

O motor de formação Ultralytics fornece um sistema de chamadas de retorno que são acionadas em vários pontos durante a formação, validação, previsãoe exportação processos. Estes eventos incluem on_train_start, on_epoch_end, on_fit_epoch_end (que inclui a validação), on_batch_end, on_train_ende muitos outros. Os utilizadores podem definir callbacks personalizados para executar acções como o registo detalhado, o envio de notificações ou a interação com plataformas como Ultralytics HUB.

from ultralytics import YOLO
from ultralytics.engine.callbacks import BaseCallback

# Define a simple custom callback

class MyCallback(BaseCallback):
def on_epoch_end(self, trainer): # This code will run at the end of each epoch
print(f"Epoch {trainer.epoch + 1} finished.") # Example: Access metrics like validation loss
if trainer.metrics:
val_loss = trainer.metrics.get('val/loss', None) # Example metric key, adjust as needed
if val_loss is not None:
print(f"Validation loss: {val_loss:.4f}")

# Load a model

model = YOLO('yolov8n.yaml').load('yolov8n.pt') # build from YAML and transfer weights

# Initialize your callback

my_callback = MyCallback()

# Add the callback to the training process

# Note: Direct addition via API might vary; often done via configuration or extending Trainer

# For demonstration, assume a mechanism exists like adding to a list or overriding methods.

# In Ultralytics, callbacks are often managed internally or via specific integrations.

# A conceptual example of how one might use it if Trainer exposed callbacks directly:

# trainer.add_callback(my_callback) # Hypothetical method

# Train the model (the callback methods are triggered automatically by the Trainer)

# The actual mechanism involves the Trainer checking for registered callbacks for specific events.

try: # This is a simplified representation. Callbacks are typically integrated deeper. # We can simulate adding callback logic by overriding trainer methods or using signals if available. # The Ultralytics framework automatically handles registered internal and integration callbacks. # To add custom behaviour like this, you might need to modify the source or use provided extension points.
print("Training started (callback logic would be triggered internally)...") # Example: Manually trigger for demonstration if needed for testing callback logic # my_callback.on_epoch_end(trainer_mock_object)
results = model.train(data='coco128.yaml', epochs=3, imgsz=640) # Training triggers internal events
print("Training finished.")

except Exception as e:
print(f"An error occurred: {e}")

# Example of using an existing integration callback (e.g., TensorBoard)

# This is usually enabled via arguments or configuration:

# results = model.train(data='coco128.yaml', epochs=3, imgsz=640, tensorboard=True)


Aplicações no mundo real

As callbacks permitem inúmeras funcionalidades úteis durante o desenvolvimento do modelo ML:

  • Verifica o modelo: Salva automaticamente o modelo (ou apenas seus pesos) periodicamente ou sempre que o desempenho em um conjunto de dados de validação melhora. Isto garante que não perdes o progresso e que podes recuperar a melhor versão do teu modelo. As estruturas geralmente fornecem retornos de chamada incorporados para isso.
  • Paragem antecipada: Monitoriza uma métrica específica (por exemplo, perda de validação ou precisão) e interrompe o processo de formação se a métrica deixar de melhorar durante um número predefinido de épocas (paciência). Isto evita o sobreajuste e poupa recursos computacionais.
  • Programação da taxa de aprendizagem: Ajusta dinamicamente a taxa de aprendizagem durante o treinamento. Por exemplo, reduzir a taxa de aprendizagem quando a melhoria do modelo atinge um patamar pode ajudá-lo a convergir de forma mais eficaz.
  • Registo e visualização: Envia registos e métricas (como perda e precisão) para ferramentas de monitorização como o TensorBoard ou plataformas de nuvem como Weights & Biases para visualização em tempo real e acompanhamento de experiências. Ultralytics oferece integrações perfeitas para o W&B e Comet ML.
  • Monitorização de recursos: Acompanha a utilização de hardwareGPUutilização de CPU , memória) durante o treino para identificar estrangulamentos ou otimizar a atribuição de recursos, especialmente importante em ambientes de computação em nuvem.

As chamadas de retorno são fundamentais para criar fluxos de trabalho de aprendizagem automática flexíveis, automatizados e observáveis, permitindo aos programadores alargar e personalizar os processos de formação de forma eficiente. Diferem ligeiramente dos ouvintes de eventos de software gerais por estarem fortemente integrados nas fases específicas do ciclo de vida da formação e avaliação de ML.

Lê tudo