YOLOv9: um salto na detecção de objetos em tempo real
![YOLOv9: um salto na detecção de objetos em tempo real YOLOv9: um salto na detecção de objetos em tempo real](https://i0.wp.com/www.unite.ai/wp-content/uploads/2024/03/YOLOv9-1000x600.webp?resize=780%2C470&ssl=1)
A detecção de objetos teve um rápido progressão nos últimos anos graças a algoritmos de aprendizagem profundo porquê YOLO (You Only Look Once). A iteração mais recente, 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 porquê funciona a detecção de objetos. O objetivo da detecção de objetos é identificar e localizar objetos dentro de uma imagem, porquê carros, pessoas ou animais. É um recurso fundamental para aplicações porquê carros autônomos, sistemas de vigilância e pesquisa de imagens.
O detector obtém uma imagem porquê ingresso e gera caixas delimitadoras em torno dos objetos detectados, cada uma com um rótulo de classe associado. Conjuntos de dados populares porquê MS COCO fornecem milhares de imagens rotuladas para treinar e estimar esses modelos.
Existem duas abordagens principais para detecção de objetos:
- Detectores de dois estágios porquê 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 porquê o YOLO, aplique um protótipo 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 porquê 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. Cá está uma rápida visão universal de porquê o YOLO progrediu em várias iterações:
- YOLOv1 propuseram um protótipo unificado para prever caixas delimitadoras e probabilidades de classe diretamente de imagens completas em uma única passagem. Isso o tornou extremamente rápido em verificação com os modelos anteriores de dois estágios.
- YOLOv2 melhorado em relação ao original usando normalização de lote para melhor firmeza, 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 protótipo, 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 urgência 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 sege 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 vigor muito rígidas.
Versões recentes do YOLO obtêm subida precisão com grande número de parâmetros e operações de soma múltipla (FLOPs). Mas isso tem o dispêndio 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 a generalização.
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 duelo.
YOLOv9 – Melhor precisão com menos recursos
Os pesquisadores por trás do YOLOv9 se concentraram em melhorar a eficiência para compreender desempenho em tempo real em uma ampla gama de dispositivos. Eles introduziram duas inovações principais:
- Uma novidade arquitetura de protótipo chamada Rede Universal de Associação de Categoria Eficiente (GELAN) que maximiza a precisão enquanto minimiza parâmetros e FLOPs.
- Uma técnica de treinamento chamada Informações de gradiente programável (PGI) que fornece gradientes de aprendizagem mais confiáveis, mormente para modelos menores.
Vejamos porquê cada um desses avanços ajuda a melhorar a eficiência.
Arquitetura mais eficiente com GELAN
A própria arquitetura do protótipo é sátira para lastrar 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 conquistar recursos relevantes das imagens de ingresso. Mas muitas camadas ou filtros levam a modelos lentos e inchados.
Os autores projetaram o GELAN especificamente para extrair o sumo de precisão da menor arquitetura verosímil.
GELAN usa dois blocos de construção principais empilhados:
- Blocos de associação de camadas eficientes – Essas transformações agregadas em diversas filiais da rede para conquistar recursos em várias escalas com eficiência.
- Blocos Computacionais – Os blocos CSPNet ajudam a propagar informações entre camadas. Qualquer conjunto pode ser substituído com base nas restrições de computação.
Ao lastrar 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 verificaçã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 porquê o IGP também os ajuda a treinar melhor.
Melhor treinamento com informações de gradiente programável (PGI)
O treinamento do protótipo é também 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 mandar quanto os pesos de um protótipo 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 aborda isso introduzindo ramificações laterais adicionais com perdas para propagar melhor o sinal gradiente através da rede. Mas tende a quebrar e originar divergência para modelos menores e leves.
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 ingresso usando blocos porquê 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 protótipo principal.
Ao gerar gradientes mais confiáveis, o PGI ajuda os modelos menores a treinar com a mesma eficiência que os maiores:
Os experimentos mostraram que o PGI melhorou a precisão em todos os tamanhos de protótipo, mormente em configurações menores. Por exemplo, aumentou as pontuações de AP de YOLOv9-Small em 0,1-0,4% em relação à risca de base GELAN-Small. Os ganhos foram ainda mais significativos para modelos mais profundos porquê 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 unicamente 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 protótipo.
- YOLOv9 supera outros detectores em tempo real porquê 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, porquê RT-DETR-X. Apesar de usar 36% menos parâmetrosYOLOv9-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 novidade 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](https://i0.wp.com/www.unite.ai/wp-content/uploads/2024/02/yoloi2.png?resize=780%2C313&ssl=1)
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 unicamente 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 conjunto:
A ELAN removeu conexões de trilho entre camadas em obséquio de um nó de associação na saída. Isso melhorou ainda mais os parâmetros e a eficiência dos FLOPs.
Generalizando ELAN para eficiência maleável
Os autores generalizaram o ELAN ainda mais para gerar NO QUARTO, 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 conjunto computacional porquê ResNets ou CSPNet, oferecendo mais opções arquiteturais.
- Parametrização em profundidade – Profundidades de conjunto separadas para ramificação principal versus ramificação agregadora simplificam o ajuste fino do uso de recursos.
- Desempenho fixo em todas as configurações – GELAN mantém a precisão com diferentes tipos de blocos e profundidades, permitindo um dimensionamento maleável.
Essas mudanças tornam o GELAN um backbone potente, 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 11M do YOLOv7-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 porquê o IGP os ajuda a treinar melhor.
PGI – Treinamento correcto para todos os tamanhos de protótipo
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 protótipo. YOLOv9 usa uma novidade 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 protótipo 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 menorescausando 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 protótipo, mormente nos menores.
Apresentando informações de gradiente programável (PGI)
Para mourejar 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 à ingresso usando blocos porquê RevCols. Isso mantém gradientes limpos evitando o gargalo de informações.
2. Integração gradiente multinível
Um conjunto de fusão agrega gradientes de todas as ramificações antes de realimentar o protótipo 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 protótipo:
- 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 à risca 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 novidade 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, muito porquê outros detectores em tempo real porquê 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 porquê 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 subida 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 associaçã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 protótipo.
- 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 protótipo – 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, porquê 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 sátira de visão computacional.