Saltar para o conteúdo

Melhores práticas de aprendizagem automática e sugestões para o treino de modelos

Introdução

Um dos passos mais importantes quando se trabalha num projeto de visão computacional é o treino do modelo. Antes de chegar a esta etapa, é necessário definir os objectivos e recolher e anotar os dados. Depois de pré-processar os dados para se certificar de que estão limpos e consistentes, pode passar ao treino do seu modelo.



Ver: Dicas de treinamento de modelos | Como lidar com grandes conjuntos de dados | Tamanho do lote, GPU Utilização e Precisão mista

Então, o que é a formação de modelos? O treino de modelos é o processo de ensinar o seu modelo a reconhecer padrões visuais e a fazer previsões com base nos seus dados. Tem um impacto direto no desempenho e na precisão da sua aplicação. Neste guia, abordaremos as melhores práticas, técnicas de otimização e dicas de resolução de problemas para o ajudar a treinar eficazmente os seus modelos de visão por computador.

Como treinar um modelo de aprendizagem automática

Um modelo de visão por computador é treinado através do ajuste dos seus parâmetros internos para minimizar os erros. Inicialmente, o modelo é alimentado com um grande conjunto de imagens rotuladas. Faz previsões sobre o que está nessas imagens e as previsões são comparadas com as etiquetas ou conteúdos reais para calcular os erros. Estes erros mostram a distância entre as previsões do modelo e os valores reais.

Durante o treino, o modelo faz previsões iterativamente, calcula os erros e actualiza os seus parâmetros através de um processo denominado retropropagação. Neste processo, o modelo ajusta os seus parâmetros internos (weights and biases) para reduzir os erros. Ao repetir este ciclo várias vezes, o modelo melhora gradualmente a sua precisão. Com o tempo, aprende a reconhecer padrões complexos, como formas, cores e texturas.

O que é a retropropagação?

Este processo de aprendizagem permite que o modelo de visão computacional execute várias tarefas, incluindo a deteção de objectos, a segmentação de instâncias e a classificação de imagens. O objetivo final é criar um modelo que possa generalizar a sua aprendizagem a imagens novas e inéditas, para que possa compreender com precisão os dados visuais em aplicações do mundo real.

Agora que sabemos o que está a acontecer nos bastidores quando treinamos um modelo, vejamos os pontos a considerar quando treinamos um modelo.

Formação em grandes conjuntos de dados

Há alguns aspectos diferentes a ter em conta quando se planeia utilizar um grande conjunto de dados para treinar um modelo. Por exemplo, pode ajustar o tamanho do lote, controlar a utilização de GPU , optar por utilizar formação em várias escalas, etc. Vamos analisar cada uma destas opções em pormenor.

Tamanho do lote e GPU Utilização

Ao treinar modelos em grandes conjuntos de dados, a utilização eficiente do seu GPU é fundamental. O tamanho do lote é um fator importante. É o número de amostras de dados que um modelo de aprendizagem automática processa numa única iteração de formação. Utilizando o tamanho máximo de lote suportado pelo seu GPU, pode tirar o máximo partido das suas capacidades e reduzir o tempo de formação do modelo. No entanto, é necessário evitar ficar sem memória GPU . Se encontrar erros de memória, reduza o tamanho do lote gradualmente até que o modelo seja treinado sem problemas.

Relativamente a YOLO11, é possível definir o batch_size no parâmetro configuração da formação para corresponder à sua capacidade GPU . Além disso, a definição de batch=-1 no seu script de treino determinará automaticamente o tamanho do lote que podem ser processados de forma eficiente com base nas capacidades do seu dispositivo. Ao ajustar o tamanho do lote, pode tirar o máximo partido dos recursos do GPU e melhorar o processo de formação global.

Formação de subconjuntos

A formação de subconjuntos é uma estratégia inteligente que envolve a formação do seu modelo num conjunto mais pequeno de dados que representa o conjunto de dados maior. Pode poupar tempo e recursos, especialmente durante o desenvolvimento e teste inicial do modelo. Se estiver com pouco tempo ou a experimentar diferentes configurações de modelos, a formação de subconjuntos é uma boa opção.

No que diz respeito a YOLO11, pode implementar facilmente a formação de subconjuntos utilizando o fraction parâmetro. Este parâmetro permite-lhe especificar qual a fração do seu conjunto de dados a utilizar para treino. Por exemplo, definir fraction=0.1 treinará seu modelo em 10% dos dados. Pode utilizar esta técnica para iterações rápidas e para afinar o seu modelo antes de se comprometer a treinar um modelo utilizando um conjunto de dados completo. A formação de subconjuntos ajuda-o a progredir rapidamente e a identificar potenciais problemas numa fase inicial.

Formação multi-escala

A formação multiescala é uma técnica que melhora a capacidade de generalização do seu modelo, treinando-o em imagens de diferentes tamanhos. O seu modelo pode aprender a detetar objectos a diferentes escalas e distâncias e tornar-se mais robusto.

Por exemplo, ao treinar YOLO11, pode ativar o treino multi-escala definindo o scale parâmetro. Este parâmetro ajusta o tamanho das imagens de treino por um fator especificado, simulando objectos a diferentes distâncias. Por exemplo, definir scale=0.5 reduzirá o tamanho da imagem para metade, enquanto que scale=2.0 irá duplicá-lo. A configuração deste parâmetro permite que o seu modelo experimente uma variedade de escalas de imagem e melhore as suas capacidades de deteção em diferentes tamanhos de objectos e cenários.

Armazenamento em cache

O armazenamento em cache é uma técnica importante para melhorar a eficiência da formação de modelos de aprendizagem automática. Ao armazenar imagens pré-processadas na memória, o armazenamento em cache reduz o tempo que o GPU gasta à espera que os dados sejam carregados a partir do disco. O modelo pode receber dados continuamente sem atrasos causados por operações de E/S do disco.

O armazenamento em cache pode ser controlado durante o treinamento YOLO11 usando o cache parâmetro:

  • cache=True: Armazena as imagens do conjunto de dados na RAM, proporcionando a velocidade de acesso mais rápida, mas à custa de uma maior utilização da memória.
  • cache='disk': Armazena as imagens no disco, mais lento do que a RAM mas mais rápido do que carregar dados novos de cada vez.
  • cache=False: Desactiva o armazenamento em cache, baseando-se inteiramente na E/S do disco, que é a opção mais lenta.

Treino de precisão misto

A formação de precisão mista utiliza tipos de vírgula flutuante de 16 bits (FP16) e 32 bits (FP32). Os pontos fortes do FP16 e do FP32 são aproveitados usando o FP16 para computação mais rápida e o FP32 para manter a precisão quando necessário. A maioria das operações da rede neural é efectuada em FP16 para beneficiar de um cálculo mais rápido e de uma menor utilização 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 dos pesos. É possível lidar com modelos maiores ou tamanhos de lote maiores dentro das mesmas restrições de hardware.

Visão geral do treino de precisão misto

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 Tensorflowoferecem suporte integrado para precisão mista.

O treino de precisão mista é simples quando se trabalha com YOLO11. Pode utilizar o amp na sua configuração de formação. Configuração amp=True permite a formação automática de precisão mista (AMP). A formação de precisão mista é uma forma simples mas eficaz de otimizar o seu processo de formação de modelos.

Pesos pré-treinados

Usar pesos pré-treinados é uma maneira inteligente de acelerar o processo de treinamento do seu modelo. Os 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 os modelos pré-treinados a tarefas novas e 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 formação resulta em tempos de formação mais rápidos e, frequentemente, num melhor desempenho, porque o modelo começa com uma sólida compreensão das caraterísticas básicas.

O pretrained O parâmetro facilita a aprendizagem por transferência com YOLO11. Definição pretrained=True utilizará pesos pré-treinados predefinidos ou pode especificar um caminho para um modelo pré-treinado personalizado. A utilização de pesos pré-treinados e a aprendizagem por transferência aumentam efetivamente as capacidades do seu modelo e reduzem os custos de formação.

Outras técnicas a considerar quando se lida com um grande conjunto de dados

Existem algumas outras técnicas a considerar quando se lida com um grande conjunto de dados:

  • Programadores de taxas de aprendizagem: A implementação de programadores de taxas de aprendizagem ajusta dinamicamente a taxa de aprendizagem durante o treino. Uma taxa de aprendizagem bem ajustada pode evitar que o modelo ultrapasse os mínimos e melhorar a estabilidade. Ao treinar YOLO11, o lrf ajuda a gerir a programação da taxa de aprendizagem, definindo a taxa de aprendizagem final como uma fração da taxa inicial.
  • Formação distribuída: Para lidar com grandes conjuntos de dados, o treinamento distribuído pode ser um divisor de águas. É possível reduzir o tempo de treinamento distribuindo a carga de trabalho de treinamento em várias GPUs ou máquinas.

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 actualiza 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 aperfeiçoe os seus parâmetros ao longo do tempo.

Uma questão 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 se ajustar demasiado cedo, pode reduzir o número de épocas. Se o sobreajuste não ocorrer após 300 épocas, pode prolongar o treino para 600, 1200 ou mais épocas.

No entanto, o número ideal de épocas pode variar com base no tamanho do conjunto de dados e nos objectivos do projeto. Os conjuntos de dados maiores podem exigir mais épocas para que o modelo aprenda eficazmente, enquanto os conjuntos de dados mais pequenos podem precisar de menos épocas para evitar o sobreajuste. Com relação a YOLO11, é possível definir o parâmetro epochs no seu guião de formação.

Paragem antecipada

A interrupção antecipada é uma técnica valiosa para otimizar a formação de modelos. Ao monitorizar o desempenho da validação, pode interromper a formação assim que o modelo deixar de melhorar. Pode poupar recursos computacionais e evitar o sobreajuste.

O processo envolve a definição de um parâmetro de paciência que determina o número de épocas a aguardar por uma melhoria nas métricas de validação antes de parar o treino. Se o desempenho do modelo não melhorar dentro destas épocas, o treino é interrompido para evitar o desperdício de tempo e recursos.

Visão geral da interrupção precoce

Para YOLO11, pode ativar a paragem antecipada definindo o parâmetro patience na sua configuração de formação. Por exemplo, patience=5 significa que a formação será interrompida se não houver melhorias nas métricas de validação durante 5 épocas consecutivas. A utilização deste método garante que o processo de formação permanece eficiente e atinge um desempenho ótimo sem computação excessiva.

Escolher entre formação na nuvem e local

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

A formação em nuvem oferece escalabilidade e hardware potente e é ideal para lidar com grandes conjuntos de dados e modelos complexos. Plataformas como Google Cloud, AWS e Azure fornecem acesso a pedido a GPUs e TPUs de elevado desempenho, acelerando os tempos de formação e permitindo experiências com modelos maiores. No entanto, o treino na nuvem pode ser dispendioso, especialmente durante longos períodos, e a transferência de dados pode aumentar os custos e a latência.

A formação local proporciona um maior controlo e personalização, permitindo-lhe adaptar o seu ambiente a necessidades específicas e evitar custos contínuos com a nuvem. Pode ser mais económico para projectos de longo prazo e, uma vez que os 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 formação mais longos para modelos grandes.

Seleção de um optimizador

Um optimizador é um algoritmo que ajusta os pesos da rede neural para minimizar a função de perda, que mede o desempenho do modelo. Em termos mais simples, o optimizador ajuda o modelo a aprender, ajustando os seus parâmetros para reduzir os erros. A escolha do otimizador correto afeta diretamente a rapidez e a precisão do aprendizado do modelo.

Também é possível ajustar os parâmetros do optimizador para melhorar o desempenho do modelo. O ajuste da taxa de aprendizagem define o tamanho dos passos ao atualizar os parâmetros. Para estabilidade, pode começar com uma taxa de aprendizagem moderada e diminuí-la gradualmente ao longo do tempo para melhorar a aprendizagem a longo prazo. Além disso, a definição do momento determina a influência que as actualizações anteriores têm nas actualizações actuais. Um valor comum para o momento é cerca de 0,9. Geralmente proporciona um bom equilíbrio.

Optimizadores comuns

Os diferentes optimizadores têm vários pontos fortes e fracos. Vamos dar uma vista de olhos a alguns optimizadores comuns.

  • SGD (Stochastic Gradient Descent):

    • Actualiza os parâmetros do modelo utilizando o gradiente da função de perda em relação aos parâmetros.
    • Simples e eficiente, mas pode ser lento a convergir e pode ficar preso em mínimos locais.
  • Adam (Adaptive Moment Estimation):

    • Combina as vantagens do SGD com o momentum e do RMSProp.
    • Ajusta a taxa de aprendizagem para cada parâmetro com base nas estimativas do primeiro e segundo momentos dos gradientes.
    • Adequado para dados ruidosos e gradientes esparsos.
    • Eficiente e geralmente requer menos ajustes, tornando-o um optimizador recomendado para YOLO11.
  • RMSProp (Root Mean Square Propagation):

    • Ajusta a taxa de aprendizagem para cada parâmetro, dividindo o gradiente por uma média de execução das magnitudes dos gradientes recentes.
    • Ajuda a resolver o problema do gradiente de fuga e é eficaz para redes neuronais recorrentes.

Para YOLO11, o optimizer permite-lhe escolher entre vários optimizadores, incluindo SGD, Adam, AdamW, NAdam, RAdam e RMSProp, ou pode defini-lo como auto para seleção automática com base na configuração do modelo.

Ligação à comunidade

Fazer parte de uma comunidade de entusiastas da visão computacional pode ajudá-lo a resolver problemas e a aprender mais rapidamente. Aqui estão algumas formas de se ligar, obter ajuda e partilhar ideias.

Recursos comunitários

  • Problemas do GitHub: Visite o repositórioYOLO11 GitHub e use a guia Problemas para fazer perguntas, relatar bugs e sugerir novos recursos. A comunidade e os mantenedores são muito ativos e estão prontos para ajudar.
  • Ultralytics Servidor Discord: Junte-se ao servidor Discord deUltralytics para conversar com outros utilizadores e programadores, obter apoio e partilhar as suas experiências.

Documentação oficial

  • Ultralytics YOLO11 Documentação: Consulte a documentação oficial do YOLO11 para obter guias detalhados e dicas úteis sobre vários projectos de visão computacional.

A utilização destes recursos ajudá-lo-á a resolver desafios e a manter-se atualizado com as últimas tendências e práticas na comunidade da 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 eles surgem. Técnicas como ajuste de tamanhos de lote, treinamento de precisão mista e início com pesos pré-treinados podem fazer com que seus modelos funcionem melhor e sejam treinados mais rapidamente. Métodos como a formação de subconjuntos e a paragem antecipada ajudam-no a poupar tempo e recursos. Manter-se ligado à comunidade e acompanhar as novas tendências ajudá-lo-á a continuar a melhorar as suas competências de treino de modelos.

FAQ

Como posso melhorar a utilização de GPU quando treino um grande conjunto de dados com Ultralytics YOLO ?

Para melhorar a utilização do GPU , defina o batch_size na sua configuração de formação para o tamanho máximo suportado pelo seu GPU. Isto garante a utilização total das capacidades do GPU, reduzindo o tempo de formação. Se encontrar erros de memória, reduza gradualmente o tamanho do lote até que a formação decorra sem problemas. Para YOLO11, a configuração batch=-1 no seu script de formação determinará automaticamente o tamanho ideal do lote para um processamento eficiente. Para mais informações, consulte a secção configuração da formação.

O que é o treino de precisão misto e como o posso ativar em YOLO11?

O treino de precisão mista utiliza tipos de vírgula flutuante de 16 bits (FP16) e 32 bits (FP32) para equilibrar a velocidade computacional e a precisão. Esta abordagem acelera o treino e reduz a utilização de memória sem sacrificar o modelo exatidão. Para ativar a formação de precisão mista em YOLO11, defina amp parâmetro para True na sua configuração de treino. Isto ativa o treino de precisão mista automática (AMP). Para obter mais detalhes sobre esta técnica de otimização, consulte a configuração da formação.

Como é que o treino multi-escala melhora o desempenho do modelo YOLO11 ?

O treinamento multiescala melhora o desempenho do modelo treinando em imagens de tamanhos variados, permitindo que o modelo generalize melhor em diferentes escalas e distâncias. Em YOLO11, é possível ativar o treino multiescala definindo o parâmetro scale na configuração de treino. Por exemplo, scale=0.5 reduz o tamanho da imagem para metade, enquanto scale=2.0 duplica-o. Esta técnica simula objectos a diferentes distâncias, tornando o modelo mais robusto em vários cenários. Para obter definições e mais pormenores, consulte a configuração da formação.

Como é que posso utilizar pesos pré-treinados para acelerar o treino em YOLO11?

A utilização de pesos pré-treinados pode reduzir significativamente os tempos de treino e melhorar o desempenho do modelo, começando por um modelo que já compreende as caraterísticas básicas. Em YOLO11, é possível definir o pretrained parâmetro para True ou especifique um caminho para pesos personalizados pré-treinados na sua configuração de treinamento. Esta abordagem, conhecida como aprendizagem por transferência, aproveita o conhecimento de grandes conjuntos de dados para se adaptar à sua tarefa específica. Saiba mais sobre pesos pré-treinados e suas vantagens aqui.

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 se ajustar demasiado cedo, pode reduzir o número. Em alternativa, se não for observado um ajuste excessivo, pode prolongar o treino para 600, 1200 ou mais épocas. Para definir isso em YOLO11, use a opção epochs no seu script de treino. Para obter conselhos adicionais sobre como determinar o número ideal de épocas, consulte esta secção sobre número de épocas.

📅C riado há 5 meses ✏️ Atualizado há 1 mês

Comentários