Ultralytics YOLO27:

Personalizao Avanada#

Tanto a linha de comando quanto as interfaces Python do Ultralytics YOLO so abstraes de alto nvel construdas sobre executores de motores base. Este guia concentra-se no motor Trainer, explicando como personaliz-lo para as tuas necessidades especficas.



Watch: Mastering Ultralytics YOLO: Advanced Customization
Dica

Para exemplos prticos de personalizaes comuns de treinadores  mtricas personalizadas, perda ponderada por classe, salvamento de modelos, congelamento de espinha dorsal e taxas de aprendizado por camada  consulta o guia Customizing Trainer.

BaseTrainer#

A classe BaseTrainer fornece uma rotina de treinamento genrica adaptvel para vrias tarefas. Personaliza-a sobrescrevendo funes ou operaes especficas, enquanto aderes aos formatos exigidos. Por exemplo, integra o teu prprio modelo personalizado e carregador de dados sobrescrevendo estas funes:

  • get_model(cfg, weights): Constr o modelo a ser treinado.
  • get_dataloader(): Constr o carregador de dados.

Para mais detalhes e cdigo-fonte, consulta a Referncia do BaseTrainer.

DetectionTrainer#

Eis como usar e personalizar o DetectionTrainer do Ultralytics YOLO:

from ultralytics.models.yolo.detect import DetectionTrainer

trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best  # Get the best model

Personalizando o DetectionTrainer#

Para treinar um modelo de deteco personalizado no suportado diretamente, sobrecarrega a funcionalidade existente de get_model:

from ultralytics.models.yolo.detect import DetectionTrainer

class CustomTrainer(DetectionTrainer):
    def get_model(self, cfg=None, weights=None, verbose=True):
        """Loads a custom detection model given configuration and weight files."""

trainer = CustomTrainer(overrides={...})
trainer.train()

Personaliza ainda mais o treinador modificando a funo de perda ou adicionando um callback para carregar o modelo para o Google Drive a cada 10 pocas. Eis um exemplo:

from ultralytics.models.yolo.detect import DetectionTrainer
from ultralytics.nn.tasks import DetectionModel

class MyCustomModel(DetectionModel):
    def init_criterion(self):
        """Initializes the loss function and adds a callback for uploading the model to Google Drive every 10 epochs."""

class CustomTrainer(DetectionTrainer):
    def get_model(self, cfg=None, weights=None, verbose=True):
        """Returns a customized detection model instance configured with specified config and weights."""
        return MyCustomModel(...)

# Callback to upload model weights
def log_model(trainer):
    """Logs the path of the last model weight used by the trainer."""
    last_weight_path = trainer.last
    print(last_weight_path)

trainer = CustomTrainer(overrides={...})
trainer.add_callback("on_train_epoch_end", log_model)  # Adds to existing callbacks
trainer.train()

Para mais informaes sobre eventos de acionamento de callbacks e pontos de entrada, consulta o Guia de Callbacks.

Outros Componentes do Motor#

Personaliza outros componentes como Validators e Predictors de maneira semelhante. Para mais informaes, consulta a documentao para Validadores e Preditores.

Usando YOLO com Treinadores Personalizados#

A classe de modelo YOLO fornece um wrapper de alto nvel para classes de Treinador. Podes aproveitar esta arquitetura para maior flexibilidade nos teus fluxos de trabalho de aprendizado de mquina:

from ultralytics import YOLO
from ultralytics.models.yolo.detect import DetectionTrainer

# Create a custom trainer
class MyCustomTrainer(DetectionTrainer):
    def get_model(self, cfg=None, weights=None, verbose=True):
        """Custom code implementation."""

# Initialize YOLO model
model = YOLO("yolo26n.pt")

# Train with custom trainer
results = model.train(trainer=MyCustomTrainer, data="coco8.yaml", epochs=3)

Esta abordagem permite-te manter a simplicidade da interface YOLO enquanto personalizas o processo de treinamento subjacente para atender aos teus requisitos especficos.

Perguntas frequentes#

  • Personaliza o DetectionTrainer para tarefas especficas sobrescrevendo os seus mtodos para se adaptarem ao teu modelo personalizado e carregador de dados. Comea herdando de DetectionTrainer e redefina mtodos como get_model para implementar funcionalidades personalizadas. Eis um exemplo:

    from ultralytics.models.yolo.detect import DetectionTrainer
    
    class CustomTrainer(DetectionTrainer):
        def get_model(self, cfg=None, weights=None, verbose=True):
            """Loads a custom detection model given configuration and weight files."""
    
    trainer = CustomTrainer(overrides={...})
    trainer.train()
    trained_model = trainer.best  # Get the best model

    Para maior personalizao, como alterar a funo de perda ou adicionar um callback, consulta o Guia de Callbacks.

  • O BaseTrainer serve como base para rotinas de treinamento, personalizvel para vrias tarefas sobrescrevendo os seus mtodos genricos. Os principais componentes incluem:

    • get_model(cfg, weights): Constr o modelo a ser treinado.
    • get_dataloader(): Constr o carregador de dados.
    • preprocess_batch(): Lida com o pr-processamento de lote antes da passagem para a frente do modelo.
    • set_model_attributes(): Define os atributos do modelo com base nas informaes do conjunto de dados.
    • get_validator(): Retorna um validador para avaliao do modelo.

    Para mais detalhes sobre personalizao e cdigo-fonte, consulta a Referncia do BaseTrainer.

  • Adiciona callbacks para monitorar e modificar o processo de treinamento em DetectionTrainer. Eis como adicionar um callback para registrar os pesos do modelo aps cada poca de treinamento:

    from ultralytics.models.yolo.detect import DetectionTrainer
    
    # Callback to upload model weights
    def log_model(trainer):
        """Logs the path of the last model weight used by the trainer."""
        last_weight_path = trainer.last
        print(last_weight_path)
    
    trainer = DetectionTrainer(overrides={...})
    trainer.add_callback("on_train_epoch_end", log_model)  # Adds to existing callbacks
    trainer.train()

    Para mais detalhes sobre eventos de callback e pontos de entrada, consulta o Guia de Callbacks.

  • O Ultralytics YOLO fornece uma abstrao de alto nvel sobre poderosos executores de motores, tornando-o ideal para desenvolvimento rpido e personalizao. Os principais benefcios incluem:

    • Facilidade de Uso: Tanto a linha de comando quanto as interfaces Python simplificam tarefas complexas.
    • Desempenho: Otimizado para deteco de objetos em tempo real e vrias aplicaes de IA de viso.
    • Personalizao: Facilmente expansvel para modelos personalizados, funes de perda e carregadores de dados.
    • Modularidade: Os componentes podem ser modificados independentemente sem afetar todo o pipeline.
    • Integrao: Funciona perfeitamente com estruturas e ferramentas populares no ecossistema de ML.

    Saiba mais sobre as capacidades do YOLO explorando a pgina principal do Ultralytics YOLO.

  • Sim, o DetectionTrainer  altamente flexvel e personalizvel para modelos no padro. Herda de DetectionTrainer e sobrecarrega os mtodos para suportar as necessidades especficas do teu modelo. Eis um exemplo simples:

    from ultralytics.models.yolo.detect import DetectionTrainer
    
    class CustomDetectionTrainer(DetectionTrainer):
        def get_model(self, cfg=None, weights=None, verbose=True):
            """Loads a custom detection model."""
    
    trainer = CustomDetectionTrainer(overrides={...})
    trainer.train()

    Para instrues abrangentes e exemplos, revisa a Referncia do DetectionTrainer.

Comentários