YOLOv10 vs. YOLOv9: Uma comparação técnica exaustiva
O panorama da deteção de objectos tem evoluído rapidamente, com as sucessivas iterações da arquitetura YOLO (You Only Look Once) a ultrapassarem os limites da velocidade e da precisão. Duas das contribuições recentes mais significativas para este domínio são YOLOv10 e YOLOv9. Embora ambos os modelos atinjam o desempenho mais avançado no conjunto de dadosCOCO , divergem significativamente nas suas filosofias de conceção e objectivos arquitectónicos.
YOLOv10 prioriza a baixa latência e a eficiência de ponta a ponta, eliminando a necessidade de supressão não máximaNMS), enquanto YOLOv9 se concentra em maximizar a retenção e a precisão das informações por meio de informações de gradiente programável (PGI). Este guia fornece uma comparação técnica detalhada para ajudar os programadores e investigadores a selecionar o modelo ideal para as suas aplicações de visão por computador.
YOLOv10: O Detetor em Tempo Real de Ponta a Ponta
Lançado em maio de 2024 por investigadores da Universidade de Tsinghua, YOLOv10 representa uma mudança de paradigma na linhagem YOLO . A sua principal inovação é a remoção do passo de pós-processamento Non-Maximum Suppression (NMS), que tem sido tradicionalmente um estrangulamento para a latência da inferência.
Detalhes Técnicos:
- Autores: Ao Wang, Hui Chen, Lihao Liu, et al.
- Organização:Universidade de Tsinghua
- Data: 2024-05-23
- Arxiv:Deteção de objectos em tempo real de ponta a ponta
- GitHub:THU-MIG/yolov10
Arquitetura e Inovações Chave
YOLOv10 atinge a sua eficiência através de uma combinação de atribuições duplas consistentes e de uma conceção holística do modelo orientada para a eficiência e a precisão.
- FormaçãoNMS: Os modelos YOLO tradicionais dependem do NMS para filtrar caixas delimitadoras duplicadas. YOLOv10 utiliza uma estratégia de atribuição dupla durante o treinamento do modelo. Um ramo um-para-muitos fornece sinais de supervisão ricos para o aprendizado, enquanto um ramo um-para-um garante que o modelo gere uma única melhor previsão por objeto durante a inferência. Isso permite que o modelo seja implantado sem NMS, reduzindo significativamente a latência da inferência.
- Otimização do modelo: A arquitetura inclui cabeças de classificação leves, redução da amostragem desacoplada de canais espaciais e conceção de blocos orientados para a classificação. Essas caraterísticas reduzem a redundância computacional e o uso de memória, tornando o modelo altamente eficiente em hardware com recursos limitados.
Vantagem da eficiência
A remoção do NMS no YOLOv10 é particularmente benéfica para a implementação de ponta. Em dispositivos onde os recursos CPU são escassos, evitar o custo computacional de ordenar e filtrar milhares de caixas candidatas pode resultar em acelerações substanciais.
YOLOv9: Dominar a retenção de informações
Apresentado em fevereiro de 2024 por Chien-Yao Wang e Hong-Yuan Mark Liao, YOLOv9 visa o problema do "estrangulamento da informação" inerente às redes neuronais profundas. À medida que os dados passam por camadas sucessivas (extração de caraterísticas), podem perder-se informações cruciais, o que leva a uma degradação da precisão, especialmente no caso de objectos pequenos ou difíceis detect detetar.
Detalhes Técnicos:
- Autores: Chien-Yao Wang, Hong-Yuan Mark Liao
- Organização:Instituto de Ciência da Informação, Academia Sinica
- Data: 2024-02-21
- Arxiv:Aprender o que se quer aprender usando informação de gradiente programável
- GitHub:WongKinYiu/yolov9
Arquitetura e Inovações Chave
YOLOv9 introduz novos conceitos para garantir que a rede retém e utiliza o máximo possível de informações de entrada.
- Informação de Gradiente Programável (PGI): O PGI fornece uma estrutura de supervisão auxiliar que gera gradientes fiáveis para atualizar os pesos da rede. Isso garante que as camadas profundas recebam informações de entrada completas, atenuando o problema do gradiente de desaparecimento e melhorando a convergência.
- Rede de agregação de camadas eficiente e generalizada (GELAN): Esta nova arquitetura substitui a ELAN convencional utilizada nas versões anteriores. A GELAN optimiza a utilização de parâmetros e a eficiência computacional (FLOPs), permitindo que YOLOv9 atinja uma maior precisão com um tamanho de modelo comparável ao dos seus antecessores.
Insight de aprendizagem profunda
O enfoque do YOLOv9 na retenção de informação torna-o excecionalmente forte na deteção de objectos em cenas complexas, onde os detalhes das caraterísticas poderiam ser perdidos durante as operações de redução da amostragem no backbone.
Métricas de desempenho: Velocidade vs. Precisão
A escolha entre estes dois modelos resume-se frequentemente a um compromisso entre a velocidade de inferência bruta e a precisão da deteção. A tabela abaixo destaca as diferenças de desempenho em várias escalas de modelos.
Análise:
- Latência: YOLOv10 supera consistentemente o YOLOv9 em termos de latência, particularmente nos modelos de menor dimensão (N e S). Por exemplo, o YOLOv10n atinge uma velocidade de inferência de 1,56 ms no TensorRT, significativamente mais rápido do que modelos comparáveis.
- Precisão: YOLOv9 é excelente em termos de precisão na extremidade superior do espetro. O modelo YOLOv9e atinge uns notáveis 55,6% mAP, tornando-o a escolha superior para aplicações em que a precisão é fundamental.
- Eficiência: YOLOv10 oferece uma excelente precisão por parâmetro. O YOLOv10b atinge 52,7% de mAP com menor latência do que o YOLOv9c, demonstrando a eficácia do seu design holístico.
| Modelo | tamanho (pixels) | mAPval 50-95 | Velocidade CPU ONNX (ms) | Velocidade T4 TensorRT10 (ms) | parâmetros (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 |
| 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 |
Casos de Uso Ideais
Compreender os pontos fortes de cada modelo ajuda a selecionar a ferramenta certa para os objectivos específicos do seu projeto.
Quando escolher YOLOv10
- Implantação de IA de borda: Os aplicativos executados em dispositivos como NVIDIA Jetson ou Raspberry Pi se beneficiam do design NMS, que reduz a sobrecarga CPU .
- Análise de vídeo de alta frequência: Cenários que requerem o processamento de fluxos de vídeo de elevado FPS, como a monitorização do tráfego ou a análise desportiva.
- Robótica em tempo real: Sistemas autónomos que dependem de ciclos de feedback de baixa latência para navegação e prevenção de obstáculos.
Quando escolher YOLOv9
- Inspeção de alta precisão: Controlo de qualidade industrial em que a omissão de um defeito (falso negativo) é dispendiosa.
- Deteção de pequenos objectos: Aplicações que envolvem a análise de imagens de satélite ou imagens médicas em que os objectos são pequenos e com poucas caraterísticas.
- Cenas complexas: Ambientes com elevada oclusão ou desordem em que é necessária a máxima retenção de informação para distinguir objectos.
Utilização com Ultralytics
Uma das vantagens significativas da utilização destes modelos é a sua integração no ecossistema Ultralytics . Tanto YOLOv10 como YOLOv9 podem ser utilizados através da mesma API Python unificada e da Interface de Linha de ComandoCLI), simplificando o fluxo de trabalho desde a formação até à implementação.
Exemplo Python
O código a seguir demonstra como carregar e executar a inferência com ambos os modelos usando o ultralytics package.
from ultralytics import YOLO
# Load a YOLOv10 model (NMS-free, high speed)
model_v10 = YOLO("yolov10n.pt")
# Load a YOLOv9 model (High accuracy)
model_v9 = YOLO("yolov9c.pt")
# Run inference on an image
# The API remains consistent regardless of the underlying architecture
results_v10 = model_v10("https://ultralytics.com/images/bus.jpg")
results_v9 = model_v9("https://ultralytics.com/images/bus.jpg")
# Print results
for r in results_v10:
print(f"YOLOv10 Detections: {r.boxes.shape[0]}")
for r in results_v9:
print(f"YOLOv9 Detections: {r.boxes.shape[0]}")
A vantagem Ultralytics
A escolha do Ultralytics para os seus projectos de visão por computador oferece várias vantagens para além da arquitetura do modelo:
- Facilidade de utilização: A API de fácil utilização permite-lhe alternar entre YOLOv9, YOLOv10 e outros modelos como YOLO11 alterando simplesmente o nome do ficheiro de pesos.
- Equilíbrio de desempenho: As implementações Ultralytics são optimizadas para o desempenho no mundo real, equilibrando a velocidade e a precisão.
- Eficiência de treinamento: A estrutura suporta recursos como precisão mista automática (AMP) e treinamento GPU , facilitando o treinamento de modelos personalizados em seus próprios conjuntos de dados.
- Requisitos de memória: Os modelos Ultralytics normalmente apresentam menor uso de memória em comparação com as alternativas baseadas em transformadores, facilitando o treinamento em GPUs de nível de consumidor.
Conclusão
Ambos YOLOv10 e YOLOv9 representam marcos importantes na deteção de objectos. YOLOv10 é o claro vencedor para aplicações que dão prioridade à velocidade e à eficiência, graças à sua inovadora arquitetura NMS. Por outro lado, YOLOv9 continua a ser uma escolha robusta para cenários que exigem a maior precisão possível e retenção de informações.
Para os programadores que procuram a solução mais recente e mais versátil, recomendamos também que explorem o YOLO11. YOLO11 baseia-se nos pontos fortes destes antecessores, oferecendo um equilíbrio refinado de velocidade, precisão e funcionalidades para tarefas de deteção, segmentação e estimativa de pose.
Explore Outros Modelos
- Ultralytics YOLO11 - O mais recente modelo de última geração.
- Ultralytics YOLOv8 - Um modelo versátil e maduro para várias tarefas de visão.
- RT-DETR - Um detetor baseado em transformador para aplicações de alta precisão.