Simple Science

Ciência de ponta explicada de forma simples

# Informática# Visão computacional e reconhecimento de padrões# Aprendizagem de máquinas# Computação Neural e Evolutiva

Avanços no YOLOv5 Através de Técnicas de Compressão de Modelo

Uma visão geral dos métodos de poda e quantização aplicados ao YOLOv5.

― 12 min ler


Técnicas de Compressão doTécnicas de Compressão doYOLOv5 Exploradaspra melhorar o desempenho do YOLOv5.Revisando métodos de poda e quantização
Índice

Nos últimos anos, muito esforço foi colocado para melhorar os detectores de objetos YOLO. YOLO (You Only Look Once) é uma ferramenta popular usada em várias áreas, principalmente para identificar objetos em imagens. Desde que foi lançado, foram oito versões principais, todas focadas em torná-lo mais preciso e eficiente. Embora o YOLO tenha muitas vantagens, usá-lo em dispositivos com recursos limitados pode ser complicado. Para resolver esse problema, pesquisadores criaram várias maneiras de comprimir redes neurais, com foco principalmente em três métodos: Poda de rede, Quantização e destilação de conhecimento.

Os benefícios de usar métodos de Compressão de Modelo incluem a redução do uso de memória e o aumento da velocidade de processamento, o que os torna essenciais para usar grandes redes neurais em dispositivos com capacidades limitadas. Este panorama vai se concentrar na poda e na quantização porque são métodos flexíveis que podem ser aplicados facilmente. Vamos categorizar esses métodos e examinar os resultados de sua aplicação no YOLOv5.

Ao investigar esses métodos, vamos encontrar áreas onde a poda e a quantização podem ser melhoradas para o YOLOv5 e sugerir direções para pesquisas futuras. Escolhemos especificamente o YOLOv5 porque ele equilibra desenvolvimentos recentes e popularidade na literatura de pesquisa. Esta é a primeira análise detalhada que examina os métodos de poda e quantização para o YOLOv5 de uma perspectiva prática. Nossos achados também podem ser aplicados às versões mais novas do YOLO, que enfrentam desafios semelhantes ao serem implementadas em dispositivos com recursos limitados. Este trabalho é voltado para quem quer entender como usar métodos de compressão de modelo na prática no YOLOv5 e as diferentes técnicas disponíveis para futuras versões do YOLO.

Detecção de Objetos: Um Problema Chave

A detecção de objetos tem sido um foco significativo de pesquisa por muito tempo. A tarefa principal da detecção de objetos é identificar e localizar vários objetos dentro de uma imagem. Essa tarefa é fundamental para muitos processos avançados de visão computacional, incluindo segmentação semântica, rastreamento de objetos e reconhecimento de atividades.

Recentemente, modelos de Aprendizado Profundo, como Redes Neurais Convolucionais (CNNs), fizeram grandes avanços na detecção de objetos. O aumento do poder computacional e algoritmos avançados tornaram a detecção de objetos mais precisa, resultando em várias aplicações do mundo real. Usar CNNs simplifica os processos de extração de características, classificação e localização na detecção de objetos em comparação com métodos tradicionais.

Existem duas abordagens principais para a detecção de objetos: detecção de um estágio e detecção de dois estágios. Em um método de um estágio, o algoritmo prevê caixas delimitadoras e probabilidades de classes diretamente. Em uma abordagem de dois estágios, o algoritmo primeiro gera propostas de região e, em seguida, classifica essas propostas como objetos ou fundo.

Métodos de um estágio, como YOLO, Single Shot Detector (SSD), EfficientDet e RetinaNet, usam uma única rede neural convolucional totalmente para detectar classes e locais dos objetos sem etapas intermediárias. O YOLO se tornou muito popular desde sua introdução em 2016. A ideia principal por trás do YOLO é dividir uma imagem de entrada em uma grade e prever caixas delimitadoras e probabilidades de classe para cada célula. O YOLO aborda a detecção de objetos como um problema de regressão, otimizando ambas as tarefas em conjunto para melhorar o desempenho geral.

O YOLOv1 tinha uma estrutura simples com 24 camadas convolucionais e duas camadas totalmente conectadas para previsões. Desde então, o YOLO evoluiu através de várias melhorias e versões. O YOLOv2, lançado em 2017, trouxe melhorias de desempenho ao empregar treinamento em múltiplas escalas, caixas âncoras, normalização em lote, arquitetura Darknet-19 e uma nova função de perda.

Em seguida, o YOLOv3 introduziu uma rede de pirâmide de características, camadas convolucionais com caixas âncoras e uma arquitetura aprimorada com Darknet-53. O YOLOv4, desenvolvido por diferentes autores, melhorou ainda mais o desempenho através do uso de uma nova arquitetura e várias técnicas.

Em 2020, o YOLOv5 foi lançado, incluindo cinco tamanhos diferentes para atender a diferentes necessidades. O YOLOv5 fez mudanças significativas, incluindo uma nova estrutura de backbone e automação para ajuste de hiperparâmetros. O backbone do YOLOv5 usa uma nova estrutura chamada CSPDarknet53, melhorando o processamento e a precisão. Seu neck aproveita CSP-PAN e uma versão mais rápida de Spatial Pyramid Pooling (SPP). A saída vem de uma cabeça que se baseia no design da cabeça do YOLOv3.

O YOLOv6, lançado em 2022, adicionou novos recursos e estratégias para treinamento. O YOLOv7, lançado logo depois, introduziu várias melhorias e métodos para escalonamento de modelos. Finalmente, em 2023, o YOLOv8 foi lançado, incorporando mais mudanças em sua estrutura.

Enquanto as versões mais novas do YOLO têm novos recursos, este trabalho se concentra no YOLOv5 devido à maior quantidade de pesquisa existente sobre ele. No entanto, nossas descobertas podem também se aplicar a versões mais novas do YOLO, especialmente ao YOLOv8, que continua a expandir os limites da detecção de objetos.

Compressão de Modelo: Tornando o YOLOv5 Eficiente

Usar e expandir modelos altamente detalhados tende a aumentar a precisão, mas também eleva as exigências de poder de processamento e memória. Isso torna difícil implantar esses modelos em dispositivos com recursos limitados. Uma solução potencial é a computação em nuvem, mas rodar modelos complexos na nuvem tem suas desvantagens, como custos altos, problemas de latência em tarefas urgentes e acessibilidade limitada em algumas áreas.

Por causa desses problemas, a computação em borda muitas vezes oferece uma solução melhor. Vários métodos para comprimir redes neurais foram desenvolvidos para tornar grandes modelos utilizáveis em dispositivos de borda. Os métodos de compressão podem ser classificados em poda, quantização e destilação de conhecimento.

Na poda, parâmetros menos importantes do modelo são removidos para criar um modelo mais leve. A quantização reduz a precisão dos pesos e ativações no modelo. A destilação de conhecimento envolve usar um modelo grande e preciso para guiar o treinamento de um modelo menor.

Neste review, vamos nos concentrar na poda e na quantização, pois são comumente usados e mais fáceis de implementar do que a destilação de conhecimento, que geralmente requer modificações na rede. Vamos explorar os métodos de poda e quantização que foram recentemente aplicados ao YOLOv5 e comparar os resultados relacionados à compressão.

Enquanto as versões mais novas do YOLO mostraram melhorias, houve uma atenção insuficiente nos métodos de compressão aplicados a elas. Muitas análises existentes discutem a compressão de redes neurais, mas não no contexto da implementação prática do YOLOv5. Este trabalho visa compilar o trabalho existente sobre poda e quantização do YOLOv5 e resumir os resultados.

Os resultados da compressão podem ser avaliados com base nas mudanças no uso de memória, consumo de energia, velocidade de processamento, precisão e tempo de treinamento.

Métodos de Poda para YOLOv5

A poda de redes neurais começou com conceitos chamados Optimal Brain Damage e Optimal Brain Surgeon, que estimam a importância dos parâmetros usando um método que calcula como cada parâmetro afeta a rede. Outros critérios também podem ser usados para entender a importância de diferentes parâmetros.

Embora idealmente o melhor método seja avaliar diretamente o efeito de cada parâmetro na rede, isso geralmente é muito demorado e caro. Assim, avaliações mais simples, como avaliar a média ou o desvio padrão das ativações e outras abordagens, podem ser usadas para medir a importância.

Um método comumente usado para poda é baseado na norma - que foca na distribuição dos valores dos pesos. O desafio aqui é definir um limiar para quando podar os parâmetros. Esse limiar pode ser estático ou dinâmico, e há várias maneiras de abordá-lo.

Outro método envolve observar as saídas de ativação de uma camada. Uma função de ativação comum como ReLU pode ser analisada, considerando saídas próximas a zero como menos importantes. Alguns também usam o fator de escala de normalização em lote (BNSF) para penalizar certos canais durante o treinamento, a fim de criar uma rede mais esparsa que pode ser podada.

A escolha do que podar depende da granularidade, que determina se a abordagem se concentra em pesos individuais ou em estruturas mais amplas dentro do modelo.

Tipos de Poda

A poda pode ocorrer de duas maneiras principais:

  1. Poda Não Estruturada: Isso visa pesos individuais, sem considerar onde estão no modelo. Aqui, os pesos são identificados como desnecessários através da avaliação e, em seguida, são mascarados ou removidos. Embora isso possa levar a uma alta taxa de compressão, pode ser necessário hardware especial para funcionar de maneira eficiente.

  2. Poda Estruturada: Isso trabalha em grupos de pesos em vez de pesos únicos. Por exemplo, pode podar filtros ou canais inteiros, o que mantém a integridade do modelo. A poda estruturada é mais fácil de aplicar porque não muda o número de canais de saída.

A poda baseada em filtros remove núcleos específicos de uma camada e geralmente mantém a estrutura do modelo intacta. Em contraste, a poda baseada em canais elimina canais de saída inteiros enquanto minimiza danos estruturais. A poda baseada em núcleos foca em todos os parâmetros ao longo de um núcleo em um filtro, o que não muda significativamente a estrutura do modelo.

A poda pode ser feita de uma só vez ou de forma iterativa. Na poda de uma só vez, os parâmetros são removidos antes ou após o treinamento, enquanto a poda iterativa considera a queda de desempenho e retreina o modelo, o que pode melhorar a precisão.

Estudos Recentes sobre Poda do YOLOv5

Vários estudos recentes aplicaram poda ao YOLOv5, muitas vezes focando em alcançar um tempo de inferência rápido. Alguns métodos implementaram algoritmos de otimização para refinar as estratégias de poda. Outros modificaram a estrutura do modelo para melhorar o desempenho antes da poda.

O método mais comum usa poda baseada em canais com a abordagem BNSF. Isso é empregado em cerca de 60% dos artigos revisados. Além disso, a maior parte do trabalho existente se concentra em manter a precisão enquanto melhora a eficiência.

Métodos de Quantização para YOLOv5

A quantização tem como objetivo reduzir o número de bits usados para representar os pesos e ativações em um modelo. A maioria dos modelos usa precisão de 32 bits, e o objetivo é manter o desempenho enquanto reduz essa precisão.

Existem dois tipos principais de quantização:

  1. Quantização Uniforme: Valores discretos são igualmente espaçados.
  2. Quantização Não Uniforme: O espaçamento pode variar e é frequentemente mais eficaz porque captura informações mais importantes.

As abordagens de quantização também podem diferir na forma como são implementadas:

  • Quantização Estática: O intervalo de corte é definido previamente para todas as entradas.
  • Quantização Dinâmica: O intervalo de corte é calculado em tempo real para cada entrada, o que pode levar a uma melhor precisão, mas pode incorrer em custos computacionais mais altos.

A quantização pode ocorrer durante o treinamento ou depois. A Quantização Consciente de Treinamento (QAT) retreina o modelo com pesos e ativações quantizados, enquanto a Quantização Pós-Treinamento (PTQ) ajusta parâmetros sem retreinamento, muitas vezes resultando em menor precisão.

Finalmente, uma vez que a quantização é concluída, os modelos podem ser implantados usando quantização simulada ou apenas quantização inteira, permitindo diferentes níveis de desempenho e precisão.

Estudos Recentes sobre Quantização do YOLOv5

Vários artigos recentes se concentraram na quantização do YOLOv5, empregando vários métodos inovadores. Muitos estudos preferem QAT devido às suas capacidades de menor precisão enquanto mantêm a precisão. Outros exploraram diferentes modelos ou arquiteturas como backbones para o YOLOv5 para torná-lo mais adequado para dispositivos móveis, utilizando técnicas de quantização para se adaptar.

Conclusão

Os métodos de compressão de modelo estão se tornando cada vez mais importantes no campo do aprendizado profundo, especialmente para implantar grandes modelos em dispositivos com recursos limitados. Esta revisão forneceu uma visão detalhada das técnicas de poda e quantização aplicadas ao YOLOv5, destacando práticas atuais e lacunas que precisam ser abordadas.

À medida que a demanda por modelos eficientes continua a crescer, mais pesquisas são necessárias para otimizar esses métodos e explorar novas técnicas que possam melhorar o desempenho do YOLO em várias versões. Com novas versões do YOLO sendo desenvolvidas, é vital investigar as melhores maneiras de aplicar métodos de compressão para enfrentar os desafios impostos por limitações de hardware. Este trabalho serve como um recurso valioso para pesquisadores e profissionais interessados em implementar técnicas de compressão de modelo de forma eficaz em cenários práticos.

Fonte original

Título: Model Compression Methods for YOLOv5: A Review

Resumo: Over the past few years, extensive research has been devoted to enhancing YOLO object detectors. Since its introduction, eight major versions of YOLO have been introduced with the purpose of improving its accuracy and efficiency. While the evident merits of YOLO have yielded to its extensive use in many areas, deploying it on resource-limited devices poses challenges. To address this issue, various neural network compression methods have been developed, which fall under three main categories, namely network pruning, quantization, and knowledge distillation. The fruitful outcomes of utilizing model compression methods, such as lowering memory usage and inference time, make them favorable, if not necessary, for deploying large neural networks on hardware-constrained edge devices. In this review paper, our focus is on pruning and quantization due to their comparative modularity. We categorize them and analyze the practical results of applying those methods to YOLOv5. By doing so, we identify gaps in adapting pruning and quantization for compressing YOLOv5, and provide future directions in this area for further exploration. Among several versions of YOLO, we specifically choose YOLOv5 for its excellent trade-off between recency and popularity in literature. This is the first specific review paper that surveys pruning and quantization methods from an implementation point of view on YOLOv5. Our study is also extendable to newer versions of YOLO as implementing them on resource-limited devices poses the same challenges that persist even today. This paper targets those interested in the practical deployment of model compression methods on YOLOv5, and in exploring different compression techniques that can be used for subsequent versions of YOLO.

Autores: Mohammad Jani, Jamil Fayyad, Younes Al-Younes, Homayoun Najjaran

Última atualização: 2023-07-21 00:00:00

Idioma: English

Fonte URL: https://arxiv.org/abs/2307.11904

Fonte PDF: https://arxiv.org/pdf/2307.11904

Licença: https://creativecommons.org/licenses/by/4.0/

Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.

Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.

Mais de autores

Artigos semelhantes