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 possa fazer previsões precisas. O modo de treino no Ultralytics YOLO26 foi projetado para o treinamento eficaz e eficiente de modelos de detecção de objetos, utilizando plenamente as capacidades de hardware moderno. Este guia tem como objetivo cobrir todos os detalhes necessários para começares a treinar os teus próprios modelos usando o conjunto robusto de recursos do YOLO26. Se ainda não instalaste o Ultralytics, começa pelo Guia de início rápido.
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 algumas razões convincentes para optar pelo modo Train do YOLO26:
- Eficiência: Aproveita ao máximo o teu hardware, estejas a usar uma configuração de GPU única ou a escalar através de múltiplas GPUs.
- Versatilidade: Treina 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, mas poderosas, para uma experiência de treinamento direta.
- Flexibilidade de Hiperparâmetros: Uma ampla gama de hiperparâmetros personalizáveis para afinar o desempenho do modelo. Para um controle mais profundo, podes personalizar o próprio treinador.
- Treinamento na Nuvem: Treina em GPUs na nuvem através da Ultralytics Platform com métricas em tempo real e salvamento automático de pontos de verificação (checkpointing).
Principais Funcionalidades do Modo Train#
As seguintes são algumas das funcionalidades notáveis do modo Train do YOLO26:
- Download Automático de Dataset: As configurações de dataset com uma origem de download são baixadas automaticamente no primeiro uso, por exemplo,
yolo train data=coco8.yaml. Consulta a Visão geral de datasets para ver formatos e datasets suportados. - Suporte a Múltiplas GPUs: Escala os teus esforços de treinamento perfeitamente através de 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 CLI.
- Visualização e Monitoramento: Rastreamento em tempo real das métricas de treinamento e visualização do processo de aprendizado para melhores insights.
Exemplos de uso#
Treina o YOLO26n no dataset COCO8 por 100 épocas 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á usada. Consulta a seção de Argumentos abaixo para obter uma lista completa de argumentos de treinamento.
No Windows, podes receber um RuntimeError ao iniciar o treinamento como um script. Adiciona um bloco if __name__ == "__main__": antes do teu código de treinamento para resolver isso.
O dispositivo é determinado automaticamente. Se uma GPU estiver disponível, ela será usada (dispositivo CUDA padrão 0); 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 com Múltiplas GPUs#
O treinamento com múltiplas GPUs permite uma utilização mais eficiente dos recursos de hardware disponíveis ao distribuir a carga de treinamento por várias GPUs. Esta funcionalidade está disponível tanto através da API Python quanto da interface de linha de comando. Para ativar o treinamento com múltiplas GPUs, especifica os IDs dos dispositivos GPU que desejas usar.
Para treinar com 2 GPUs, dispositivos CUDA 0 e 1, usa os seguintes comandos. Expande 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])O treinamento com múltiplas GPUs não funciona no Windows com os pacotes oficiais do PyTorch para torch>=2.4. O Ultralytics inicia o DDP por meio de torch.distributed.run, cuja etapa de rendezvous constrói um TCPStore que tem usado o backend libuv por padrão desde o PyTorch 2.4, e os pacotes oficiais para Windows são compilados sem o libuv. O treinamento é encerrado imediatamente com:
RuntimeError: use_libuv was requested but PyTorch was built without libuv support
Definir USE_LIBUV=0 não resolve isso, porque o rendezvous constrói o TCPStore diretamente e esse caminho de código nunca lê a variável. Treina no Linux ou no WSL2 para usar várias GPUs, ou treina em uma única GPU com device=0 no Windows.
Quando especificas vários dispositivos (por exemplo, device=[0, 1]), o Ultralytics cria internamente uma nova instância de treinador e executa torch.distributed.run nos bastidores. Isso funciona perfeitamente para o uso padrão da CLI e scripts Python não modificados.
No entanto, se o teu script contiver componentes personalizados — como um treinador, validador, dataset ou pipeline de aumento personalizados —, esses objetos não podem ser serializados automaticamente e transferidos para os subprocessos do DDP. Nesse caso, deves iniciar o teu script diretamente com torch.distributed.run:
python -m torch.distributed.run --nproc_per_node 2 your_training_script.pyO treinamento em GPU AMD utiliza uma compilação ROCm do PyTorch com a sintaxe padrão device=0 ou device=cuda:0. Consulta o
Guia de integração AMD para ver a instalação e o status atual de suporte ao MIGraphX, DirectML e Ryzen AI NPU.
O treinamento em GPU Intel usa device=xpu:0, ou vários IDs XPU com uma compilação do PyTorch que fornece XCCL.
Treino em NPU Huawei Ascend#
O Ultralytics suporta treinamento e validação em NPUs Huawei Ascend através de
torch_npu. Instala versões mutuamente compatíveis do CANN, PyTorch e torch_npu
seguindo o Guia de instalação do Ascend Extension for PyTorch,
e depois carrega o ambiente CANN antes de iniciar o Ultralytics:
source /usr/local/Ascend/ascend-toolkit/set_env.shfrom ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Train on one Ascend NPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")
# Train across two Ascend NPUs with HCCL
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")Os recursos de treinamento padrão, incluindo AMP, validação, criação de pontos de verificação (checkpointing) e retomada, utilizam a NPU ativa. O AutoBatch está disponível para treinamento com uma única NPU, enquanto vários IDs de NPU iniciam o treinamento distribuído através do HCCL. Consulta o Guia de integração Huawei Ascend para exportação e implantação de modelos após o treinamento.
Treinamento em GPU Ociosa#
O Treinamento em GPU Ociosa permite a seleção automática das GPUs menos utilizadas em sistemas com múltiplas GPUs, otimizando o uso de recursos sem seleção manual de GPU. Esta funcionalidade identifica as GPUs disponíveis com base em métricas de utilização e disponibilidade de VRAM.
Para selecionar e utilizar automaticamente a(s) GPU(s) mais ociosa(s) para treinamento, usa 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 percentagens de utilização atual
- Maior memória disponível (VRAM livre)
- Menor temperatura e consumo de energia
Esta funcionalidade é especialmente valiosa em ambientes de computação partilhada ou ao executar múltiplos trabalhos de treinamento em diferentes modelos. Ela adapta-se automaticamente a condições variáveis do sistema, garantindo a alocação ideal de recursos sem intervenção manual.
Treinamento MPS no Apple Silicon#
Com o suporte para chips Apple silicon integrado nos modelos Ultralytics YOLO, agora é possível treinar os teus 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 ativar o treinamento em chips Apple silicon, deves especificar 'mps' como o teu dispositivo ao iniciar o processo de treinamento. Abaixo está um exemplo de como podes fazer isto 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 Apple Silicon, isto permite um processamento mais eficiente das tarefas de treinamento. Para orientações mais detalhadas e opções de configuração avançadas, consulta a documentação do PyTorch MPS.
Retomar Treinamentos Interrompidos#
Retomar o treinamento a partir de um estado salvo anteriormente é uma funcionalidade crucial ao trabalhar com modelos de deep learning. Isto pode ser útil em várias situações, como quando o processo de treinamento foi interrompido inesperadamente, ou quando desejas continuar a treinar 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. Isto permite-te continuar o processo de treinamento de forma integrada a partir de onde parou.
Podes 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, utilizando 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.
Lembra-te de que os pontos de verificação são salvos no final de cada época por predefinição, ou em intervalos fixos usando o argumento save_period, por isso deves concluir pelo menos 1 época para retomar uma execução de treinamento.
Configurações de Treinamento#
As configurações de treinamento para modelos YOLO abrangem vários hiperparâmetros e configurações usados 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 o tamanho do lote (batch size), a taxa de aprendizado, o momentum e a decaimento de peso (weight decay). Além disso, a escolha do otimizador, da função de perda e da composição do dataset de treinamento pode afetar o processo de treinamento. O ajuste cuidadoso e a experimentação com essas configurações são cruciais para otimizar o desempenho.
Otimizador MuSGD#
No YOLO26, o MuSGD é um otimizador híbrido que combina atualizações padrão de SGD com atualizações ortogonalizadas ao estilo Muon.
É recomendado para execuções de treinamento mais longas do YOLO26 e conjuntos de dados maiores, onde as atualizações ortogonalizadas do Muon podem ajudar a estabilizar a otimização.
Apenas os pesos lineares 2D e os filtros convolucionais 4D (redimensionados para 2D) recebem a atualização no estilo Muon em conjunto com o SGD, enquanto todos os outros parâmetros, como os pesos de normalização de lotes e os termos de viés, permanecem no SGD padrão.
Quando optimizer=auto é utilizado, o Ultralytics seleciona automaticamente o MuSGD para execuções de treinamento mais longas (tipicamente quando as iterações > 10000). Para execuções mais curtas, o treinador recorre ao AdamW.
Exemplo de uso:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDConsulta a implementação em ultralytics/optim/muon.py e a lógica de seleção automática de otimizador em BaseTrainer.build_optimizer.
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
model | str | None | Especifica o arquivo de modelo para treinamento. Aceita um caminho para um modelo pré-treinado .pt ou para um arquivo de configuração .yaml. Essencial para definir a estrutura do modelo ou inicializar pesos. |
data | str | None | Caminho para o YAML do dataset (por exemplo, coco8.yaml), que contém os caminhos para os dados de validação e de treino, os nomes das classes e o número de classes. A classificação, por sua vez, aceita um diretório de dataset ou o nome de um dataset integrado (por exemplo, imagenet10). |
epochs | int | 100 | Número total de épocas de treinamento. Cada epoch representa uma passagem completa por todo o dataset. Ajustar este valor pode afetar a duração do treinamento e o desempenho do modelo. |
time | float | None | Tempo máximo de treinamento em horas. Se definido, isso substitui o argumento epochs, permitindo que o treinamento pare automaticamente após a duração especificada. Útil para cenários de treinamento com restrição de tempo. |
patience | int | 100 | Número de épocas a aguardar sem melhora nas métricas de validação antes de interromper o treinamento antecipadamente. Ajuda a evitar o overfitting, interrompendo o treinamento quando o desempenho atinge um patamar. |
batch | int ou float | 16 | Batch size, 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 da imagem de destino para o treinamento. 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 o RT-DETR. Afeta a accuracy do modelo e a complexidade computacional. |
save | bool | True | Permite salvar os checkpoints de treinamento e os pesos finais do modelo. Útil para retomar o treinamento ou para a model deployment. |
save_period | int | -1 | Frequência de salvamento de checkpoints do modelo, especificada em épocas. Um valor de -1 desativa esta funcionalidade. Útil para salvar modelos intermédios durante sessões de treinamento longas. |
cache | bool | False | Permite o cache de imagens do dataset na memória (True/ram), em disco (disk) ou o desativa (False). Melhora a velocidade de treinamento reduzindo o I/O de disco ao custo de um maior uso de memória. |
device | int ou str ou list | None | Especifica o(s) dispositivo(s) computacional(is) para o treinamento: 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:0 ou device=npu:0,1) ou seleção automática de GPU ociosa (device=-1) ou múltiplas GPUs ociosas (device=[-1,-1]). |
workers | int | 8 | Número de threads de trabalho para o carregamento de dados (por RANK em treinamento com múltiplas GPUs). Influencia a velocidade de pré-processamento de dados e o fornecimento ao modelo, sendo especialmente útil em configurações com múltiplas GPUs. |
project | str | None | Nome do diretório do projeto onde as saídas do treinamento são salvas. Permite o armazenamento organizado de diferentes experimentos. |
name | str | None | Nome da execução do treinamento. Usado para criar um subdiretório dentro da pasta do projeto, onde os logs e saídas do treinamento são armazenados. |
exist_ok | bool | False | Se True, permite a substituição de um diretório de projeto/nome existente. Útil para experimentação iterativa sem precisar limpar manualmente as saídas anteriores. |
save_dir | str | None | Especifica o diretório exato onde as saídas da execução são salvas, substituindo a combinação project/name. O caminho é usado exatamente como está, sem incremento automático, portanto, execuções consecutivas reutilizam o mesmo diretório. |
pretrained | bool ou str | True | Determina se o treinamento deve ser iniciado a partir de pesos pré-treinados. Pode ser um valor booleano ou um caminho em string para os pesos a serem carregados. pretrained=False treina a partir de pesos inicializados aleatoriamente, mantendo a arquitetura do modelo. |
cls_remap | bool | True | Ao fazer o fine-tuning entre conjuntos de dados, copia as linhas do cabeçote de classificação pré-treinado para o novo modelo onde os nomes das classes correspondem, para que as classes sobrepostas mantenham seu viés aprendido, além de seus pesos quando a largura do cabeçote não for alterada. Aplica-se quer a contagem de classes seja diferente ou igual com uma ordem de classes diferente. |
optimizer | str | 'auto' | Escolha do otimizador para o treinamento. As opções incluem SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp ou auto para escolher AdamW ou MuSGD a partir do número de iterações de treinamento. Afeta a velocidade de convergência e a estabilidade. |
seed | int | 0 | Define a semente aleatória para o treinamento, garantindo a reprodutibilidade dos resultados entre execuções com as mesmas configurações. |
deterministic | bool | True | Força o uso de algoritmos determinísticos, garantindo a reprodutibilidade, mas podendo 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 treinamento, exibindo barras de progresso, métricas por época e informações adicionais de treinamento no console. |
single_cls | bool | False | Trata todas as classes em conjuntos de dados multiclasse como uma única classe durante o treinamento. Útil para tarefas de classificação binária ou quando o foco é a presença de objetos em vez da classificação. |
classes | list[int] | None | Especifica uma lista de IDs de classes para treinar. Útil para filtrar e focar apenas em certas classes durante o treinamento. |
rect | bool | False | Ativa a estratégia de preenchimento mínimo (minimum padding)—as imagens em um lote são preenchidas minimamente 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 imgsz a cada lote por +/- multi_scale (por exemplo, 0.25 -> 0.75x a 1.25x), arredondando para múltiplos do passo do modelo; 0.0 desativa o treinamento em multiescala. |
cos_lr | bool | False | Utiliza um agendador de learning rate em 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 data augmentation 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 de forma contínua. |
amp | bool ou str | True | Define a precisão de treino: True ou "fp16" usa FP16, "bf16" usa BF16 em dispositivos CUDA compatíveis, e False ou "fp32" usa FP32. |
fraction | float, int ou list | 1.0 | Subconjunto do dataset como proporção/contagem ou lista [train, val, test]. Listas de dois itens mantêm o teste completo e o teste 0 pula o download do NDJSON. Um 1 inteiro é uma imagem, enquanto 1.0 são todas. |
profile | bool | False | Ativa a criação de perfil (profiling) das velocidades de 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 camadas específicas por índice ou nome de módulo (23.cv2, sem o model. inicial), 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 esse 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 os agendadores para ajustar a taxa de aprendizado ao longo do tempo. |
momentum | float | 0.937 | Fator de momento para SGD ou beta1 para Adam optimizers, influenciando a incorporação de gradientes passados na atualização atual. |
weight_decay | float | 0.0005 | Termo de regularization L2, penalizando pesos grandes para evitar o overfitting. |
warmup_epochs | float | 3.0 | Número de épocas para aquecimento (warmup) da taxa de aprendizado, aumentando gradualmente a taxa de aprendizado de um valor baixo até a taxa de aprendizado inicial para estabilizar o treinamento desde o início. |
warmup_momentum | float | 0.8 | Momentum inicial para a fase de aquecimento, ajustando-se gradualmente ao momentum definido durante o período de aquecimento. |
warmup_bias_lr | float | 0.1 | Taxa de aprendizado para os parâmetros de viés durante a fase de aquecimento, ajudando a estabilizar o treinamento do modelo nas épocas iniciais. Definido automaticamente como 0.0 sob o optimizer='auto' padrão, portanto, nomeie um otimizador explicitamente para usá-lo. |
distill_model | str | None | Caminho para um checkpoint de modelo professor (por exemplo, yolo26x.pt) para destilação de conhecimento. Quando definido, o modelo aluno é treinado com uma perda de destilação extra guiada pelo professor congelado. |
dis | float | 6.0 | Peso da perda de destilação adicionada às perdas de detecção padrão. Valores mais altos aumentam a influência da orientação de recursos do professor. |
box | float | 7.5 | Peso do componente de perda de caixa na loss function, influenciando quanta ê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 a ponderação de classes para lidar com o desequilíbrio de classes usando a frequência inversa de classes. 0.0 desativa a ponderação de classes, 1.0 aplica a ponderação de frequência inversa total. Valores entre 0 e 1 fornecem ponderação parcial. |
dfl | float | 1.5 | Peso do termo de regressão da distância da caixa: perda focal de distribuição (DFL) quando a cabeça de deteção usa reg_max > 1, uma perda L1 nas distâncias de caixa normalizadas em YOLO26 sem DFL (reg_max: 1). |
pose | float | 12.0 | Peso da perda de pose em modelos treinados para estimativa de pose, influenciando a ênfase na previsão precisa dos pontos-chave de pose. |
kobj | float | 1.0 | Peso da perda de objetividade de pontos-chave (keypoint objectness loss) 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 pontos-chave. |
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. |
dlog | float | 1.0 | Peso da perda logarítmica escala-invariante (SILog) em modelos de estimativa de profundidade, o termo principal que impulsiona a precisão de profundidade. |
dgrad | float | 0.5 | Peso da perda de gradiente em modelos de estimativa de profundidade, penalizando erros nas bordas de profundidade e incentivando limites de superfície mais nítidos. |
dlam | float | 1.0 | Fator de foco de variância da perda SILog em modelos de estimativa de profundidade. 1.0 torna a perda totalmente invariável à escala, enquanto 0.0 a reduz para o log-RMSE simples. |
nbs | int | 64 | Tamanho de lote nominal para normalização da perda. |
overlap_mask | bool | True | Determina se as máscaras de objeto 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 é sobreposta à máscara maior durante a mesclagem. |
mask_ratio | int | 4 | Taxa 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 overfitting 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 de 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 grafos PyTorch 2.x torch.compile com backend='inductor'. Aceita True → "default", False → desativa, ou um modo de string como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Retorna para o modo ávido (eager) com um aviso se não for suportado. |
channels_last | bool | None | Usa o formato de memória channels_last (NHWC) para convoluções durante o treino quando definido como True, acelerando GPUs CUDA Tensor Core sem alteração nos resultados. O treino continua NCHW por predefinição; CPU e MPS ignoram a ativação explícita. |
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: Define um valor inteiro (por exemplo,
batch=16), especificando diretamente o número de imagens por lote. - Modo Automático (60% da Memória da GPU): Usa
batch=-1para ajustar automaticamente o tamanho do lote para aproximadamente 60% de utilização da memória CUDA. - Modo Automático com Fração de Utilização: Define um valor de fração (por exemplo,
batch=0.70) para ajustar o tamanho do lote com base na fração especificada de uso da memória da GPU. - Tentativa Automática de OOM: Se ocorrer um erro de falta de memória CUDA (out-of-memory) 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 uma única GPU; o treinamento multi-GPU (DDP) gerará o erro imediatamente.
- Nenhum Ajuste Encontrado: Se nenhum tamanho de lote candidato produzir um perfil utilizável, o AutoBatch gera um
RuntimeErrorclaro em vez de recorrer silenciosamente a um padrão não relacionado.
Configurações de Aumentação e Hiperparâmetros#
As técnicas de aumento (augmentation) são essenciais para melhorar a robustez e o desempenho dos modelos YOLO ao introduzir variabilidade nos dados de treinamento, ajudando o modelo a generalizar melhor para dados não vistos. A tabela seguinte descreve o propósito e o efeito de cada argumento de aumento:
| Argumento | Tipo | Predefinição | Tarefas Suportadas | Intervalo | Descrição |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Ajusta o matiz da imagem por uma fração da roda de cores, introduzindo variabilidade de cor. Ajuda o modelo a generalizar em diferentes condições de iluminação. Para classify, isto aplica-se apenas quando auto_augment=None. |
hsv_s | float | 0.7 | detect, segment, semantic, depth, classify, pose, obb | 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. Para classify, isto aplica-se apenas quando auto_augment=None. |
hsv_v | float | 0.4 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Modifica o valor (luminosidade) da imagem por uma fração, ajudando o modelo a ter um bom desempenho sob várias condições de iluminação. Para classify, isto aplica-se apenas quando auto_augment=None. |
degrees | float | 0 | detect, segment, semantic, depth, 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, semantic, depth, pose, obb | 0.0 - 1.0 | Translada a imagem horizontal e verticalmente por uma fração do tamanho da imagem, ajudando a aprender a detectar objetos parcialmente visíveis. |
scale | float | tuple | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0 - 1, ou um tuplo explícito (min, max) (não para classify) | Escala a imagem por um fator de ganho, simulando objetos a diferentes distâncias da câmera. |
shear | float | 0 | detect, segment, semantic, depth, 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, semantic, depth, pose, obb | 0.0 - 0.001 | Aplica uma transformação de perspectiva aleatória à imagem, aprimorando a capacidade do modelo de entender objetos no espaço 3D. |
flipud | float | 0 | detect, segment, semantic, depth, classify, pose, obb | 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, semantic, depth, classify, pose, obb | 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, semantic, depth, pose, obb | 0.0 - 1.0 | Inverte os canais da imagem de RGB para BGR com a probabilidade especificada, útil para aumentar a robustez a ordenações incorretas de canais. |
mosaic | float | 1 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | Combina quatro imagens de treinamento 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, semantic, pose, obb | 0.0 - 1.0 | Mistura duas imagens e seus rótulos, criando uma imagem composta. Melhora a capacidade do modelo de generalizar ao introduzir ruído de rótulo e variabilidade visual. |
cutmix | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Combina porções de duas imagens, criando uma mistura parcial enquanto mantém regiões distintas. Aumenta a robustez do modelo ao criar cenários de oclusão. |
copy_paste | float | 0 | segment, obb | 0.0 - 1.0 | Fração de objetos elegíveis colados; flip espelha-os dentro da imagem, enquanto mixup também usa o valor como sua probabilidade de aplicação entre imagens. |
copy_paste_mode | str | flip | segment, obb | - | Especifica a estratégia copy-paste a ser usada. 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 da diversidade visual. |
erasing | float | 0.4 | classify | 0.0 - 1.0 | Apaga aleatoriamente regiões da imagem durante o treinamento para incentivar o modelo a focar em características menos óbvias. |
augmentations | list | None | detect, segment, semantic, depth, pose, obb | - | Transformações personalizadas de Albumentations para aumento de dados avançado (apenas API Python). Aceita uma lista de objetos de transformação para necessidades de aumento especializadas. |
Estas configurações podem ser ajustadas para atender aos requisitos específicos do conjunto de dados e da tarefa em questão. Experimentar com diferentes valores 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 de treinamento, consulta a seção de referência.
Registro (Logging)#
Ao treinar um modelo YOLO26, podes achar útil acompanhar o desempenho do modelo ao longo do tempo. É aqui que entram os registos (logging). O Ultralytics YOLO oferece suporte a três tipos de registadores (loggers) - Comet, ClearML e TensorBoard.
Para usar um logger, selecione-o no menu suspenso no trecho 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 programadores rastrear, comparar, explicar e otimizar experimentos e modelos. Ele fornece 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 na partilha eficiente de recursos. Foi concebida para ajudar equipas a gerir, executar e reproduzir o 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 o TensorFlow. Permite-te visualizar o teu grafo do TensorFlow, traçar métricas quantitativas sobre a execução do teu grafo e mostrar 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, executa o comando abaixo e visualiza 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 treinamento estão salvos.
Após configurar seu logger, você pode prosseguir com o treinamento do seu modelo. Todas as métricas de treinamento 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.
O que vem a seguir#
Valida o teu modelo treinado contra dados reservados para verificar a sua precisão no mundo real, depois exporta-o para ONNX, TensorRT ou outro formato de implantação. Vais treinar com os teus próprios dados em vez de COCO8? Formata-os primeiro com o Guia de Datasets.
FAQ#
Sim. O treinamento na nuvem da Ultralytics Platform inclui créditos gratuitos para começar. Carrega o teu dataset, seleciona um modelo e uma GPU, e treina diretamente a partir do navegador.
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:
Exemplo de Treinamento com GPU Única e CPUfrom 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, consulta a seção Configurações de Treinamento.
Os principais recursos do modo de Treinamento do Ultralytics YOLO26 incluem:
- Download Automático de Conjuntos de Dados: Baixa automaticamente conjuntos de dados padrão como COCO, VOC e ImageNet.
- Suporte a Multi-GPU: Escala o treinamento em múltiplas GPUs para processamento mais rápido.
- Configuração de Hiperparâmetros: Personalize hiperparâmetros por meio de arquivos YAML ou argumentos da CLI.
- Visualização e Monitoramento: Rastreamento em tempo real de métricas de treinamento para melhores insights.
Estes recursos tornam o treinamento eficiente e personalizável às tuas necessidades. Para mais detalhes, consulta a seção Recursos Principais do Modo de Treinamento.
Para retomar o treinamento a partir de uma sessão interrompida, define o argumento
resumecomoTruee especifica o caminho para o último ponto de verificação (checkpoint) salvo.Exemplo de Retomar Treinamentofrom ultralytics import YOLO # Load the partially trained model model = YOLO("path/to/last.pt") # Resume training results = model.train(resume=True)Consulta a seção sobre Retomada de Treinamentos Interrompidos para mais informações.
O desequilíbrio de classes ocorre quando algumas classes têm significativamente menos exemplos do que outras nos teus dados de treinamento. Isso pode fazer com que o modelo tenha um desempenho fraco em classes raras. O Ultralytics YOLO suporta ponderação de classes através do argumento
cls_pwpara resolver esse problema.O argumento
cls_pwcontrola a potência da ponderação de classes com base na frequência inversa das classes:cls_pw=0.0(predefinição): Desativa a ponderação de classescls_pw=1.0: Aplica ponderação de frequência inversa total- Valores entre
0.0e1.0: Fornecem ponderação parcial para desequilíbrio moderado
Os pesos das classes são calculados como
(1.0 / class_counts) ^ cls_pwe normalizados para que a sua média seja igual a 1,0.Treinamento em Conjunto de Dados Desbalanceadofrom 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)DicaComeça com
cls_pw=0.25para datasets moderadamente desequilibrados e aumenta para1.0se as classes raras continuarem a ter um desempenho fraco. Podes verificar os pesos de classe calculados nos registos de treinamento para verificar a distribuição de pesos.Sim, o Ultralytics YOLO26 suporta treinamento em chips de silício da Apple utilizando o framework Metal Performance Shaders (MPS). Especifique 'mps' como seu dispositivo de treinamento.
Exemplo de Treinamento MPSfrom 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, consulta a seção Treinamento Apple Silicon MPS.
O Ultralytics YOLO26 permite que você configure uma variedade de definições de treinamento, como tamanho do lote, taxa de aprendizado, épocas e mais, por meio de argumentos. Aqui está uma breve visão geral:
Argumento Predefinição Descrição modelNoneCaminho para o arquivo do modelo para treinamento. dataNoneCaminho para o YAML do dataset (por exemplo, coco8.yaml), ou um diretório ou nome de dataset (por exemplo,imagenet10) para classificação.epochs100Número total de épocas de treinamento. batch16Tamanho do lote (batch size), ajustável como inteiro ou modo automático. imgsz640Tamanho de imagem alvo para o treinamento. deviceNoneDispositivo(s) computacional(is) para treinamento como cpu,0,0,1oumps.saveTrueHabilita o salvamento de checkpoints de treinamento e pesos finais do modelo. Para um guia aprofundado sobre as configurações de treinamento, consulta a seção Configurações de Treinamento.