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
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 modelPersonalizando 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
DetectionTrainerpara tarefas especficas sobrescrevendo os seus mtodos para se adaptarem ao teu modelo personalizado e carregador de dados. Comea herdando deDetectionTrainere redefina mtodos comoget_modelpara 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 modelPara maior personalizao, como alterar a funo de perda ou adicionar um callback, consulta o Guia de Callbacks.
O
BaseTrainerserve 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
DetectionTraineraltamente flexvel e personalizvel para modelos no padro. Herda deDetectionTrainere 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.