Aprende como as técnicas de otimização de modelos, como a afinação de hiperparâmetros, a poda de modelos e a quantização de modelos, podem ajudar os modelos de visão por computador a funcionar de forma mais eficiente.
A otimização de modelos é um processo que visa melhorar a eficiência e o desempenho dos modelos de aprendizagem automática. Ao refinar a estrutura e a função de um modelo, a otimização permite que os modelos forneçam melhores resultados com o mínimo de recursos computacionais e um tempo de formação e avaliação reduzido.
Esse processo é especialmente importante em campos como a visão computacional, onde os modelos geralmente exigem recursos substanciais para analisar imagens complexas. Em ambientes com recursos limitados, como dispositivos móveis ou sistemas de ponta, os modelos optimizados podem funcionar bem com recursos limitados, mantendo a precisão.
Várias técnicas são normalmente usadas para alcançar a otimização de modelos, incluindo ajuste de hiperparâmetros, poda de modelos, quantização de modelos e precisão mista. Neste artigo, vamos explorar essas técnicas e os benefícios que elas trazem para as aplicações de visão computacional. Vamos começar!
Os modelos de visão por computador têm normalmente camadas profundas e estruturas complexas que são óptimas para reconhecer padrões intrincados nas imagens, mas também podem ser bastante exigentes em termos de capacidade de processamento. Quando estes modelos são implementados em dispositivos com hardware limitado, como telemóveis ou dispositivos de ponta, podem enfrentar certos desafios ou limitações.
O poder de processamento, a memória e a energia limitados destes dispositivos podem levar a quedas notáveis no desempenho, uma vez que os modelos têm dificuldade em acompanhar o ritmo. As técnicas de otimização de modelos são fundamentais para resolver estes problemas. Ajudam a simplificar o modelo, a reduzir as suas necessidades computacionais e a garantir que continua a funcionar eficazmente, mesmo com recursos limitados. A otimização do modelo pode ser feita simplificando a arquitetura do modelo, reduzindo a precisão dos cálculos ou removendo componentes desnecessários para tornar o modelo mais leve e mais rápido.
Seguem-se algumas das técnicas de otimização de modelos mais comuns, que serão exploradas em maior detalhe nas secções seguintes:
Podes ajudar um modelo a aprender e a ter um melhor desempenho, ajustando os seus hiperparâmetros - definições que moldam a forma como o modelo aprende com os dados. O ajuste de hiperparâmetros é uma técnica para otimizar estas definições, melhorando a eficiência e a precisão do modelo. Ao contrário dos parâmetros que o modelo aprende durante o treinamento, os hiperparâmetros são valores predefinidos que orientam o processo de treinamento.
Vamos ver alguns exemplos de hiperparâmetros que podem ser ajustados:
A afinação de hiperparâmetros começa geralmente com a definição de um intervalo de valores possíveis para cada hiperparâmetro. Em seguida, um algoritmo de pesquisa explora diferentes combinações dentro desses intervalos para identificar as configurações que produzem o melhor desempenho.
Os métodos de afinação mais comuns incluem a pesquisa em grelha, a pesquisa aleatória e a otimização Bayesiana. A pesquisa em grelha testa todas as combinações possíveis de valores dentro dos intervalos especificados. A pesquisa aleatória seleciona combinações aleatoriamente, geralmente encontrando configurações eficazes mais rapidamente. A otimização Bayesiana utiliza um modelo probabilístico para prever valores de hiperparâmetros promissores com base em resultados anteriores. Esta abordagem reduz normalmente o número de tentativas necessárias.
Por fim, para cada combinação de hiperparâmetros, avalia o desempenho do modelo. O processo repete-se até obteres os resultados desejados.
Enquanto trabalhas na afinação de hiperparâmetros, podes perguntar-te qual é a diferença entre hiperparâmetros e parâmetros do modelo.
Os hiperparâmetros são valores definidos antes do treino que controlam a forma como o modelo aprende, como a taxa de aprendizagem ou o tamanho do lote. Estas definições são fixas durante o treino e influenciam diretamente o processo de aprendizagem. Os parâmetros do modelo, por outro lado, são aprendidos pelo próprio modelo durante o treinamento. Estes incluem pesos e enviesamentos, que se ajustam à medida que o modelo treina e, em última análise, orientam as suas previsões. Essencialmente, os hiperparâmetros moldam o percurso de aprendizagem, enquanto os parâmetros do modelo são os resultados desse processo de aprendizagem.
A poda de modelos é uma técnica de redução de tamanho que remove pesos e parâmetros desnecessários de um modelo, tornando-o mais eficiente. Na visão computacional, especialmente com redes neurais profundas, um grande número de parâmetros, como pesos e ativações (saídas intermediárias que ajudam a calcular a saída final), pode aumentar tanto a complexidade quanto as demandas computacionais. A poda ajuda a simplificar o modelo, identificando e removendo parâmetros que contribuem minimamente para o desempenho, resultando em um modelo mais leve e eficiente.
Depois de o modelo ser treinado, técnicas como a poda baseada na magnitude ou a análise de sensibilidade podem avaliar a importância de cada parâmetro. Os parâmetros de baixa importância são então podados, utilizando uma das três técnicas principais: poda de pesos, poda de neurónios ou poda estruturada.
A poda de peso remove conexões individuais com impacto mínimo na saída. A poda de neurónios remove neurónios inteiros cujas saídas contribuem pouco para a função do modelo. A poda estruturada elimina secções maiores, como filtros convolucionais ou neurónios em camadas totalmente ligadas, optimizando a eficiência do modelo. Uma vez concluída a poda, o modelo é treinado novamente para ajustar os parâmetros restantes, garantindo que ele mantenha a alta precisão em uma forma reduzida.
A quantização do modelo reduz o número de bits utilizados para representar os pesos e as activações de um modelo. Normalmente, converte valores de ponto flutuante de 32 bits de alta precisão em valores de menor precisão, como números inteiros de 16 ou 8 bits. Ao reduzir a precisão dos bits, a quantização diminui significativamente o tamanho do modelo, o espaço de memória e o custo computacional.
Na visão por computador, os valores flutuantes de 32 bits são a norma, mas a conversão para 16 ou 8 bits pode melhorar a eficiência. Existem dois tipos principais de quantização: quantização de peso e quantização de ativação. A quantização de pesos reduz a precisão dos pesos do modelo, equilibrando a redução do tamanho com a precisão. A quantização da ativação reduz a precisão das activações, diminuindo ainda mais a memória e as exigências computacionais.
A precisão mista é uma técnica que utiliza diferentes precisões numéricas para várias partes de uma rede neural. Ao combinar valores de maior precisão, como os floats de 32 bits, com valores de menor precisão, como os floats de 16 ou 8 bits, a precisão mista permite que os modelos de visão por computador acelerem o treino e reduzam a utilização de memória sem sacrificar a exatidão.
Durante o treino, a precisão mista é obtida através da utilização de uma precisão mais baixa em camadas específicas, mantendo uma precisão mais elevada quando necessário em toda a rede. Isto é feito através de casting e escalonamento de perdas. A conversão converte os tipos de dados entre diferentes precisões, conforme exigido pelo modelo. O escalonamento de perdas ajusta a precisão reduzida para evitar o underflow numérico, garantindo um treinamento estável. A precisão mista é especialmente útil para modelos grandes e tamanhos de lote grandes.
Agora que já abordámos várias técnicas de otimização de modelos, vamos discutir como decidir qual delas utilizar com base nas tuas necessidades específicas. A escolha depende de factores como o hardware disponível, as restrições computacionais e de memória do ambiente de implementação e o nível de precisão necessário.
Por exemplo, os modelos mais pequenos e mais rápidos são mais adequados para dispositivos móveis com recursos limitados, enquanto os modelos maiores e mais precisos podem ser utilizados em sistemas de elevado desempenho. Vê aqui como cada técnica se alinha com diferentes objectivos:
A otimização de modelos é uma parte vital da aprendizagem automática, especialmente para a implementação da IA em aplicações do mundo real. Técnicas como a afinação de hiperparâmetros, a poda de modelos, a quantização e a precisão mista ajudam a melhorar o desempenho, a eficiência e a utilização de recursos dos modelos de visão por computador. Essas otimizações tornam os modelos mais rápidos e menos intensivos em recursos, o que é ideal para dispositivos com memória e poder de processamento limitados. Os modelos optimizados são também mais fáceis de escalar e implementar em diferentes plataformas, permitindo soluções de IA que são eficazes e adaptáveis a uma vasta gama de utilizações.
Visita orepositório GitHub Ultralytics e junta-te à nossa comunidade para saberes mais sobre as aplicações de IA no fabrico e na agricultura.
Começa a tua viagem com o futuro da aprendizagem automática