Treinamento de Modelo com Ultralytics YOLO
Introdução
Treinar um modelo de deep learning envolve fornecer dados a ele e ajustar seus parâmetros para que ele possa fazer previsões precisas. O modo Train no Ultralytics YOLO26 foi projetado para o treinamento eficaz e eficiente de modelos de detecção de objetos, utilizando totalmente as capacidades do hardware moderno. Este guia visa cobrir todos os detalhes necessários para você começar a treinar seus próprios modelos usando o robusto conjunto de recursos do YOLO26.
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Por que escolher o Ultralytics YOLO para treinamento?
Aqui estão alguns motivos convincentes para optar pelo modo Train do YOLO26:
- Eficiência: Aproveite ao máximo seu hardware, esteja você em uma configuração de GPU única ou escalando em múltiplas GPUs.
- Versatilidade: Treine em conjuntos de dados personalizados, além daqueles prontamente disponíveis como COCO, VOC e ImageNet.
- Fácil de usar: Interfaces CLI e Python simples, porém poderosas, para uma experiência de treinamento direta.
- Flexibilidade de Hiperparâmetros: Uma ampla gama de hiperparâmetros personalizáveis para ajustar o desempenho do modelo. Para um controle mais profundo, você pode personalizar o treinador por conta própria.
- Treinamento em Nuvem: Treine em GPUs na nuvem através da Ultralytics Platform com métricas em tempo real e criação automática de checkpoints.
Principais Recursos do Modo Train
Os itens a seguir são alguns recursos notáveis do modo Train do YOLO26:
- Download Automático de Conjunto de Dados: Conjuntos de dados padrão como COCO, VOC e ImageNet são baixados automaticamente no primeiro uso.
- Suporte a Multi-GPU: Escale seus esforços de treinamento perfeitamente em várias GPUs para acelerar o processo.
- Configuração de Hiperparâmetros: A opção de modificar hiperparâmetros através de arquivos de configuração YAML ou argumentos de CLI.
- Visualização e Monitoramento: Rastreamento em tempo real de métricas de treinamento e visualização do processo de aprendizado para melhores insights.
- Conjuntos de dados YOLO26 como COCO, VOC, ImageNet e muitos outros são baixados automaticamente no primeiro uso, por exemplo,
yolo train data=coco.yaml
Exemplos de Uso
Treine o YOLO26n no conjunto de dados COCO8 por 100 epochs com tamanho de imagem 640. O dispositivo de treinamento pode ser especificado usando o argumento device. Se nenhum argumento for passado, a GPU device=0 será usada quando disponível; caso contrário, device='cpu' será usado. Consulte a seção de Argumentos abaixo para uma lista completa de argumentos de treinamento.
No Windows, você pode receber um RuntimeError ao iniciar o treinamento como um script. Adicione um bloco if __name__ == "__main__": antes do seu código de treinamento para resolver isso.
O dispositivo é determinado automaticamente. Se uma GPU estiver disponível, ela será usada (dispositivo CUDA 0 padrão); caso contrário, o treinamento começará na CPU.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.yaml") # build a new model from YAML
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Treinamento Multi-GPU
O treinamento Multi-GPU permite uma utilização mais eficiente dos recursos de hardware disponíveis, distribuindo a carga de treinamento em várias GPUs. Este recurso está disponível tanto através da API Python quanto da interface de linha de comando. Para habilitar o treinamento multi-GPU, especifique os IDs dos dispositivos de GPU que você deseja usar.
Para treinar com 2 GPUs, os dispositivos CUDA 0 e 1, use os comandos a seguir. Expanda para GPUs adicionais conforme necessário.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])
# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])Ao especificar vários dispositivos (por exemplo, device=[0, 1]), o Ultralytics gera internamente uma nova instância de treinador e executa torch.distributed.run nos bastidores. Isso funciona perfeitamente para uso CLI padrão e scripts Python não modificados.
No entanto, se o seu script contiver componentes personalizados — como um treinador, validador, conjunto de dados ou pipeline de aumento personalizados — esses objetos não podem ser serializados automaticamente e transferidos para os subprocessos DDP. Nesse caso, você deve iniciar seu script diretamente com torch.distributed.run:
python -m torch.distributed.run --nproc_per_node 2 your_training_script.pyTreinamento com GPU Ociosa
O Treinamento com GPU Ociosa permite a seleção automática das GPUs menos utilizadas em sistemas multi-GPU, otimizando o uso de recursos sem seleção manual da GPU. Este recurso identifica as GPUs disponíveis com base em métricas de utilização e disponibilidade de VRAM.
Para selecionar e usar automaticamente a(s) GPU(s) mais ociosa(s) para treinamento, use o parâmetro de dispositivo -1. Isso é particularmente útil em ambientes de computação compartilhados ou servidores com vários usuários.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)
# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])O algoritmo de auto-seleção prioriza GPUs com:
- Menores percentuais de utilização atual
- Maior memória disponível (VRAM livre)
- Menor temperatura e consumo de energia
Este recurso é especialmente valioso em ambientes de computação compartilhados ou ao executar vários trabalhos de treinamento em diferentes modelos. Ele se adapta automaticamente às mudanças nas condições do sistema, garantindo a alocação ideal de recursos sem intervenção manual.
Treinamento Apple Silicon MPS
Com o suporte para chips de silício da Apple integrado aos modelos Ultralytics YOLO, agora é possível treinar seus modelos em dispositivos que utilizam a poderosa estrutura Metal Performance Shaders (MPS). O MPS oferece uma maneira de alto desempenho de executar tarefas de computação e processamento de imagem no silício personalizado da Apple.
Para habilitar o treinamento em chips de silício da Apple, você deve especificar 'mps' como seu dispositivo ao iniciar o processo de treinamento. Abaixo está um exemplo de como você pode fazer isso em Python e via linha de comando:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")Ao aproveitar o poder computacional dos chips de silício da Apple, isso permite um processamento mais eficiente das tarefas de treinamento. Para orientações mais detalhadas e opções de configuração avançadas, consulte a documentação do PyTorch MPS.
Retomando Treinamentos Interrompidos
Retomar o treinamento de um estado salvo anteriormente é um recurso crucial ao trabalhar com modelos de deep learning. Isso pode ser útil em vários cenários, como quando o processo de treinamento foi interrompido inesperadamente, ou quando você deseja continuar treinando um modelo com novos dados ou por mais épocas.
Quando o treinamento é retomado, o Ultralytics YOLO carrega os pesos do último modelo salvo e também restaura o estado do otimizador, o agendador de taxa de aprendizado e o número da época. Isso permite que você continue o processo de treinamento perfeitamente de onde parou.
Você pode retomar facilmente o treinamento no Ultralytics YOLO definindo o argumento resume como True ao chamar o método train e especificando o caminho para o arquivo .pt contendo os pesos do modelo parcialmente treinado.
Abaixo está um exemplo de como retomar um treinamento interrompido usando Python e via linha de comando:
from ultralytics import YOLO
# Load a model
model = YOLO("path/to/last.pt") # load a partially trained model
# Resume training
results = model.train(resume=True)Ao definir resume=True, a função train continuará o treinamento de onde parou, usando o estado armazenado no arquivo 'path/to/last.pt'. Se o argumento resume for omitido ou definido como False, a função train iniciará uma nova sessão de treinamento.
Lembre-se de que os checkpoints são salvos no final de cada época por padrão, ou em intervalos fixos usando o argumento save_period, então você deve completar pelo menos 1 época para retomar uma execução de treinamento.
Definições de Treino
As configurações de treinamento para modelos YOLO abrangem vários hiperparâmetros e configurações usadas durante o processo de treinamento. Essas configurações influenciam o desempenho, a velocidade e a precisão do modelo. As principais configurações de treinamento incluem tamanho do lote, taxa de aprendizado, momentum e decaimento de peso. Além disso, a escolha do otimizador, função de perda e a composição do conjunto de dados de treinamento podem afetar o processo de treinamento. Ajustes cuidadosos e experimentação com essas configurações são cruciais para otimizar o desempenho.
Otimizador MuSGD
No YOLO26, MuSGD é um otimizador híbrido que combina atualizações padrão de SGD com atualizações ortogonalizadas estilo Muon.
É recomendado para execuções de treinamento mais longas do YOLO26 e conjuntos de dados maiores, onde atualizações Muon ortogonalizadas podem ajudar a estabilizar a otimização.
Apenas parâmetros com param.ndim >= 2 (como pesos convolucionais) recebem a atualização estilo Muon junto com SGD, enquanto parâmetros de menor dimensão, como camadas de normalização de lote e termos de viés, permanecem no SGD padrão.
Quando optimizer=auto é usado, o Ultralytics seleciona automaticamente o MuSGD para execuções de treinamento mais longas (normalmente quando iterações > 10000). Para execuções mais curtas, o treinador volta para o AdamW.
Exemplo de uso:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDVeja a implementação em ultralytics/optim/muon.py e a lógica de auto-seleção do otimizador em BaseTrainer.build_optimizer.
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
model | str | None | Especifica o ficheiro do modelo para treino. Aceita um caminho para um modelo pré-treinado .pt ou um ficheiro de configuração .yaml. Essencial para definir a estrutura do modelo ou inicializar pesos. |
data | str | None | Caminho para o ficheiro de configuração do conjunto de dados (por exemplo, coco8.yaml). Este ficheiro contém parâmetros específicos do conjunto de dados, incluindo caminhos para dados de treino e dados de validação, nomes de classes e número de classes. |
epochs | int | 100 | Número total de épocas de treino. Cada época representa uma passagem completa por todo o conjunto de dados. Ajustar este valor pode afetar a duração do treino e o desempenho do modelo. |
time | float | None | Tempo máximo de treino em horas. Se definido, isto substitui o argumento epochs, permitindo que o treino pare automaticamente após a duração especificada. Útil para cenários de treino limitados pelo tempo. |
patience | int | 100 | Número de épocas de espera sem melhoria nas métricas de validação antes de parar o treino antecipadamente. Ajuda a prevenir o overfitting ao parar o treino quando o desempenho estabiliza. |
batch | int ou float | 16 | Tamanho do lote, com três modos: definido como um número inteiro (por exemplo, batch=16), modo automático para 60% de utilização da memória da GPU (batch=-1), ou modo automático com fração de utilização especificada (batch=0.70). |
imgsz | int | 640 | Tamanho de imagem alvo para treino. As imagens são redimensionadas para quadrados com lados iguais ao valor especificado (se rect=False), preservando a proporção para modelos YOLO, mas não para RT-DETR. Afeta a precisão do modelo e a complexidade computacional. |
save | bool | True | Ativa a gravação de pontos de verificação de treino e pesos finais do modelo. Útil para retomar o treino ou implementação de modelos. |
save_period | int | -1 | Frequência de gravação de pontos de verificação do modelo, especificada em épocas. Um valor de -1 desativa esta funcionalidade. Útil para guardar modelos intermédios durante sessões de treino longas. |
cache | bool | False | Ativa a colocação em cache de imagens do conjunto de dados na memória (True/ram), em disco (disk), ou desativa-a (False). Melhora a velocidade do treino ao reduzir I/O de disco à custa de um maior uso de memória. |
device | int ou str ou list | None | Especifica o(s) dispositivo(s) computacional(ais) para treino: uma única GPU (device=0), múltiplas GPUs (device=[0,1]), CPU (device=cpu), MPS para Apple silicon (device=mps), Huawei Ascend NPU (device=npu ou device=npu:0), ou seleção automática da GPU mais ociosa (device=-1) ou múltiplas GPUs ociosas (device=[-1,-1]) |
workers | int | 8 | Número de threads de trabalho para carregamento de dados (por RANK se for treino Multi-GPU). Influencia a velocidade do pré-processamento de dados e alimentação para o modelo, especialmente útil em configurações Multi-GPU. |
project | str | None | Nome do diretório do projeto onde os resultados do treino são guardados. Permite um armazenamento organizado de diferentes experiências. |
name | str | None | Nome da execução do treino. Usado para criar um subdiretório dentro da pasta do projeto, onde os registos e resultados do treino são armazenados. |
exist_ok | bool | False | Se for True, permite a substituição de um diretório de projeto/nome existente. Útil para experimentação iterativa sem precisar de limpar manualmente resultados anteriores. |
pretrained | bool ou str | True | Determina se deve começar o treino a partir de pesos pré-treinados. Pode ser um valor booleano ou um caminho de string para os pesos a carregar. pretrained=False treina a partir de pesos inicializados aleatoriamente enquanto mantém a arquitetura do modelo. |
optimizer | str | 'auto' | Escolha do otimizador para treino. As opções incluem SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp, ou auto para seleção automática com base na configuração do modelo. Afeta a velocidade e estabilidade da convergência. |
seed | int | 0 | Define a semente aleatória para o treino, garantindo a reprodutibilidade dos resultados entre execuções com as mesmas configurações. |
deterministic | bool | True | Força a utilização de algoritmos determinísticos, garantindo a reprodutibilidade, mas pode afetar o desempenho e a velocidade devido à restrição de algoritmos não determinísticos. |
verbose | bool | True | Ativa a saída detalhada durante o treino, exibindo barras de progresso, métricas por época e informações adicionais de treino na consola. |
single_cls | bool | False | Trata todas as classes em conjuntos de dados de várias classes como uma única classe durante o treino. Útil para tarefas de classificação binária ou quando se foca na presença de objetos em vez da classificação. |
classes | list[int] | None | Especifica uma lista de IDs de classe para treinar. Útil para filtrar e focar apenas em certas classes durante o treino. |
rect | bool | False | Ativa a estratégia de preenchimento mínimo—as imagens num lote são minimamente preenchidas para atingir um tamanho comum, com o lado mais longo igual a imgsz. Pode melhorar a eficiência e a velocidade, mas pode afetar a precisão do modelo. |
multi_scale | float | 0.0 | Varia aleatoriamente o imgsz a cada lote em +/- multi_scale (por exemplo, 0.25 -> 0.75x a 1.25x), arredondando para múltiplos do stride do modelo; 0.0 desativa o treinamento multi-escala. |
cos_lr | bool | False | Utiliza um agendador de taxa de aprendizado de cosseno, ajustando a taxa de aprendizado seguindo uma curva de cosseno ao longo das épocas. Ajuda a gerenciar a taxa de aprendizado para uma melhor convergência. |
close_mosaic | int | 10 | Desativa a aumentação de dados de mosaico nas últimas N épocas para estabilizar o treinamento antes da conclusão. Definir como 0 desativa esse recurso. |
resume | bool | False | Retoma o treinamento a partir do último checkpoint salvo. Carrega automaticamente os pesos do modelo, o estado do otimizador e a contagem de épocas, continuando o treinamento sem interrupções. |
amp | bool | True | Ativa o treinamento com Precisão Mista Automática (AMP), reduzindo o uso de memória e possivelmente acelerando o treinamento com impacto mínimo na precisão. |
fraction | float | 1.0 | Especifica a fração do conjunto de dados a ser usada para treinamento. Permite o treinamento em um subconjunto do conjunto de dados completo, útil para experimentos ou quando os recursos são limitados. |
profile | bool | False | Ativa a análise de desempenho (profiling) das velocidades do ONNX e TensorRT durante o treinamento, útil para otimizar a implantação do modelo. |
freeze | int ou list | None | Congela as primeiras N camadas do modelo ou as camadas especificadas por índice, reduzindo o número de parâmetros treináveis. Útil para ajuste fino ou transfer learning. |
lr0 | float | 0.01 | Taxa de aprendizado inicial (ou seja, SGD=1E-2, Adam=1E-3). Ajustar este valor é crucial para o processo de otimização, influenciando a rapidez com que os pesos do modelo são atualizados. |
lrf | float | 0.01 | Taxa de aprendizado final como uma fração da taxa inicial = (lr0 * lrf), usada em conjunto com agendadores para ajustar a taxa de aprendizado ao longo do tempo. |
momentum | float | 0.937 | Fator de momento para SGD ou beta1 para otimizadores Adam, influenciando a incorporação de gradientes passados na atualização atual. |
weight_decay | float | 0.0005 | Termo de regularização L2, penalizando pesos grandes para evitar o sobreajuste (overfitting). |
warmup_epochs | float | 3.0 | Número de épocas para o aquecimento (warmup) da taxa de aprendizado, aumentando gradualmente a taxa de aprendizado de um valor baixo para a taxa de aprendizado inicial para estabilizar o treinamento desde o início. |
warmup_momentum | float | 0.8 | Momento inicial para a fase de aquecimento, ajustando-se gradualmente ao momento definido durante o período de aquecimento. |
warmup_bias_lr | float | 0.1 | Taxa de aprendizado para parâmetros de viés (bias) durante a fase de aquecimento, ajudando a estabilizar o treinamento do modelo nas épocas iniciais. |
box | float | 7.5 | Peso do componente de perda de caixa na função de perda, influenciando o quanto de ênfase é colocada na previsão precisa das coordenadas da bounding box. |
cls | float | 0.5 | Peso da perda de classificação na função de perda total, afetando a importância da previsão correta da classe em relação a outros componentes. |
cls_pw | float | 0.0 | Potência para ponderação de classe para lidar com desequilíbrio de classe usando a frequência inversa de classe. 0.0 desativa a ponderação de classe, 1.0 aplica ponderação total de frequência inversa. Valores entre 0 e 1 fornecem ponderação parcial. |
dfl | float | 1.5 | Peso da perda focal de distribuição (Distribution Focal Loss), usada em certas versões do YOLO para classificação de granulação fina. |
pose | float | 12.0 | Peso da perda de pose em modelos treinados para estimativa de pose, influenciando a ênfase na previsão precisa dos keypoints de pose. |
kobj | float | 1.0 | Peso da perda de objetividade dos keypoints em modelos de estimativa de pose, equilibrando a confiança da detecção com a precisão da pose. |
rle | float | 1.0 | Peso da perda de estimativa de log-verossimilhança residual em modelos de estimativa de pose, afetando a precisão da localização dos keypoints. |
angle | float | 1.0 | Peso da perda de ângulo em modelos obb, afetando a precisão das previsões de ângulo da caixa delimitadora orientada. |
nbs | int | 64 | Tamanho nominal do lote para normalização da perda. |
overlap_mask | bool | True | Determina se as máscaras de objetos devem ser mescladas em uma única máscara para treinamento ou mantidas separadas para cada objeto. Em caso de sobreposição, a máscara menor é colocada sobre a máscara maior durante a mesclagem. |
mask_ratio | int | 4 | Razão de downsample para máscaras de segmentação, afetando a resolução das máscaras usadas durante o treinamento. |
dropout | float | 0.0 | Taxa de dropout para regularização em tarefas de classificação, evitando o sobreajuste ao omitir unidades aleatoriamente durante o treinamento. |
val | bool | True | Ativa a validação durante o treinamento, permitindo a avaliação periódica do desempenho do modelo em um conjunto de dados separado. |
plots | bool | True | Gera e salva gráficos das métricas de treinamento e validação, bem como exemplos de previsão, fornecendo insights visuais sobre o desempenho do modelo e a progressão do aprendizado. |
compile | bool ou str | False | Ativa a compilação de grafo torch.compile do PyTorch 2.x com backend='inductor'. Aceita True → "default", False → desativa, ou um modo de string como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Volta para o modo eager com um aviso se não for suportado. |
max_det | int | 300 | Especifica o número máximo de objetos retidos durante a fase de validação do treinamento. |
O argumento batch pode ser configurado de três maneiras:
- Tamanho de Lote Fixo: Defina um valor inteiro (por exemplo,
batch=16), especificando o número de imagens por lote diretamente. - Modo Auto (60% da Memória da GPU): Use
batch=-1para ajustar automaticamente o tamanho do lote para aproximadamente 60% de utilização da memória CUDA. - Modo Auto com Fração de Utilização: Defina um valor de fração (por exemplo,
batch=0.70) para ajustar o tamanho do lote com base na fração especificada de uso de memória da GPU. - Auto-Tentativa de OOM: Se ocorrer um erro de falta de memória CUDA durante a primeira época, o treinador reduz automaticamente o tamanho do lote pela metade e tenta novamente (até 3 vezes). Isso se aplica apenas ao treinamento em GPU única; o treinamento multi-GPU (DDP) levantará o erro imediatamente.
Configurações de Aumento e Hiperparâmetros
As técnicas de aumento são essenciais para melhorar a robustez e o desempenho dos modelos YOLO, introduzindo variabilidade nos dados de treinamento, ajudando o modelo a generalizar melhor para dados não vistos. A tabela a seguir descreve o propósito e o efeito de cada argumento de aumento:
| Argumento | Tipo | Padrão | Tarefas Suportadas | Intervalo | Descrição |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Ajusta a matiz da imagem por uma fração da roda de cores, introduzindo variabilidade de cor. Ajuda o modelo a generalizar entre diferentes condições de iluminação. |
hsv_s | float | 0.7 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Altera a saturação da imagem por uma fração, afetando a intensidade das cores. Útil para simular diferentes condições ambientais. |
hsv_v | float | 0.4 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Modifica o valor (brilho) da imagem por uma fração, ajudando o modelo a ter um bom desempenho em várias condições de iluminação. |
degrees | float | 0 | detect, segment, pose, obb | 0.0 - 180 | Rotaciona a imagem aleatoriamente dentro do intervalo de graus especificado, melhorando a capacidade do modelo de reconhecer objetos em várias orientações. |
translate | float | 0.1 | detect, segment, pose, obb | 0.0 - 1.0 | Translada a imagem horizontal e verticalmente por uma fração do tamanho da imagem, auxiliando no aprendizado a detectar objetos parcialmente visíveis. |
scale | float | 0.5 | detect, segment, pose, obb, classify | 0 - 1 | Escala a imagem por um fator de ganho, simulando objetos em diferentes distâncias da câmera. |
shear | float | 0 | detect, segment, pose, obb | -180 - +180 | Inclina a imagem por um grau especificado, imitando o efeito de objetos sendo vistos de diferentes ângulos. |
perspective | float | 0 | detect, segment, pose, obb | 0.0 - 0.001 | Aplica uma transformação de perspectiva aleatória à imagem, melhorando a capacidade do modelo de entender objetos no espaço 3D. |
flipud | float | 0 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Inverte a imagem de cima para baixo com a probabilidade especificada, aumentando a variabilidade dos dados sem afetar as características do objeto. |
fliplr | float | 0.5 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Inverte a imagem da esquerda para a direita com a probabilidade especificada, útil para aprender objetos simétricos e aumentar a diversidade do conjunto de dados. |
bgr | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Inverte os canais da imagem de RGB para BGR com a probabilidade especificada, útil para aumentar a robustez contra ordenação incorreta de canais. |
mosaic | float | 1 | detect, segment, pose, obb | 0.0 - 1.0 | Combina quatro imagens de treino em uma, simulando diferentes composições de cena e interações de objetos. Altamente eficaz para a compreensão de cenas complexas. |
mixup | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Mescla duas imagens e seus rótulos, criando uma imagem composta. Aprimora a capacidade de generalização do modelo ao introduzir ruído de rótulo e variabilidade visual. |
cutmix | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Combina partes de duas imagens, criando uma mescla parcial enquanto mantém regiões distintas. Melhora a robustez do modelo criando cenários de oclusão. |
copy_paste | float | 0 | segment | 0.0 - 1.0 | Copia e cola objetos através de imagens para aumentar instâncias de objetos. |
copy_paste_mode | str | flip | segment | - | Especifica a estratégia de copy-paste a ser utilizada. As opções incluem 'flip' e 'mixup'. |
auto_augment | str | randaugment | classify | - | Aplica uma política de aumento predefinida ('randaugment', 'autoaugment' ou 'augmix') para melhorar o desempenho do modelo por meio de diversidade visual. |
erasing | float | 0.4 | classify | 0.0 - 1.0 | Apaga aleatoriamente regiões da imagem durante o treino para incentivar o modelo a focar em características menos óbvias. |
augmentations | list | `` | detect, segment, pose, obb | - | Transformações personalizadas de Albumentations para aumento de dados avançado (apenas via API Python). Aceita uma lista de objetos de transformação para necessidades específicas de aumento. |
Essas configurações podem ser ajustadas para atender aos requisitos específicos do conjunto de dados e da tarefa em questão. Experimentar com valores diferentes pode ajudar a encontrar a estratégia de aumento ideal que leva ao melhor desempenho do modelo.
Para mais informações sobre operações de aumento durante o treino, consulte a seção de referência.
Logging
Ao treinar um modelo YOLO26, você pode achar valioso acompanhar o desempenho do modelo ao longo do tempo. É aqui que o registro (logging) entra em cena. O Ultralytics YOLO oferece suporte a três tipos de loggers - Comet, ClearML e TensorBoard.
Para usar um logger, selecione-o no menu suspenso no snippet de código acima e execute-o. O logger escolhido será instalado e inicializado.
Comet
Comet é uma plataforma que permite a cientistas de dados e desenvolvedores rastrear, comparar, explicar e otimizar experimentos e modelos. Ela oferece funcionalidades como métricas em tempo real, diffs de código e rastreamento de hiperparâmetros.
Para usar o Comet:
# pip install comet_ml
import comet_ml
comet_ml.init()Lembre-se de entrar na sua conta Comet no site deles e obter sua chave de API. Você precisará adicioná-la às suas variáveis de ambiente ou ao seu script para registrar seus experimentos.
ClearML
ClearML é uma plataforma de código aberto que automatiza o rastreamento de experimentos e ajuda no compartilhamento eficiente de recursos. Ela foi projetada para ajudar equipes a gerenciar, executar e reproduzir seu trabalho de ML de forma mais eficiente.
Para usar o ClearML:
# pip install clearml
import clearml
clearml.browser_login()Após executar este script, você precisará entrar na sua conta ClearML no navegador e autenticar sua sessão.
TensorBoard
TensorBoard é um kit de ferramentas de visualização para TensorFlow. Ele permite que você visualize seu grafo do TensorFlow, plote métricas quantitativas sobre a execução do seu grafo e mostre dados adicionais, como imagens que passam por ele.
Para usar o TensorBoard no Google Colab:
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryPara usar o TensorBoard localmente, execute o comando abaixo e veja os resultados em localhost:6006.
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryIsso carregará o TensorBoard e o direcionará para o diretório onde seus logs de treino estão salvos.
Após configurar seu logger, você pode prosseguir com o treinamento do seu modelo. Todas as métricas de treino serão registradas automaticamente na plataforma escolhida, e você poderá acessar esses logs para monitorar o desempenho do seu modelo ao longo do tempo, comparar diferentes modelos e identificar áreas para melhoria.
Perguntas Frequentes
Posso treinar sem uma GPU local?
Sim. A Plataforma Ultralytics suporta treino na nuvem com créditos gratuitos para começar. Faça o upload do seu conjunto de dados, selecione um modelo e uma GPU e treine diretamente pelo navegador. Consulte o guia de treino na nuvem para mais detalhes.
Como treino um modelo de detecção de objetos usando o Ultralytics YOLO26?
Para treinar um modelo de detecção de objetos usando o Ultralytics YOLO26, você pode usar a API Python ou a CLI. Abaixo está um exemplo para ambos:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Para mais detalhes, consulte a seção Configurações de Treino.
Quais são os principais recursos do modo de Treino do Ultralytics YOLO26?
Os principais recursos do modo de Treino do Ultralytics YOLO26 incluem:
- Download Automático de Conjunto de Dados: Baixa automaticamente conjuntos de dados padrão como COCO, VOC e ImageNet.
- Suporte a Múltiplas GPUs: Escala o treino entre várias GPUs para processamento mais rápido.
- Configuração de Hiperparâmetros: Personalize hiperparâmetros através de arquivos YAML ou argumentos de CLI.
- Visualização e Monitoramento: Rastreamento em tempo real de métricas de treino para melhores insights.
Esses recursos tornam o treino eficiente e personalizável para suas necessidades. Para mais detalhes, consulte a seção Principais Recursos do Modo de Treino.
Como retomo um treinamento de uma sessão interrompida no Ultralytics YOLO26?
Para retomar o treino de uma sessão interrompida, defina o argumento resume como True e especifique o caminho para o último checkpoint salvo.
from ultralytics import YOLO
# Load the partially trained model
model = YOLO("path/to/last.pt")
# Resume training
results = model.train(resume=True)Confira a seção sobre Retomada de Treinamentos Interrompidos para mais informações.
Como treino um modelo em um conjunto de dados desbalanceado?
O desbalanceamento de classes ocorre quando algumas classes têm significativamente menos exemplos do que outras nos seus dados de treino. Isso pode fazer com que o modelo tenha um desempenho ruim em classes raras. O Ultralytics YOLO suporta ponderação de classe através do argumento cls_pw para resolver esse problema.
O argumento cls_pw controla o poder de ponderação de classe com base na frequência inversa da classe:
cls_pw=0.0(padrão): Desativa a ponderação de classecls_pw=1.0: Aplica ponderação completa de frequência inversa- Valores entre
0.0e1.0: Fornecem ponderação parcial para desbalanceamento moderado
The class weights are computed as (1.0 / class_counts) ^ cls_pw and normalized so their mean equals 1.0.
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Train with full class weighting for severely imbalanced data
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)
# Or use partial weighting (0.25) for moderate imbalance
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)Comece com cls_pw=0.25 para conjuntos de dados moderadamente desbalanceados e aumente para 1.0 se as classes raras ainda tiverem um desempenho abaixo do esperado. Você pode verificar os pesos de classe computados nos logs de treino para verificar a distribuição de peso.
Posso treinar modelos YOLO26 em chips Apple silicon?
Sim, o Ultralytics YOLO26 suporta treinamento em chips Apple silicon utilizando a estrutura Metal Performance Shaders (MPS). Especifique 'mps' como seu dispositivo de treino.
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")Para mais detalhes, consulte a seção Treino com Apple Silicon MPS.
Quais são as configurações comuns de treino e como as configuro?
O Ultralytics YOLO26 permite que você configure uma variedade de configurações de treino, como tamanho de lote, taxa de aprendizado, épocas e mais, através de argumentos. Aqui está uma breve visão geral:
| Argumento | Padrão | Descrição |
|---|---|---|
model | None | Caminho para o arquivo do modelo para treino. |
data | None | Caminho para o arquivo de configuração do conjunto de dados (por exemplo, coco8.yaml). |
epochs | 100 | Número total de épocas de treino. |
batch | 16 | Tamanho do lote, ajustável como inteiro ou modo automático. |
imgsz | 640 | Tamanho de imagem alvo para treino. |
device | None | Dispositivo(s) computacional(is) para treino, como cpu, 0, 0,1 ou mps. |
save | True | Habilita o salvamento de checkpoints de treino e pesos finais do modelo. |
Para um guia detalhado sobre as configurações de treino, confira a seção Configurações de Treino.