Link to this sectionMelhores práticas de aprendizado de máquina e dicas para treinamento de modelos#
Link to this sectionIntrodução#
Um dos passos mais importantes ao trabalhar em um projeto de visão computacional é o treinamento do modelo. Antes de chegar a esta etapa, você precisa definir seus objetivos e coletar e anotar seus dados. Após pré-processar os dados para garantir que eles estejam limpos e consistentes, você pode seguir para o treinamento do seu modelo.
Watch: Model Training Tips | How to Handle Large Datasets | Batch Size, GPU Utilization and Mixed Precision
Então, o que é treinamento de modelo? O treinamento de modelo é o processo de ensinar seu modelo a reconhecer padrões visuais e fazer previsões com base nos seus dados. Ele impacta diretamente o desempenho e a precisão da sua aplicação. Neste guia, abordaremos melhores práticas, técnicas de otimização e dicas de solução de problemas para ajudar você a treinar seus modelos de visão computacional de forma eficaz.
Link to this sectionComo treinar um modelo de aprendizado de máquina#
Um modelo de visão computacional é treinado ajustando seus parâmetros internos para minimizar erros. Inicialmente, o modelo recebe um grande conjunto de imagens rotuladas. Ele faz previsões sobre o que está nessas imagens, e as previsões são comparadas aos rótulos ou conteúdos reais para calcular erros. Esses erros mostram o quão longe as previsões do modelo estão dos valores verdadeiros.
Durante o treinamento, o modelo faz previsões iterativamente, calcula erros e atualiza seus parâmetros por meio de um processo chamado backpropagation. Nesse processo, o modelo ajusta seus parâmetros internos (pesos e vieses) para reduzir os erros. Ao repetir este ciclo muitas vezes, o modelo melhora gradualmente sua precisão. Com o tempo, ele aprende a reconhecer padrões complexos como formas, cores e texturas.
Este processo de aprendizagem torna possível que o modelo de visão computacional execute várias tarefas, incluindo detecção de objetos, segmentação de instâncias, segmentação semântica e classificação de imagens. O objetivo final é criar um modelo que possa generalizar seu aprendizado para novas imagens não vistas, para que ele possa entender dados visuais com precisão em aplicações do mundo real.
Agora que sabemos o que acontece nos bastidores quando treinamos um modelo, vamos observar os pontos a considerar ao treinar um modelo.
Link to this sectionTreinamento em grandes conjuntos de dados#
Existem alguns aspectos diferentes para pensar quando você está planejando usar um grande conjunto de dados para treinar um modelo. Por exemplo, você pode ajustar o tamanho do lote (batch size), controlar a utilização da GPU, optar por usar treinamento multiescala, etc. Vamos percorrer cada uma dessas opções detalhadamente.
Link to this sectionTamanho do lote e utilização da GPU#
Ao treinar modelos em grandes conjuntos de dados, utilizar sua GPU de forma eficiente é fundamental. O tamanho do lote (batch size) é um fator importante. É o número de amostras de dados que um modelo de aprendizado de máquina processa em uma única iteração de treinamento. Usando o tamanho máximo de lote suportado pela sua GPU, você pode aproveitar ao máximo suas capacidades e reduzir o tempo que o treinamento do modelo leva. No entanto, você quer evitar ficar sem memória da GPU. Se você encontrar erros de memória, reduza o tamanho do lote incrementalmente até que o modelo treine sem problemas.
Watch: How to Use Batch Inference with Ultralytics YOLO26 | Speed Up Object Detection in Python 🎉
Com relação ao YOLO26, você pode definir o parâmetro batch na configuração de treinamento para corresponder à sua capacidade de GPU. Além disso, definir batch=-1 no seu script de treinamento determinará automaticamente o tamanho do lote que pode ser processado de forma eficiente com base nas capacidades do seu dispositivo. Ao ajustar o tamanho do lote, você pode aproveitar ao máximo seus recursos de GPU e melhorar o processo de treinamento geral.
Link to this sectionTreinamento em subconjunto#
O treinamento em subconjunto é uma estratégia inteligente que envolve treinar seu modelo em um conjunto menor de dados que representa o conjunto de dados maior. Isso pode economizar tempo e recursos, especialmente durante o desenvolvimento e teste inicial do modelo. Se você estiver com pouco tempo ou experimentando diferentes configurações de modelo, o treinamento em subconjunto é uma boa opção.
Quando se trata do YOLO26, você pode facilmente implementar o treinamento em subconjunto usando o parâmetro fraction. Este parâmetro permite que você especifique qual fração do seu conjunto de dados usar para treinamento. Por exemplo, definir fraction=0.1 treinará seu modelo em 10% dos dados. Você pode usar essa técnica para iterações rápidas e ajuste do seu modelo antes de se comprometer a treinar um modelo usando um conjunto de dados completo. O treinamento em subconjunto ajuda você a fazer progresso rápido e identificar possíveis problemas logo no início.
Link to this sectionTreinamento multiescala#
O treinamento multiescala é uma técnica que melhora a capacidade de generalização do seu modelo ao treiná-lo em imagens de tamanhos variados. Seu modelo pode aprender a detectar objetos em diferentes escalas e distâncias e se tornar mais robusto.
Por exemplo, ao treinar o YOLO26, você pode habilitar o treinamento multiescala definindo o parâmetro scale. Este parâmetro ajusta o tamanho das imagens de treinamento por um fator especificado, simulando objetos em diferentes distâncias. Por exemplo, definir scale=0.5 amplia aleatoriamente as imagens de treinamento por um fator entre 0.5 e 1.5 durante o treinamento. Configurar esse parâmetro permite que seu modelo experimente uma variedade de escalas de imagem e melhore suas capacidades de detecção em diferentes tamanhos de objetos e cenários.
O Ultralytics também suporta treinamento multiescala de tamanho de imagem via parâmetro multi_scale. Ao contrário do scale, que amplia imagens e depois preenche/corta de volta para o imgsz, o multi_scale altera o próprio imgsz a cada lote (arredondado para o passo do modelo). Por exemplo, com imgsz=640 e multi_scale=0.25, o tamanho do treinamento é amostrado de 480 até 800 em passos de incremento (por exemplo, 480, 512, 544, ..., 800), enquanto multi_scale=0.0 mantém um tamanho fixo.
Link to this sectionCache#
O cache é uma técnica importante para melhorar a eficiência do treinamento de modelos de aprendizado de máquina. Ao armazenar imagens pré-processadas na memória, o cache reduz o tempo que a GPU gasta esperando que os dados sejam carregados do disco. O modelo pode receber dados continuamente sem atrasos causados por operações de E/S de disco.
O cache pode ser controlado ao treinar o YOLO26 usando o parâmetro cache:
cache=True: Armazena imagens do conjunto de dados na RAM, proporcionando a velocidade de acesso mais rápida, mas ao custo de maior uso de memória.cache='disk': Armazena as imagens no disco, mais lento que a RAM, mas mais rápido do que carregar dados novos a cada vez.cache=False: Desativa o cache, contando inteiramente com E/S de disco, que é a opção mais lenta.
Link to this sectionTreinamento de precisão mista#
O treinamento de precisão mista usa tipos de ponto flutuante de 16 bits (FP16) e 32 bits (FP32). Os pontos fortes do FP16 e do FP32 são aproveitados usando FP16 para cálculos mais rápidos e FP32 para manter a precisão onde for necessário. A maioria das operações da rede neural é feita em FP16 para beneficiar de cálculos mais rápidos e menor uso de memória. No entanto, uma cópia mestre dos pesos do modelo é mantida em FP32 para garantir a precisão durante as etapas de atualização de peso. Você pode lidar com modelos maiores ou lotes maiores dentro das mesmas restrições de hardware.
Para implementar o treinamento de precisão mista, você precisará modificar seus scripts de treinamento e garantir que seu hardware (como GPUs) suporte isso. Muitas estruturas modernas de deep learning, como PyTorch e TensorFlow, oferecem suporte integrado para precisão mista.
O treinamento de precisão mista é simples ao trabalhar com o YOLO26. Você pode usar a flag amp na sua configuração de treinamento. Definir amp=True habilita o treinamento de Precisão Mista Automática (AMP). O treinamento de precisão mista é uma maneira simples e eficaz de otimizar seu processo de treinamento de modelo.
Link to this sectionPesos Pré-treinados#
Usar pesos pré-treinados é uma maneira inteligente de acelerar o processo de treinamento do seu modelo. Pesos pré-treinados vêm de modelos já treinados em grandes conjuntos de dados, dando ao seu modelo uma vantagem inicial. O transfer learning adapta modelos pré-treinados a novas tarefas relacionadas. O ajuste fino (fine-tuning) de um modelo pré-treinado envolve começar com esses pesos e, em seguida, continuar o treinamento em seu conjunto de dados específico. Este método de treinamento resulta em tempos de treinamento mais rápidos e, frequentemente, melhor desempenho, porque o modelo começa com uma compreensão sólida de recursos básicos.
O parâmetro pretrained facilita o transfer learning com o YOLO26. Definir pretrained=True usará pesos pré-treinados padrão, ou você pode especificar um caminho para um modelo pré-treinado personalizado. Usar pesos pré-treinados e transfer learning efetivamente aumenta as capacidades do seu modelo e reduz os custos de treinamento.
Link to this sectionOutras técnicas a considerar ao lidar com um grande conjunto de dados#
Existem algumas outras técnicas a considerar ao lidar com um grande conjunto de dados:
- Agendadores de taxa de aprendizado: Implementar agendadores de taxa de aprendizado ajusta dinamicamente a taxa de aprendizado durante o treinamento. Uma taxa de aprendizado bem ajustada pode impedir que o modelo ultrapasse mínimos e melhorar a estabilidade. Ao treinar o YOLO26, o parâmetro
lrfajuda a gerenciar o agendamento da taxa de aprendizado definindo a taxa de aprendizado final como uma fração da taxa inicial. - Treinamento distribuído: Para lidar com grandes conjuntos de dados, o treinamento distribuído pode mudar o jogo. Você pode reduzir o tempo de treinamento espalhando a carga de trabalho de treinamento por múltiplas GPUs ou máquinas. Esta abordagem é particularmente valiosa para projetos de escala empresarial com recursos computacionais substanciais.
Link to this sectionO número de épocas para treinar#
Ao treinar um modelo, uma época refere-se a uma passagem completa por todo o conjunto de dados de treinamento. Durante uma época, o modelo processa cada exemplo no conjunto de treinamento uma vez e atualiza seus parâmetros com base no algoritmo de aprendizado. Várias épocas geralmente são necessárias para permitir que o modelo aprenda e refine seus parâmetros ao longo do tempo.
Uma pergunta comum que surge é como determinar o número de épocas para treinar o modelo. Um bom ponto de partida são 300 épocas. Se o modelo sofrer overfitting (sobreajuste) precocemente, você pode reduzir o número de épocas. Se o overfitting não ocorrer após 300 épocas, você pode estender o treinamento para 600, 1200 ou mais épocas.
No entanto, o número ideal de épocas pode variar com base no tamanho do seu conjunto de dados e nos objetivos do projeto. Conjuntos de dados maiores podem exigir mais épocas para o modelo aprender efetivamente, enquanto conjuntos de dados menores podem precisar de menos épocas para evitar overfitting. Com relação ao YOLO26, você pode definir o parâmetro epochs no seu script de treinamento.
Link to this sectionParada antecipada (Early Stopping)#
A parada antecipada é uma técnica valiosa para otimizar o treinamento de modelos. Ao monitorar o desempenho de validação, você pode interromper o treinamento assim que o modelo parar de melhorar. Você pode economizar recursos computacionais e evitar o overfitting.
O processo envolve definir um parâmetro de paciência que determina quantas épocas esperar por uma melhoria nas métricas de validação antes de interromper o treinamento. Se o desempenho do modelo não melhorar dentro dessas épocas, o treinamento é interrompido para evitar desperdício de tempo e recursos.
Para o YOLO26, você pode habilitar a parada antecipada definindo o parâmetro de paciência na sua configuração de treinamento. Por exemplo, patience=5 significa que o treinamento será interrompido se não houver melhoria nas métricas de validação por 5 épocas consecutivas. Usar este método garante que o processo de treinamento permaneça eficiente e alcance o desempenho ideal sem computação excessiva.
Link to this sectionEscolhendo entre treinamento na nuvem e local#
Existem duas opções para treinar seu modelo: treinamento na nuvem e treinamento local.
O treinamento na nuvem oferece escalabilidade e hardware poderoso e é ideal para lidar com grandes conjuntos de dados e modelos complexos. Plataformas como Google Cloud, AWS e Azure fornecem acesso sob demanda a GPUs e TPUs de alto desempenho, acelerando os tempos de treinamento e permitindo experimentos com modelos maiores. No entanto, o treinamento na nuvem pode ser caro, especialmente por longos períodos, e a transferência de dados pode aumentar os custos e a latência.
O treinamento local oferece maior controle e personalização, permitindo que você adapte seu ambiente às necessidades específicas e evite custos contínuos de nuvem. Pode ser mais econômico para projetos de longo prazo e, como seus dados permanecem no local, é mais seguro. No entanto, o hardware local pode ter limitações de recursos e exigir manutenção, o que pode levar a tempos de treinamento mais longos para modelos grandes.
Link to this sectionSelecionando um otimizador#
Um otimizador é um algoritmo que ajusta os pesos da sua rede neural para minimizar a função de perda, que mede quão bem o modelo está se saindo. Em termos simples, o otimizador ajuda o modelo a aprender ajustando seus parâmetros para reduzir erros. Escolher o otimizador certo afeta diretamente a rapidez e a precisão com que o modelo aprende.
Você também pode ajustar os parâmetros do otimizador para melhorar o desempenho do modelo. Ajustar a taxa de aprendizado define o tamanho dos passos ao atualizar parâmetros. Para estabilidade, você pode começar com uma taxa de aprendizado moderada e diminuí-la gradualmente ao longo do tempo para melhorar o aprendizado a longo prazo. Além disso, definir o momento determina quanta influência as atualizações passadas têm nas atualizações atuais. Um valor comum para momento é cerca de 0.9. Geralmente, ele fornece um bom equilíbrio.
Link to this sectionOtimizadores comuns#
Diferentes otimizadores têm várias forças e fraquezas. Vamos dar uma olhada em alguns otimizadores comuns.
-
SGD (Stochastic Gradient Descent - Descida de Gradiente Estocástica):
- Atualiza os parâmetros do modelo usando o gradiente da função de perda em relação aos parâmetros.
- Simples e eficiente, mas pode ser lento para convergir e pode ficar preso em mínimos locais.
-
Adam (Adaptive Moment Estimation - Estimativa de Momento Adaptativo):
- Combina os benefícios do SGD com momento e RMSProp.
- Ajusta a taxa de aprendizado para cada parâmetro com base em estimativas dos primeiros e segundos momentos dos gradientes.
- Bem adequado para dados ruidosos e gradientes esparsos.
- Eficiente e geralmente requer menos ajustes, tornando-o um otimizador recomendado para o YOLO26.
-
RMSProp (Root Mean Square Propagation):
- Ajusta a taxa de aprendizado para cada parâmetro dividindo o gradiente por uma média móvel das magnitudes dos gradientes recentes.
- Ajuda a lidar com o problema do gradiente desaparecendo e é eficaz para redes neurais recorrentes.
-
MuSGD (Híbrido Muon + SGD):
- Combina atualizações estilo SGD com comportamento inspirado em Muon para maior estabilidade em treinamento em larga escala.
- Uma boa escolha quando você deseja generalização tipo SGD, mas precisa de uma convergência mais suave do que o SGD puro.
- Especialmente relevante para receitas de treinamento do YOLO26; se não tiver certeza, comece com
optimizer=autoe compare com o MuSGD no seu conjunto de dados.
Para o YOLO26, o parâmetro optimizer permite que você escolha entre vários otimizadores, incluindo SGD, MuSGD, Adam, AdamW, NAdam, RAdam e RMSProp, ou você pode configurá-lo como auto para seleção automática com base na configuração do modelo.
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDLink to this sectionConectando-se com a comunidade#
Fazer parte de uma comunidade de entusiastas da visão computacional pode ajudar você a resolver problemas e aprender mais rápido. Aqui estão algumas maneiras de se conectar, obter ajuda e compartilhar ideias.
Link to this sectionRecursos da comunidade#
- GitHub Issues: Visite o repositório GitHub do YOLO26 e use a aba Issues para fazer perguntas, relatar bugs e sugerir novos recursos. A comunidade e os mantenedores são muito ativos e estão prontos para ajudar.
- Servidor Discord do Ultralytics: Junte-se ao servidor Discord do Ultralytics para conversar com outros usuários e desenvolvedores, obter suporte e compartilhar suas experiências.
Link to this sectionDocumentação Oficial#
- Documentação Ultralytics YOLO26: Confira a documentação oficial do YOLO26 para guias detalhados e dicas úteis sobre vários projetos de visão computacional.
Usar esses recursos ajudará você a resolver desafios e manter-se atualizado com as últimas tendências e práticas na comunidade de visão computacional.
Link to this sectionPrincipais conclusões#
Treinar modelos de visão computacional envolve seguir boas práticas, otimizar suas estratégias e resolver problemas à medida que surgem. Técnicas como ajustar tamanhos de lote, treinamento de precisão mista e começar com pesos pré-treinados podem fazer seus modelos funcionarem melhor e treinarem mais rápido. Métodos como treinamento em subconjunto e parada antecipada ajudam você a economizar tempo e recursos. Manter-se conectado com a comunidade e acompanhar novas tendências ajudará você a continuar aprimorando suas habilidades de treinamento de modelo.
Link to this sectionFAQ#
Link to this sectionComo posso melhorar a utilização da GPU ao treinar um grande conjunto de dados com o Ultralytics YOLO?#
Para melhorar a utilização da GPU, define o parâmetro batch na tua configuração de treino para o tamanho máximo suportado pela tua GPU. Isto garante que tiras o máximo proveito das capacidades da GPU, reduzindo o tempo de treino. Se encontrares erros de memória, reduz gradualmente o tamanho do batch até que o treino corra sem problemas. Para o YOLO26, definir batch=-1 no teu script de treino determinará automaticamente o tamanho de batch ideal para um processamento eficiente. Para mais informações, consulta a configuração de treino.
Link to this sectionO que é treinamento de precisão mista e como eu o habilito no YOLO26?#
O treinamento de precisão mista utiliza tipos de ponto flutuante de 16 bits (FP16) e 32 bits (FP32) para equilibrar a velocidade computacional e a precisão. Esta abordagem acelera o treinamento e reduz o uso de memória sem sacrificar a precisão do modelo. Para habilitar o treinamento de precisão mista no YOLO26, defina o parâmetro amp como True na sua configuração de treinamento. Isso ativa o treinamento de Precisão Mista Automática (AMP). Para mais detalhes sobre esta técnica de otimização, veja a configuração de treinamento.
Link to this sectionComo o treinamento multiescala aprimora o desempenho do modelo YOLO26?#
O treinamento multiescala aprimora o desempenho do modelo treinando em imagens de tamanhos variados, permitindo que o modelo generalize melhor em diferentes escalas e distâncias. No YOLO26, você pode habilitar o treinamento multiescala definindo o parâmetro scale na configuração de treinamento. Por exemplo, scale=0.5 amostra um fator de zoom entre 0.5 e 1.5, depois preenche/corta de volta para imgsz. Esta técnica simula objetos em diferentes distâncias, tornando o modelo mais robusto em vários cenários. Para configurações e mais detalhes, confira a configuração de treinamento.
Link to this sectionComo posso usar pesos pré-treinados para acelerar o treinamento no YOLO26?#
Usar pesos pré-treinados pode acelerar bastante o treinamento e aprimorar a precisão do modelo ao aproveitar um modelo que já está familiarizado com recursos visuais fundamentais. No YOLO26, basta definir o parâmetro pretrained como True ou fornecer um caminho para seus pesos pré-treinados personalizados na configuração de treinamento. Este método, chamado transfer learning, permite que modelos treinados em grandes conjuntos de dados sejam adaptados efetivamente à sua aplicação específica. Saiba mais sobre como usar pesos pré-treinados e seus benefícios no guia de configuração de treinamento.
Link to this sectionQual é o número recomendado de épocas para treinar um modelo e como eu configuro isso no YOLO26?#
O número de épocas refere-se às passagens completas pelo conjunto de dados de treinamento durante o treinamento do modelo. Um ponto de partida típico são 300 épocas. Se o seu modelo sofrer overfitting precocemente, você pode reduzir o número. Alternativamente, se o overfitting não for observado, você pode estender o treinamento para 600, 1200 ou mais épocas. Para definir isso no YOLO26, use o parâmetro epochs no seu script de treinamento. Para aconselhamento adicional sobre como determinar o número ideal de épocas, consulte esta seção sobre número de épocas.