Ir para o conteúdo

Melhores Práticas de Machine Learning e Dicas para Treino de Modelos

Introdução

Uma das etapas 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. Depois de pré-processar os dados para garantir que estejam limpos e consistentes, você pode passar para o treinamento do seu modelo.



Assista: Dicas de Treinamento de Modelo | Como Lidar com Grandes Conjuntos de Dados | Tamanho do Lote, Utilização da GPU e Precisão Mista

Então, o que é treinamento de modelo? Treinamento de modelo é o processo de ensinar seu modelo a reconhecer padrões visuais e fazer previsões com base em seus dados. Ele impacta diretamente o desempenho e a precisão de sua aplicação. Neste guia, abordaremos as melhores práticas, técnicas de otimização e dicas de solução de problemas para ajudá-lo a treinar seus modelos de visão computacional de forma eficaz.

Como Treinar um Modelo de Machine Learning

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 com os rótulos ou conteúdos reais para calcular os erros. Esses erros mostram o quão distantes 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 retropropagação. Nesse processo, o modelo ajusta seus parâmetros internos (pesos e bias) para reduzir os erros. Ao repetir esse ciclo várias vezes, o modelo melhora gradualmente sua precisão. Com o tempo, ele aprende a reconhecer padrões complexos, como formas, cores e texturas.

O que é retropropagação (Backpropagation)?

Este processo de aprendizado torna possível para o modelo de visão computacional executar várias tarefas, incluindo detecção de objetos, segmentação de instâncias e classificação de imagens. O objetivo final é criar um modelo que possa generalizar seu aprendizado para imagens novas e não vistas, para que possa entender com precisão os dados visuais em aplicações do mundo real.

Agora que sabemos o que está acontecendo nos bastidores quando treinamos um modelo, vamos analisar os pontos a serem considerados ao treinar um modelo.

Treinamento em Grandes Conjuntos de Dados

Existem alguns aspectos diferentes a serem considerados ao planejar o uso de um grande conjunto de dados para treinar um modelo. Por exemplo, você pode ajustar o tamanho do lote, controlar a utilização da GPU, optar por usar o treinamento multiescala, etc. Vamos analisar cada uma dessas opções em detalhes.

Tamanho do Lote e Utilização da GPU

Ao treinar modelos em grandes conjuntos de dados, utilizar eficientemente sua GPU é fundamental. O tamanho do lote é um fator importante. É o número de amostras de dados que um modelo de machine learning 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 seus recursos e reduzir o tempo que o treinamento do modelo leva. No entanto, você deve 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.



Assista: Como Usar Inferência em Lotes com Ultralytics YOLO26 | Acelere a Detecção de Objetos em Python 🎉

Em relação ao YOLO26, você pode definir o batch_size parâmetro no configuração de treinamento para corresponder à capacidade da sua GPU. Além disso, definir batch=-1 no seu script de treinamento determinará automaticamente o tamanho de 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 os recursos da sua GPU e melhorar o processo geral de treinamento.

Treinamento de Subconjunto

O treinamento de subconjunto é uma estratégia inteligente que envolve treinar seu modelo em um conjunto menor de dados que representa o conjunto de dados maior. Ele 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 de subconjunto é uma boa opção.

No que diz respeito ao YOLO26, você pode implementar facilmente o treinamento de subconjuntos usando o fraction parâmetro. Este parâmetro permite que você especifique qual fração do seu conjunto de dados usar para treinamento. Por exemplo, definindo fraction=0.1 irá treinar seu modelo em 10% dos dados. Você pode usar esta técnica para iterações rápidas e ajustar seu modelo antes de se comprometer a treinar um modelo usando um conjunto de dados completo. O treinamento de subconjuntos ajuda você a fazer um progresso rápido e identificar possíveis problemas precocemente.

Treinamento Multi-escala

O treinamento multiescala é uma técnica que melhora a capacidade do seu modelo de generalizar, treinando-o 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 scale parâmetro. Este parâmetro ajusta o tamanho das imagens de treinamento por um fator especificado, simulando objetos em diferentes distâncias. Por exemplo, definindo scale=0.5 Aplica zoom aleatoriamente nas imagens de treinamento por um fator entre 0,5 e 1,5 durante o treinamento. Configurar este parâmetro permite que seu modelo experimente uma variedade de escalas de imagem e melhore suas capacidades de detecção em diferentes tamanhos e cenários de objetos.

Ultralytics suporta o treinamento multiescala de tamanho de imagem através do multi_scale parâmetro. Ao contrário de scale, que amplia as imagens e, em seguida, preenche/recorta de volta para imgsz, multi_scale mudanças imgsz cada lote (arredondado para o intervalo do modelo). Por exemplo, com imgsz=640 e multi_scale=0.25, o tamanho do treino é amostrado de 480 até 800 em passos de intervalo (por exemplo, 480, 512, 544, ..., 800), enquanto multi_scale=0.0 mantém um tamanho fixo.

Armazenamento em cache

O armazenamento em 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 armazenamento em 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 cache parâmetro:

  • 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, dependendo inteiramente de E/S de disco, que é a opção mais lenta.

Treinamento com Precisão Mista

O treinamento com precisão mista utiliza tipos de ponto flutuante de 16 bits (FP16) e 32 bits (FP32). Os pontos fortes de FP16 e FP32 são aproveitados usando FP16 para computação mais rápida e FP32 para manter a precisão onde necessário. A maioria das operações da rede neural são feitas em FP16 para se beneficiar da computação mais rápida 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 tamanhos de lote maiores dentro das mesmas restrições de hardware.

Benefícios do treinamento FP16 de precisão mista

Para implementar o treinamento de precisão mista, você precisará modificar seus scripts de treinamento e garantir que seu hardware (como GPUs) o suporte. Muitas estruturas modernas de aprendizado profundo, 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 o amp flag na sua configuração de treinamento. Definindo amp=True ativa o treinamento de Precisão Mista Automática (AMP). O treinamento de precisão mista é uma maneira simples, mas eficaz, de otimizar o processo de treinamento do seu modelo.

Pesos 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. A aprendizagem por transferência adapta modelos pré-treinados a novas tarefas relacionadas. O ajuste fino 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, muitas vezes, melhor desempenho, porque o modelo começa com uma compreensão sólida das características básicas.

O pretrained parâmetro facilita o aprendizado por transferência (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 aprendizagem por transferência aumenta efetivamente as capacidades do seu modelo e reduz os custos de treinamento.

Outras Técnicas a Considerar ao Lidar com um Grande Conjunto de Dados

Existem algumas outras técnicas a serem consideradas ao lidar com um grande conjunto de dados:

  • Taxa de Aprendizagem Agendadores: A implementação de agendadores de taxa de aprendizado (learning rate schedulers) ajusta dinamicamente a taxa de aprendizado durante o treinamento. Uma taxa de aprendizado bem ajustada pode evitar que o modelo ultrapasse os mínimos e melhorar a estabilidade. Ao treinar o YOLO26, o lrf parâmetro ajuda 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 ser um divisor de águas. Você pode reduzir o tempo de treinamento distribuindo a carga de trabalho de treinamento por várias GPUs ou máquinas. Essa abordagem é particularmente valiosa para projetos de escala empresarial com recursos computacionais substanciais.

O 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 treino. Durante uma época, o modelo processa cada exemplo no conjunto de treino uma vez e atualiza os seus parâmetros com base no algoritmo de aprendizagem. Normalmente, são necessárias várias épocas para permitir que o modelo aprenda e refine os 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 superajustar precocemente, você pode reduzir o número de épocas. Se o superajuste 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 que o modelo aprenda de forma eficaz, enquanto conjuntos de dados menores podem precisar de menos épocas para evitar o overfitting. Em relação ao YOLO26, você pode definir o epochs parâmetro no seu script de treinamento.

Early Stopping

O early stopping é uma técnica valiosa para otimizar o treinamento do modelo. Ao monitorar o desempenho da validação, você pode interromper o treinamento quando o modelo para 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 o desperdício de tempo e recursos.

Interrupção precoce para evitar o sobreajuste do modelo

Para o YOLO26, você pode habilitar o early stopping definindo o parâmetro `patience` 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. O uso deste método garante que o processo de treinamento permaneça eficiente e alcance o desempenho ideal sem computação excessiva.

Escolhendo Entre Treinamento na Nuvem e Local

Existem duas opções para treinar seu modelo: treinamento na nuvem e treinamento local.

O treinamento em nuvem oferece escalabilidade e hardware poderoso, sendo 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 em 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 a necessidades específicas e evite custos contínuos na 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.

Selecionando um Otimizador

Um otimizador é um algoritmo que ajusta os pesos de sua rede neural para minimizar a função de perda, que mede o quão bem o modelo está performando. Em termos mais simples, o otimizador ajuda o modelo a aprender ajustando seus parâmetros para reduzir os 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 os 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 de longo prazo. Além disso, definir o momentum determina quanta influência as atualizações passadas têm nas atualizações atuais. Um valor comum para o momentum é em torno de 0,9. Geralmente, proporciona um bom equilíbrio.

Otimizadores Comuns

Diferentes otimizadores têm várias forças e fraquezas. Vamos dar uma olhada em alguns otimizadores comuns.

  • SGD (Stochastic Gradient Descent):

    • 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 (Estimativa Adaptativa de Momentos):

    • Combina os benefícios do SGD com momentum e RMSProp.
    • Ajusta a taxa de aprendizado para cada parâmetro com base nas estimativas dos primeiros e segundos momentos dos gradientes.
    • Adequado para dados ruidosos e gradientes esparsos.
    • Eficiente e geralmente requer menos ajuste, 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 no tratamento do problema do gradiente de desaparecimento e é eficaz para redes neurais recorrentes.

Para o YOLO26, o optimizer parâmetro permite que você escolha entre vários otimizadores, incluindo SGD, Adam, AdamW, NAdam, RAdam e RMSProp, ou você pode defini-lo para auto para seleção automática com base na configuração do modelo.

Conecte-se com a Comunidade

Fazer parte de uma comunidade de entusiastas de visão computacional pode ajudá-lo a resolver problemas e aprender mais rápido. Aqui estão algumas maneiras de se conectar, obter ajuda e compartilhar ideias.

Recursos da Comunidade

  • Problemas no GitHub (GitHub Issues): Visite o repositório YOLO26 no GitHub 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 Ultralytics Discord: Junte-se ao servidor Ultralytics Discord para conversar com outros usuários e desenvolvedores, obter suporte e compartilhar suas experiências.

Documentação Oficial

  • Documentação Ultralytics YOLO26: Consulte 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 a se manter atualizado com as últimas tendências e práticas na comunidade de visão computacional.

Principais Conclusões

O treinamento de 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 batch, treinamento de precisão mista e iniciar com pesos pré-treinados podem fazer com que seus modelos funcionem melhor e treinem mais rapidamente. Métodos como treinamento de subconjuntos e early stopping ajudam a economizar tempo e recursos. Manter-se conectado com a comunidade e acompanhar as novas tendências o ajudará a continuar aprimorando suas habilidades de treinamento de modelos.

FAQ

Como posso melhorar a utilização da GPU ao treinar um grande conjunto de dados com Ultralytics YOLO?

Para melhorar a utilização da GPU, defina o batch_size parâmetro na sua configuração de treino para o tamanho máximo suportado pela sua GPU. Isso garante que você utilize totalmente as capacidades da GPU, reduzindo o tempo de treino. Se encontrar erros de memória, reduza incrementalmente o tamanho do lote (batch size) até que o treino decorra sem problemas. Para YOLO26, definir batch=-1 no seu script de treinamento determinará automaticamente o tamanho ideal do lote para um processamento eficiente. Para mais informações, consulte o configuração de treinamento.

O que é treinamento de precisão mista e como habilitá-lo no YOLO26?

O treinamento com precisão mista utiliza tipos de ponto flutuante de 16 bits (FP16) e 32 bits (FP32) para equilibrar velocidade computacional e precisão. Essa abordagem acelera o treinamento e reduz o uso de memória sem sacrificar o modelo precisão. Para ativar o treino com precisão mista em YOLO26, defina o amp parâmetro para 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, consulte o configuração de treinamento.

Como o treinamento multiescala aprimora o desempenho do modelo YOLO26?

O treino multiescala melhora o desempenho do modelo ao treinar com imagens de tamanhos variados, permitindo que o modelo generalize melhor em diferentes escalas e distâncias. Em YOLO26, pode ativar o treino multiescala definindo o scale parâmetro na configuração de treinamento. Por exemplo, scale=0.5 amostra um fator de zoom entre 0,5 e 1,5, depois preenche/recorta de volta para imgsz. Essa técnica simula objetos em diferentes distâncias, tornando o modelo mais robusto em vários cenários. Para configurações e mais detalhes, consulte o configuração de treinamento.

Como posso usar pesos pré-treinados para acelerar o treinamento no YOLO26?

A utilização de pesos pré-treinados pode acelerar significativamente o treino e melhorar a precisão do modelo, aproveitando um modelo já familiarizado com características visuais fundamentais. Em YOLO26, basta definir o pretrained parâmetro para True ou forneça um caminho para seus pesos pré-treinados personalizados na configuração de treinamento. Este método, chamado de aprendizado por transferência (transfer learning), permite que modelos treinados em grandes conjuntos de dados sejam efetivamente adaptados à sua aplicação específica. Saiba mais sobre como usar pesos pré-treinados e seus benefícios na guia de configuração de treinamento.

O número de épocas refere-se às passagens completas pelo conjunto de dados de treino durante o treino do modelo. Um ponto de partida típico é 300 épocas. Se o seu modelo apresentar overfitting precocemente, pode reduzir o número. Alternativamente, se não for observado overfitting, pode estender o treino para 600, 1200 ou mais épocas. Para definir isto em YOLO26, utilize o epochs parâmetro no seu script de treinamento. Para obter conselhos adicionais sobre como determinar o número ideal de épocas, consulte esta seção sobre número de épocas.



📅 Criado há 1 ano ✏️ Atualizado há 4 dias
glenn-jocherRizwanMunawarUltralyticsAssistantY-T-Gartest08pderrengeronuralpszrwillie.maddox@gmail.comLaughing-qabirami-vina

Comentários