toco YOLOv9: Um salto na detecção de objetos em tempo real - Unite.AI
Entre em contato

Inteligência artificial

YOLOv9: um salto na detecção de objetos em tempo real

mm

Publicado

 on

Detecção de objetos tem visto um rápido avanço nos últimos anos graças a deep learning algoritmos como YOLO (You Only Look Once). A última iteração, YOLOv9, traz grandes melhorias em precisão, eficiência e aplicabilidade em relação às versões anteriores. Nesta postagem, mergulharemos nas inovações que tornam o YOLOv9 um novo estado da arte para detecção de objetos em tempo real.

Uma introdução rápida sobre detecção de objetos

Antes de entrar nas novidades do YOLOv9, vamos revisar brevemente como funciona a detecção de objetos. O objetivo da detecção de objetos é identificar e localizar objetos dentro de uma imagem, como carros, pessoas ou animais. É um recurso fundamental para aplicações como carros autônomos, sistemas de vigilância e pesquisa de imagens.

O detector obtém uma imagem como entrada e gera caixas delimitadoras em torno dos objetos detectados, cada uma com um rótulo de classe associado. Conjuntos de dados populares como MS COCO fornecem milhares de imagens rotuladas para treinar e avaliar esses modelos.

Existem duas abordagens principais para detecção de objetos:

  • Detectores de dois estágios como o Faster R-CNN primeiro gera propostas de região e, em seguida, classifica e refina os limites de cada região. Eles tendem a ser mais precisos, mas mais lentos.
  • Detectores de estágio único como o YOLO, aplique um modelo diretamente sobre a imagem em uma única passagem. Eles trocam alguma precisão por tempos de inferência muito rápidos.

A YOLO foi pioneira na abordagem de estágio único. Vejamos como ele evoluiu em várias versões para melhorar a precisão e a eficiência.

Revisão das versões anteriores do YOLO

A família de modelos YOLO (You Only Look Once) está na vanguarda da detecção rápida de objetos desde que a versão original foi publicada em 2016. Aqui está uma rápida visão geral de como o YOLO progrediu em várias iterações:

  • YOLOv1 propuseram um modelo unificado para prever caixas delimitadoras e probabilidades de classe diretamente de imagens completas em uma única passagem. Isso o tornou extremamente rápido em comparação com os modelos anteriores de dois estágios.
  • YOLOv2 melhorado em relação ao original usando normalização de lote para melhor estabilidade, ancorando caixas em várias escalas e proporções para detectar vários tamanhos e uma variedade de outras otimizações.
  • YOLOv3 adicionou um novo extrator de recursos chamado Darknet-53 com mais camadas e atalhos entre eles, melhorando ainda mais a precisão.
  • YOLOv4 combinou ideias de outros detectores de objetos e modelos de segmentação para aumentar ainda mais a precisão e, ao mesmo tempo, manter uma inferência rápida.
  • YOLOv5 reescreveu totalmente o YOLOv4 no PyTorch e adicionou um novo backbone de extração de recursos chamado CSPDarknet junto com vários outros aprimoramentos.
  • YOLOv6 continuou a otimizar a arquitetura e o processo de treinamento, com modelos pré-treinados em grandes conjuntos de dados externos para aumentar ainda mais o desempenho.

Resumindo, as versões anteriores do YOLO alcançaram maior precisão por meio de melhorias na arquitetura do modelo, técnicas de treinamento e pré-treinamento. Mas à medida que os modelos ficam maiores e mais complexos, a velocidade e a eficiência começam a ser prejudicadas.

A necessidade de melhor eficiência

Muitos aplicativos exigem que a detecção de objetos seja executada em tempo real em dispositivos com recursos computacionais limitados. À medida que os modelos se tornam maiores e mais intensivos em termos computacionais, sua implantação se torna impraticável.

Por exemplo, um carro autônomo precisa detectar objetos em altas taxas de quadros usando processadores dentro do veículo. Uma câmera de segurança precisa executar a detecção de objetos em seu feed de vídeo em seu próprio hardware incorporado. Os telefones e outros dispositivos de consumo têm restrições térmicas e de energia muito rígidas.

Versões recentes do YOLO obtêm alta precisão com grande número de parâmetros e operações de adição múltipla (FLOPs). Mas isso tem o custo de velocidade, tamanho e eficiência energética.

Por exemplo, YOLOv5-L requer mais de 100 bilhões de FLOPs para processar uma única imagem de 1280×1280. Isso é muito lento para muitos casos de uso em tempo real. A tendência de modelos cada vez maiores também aumenta o risco de overfitting e torna mais difícil generalizar.

Portanto, para expandir a aplicabilidade da detecção de objetos, precisamos de formas de melhorar a eficiência – obtendo melhor precisão com menos parâmetros e cálculos. Vejamos as técnicas usadas no YOLOv9 para enfrentar esse desafio.

YOLOv9 – Melhor precisão com menos recursos

Os pesquisadores por trás do YOLOv9 se concentraram em melhorar a eficiência para alcançar desempenho em tempo real em uma ampla gama de dispositivos. Eles introduziram duas inovações principais:

  1. Uma nova arquitetura de modelo chamada Rede Geral de Agregação de Camada Eficiente (GELAN) que maximiza a precisão enquanto minimiza parâmetros e FLOPs.
  2. Uma técnica de treinamento chamada Informações de gradiente programável (PGI) que fornece gradientes de aprendizagem mais confiáveis, especialmente para modelos menores.

Vejamos como cada um desses avanços ajuda a melhorar a eficiência.

Arquitetura mais eficiente com GELAN

A própria arquitetura do modelo é crítica para equilibrar a precisão em relação à velocidade e ao uso de recursos durante a inferência. A rede neural precisa de profundidade e largura suficientes para capturar recursos relevantes das imagens de entrada. Mas muitas camadas ou filtros levam a modelos lentos e inchados.

Os autores projetaram o GELAN especificamente para extrair o máximo de precisão da menor arquitetura possível.

GELAN usa dois blocos de construção principais empilhados:

  • Blocos de agregação de camadas eficientes – Essas transformações agregadas em diversas filiais da rede para capturar recursos em várias escalas com eficiência.
  • Blocos Computacionais – Os blocos CSPNet ajudam a propagar informações entre camadas. Qualquer bloco pode ser substituído com base nas restrições de computação.

Ao equilibrar e combinar cuidadosamente esses blocos, o GELAN atinge um ponto ideal entre desempenho, parâmetros e velocidade. A mesma arquitetura modular pode ser ampliada ou reduzida em diferentes tamanhos de modelos e hardware.

Experimentos mostraram que GELAN oferece mais desempenho em modelos menores em comparação com arquiteturas YOLO anteriores. Por exemplo, GELAN-Small com parâmetros de 7M superou o parâmetro de 11M YOLOv7-Nano. E o GELAN-Medium com parâmetros de 20M teve desempenho equivalente aos modelos médios YOLOv7 que exigem parâmetros de 35-40M.

Assim, ao projetar uma arquitetura parametrizada especificamente otimizada para eficiência, a GELAN permite que os modelos sejam executados mais rapidamente e em dispositivos com recursos mais limitados. A seguir veremos como o IGP também os ajuda a treinar melhor.

Melhor treinamento com informações de gradiente programável (PGI)

O treinamento do modelo é igualmente importante para maximizar a precisão com recursos limitados. Os autores do YOLOv9 identificaram problemas no treinamento de modelos menores causados ​​por informações de gradiente não confiáveis.

Gradientes determinar quanto os pesos de um modelo são atualizados durante o treinamento. Gradientes ruidosos ou enganosos levam a uma convergência deficiente. Esse problema se torna mais pronunciado em redes menores.

A técnica de supervisão profunda resolve isso introduzindo ramificações laterais adicionais com perdas para propagar melhor o sinal de gradiente através da rede. Mas tende a quebrar e causar divergência para modelos menores e leves.

YOLOv9: Aprendendo o que você deseja aprender usando informações de gradiente programável

YOLOv9: Aprendendo o que você deseja aprender usando informações de gradiente programável https://arxiv.org/abs/2402.13616

Para superar esta limitação, YOLOv9 introduz Informações de gradiente programável (PGI). O IGP tem dois componentes principais:

  • Ramos auxiliares reversíveis – Eles fornecem gradientes mais limpos, mantendo conexões reversíveis com a entrada usando blocos como RevCols.
  • Integração gradiente multinível – Isso evita a interferência de divergências de diferentes ramos laterais. Ele combina gradientes de todos os ramos antes de retornar ao modelo principal.

Ao gerar gradientes mais confiáveis, o PGI ajuda os modelos menores a treinar com a mesma eficácia que os maiores:

Os experimentos mostraram que o PGI melhorou a precisão em todos os tamanhos de modelo, especialmente em configurações menores. Por exemplo, aumentou as pontuações de AP de YOLOv9-Small em 0.1-0.4% em relação à linha de base GELAN-Small. Os ganhos foram ainda mais significativos para modelos mais profundos como YOLOv9-E com 55.6% mAP.

Portanto, o PGI permite que modelos menores e eficientes sejam treinados para níveis de precisão mais altos, anteriormente alcançados apenas por modelos superparametrizados.

YOLOv9 define o que há de mais moderno em termos de eficiência

Ao combinar os avanços arquitetônicos do GELAN com as melhorias de treinamento do PGI, o YOLOv9 alcança eficiência e desempenho sem precedentes:

  • Comparado com versões anteriores do YOLO, o YOLOv9 obtém melhor precisão com 10-15% menos parâmetros e 25% menos cálculos. Isso traz grandes melhorias em velocidade e capacidade em todos os tamanhos de modelo.
  • YOLOv9 supera outros detectores em tempo real como YOLO-MS e RT-DETR em termos de eficiência de parâmetros e FLOPs. Requer muito menos recursos para atingir um determinado nível de desempenho.
  • Modelos YOLOv9 menores vencem até mesmo modelos pré-treinados maiores, como RT-DETR-X. Apesar de usar 36% menos parâmetros, YOLOv9-E alcança melhor 55.6% AP através de arquiteturas mais eficientes.

Assim, ao abordar a eficiência nos níveis de arquitetura e treinamento, o YOLOv9 estabelece um novo estado da arte para maximizar o desempenho dentro de recursos limitados.

GELAN – Arquitetura Otimizada para Eficiência

YOLOv9 apresenta uma nova arquitetura chamada General Efficient Layer Aggregation Network (GELAN) que maximiza a precisão dentro de um orçamento de parâmetro mínimo. Ele se baseia nos modelos YOLO anteriores, mas otimiza os vários componentes especificamente para eficiência.

https://arxiv.org/abs/2402.13616

YOLOv9: Aprendendo o que você deseja aprender usando informações de gradiente programável
https://arxiv.org/abs/2402.13616

Histórico sobre CSPNet e ELAN

Versões recentes do YOLO desde a v5 utilizaram backbones baseados em Cross-Stage Partial Network (CSPNet) para melhorar a eficiência. O CSPNet permite que mapas de recursos sejam agregados em ramificações de rede paralelas, ao mesmo tempo que adiciona sobrecarga mínima:

Isso é mais eficiente do que apenas empilhar camadas em série, o que geralmente leva a computação redundante e sobreparametrização.

YOLOv7 atualizou o CSPNet para Efficient Layer Aggregation Network (ELAN), o que simplificou a estrutura do bloco:

A ELAN removeu conexões de atalho entre camadas em favor de um nó de agregação na saída. Isso melhorou ainda mais os parâmetros e a eficiência dos FLOPs.

Generalizando ELAN para eficiência flexível

Os autores generalizaram o ELAN ainda mais para criar GELANO, o backbone usado no YOLOv9. A GELAN fez modificações importantes para melhorar a flexibilidade e a eficiência:

  • Blocos computacionais intercambiáveis – A ELAN anterior tinha camadas convolucionais fixas. GELAN permite substituir qualquer bloco computacional como ResNets ou CSPNet, oferecendo mais opções arquiteturais.
  • Parametrização em profundidade – Profundidades de bloco separadas para ramificação principal versus ramificação agregadora simplificam o ajuste fino do uso de recursos.
  • Desempenho estável em todas as configurações – GELAN mantém a precisão com diferentes tipos de blocos e profundidades, permitindo um dimensionamento flexível.

Essas mudanças tornam o GELAN um backbone forte, mas configurável, para maximizar a eficiência:

Em experimentos, os modelos GELAN superaram consistentemente as arquiteturas YOLO anteriores em precisão por parâmetro:

  • GELAN-Small com parâmetros de 7M superou os parâmetros de 7M do YOLOv11-Nano
  • GELAN-Medium combina com modelos médios YOLOv7 mais pesados

Portanto, a GELAN fornece uma estrutura otimizada para dimensionar o YOLO em diferentes metas de eficiência. A seguir veremos como o IGP os ajuda a treinar melhor.

PGI – Treinamento aprimorado para todos os tamanhos de modelo

Embora as escolhas de arquitetura afetem a eficiência no momento da inferência, o processo de treinamento também afeta o uso dos recursos do modelo. YOLOv9 usa uma nova técnica chamada Programmable Gradient Information (PGI) para melhorar o treinamento em diferentes tamanhos e complexidades de modelos.

O problema dos gradientes não confiáveis

Durante o treinamento, uma função de perda compara as saídas do modelo com rótulos verdadeiros e calcula um gradiente de erro para atualizar os parâmetros. Gradientes barulhentos ou enganosos levar a uma fraca convergência e eficiência.

Redes muito profundas agravam esta situação através da gargalo de informação – gradientes de camadas profundas são corrompidos por sinais perdidos ou comprimidos.

Supervisão profunda ajuda introduzindo ramificações laterais auxiliares com perdas para fornecer gradientes mais limpos. Mas muitas vezes divide para modelos menores, causando interferência e divergência entre diferentes ramos.

Portanto, precisamos de uma maneira de fornecer gradientes confiáveis ​​que funcionem em todos os tamanhos de modelo, especialmente nos menores.

Apresentando informações de gradiente programável (PGI)

Para lidar com gradientes não confiáveis, YOLOv9 propõe Informação de Gradiente Programável (PGI). O PGI possui dois componentes principais projetados para melhorar a qualidade do gradiente:

1. Ramos auxiliares reversíveis

Filiais adicionais fornecem conexões reversíveis de volta à entrada usando blocos como RevCols. Isso mantém gradientes limpos evitando o gargalo de informações.

2. Integração gradiente multinível

Um bloco de fusão agrega gradientes de todas as ramificações antes de realimentar o modelo principal. Isso evita divergências entre filiais.

Ao gerar gradientes mais confiáveis, o PGI melhora a convergência e a eficiência do treinamento em todos os tamanhos de modelo:

  • Modelos leves beneficiar de uma supervisão profunda que não podiam usar antes
  • Modelos maiores obtenha gradientes mais limpos permitindo uma melhor generalização

Experimentos mostraram precisão aumentada de PGI para configurações YOLOv9 pequenas e grandes em relação à linha de base GELAN:

  • +0.1-0.4% AP para YOLOv9-Small
  • +0.5-0.6% AP para modelos YOLOv9 maiores

Portanto, os gradientes programáveis ​​do PGI permitem que modelos grandes e pequenos treinem com mais eficiência.

YOLOv9 define nova precisão de última geração

Ao combinar melhorias arquitetônicas do GELAN e aprimoramentos de treinamento do PGI, o YOLOv9 alcança novos resultados de última geração para detecção de objetos em tempo real.

Experimentos no conjunto de dados COCO mostram que o YOLOv9 supera as versões anteriores do YOLO, bem como outros detectores em tempo real como o YOLO-MS, em precisão e eficiência:

Alguns destaques principais:

  • YOLOv9-Small excede YOLO-MS-Small com 10% menos parâmetros e cálculos
  • YOLOv9-Medium combina com modelos YOLOv7 mais pesados ​​usando menos da metade dos recursos
  • YOLOv9-Large supera YOLOv8-X com 15% menos parâmetros e 25% menos FLOPs

Notavelmente, os modelos menores do YOLOv9 superam até mesmo os modelos mais pesados ​​de outros detectores que usam pré-treinamento como o RT-DETR-X. Apesar de 4x menos parâmetros, o YOLOv9-E supera o RT-DETR-X em precisão.

Estes resultados demonstram a eficiência superior do YOLOv9. As melhorias permitem a detecção de objetos de alta precisão em casos de uso mais reais.

Principais conclusões sobre atualizações do YOLOv9

Vamos recapitular rapidamente algumas das principais atualizações e inovações que permitem o novo desempenho de última geração do YOLOv9:

  • Arquitetura otimizada GELAN – Melhora a eficiência dos parâmetros por meio de blocos de agregação flexíveis. Permite dimensionar modelos para diferentes alvos.
  • Informações de gradiente programável – Fornece gradientes confiáveis ​​através de conexões reversíveis e fusão. Melhora o treinamento em vários tamanhos de modelo.
  • Maior precisão com menos recursos – Reduz parâmetros e cálculos em 10-15% em relação ao YOLOv8 com melhor precisão. Permite inferência mais eficiente.
  • Resultados superiores em todos os tamanhos de modelo – Define o que há de mais moderno para configurações de modelos leves, médios e grandes. Supera modelos altamente pré-treinados.
  • Aplicabilidade expandida – Maior eficiência amplia casos de uso viáveis, como detecção em tempo real em dispositivos de borda.

Ao abordar diretamente a precisão, a eficiência e a aplicabilidade, o YOLOv9 avança na detecção de objetos para atender às diversas necessidades do mundo real. As atualizações fornecem uma base sólida para inovações futuras nesta capacidade crítica de visão computacional.

Passei os últimos cinco anos mergulhando no fascinante mundo do Machine Learning e Deep Learning. Minha paixão e experiência me levaram a contribuir para mais de 50 projetos diversos de engenharia de software, com foco particular em AI/ML. Minha curiosidade contínua também me atraiu para o Processamento de Linguagem Natural, um campo que estou ansioso para explorar mais.