Modelos e plataformas de IA
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 Guia Rápido sobre Detecção de Objetos
Antes de entrar no que há de novo no YOLOv9, vamos rever rapidamente 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 abordagens principais para detecção de objetos:
- Detecção 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.
- Detecção 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 foi pioneiro na 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 a partir de imagens completas em uma única passagem. Isso o tornou extremamente rápido em comparação com os modelos de dois estágios anteriores.
- YOLOv2 melhorou o original usando normalização de lote para melhor estabilidade, caixas de âncora 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 impulsionar o desempenho ainda mais.
Então, 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 se tornam maiores e mais intensivos computacionalmente, 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 de seu próprio hardware incorporado. Telefones e outros dispositivos de consumo têm restrições de energia e térmicas muito rigorosas.
As 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 torna mais difícil generalizar.
Então, para expandir a aplicabilidade da detecção de objetos, precisamos de maneiras de melhorar a eficiência – obtendo 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 a precisão contra a velocidade e o 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 camadas ou filtros demais levam a modelos lentos e inchados.
Os autores projetaram o GELAN especificamente para extrair a máxima precisão da arquitetura mais pequena possível.
O GELAN usa dois blocos de construção principais empilhados:
- Blocos de Agregação de Camadas Eficientes – Esses agregam transformações em várias ramificações da rede para capturar recursos de múltiplas escalas de forma eficiente.
- Blocos Computacionais – Os blocos CSPNet ajudam a propagar informações entre camadas. Qualquer bloco pode ser substituído com base em restrições computacionais.
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 encaixa mais desempenho em modelos menores em comparação com as arquiteturas do YOLO anteriores. 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.
Então, projetando uma arquitetura parametrizada especificamente otimizada para eficiência, o GELAN permite que os modelos executem mais rápido e em dispositivos com recursos mais limitados. Em seguida, vamos ver 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 ramificações laterais adicionais com perdas para propagar um sinal de gradiente melhor pela rede. Mas tende a quebrar 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 Programmable Gradient Information (PGI). O PGI tem dois componentes principais:
- Ramificações reversíveis auxiliares – Essas fornecem gradientes mais limpos mantendo conexões reversíveis de volta à entrada usando blocos como RevCols.
- Integração de gradiente de múltiplos níveis – Isso evita a divergência de diferentes ramificações interferindo. Combina gradientes de todas as ramificações antes de alimentar o modelo principal.
Ao gerar gradientes mais confiáveis, o PGI melhora a convergência e a eficiência do treinamento em todos os tamanhos de modelos:
Experimentos mostraram que o PGI melhorou a precisão em todos os tamanhos de modelos, especialmente 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 de base. E os ganhos foram ainda mais significativos para modelos mais profundos como o YOLOv9-E, com 55,6% de mAP.
Então, 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 melhorias arquiteturais do GELAN com as melhorias de treinamento do PGI, o YOLOv9 alcança uma eficiência e desempenho sem precedentes:
- 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 diferentes tamanhos de modelos.
- 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 alcançar um determinado nível de desempenho.
- Modelos menores do YOLOv9 até superam modelos maiores pré-treinados como o RT-DETR-X. Apesar de usar 36% menos parâmetros, o YOLOv9-E alcança 55,6% de AP, graças a arquiteturas mais eficientes.
Então, 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
O YOLOv9 introduz uma nova arquitetura chamada General Efficient Layer Aggregation Network (GELAN) que maximiza a precisão dentro de um orçamento de parâmetros mínimo. Ela 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
Fundo sobre CSPNet e ELAN
Versões recentes do YOLO desde a v5 utilizam backbones baseados em Cross-Stage Partial Network (CSPNet) para melhor eficiência. O CSPNet permite que os mapas de recursos sejam agregados em várias ramificações da rede enquanto adiciona uma sobrecarga mínima:
Isso é mais eficiente do que 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), que simplificou 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 Eficiência Flexível
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 intercambiá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 fine-tuning 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 do 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
Então, o GELAN fornece um backbone otimizado para escalar o YOLO em diferentes metas de eficiência. Em seguida, vamos ver como o PGI os ajuda a treinar melhor.
PGI – Treinamento Melhorado para Todos os Tamanhos de Modelos
Enquanto as escolhas de arquitetura afetam a eficiência durante a inferência, o processo de treinamento também afeta o uso de recursos do modelo. O YOLOv9 usa uma nova técnica chamada Programmable Gradient Information (PGI) para melhorar o treinamento em diferentes tamanhos e complexidades de modelos.
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 os 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.
Supervisão profunda ajuda introduzindo ramificações laterais auxiliares com perdas para fornecer gradientes mais limpos. Mas frequentemente quebra para modelos menores, causando interferência e divergência entre diferentes ramificações.
Então, precisamos de uma maneira de fornecer gradientes confiáveis que funcione em todos os tamanhos de modelos, especialmente os menores.
Introduzindo Programmable Gradient Information (PGI)
Para abordar gradientes não confiáveis, o YOLOv9 propõe Programmable Gradient Information (PGI). O PGI tem dois componentes principais projetados para melhorar a qualidade do gradiente:
1. Ramificações reversíveis auxiliares
Ramificações 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 todas as ramificações antes de alimentar o modelo principal. Isso evita a divergência entre ramificações.
Ao gerar gradientes mais confiáveis, o PGI melhora a convergência e a eficiência do treinamento em todos os tamanhos de modelos:
- Modelos leves se beneficiam da supervisão profunda que não podiam usar antes
- Modelos maiores obtêm gradientes mais limpos, permitindo uma 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 de base:
- +0,1-0,4% de AP para o YOLOv9-Pequeno
- +0,5-0,6% de AP para modelos YOLOv9 maiores
Então, 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 para Precisão
Ao combinar as melhorias arquiteturais do GELAN e as melhorias de treinamento do PGI, o YOLOv9 alcança 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 principais:
- YOLOv9-Pequeno supera 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 4x 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 a 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 rapidamente recapitular 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 modelos.
- 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 modelos – Estabelece um novo estado da arte para configurações de modelos leves, médios e grandes. Superou 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 futuras inovações nessa capacidade crítica de visão computacional.












