YOLOv9 vs. YOLOv10: Uma Comparação Técnica para Detecção de Objetos
Selecionar o modelo de detecção de objetos certo é uma decisão crítica para desenvolvedores e pesquisadores, equilibrando a necessidade de alta precisão com as restrições de inferência em tempo real e recursos computacionais. Este guia fornece uma comparação técnica aprofundada entre o YOLOv9 e o YOLOv10, duas arquiteturas de ponta que ultrapassaram os limites do desempenho da visão computacional em 2024.
Enquanto YOLOv9 se concentra em inovações arquitetônicas para resolver gargalos de informações de aprendizado profundo, YOLOv10 introduz uma mudança de paradigma com um design livre de NMS para latência mínima. Ambos os modelos são totalmente integrados ao pacote Ultralytics python, permitindo que os usuários os treinem, validem e implementem facilmente dentro de um ecossistema unificado.
Métricas de Desempenho e Benchmarks
As compensações de desempenho entre esses dois modelos são distintas. O YOLOv9 geralmente ultrapassa os limites da precisão média (mAP), particularmente com suas variantes maiores, tornando-o adequado para cenários onde a precisão é fundamental. Por outro lado, o YOLOv10 é projetado para eficiência, reduzindo significativamente a latência de inferência e a contagem de parâmetros, o que é ideal para implantação de borda.
A tabela abaixo ilustra essas diferenças usando o conjunto de dados COCO. Notavelmente, o YOLOv10n alcança velocidades incríveis em GPUs T4, enquanto o YOLOv9e domina em precisão de detecção.
| Modelo | tamanho (pixels) | mAPval 50-95 | Velocidade CPU ONNX (ms) | Velocidade T4 TensorRT10 (ms) | parâmetros (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv9t | 640 | 38.3 | - | 2.3 | 2.0 | 7.7 |
| YOLOv9s | 640 | 46.8 | - | 3.54 | 7.1 | 26.4 |
| YOLOv9m | 640 | 51.4 | - | 6.43 | 20.0 | 76.3 |
| YOLOv9c | 640 | 53.0 | - | 7.16 | 25.3 | 102.1 |
| YOLOv9e | 640 | 55.6 | - | 16.77 | 57.3 | 189.0 |
| YOLOv10n | 640 | 39.5 | - | 1.56 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.7 | - | 2.66 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.3 | - | 5.48 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.7 | - | 6.54 | 24.4 | 92.0 |
| YOLOv10l | 640 | 53.3 | - | 8.33 | 29.5 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 12.2 | 56.9 | 160.4 |
YOLOv9: Solucionando o Gargalo de Informação
Lançado em fevereiro de 2024, o YOLOv9 tem como alvo um desafio teórico fundamental em redes neurais profundas: a perda de informação à medida que os dados se propagam através de camadas profundas. Este modelo foi projetado para garantir que a rede retenha as características essenciais necessárias para uma detecção de objetos precisa.
Detalhes Técnicos:
- Autores: Chien-Yao Wang, Hong-Yuan Mark Liao
- Organização:Institute of Information Science, Academia Sinica
- Data: 2024-02-21
- Arxiv:arXiv:2402.13616
- GitHub:WongKinYiu/yolov9
Arquitetura: PGI e GELAN
O YOLOv9 introduz dois conceitos inovadores:
- Informação de Gradiente Programável (PGI): Uma estrutura de supervisão auxiliar que evita a perda de informação durante o treinamento. Garante que gradientes confiáveis sejam gerados para atualizar os pesos da rede, resolvendo problemas de supervisão profunda encontrados em arquiteturas anteriores.
- Generalized Efficient Layer Aggregation Network (GELAN): Uma nova arquitetura que maximiza a eficiência dos parâmetros. O GELAN permite que o modelo alcance maior precisão com menos parâmetros em comparação com os designs convencionais, otimizando como os recursos são agregados entre as camadas.
Forças e Fraquezas
O YOLOv9 destaca-se em aplicações críticas em precisão. A sua capacidade de preservar informações detalhadas de características torna-o superior para detetar objetos pequenos ou navegar em cenas complexas. No entanto, esta sofisticação tem um custo em complexidade. As adições arquitetónicas como o PGI destinam-se principalmente ao treinamento, o que significa que podem ser removidas durante a inferência, mas os recursos de treinamento podem ser maiores. Além disso, embora eficiente, a sua latência é geralmente superior aos designs eficientes especializados do YOLOv10.
YOLOv10: A Era da Detecção Sem NMS
YOLOv10, desenvolvido por pesquisadores da Universidade de Tsinghua e lançado em maio de 2024, prioriza a velocidade em tempo real e a capacidade de implementação end-to-end. Sua característica definidora é a eliminação do Non-Maximum Suppression (NMS), uma etapa de pós-processamento que tem sido tradicionalmente um gargalo para a latência de inferência.
Detalhes Técnicos:
- Autores: Ao Wang, Hui Chen, Lihao Liu, et al.
- Organização:Tsinghua University
- Data: 2024-05-23
- Arxiv:arXiv:2405.14458
- GitHub:THU-MIG/yolov10
Arquitetura: Atribuições Duplas Consistentes
A principal inovação do YOLOv10 é a Atribuições Duplas Consistentes durante o treinamento. O modelo emprega uma estratégia de atribuição um-para-muitos para uma supervisão rica durante o treinamento, mas muda para uma atribuição um-para-um para inferência. Essa arquitetura permite que o modelo preveja diretamente a caixa delimitadora ideal para cada objeto, tornando o pós-processamento NMS obsoleto. Juntamente com um Design de Bloco Guiado por Classificação, o YOLOv10 reduz a redundância e a sobrecarga computacional (FLOPs).
Forças e Fraquezas
A principal vantagem do YOLOv10 é a baixa latência. Ao remover o NMS, a latência de inferência se torna determinística e significativamente menor, o que é fundamental para o processamento de vídeo em tempo real. Ele também possui excelente eficiência de parâmetros, como pode ser visto na tabela de comparação, onde os modelos YOLOv10 alcançam precisão competitiva com menos FLOPs. Uma possível desvantagem é sua introdução relativamente recente em comparação com ecossistemas estabelecidos, embora a integração ao Ultralytics mitigue isso. Ele também é altamente especializado para detecção, enquanto outros modelos no ecossistema oferecem suporte nativo mais amplo para multitarefas.
Exportação End-to-End
Como o YOLOv10 foi projetado para não usar NMS, exportá-lo para formatos como ONNX ou TensorRT é geralmente mais simples e produz modelos "puros" de ponta a ponta, sem a necessidade de plugins complexos de pós-processamento.
Análise Comparativa para Desenvolvedores
Ao integrar esses modelos na produção, vários fatores práticos entram em jogo, além das métricas brutas.
Facilidade de Uso e Ecossistema
Ambos os modelos se beneficiam imensamente por fazerem parte do ecossistema Ultralytics. Isso significa que os desenvolvedores podem alternar entre YOLOv9 e YOLOv10 simplesmente alterando uma string de modelo, utilizando os mesmos pipelines de treinamento, ferramentas de validação e formatos de implantação.
- Eficiência no Treinamento: Os modelos da Ultralytics normalmente exigem menos memória do que os detectores baseados em transformadores, permitindo o treinamento em GPUs de consumidor padrão.
- Versatilidade: Embora o YOLOv9 e o YOLOv10 estejam focados na detecção, a API Ultralytics suporta outras tarefas como segmentação de instâncias e estimativa de pose através de modelos como YOLO11 e YOLOv8, oferecendo um kit de ferramentas abrangente para diversos projetos de visão de IA.
Casos de Uso Ideais
Escolha YOLOv9 quando:
- Sua aplicação exige a maior precisão possível (por exemplo, imagem médica, detecção de defeitos na fabricação).
- Você está trabalhando com objetos difíceis de detectar, onde a retenção de informações é crucial.
- A latência é uma preocupação secundária em comparação com a precisão.
Escolha YOLOv10 quando:
- Velocidade é crucial. Aplicações como direção autônoma, navegação robótica ou análise de vídeo de alta FPS se beneficiam do design livre de NMS.
- Implementação em dispositivos de borda (como NVIDIA Jetson ou Raspberry Pi) onde os recursos de CPU/GPU são limitados.
- Você precisa de um tempo de inferência determinístico, sem a variabilidade introduzida pelo processamento NMS.
Exemplo de Código: Executando Ambos os Modelos
Graças à API Ultralytics unificada, comparar esses modelos em seus próprios dados é simples. O código python a seguir demonstra como carregar e executar a inferência com ambas as arquiteturas.
from ultralytics import YOLO
# Load a pre-trained YOLOv9 model
model_v9 = YOLO("yolov9c.pt")
# Load a pre-trained YOLOv10 model
model_v10 = YOLO("yolov10n.pt")
# Run inference on an image
results_v9 = model_v9("path/to/image.jpg")
results_v10 = model_v10("path/to/image.jpg")
# Print results
print(f"YOLOv9 Detection: {len(results_v9[0].boxes)}")
print(f"YOLOv10 Detection: {len(results_v10[0].boxes)}")
Conclusão
Tanto o YOLOv9 quanto o YOLOv10 representam marcos significativos na visão computacional. O YOLOv9 ultrapassa os limites teóricos da retenção de recursos e precisão, tornando-o uma potência para pesquisa e tarefas de alta precisão. O YOLOv10 redefine a eficiência removendo o gargalo do NMS, oferecendo uma solução simplificada para aplicações em tempo real.
Para usuários que buscam o melhor equilíbrio absoluto entre precisão, velocidade e riqueza de recursos em várias tarefas (incluindo segmentação e classificação), também recomendamos explorar o YOLO11. Como a iteração mais recente da Ultralytics, o YOLO11 refina os melhores atributos de seus predecessores em um pacote robusto e pronto para a empresa, adequado para praticamente qualquer aplicação de visão de IA.
Explore Outros Modelos
O ecossistema Ultralytics é vasto. Se os requisitos do seu projeto forem diferentes, considere estas alternativas:
- YOLO11: O mais recente modelo de última geração, oferecendo desempenho e versatilidade superiores em Detecção, Segmentação, Pose, OBB e Classificação.
- YOLOv8: Um modelo altamente popular e estável, conhecido por sua ampla compatibilidade e suporte multitarefa.
- RT-DETR: Um detector baseado em transformer que oferece alta precisão sem a necessidade de NMS, servindo como uma alternativa às arquiteturas YOLO para casos de uso específicos.
Ao aproveitar a plataforma Ultralytics, você obtém acesso a todo este conjunto de modelos, garantindo que você sempre tenha a ferramenta certa para o trabalho.