Inteligência artificial
YOLOv9: Um Salto na Detecção de Objetos em Tempo Real
Detecção de objetos tem visto um avanço rápido nos últimos anos graças a algoritmos de aprendizado profundo como YOLO (You Only Look Once). A última iteração, YOLOv9, traz melhorias significativas em precisão, eficiência e aplicabilidade em relação às versões anteriores. Neste post, vamos mergulhar nas inovações que tornam o YOLOv9 um novo estado da arte para detecção de objetos em tempo real.
Um Breve Introdução à Detecção de Objetos
Antes de entrar no que há de novo no 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. É uma capacidade fundamental para aplicações como carros autônomos, sistemas de vigilância e busca de imagens.
O detector recebe uma imagem como entrada e produz 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 principais abordagens para detecção de objetos:
- Detetores de dois estágios como Faster R-CNN primeiro geram propostas de região, então classificam e refinam os limites de cada região. Eles tendem a ser mais precisos, mas mais lentos.
- Detetores de um estágio como YOLO aplicam um modelo diretamente sobre a imagem em uma única passagem. Eles trocam some precisão por tempos de inferência muito rápidos.
YOLO pioneirou a abordagem de um estágio. Vamos ver como ele evoluiu ao longo de múltiplas 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á à frente da detecção de objetos rápida desde que a versão original foi publicada em 2016. Aqui está uma visão geral rápida de como o YOLO evoluiu ao longo de múltiplas iterações:
- YOLOv1 propôs 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 modelos de dois estágios anteriores.
- YOLOv2 melhorou o original usando normalização de lote para melhor estabilidade, ancorando caixas em várias escalas e razões de aspecto para detectar tamanhos múltiplos, e uma variedade de outras otimizações.
- YOLOv3 adicionou um novo extrator de recursos chamado Darknet-53 com mais camadas e atalhos entre elas, melhorando ainda mais a precisão.
- YOLOv4 combinou ideias de outros detectores de objetos e modelos de segmentação para impulsionar a precisão ainda mais, mantendo a inferência rápida.
- YOLOv5 reescreveu completamente o YOLOv4 em PyTorch e adicionou um novo backbone de extração de recursos chamado CSPDarknet, junto com várias outras melhorias.
- YOLOv6 continuou a otimizar a arquitetura e o processo de treinamento, com modelos pré-treinados em grandes conjuntos de dados externos para aumentar o desempenho ainda mais.
Portanto, em resumo, 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 sofrer.
A Necessidade de Melhor Eficiência
Muitas aplicações exigem que a detecção de objetos seja executada em tempo real em dispositivos com recursos computacionais limitados. À medida que os modelos ficam maiores e mais computacionalmente intensivos, eles se tornam impraticáveis para implantação.
Por exemplo, um carro autônomo precisa detectar objetos em taxas de quadros altas 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 dentro do próprio hardware incorporado. Telefones e outros dispositivos de consumo têm restrições de energia e térmicas muito rigorosas.
Versões recentes do YOLO obtêm alta precisão com um grande número de parâmetros e operações de multiplicação e adição (FLOPs). Mas isso acontece ao custo de velocidade, tamanho e eficiência de energia.
Por exemplo, o 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 sobreajuste e dificulta a generalização.
Portanto, para expandir a aplicabilidade da detecção de objetos, precisamos de maneiras de melhorar a eficiência – obter melhor precisão com menos parâmetros e computações. Vamos ver 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 o desempenho em tempo real em uma gama mais ampla de dispositivos. Eles introduziram duas inovações principais:
- Uma nova arquitetura de modelo chamada General Efficient Layer Aggregation Network (GELAN) que maximiza a precisão enquanto minimiza parâmetros e FLOPs.
- Uma técnica de treinamento chamada Programmable Gradient Information (PGI) que fornece gradientes de aprendizado mais confiáveis, especialmente para modelos menores.
Vamos ver como cada uma dessas melhorias ajuda a melhorar a eficiência.
Arquitetura Mais Eficiente com GELAN
A arquitetura do modelo em si é fundamental para equilibrar precisão contra velocidade e uso de recursos durante a inferência. A rede neural precisa ter 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 a precisão máxima de uma arquitetura mínima.
O GELAN usa dois blocos de construção principais empilhados:
- Blocos de Agregação de Camada Eficiente – Esses agregam transformações em várias ramificações da rede para capturar recursos de múltiplas escalas de forma eficiente.
- Blocos Computacionais – Blocos CSPNet ajudam a propagar informações entre camadas. Qualquer bloco pode ser substituído com base em restrições de computação.
Ao equilibrar e combinar cuidadosamente esses blocos, o GELAN atinge um ponto ótimo entre desempenho, parâmetros e velocidade. A mesma arquitetura modular pode ser escalada para cima ou para baixo em diferentes tamanhos de modelos e hardware.
Experimentos mostraram que o GELAN ajusta mais desempenho em modelos menores em comparação com arquiteturas anteriores do YOLO. Por exemplo, o GELAN-Pequeno com 7M de parâmetros superou o YOLOv7-Nano com 11M de parâmetros. E o GELAN-Médio com 20M de parâmetros performou igual ao YOLOv7 médio, que requer 35-40M de parâmetros.
Portanto, ao projetar uma arquitetura parametrizada otimizada especificamente para eficiência, o GELAN permite que os modelos executem mais rápido e em dispositivos com mais restrições de recursos. Em seguida, veremos como o PGI os ajuda a treinar melhor também.
Melhor Treinamento com Programmable Gradient Information (PGI)
O treinamento do modelo é tão importante quanto 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 determinam quanto os pesos do modelo são atualizados durante o treinamento. Gradientes barulhentos ou enganosos levam a uma convergência pobre. Esse problema se torna mais pronunciado para redes menores.
A técnica de supervisão profunda aborda isso introduzindo ramos laterais adicionais com perdas para propagar um sinal de gradiente melhor pela rede. Mas ela tende a se deteriorar e causar divergência para modelos leves.

YOLOv9: Aprendendo o que Você Quer Aprender Usando Informações de Gradiente Programáveis https://arxiv.org/abs/2402.13616
Para superar essa limitação, o YOLOv9 introduz Informações de Gradiente Programáveis (PGI). O PGI tem dois componentes principais projetados para melhorar a qualidade do gradiente:
- Ramos reversíveis auxiliares – Esses fornecem conexões reversíveis de volta à entrada usando blocos como RevCols. Isso mantém gradientes limpos, evitando o gargalo de informação.
- Integração de gradiente de múltiplos níveis – Um bloco de fusão agrega gradientes de todos os ramos antes de alimentar o modelo principal. Isso evita a divergência entre ramos.
Ao gerar gradientes mais confiáveis, o PGI melhora a convergência e a eficiência do treinamento em todos os tamanhos de modelo:
Experimentos mostraram que o PGI melhorou a precisão em todos os tamanhos de modelo, especialmente as configurações menores. Por exemplo, ele aumentou as pontuações AP do YOLOv9-Pequeno em 0,1-0,4% em relação ao GELAN-Pequeno baseline. Os ganhos foram ainda mais significativos para modelos mais profundos, como o YOLOv9-E, com 55,6% de mAP.
Portanto, o PGI permite que modelos menores e eficientes sejam treinados para níveis de precisão anteriormente alcançados apenas por modelos superparametrizados.
YOLOv9 Estabelece um Novo Estado da Arte para Eficiência
Ao combinar as inovações arquiteturais do GELAN com as melhorias de treinamento do PGI, o YOLOv9 alcança um desempenho sem precedentes em eficiência e precisão:
- Em comparação com as versões anteriores do YOLO, o YOLOv9 obtém melhor precisão com 10-15% menos parâmetros e 25% menos computações. Isso traz melhorias significativas em velocidade e capacidade em todos os tamanhos de modelo.
- O YOLOv9 supera outros detectores em tempo real, como YOLO-MS e RT-DETR, em termos de eficiência de parâmetros e FLOPs. Ele requer muito menos recursos para atingir um determinado nível de desempenho.
- Modelos menores do YOLOv9 até superam modelos pré-treinados maiores, como o RT-DETR-X. Apesar de usar 36% menos parâmetros, o YOLOv9-E alcança melhor 55,6% de AP por meio de arquiteturas mais eficientes.
Portanto, 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 restritos.
GELAN – Arquitetura Otimizada para Eficiência
O YOLOv9 introduz uma nova arquitetura chamada General Efficient Layer Aggregation Network (GELAN) que maximiza a precisão dentro de um orçamento mínimo de parâmetros. Ele se baseia em modelos YOLO anteriores, mas otimiza os vários componentes especificamente para eficiência.

YOLOv9: Aprendendo o que Você Quer Aprender Usando Informações de Gradiente Programáveis
https://arxiv.org/abs/2402.13616
Contexto sobre CSPNet e ELAN
Versões recentes do YOLO desde a v5 têm utilizado backbones baseados em Cross-Stage Partial Network (CSPNet) para melhor eficiência. O CSPNet permite que as mapas de recursos sejam agregados em ramificações paralelas da rede, adicionando uma sobrecarga mínima:
Isso é mais eficiente do que simplesmente empilhar camadas serialmente, o que frequentemente leva a computação redundante e sobreparametrização.
O YOLOv7 atualizou o CSPNet para Efficient Layer Aggregation Network (ELAN), simplificando a estrutura do bloco:
O ELAN removeu conexões de atalho entre camadas em favor de um nó de agregação na saída. Isso melhorou ainda mais a eficiência de parâmetros e FLOPs.
Generalizando ELAN para Flexibilidade de Eficiência
Os autores generalizaram o ELAN ainda mais para criar o GELAN, o backbone usado no YOLOv9. O GELAN fez modificações-chave para melhorar a flexibilidade e a eficiência:
- Blocos computacionais interchangeáveis – O ELAN anterior tinha camadas convolucionais fixas. O GELAN permite substituir qualquer bloco computacional, como ResNets ou CSPNet, fornecendo mais opções arquiteturais.
- Parametrização de profundidade – Profundidades de bloco separadas para a ramificação principal versus a ramificação do agregador simplificam a otimização do uso de recursos.
- Desempenho estável em diferentes configurações – O GELAN mantém a precisão com diferentes tipos e profundidades de blocos, permitindo escalabilidade flexível.
Essas mudanças tornam o GELAN uma arquitetura sólida, mas configurável, para maximizar a eficiência:
Em experimentos, os modelos GELAN consistentemente superaram as arquiteturas YOLO anteriores em precisão por parâmetro:
- GELAN-Pequeno com 7M de parâmetros superou o YOLOv7-Nano com 11M de parâmetros
- GELAN-Médio igualou os modelos YOLOv7 médios mais pesados
Portanto, o GELAN fornece um backbone otimizado para escalar o YOLO em diferentes metas de eficiência. Em seguida, veremos como o PGI os ajuda a treinar melhor.
PGI – Treinamento Melhorado para Todos os Tamanhos de Modelo
Enquanto as escolhas de arquitetura afetam a eficiência no tempo de inferência, o processo de treinamento também afeta o uso de recursos do modelo. O YOLOv9 usa uma nova técnica chamada Informações de Gradiente Programáveis (PGI) para melhorar o treinamento em diferentes tamanhos e complexidades de modelo.
O Problema de Gradientes Não Confiáveis
Durante o treinamento, uma função de perda compara as saídas do modelo com rótulos de verdade e calcula um gradiente de erro para atualizar parâmetros. Gradientes barulhentos ou enganosos levam a uma convergência pobre e eficiência.
Redes muito profundas exacerbam isso por meio do gargalo de informação – gradientes de camadas profundas são corrompidos por sinais perdidos ou comprimidos.
A supervisão profunda ajuda introduzindo ramos laterais auxiliares com perdas para fornecer gradientes mais limpos. Mas ela frequentemente se deteriora para modelos menores, causando interferência e divergência entre diferentes ramos.
Portanto, precisamos de uma maneira de fornecer gradientes confiáveis que funcione em todos os tamanhos de modelo, especialmente os menores.
Introduzindo Informações de Gradiente Programáveis (PGI)
Para abordar gradientes não confiáveis, o YOLOv9 propõe Informações de Gradiente Programáveis (PGI). O PGI tem dois componentes principais projetados para melhorar a qualidade do gradiente:
1. Ramos reversíveis auxiliares
Ramos adicionais fornecem conexões reversíveis de volta à entrada usando blocos como RevCols. Isso mantém gradientes limpos, evitando o gargalo de informação.
2. Integração de gradiente de múltiplos níveis
Um bloco de fusão agrega gradientes de todos os ramos antes de alimentar o modelo principal. Isso evita a divergência entre ramos.
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 se beneficiam da supervisão profunda que não podiam usar antes
- Modelos maiores obtêm gradientes mais limpos, permitindo melhor generalização
Experimentos mostraram que o PGI aumentou a precisão para configurações pequenas e grandes do YOLOv9 em relação ao GELAN baseline:
- +0,1-0,4% de AP para o YOLOv9-Pequeno
- +0,5-0,6% de AP para modelos YOLOv9 maiores
Portanto, os gradientes programáveis do PGI permitem que modelos grandes e pequenos sejam treinados de forma mais eficiente.
YOLOv9 Estabelece um Novo Estado da Arte de Precisão
Ao combinar melhorias arquiteturais do GELAN e melhorias de treinamento do PGI, o YOLOv9 alcança novos resultados de estado da arte para detecção de objetos em tempo real.
Experimentos no conjunto de dados COCO mostram o YOLOv9 superando as versões anteriores do YOLO, bem como outros detectores em tempo real, como YOLO-MS, em precisão e eficiência:
Alguns destaques importantes:
- YOLOv9-Pequeno excede o YOLO-MS-Pequeno com 10% menos parâmetros e computações
- YOLOv9-Médio iguala os modelos YOLOv7 mais pesados, usando menos da metade dos recursos
- YOLOv9-Grande supera o YOLOv8-X com 15% menos parâmetros e 25% menos FLOPs
Notavelmente, modelos menores do YOLOv9 até superam modelos mais pesados de outros detectores que usam pré-treinamento, como o RT-DETR-X. Apesar de ter 4 vezes menos parâmetros, o YOLOv9-E supera o RT-DETR-X em precisão.
Esses resultados demonstram a superior eficiência do YOLOv9. As melhorias permitem detecção de objetos de alta precisão em mais casos de uso do mundo real.
Principais Pontos sobre as Atualizações do YOLOv9
Vamos recapitular rapidamente algumas das principais atualizações e inovações que permitem o desempenho de estado da arte do YOLOv9:
- Arquitetura GELAN otimizada – Melhora a eficiência de parâmetros por meio de blocos de agregação flexíveis. Permite escalonar modelos para diferentes metas.
- Informações de gradiente programáveis – Fornece gradientes confiáveis por meio de conexões reversíveis e fusão. Melhora o treinamento em todos os tamanhos de modelo.
- Maior precisão com menos recursos – Reduz parâmetros e computações 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 – Estabelece um novo estado da arte para configurações de modelo leve, médio e grande. Superar modelos pré-treinados pesados.
- Aplicabilidade expandida – Maior eficiência amplia os 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 move a detecção de objetos para atender às necessidades do mundo real. As atualizações fornecem uma base sólida para inovações futuras nessa capacidade fundamental de visão computacional.


