YOLOv5 vs. YOLOv10: Evolução da deteção de objectos em tempo real
O panorama da deteção de objectos foi significativamente moldado pela série You Only Look OnceYOLO). Desde a sua criação, YOLO tem equilibrado velocidade e precisão, tornando-se a arquitetura de referência para os programadores de visão por computador. Esta comparação explora dois momentos cruciais desta história: Ultralytics YOLOv5o padrão da indústria em termos de fiabilidade e versatilidade, e o YOLOv10um recente lançamento académico da Universidade de Tsinghua que introduz a deteção NMS para uma maior eficiência.
Visão geral do modelo
Ultralytics YOLOv5
Lançado em junho de 2020 por Glenn Jocher e Ultralytics, YOLOv5 mudou fundamentalmente a forma como os modelos de IA foram implantados. Ele priorizou a usabilidade, a exportação para diversos formatosCoreML, ONNX, TFLite) e o desempenho robusto em hardware de ponta. Continua a ser um dos modelos de visão mais populares e amplamente implantados globalmente devido à sua filosofia "simplesmente funciona" e ao amplo apoio da comunidade.
Autores principais: Glenn Jocher
Organização:Ultralytics
Data de Lançamento: 2020-06-26
GitHub:yolov5
YOLOv10
Lançado em maio de 2024 por investigadores da Universidade de Tsinghua, YOLOv10 visa eliminar os estrangulamentos de pós-processamento encontrados nas versões anteriores. Ao introduzir atribuições duplas consistentes para treinamento NMS, ele otimiza o pipeline de inferência, reduzindo a latência e a sobrecarga computacional.
Autores principais: Ao Wang, Hui Chen, et al.
Organização: Universidade de Tsinghua
Data de publicação: 2024-05-23
arXiv:YOLOv10: Deteção de objectos em tempo real de ponta a ponta
Inovação mais recente
Ao comparar estas arquitecturas fortes, os programadores que iniciam novos projectos devem também avaliar YOLO11. Esta baseia-se nos pontos fortes de ambas, oferecendo precisão de ponta, extração de caraterísticas melhorada e suporte nativo para diversas tarefas, como a estimativa de pose e a deteção orientada de objectos.
Arquitetura e inovação técnica
As diferenças arquitectónicas entre YOLOv5 e YOLOv10 realçam a mudança de uma fiabilidade madura, baseada em âncoras, para uma eficiência de ponta, sem âncoras.
YOLOv5: A norma baseada em âncoras
YOLOv5 utiliza um backbone CSPNet (Cross Stage Partial Network) que equilibra a profundidade e a largura do modelo para minimizar os FLOPS e manter a precisão. Baseia-se em caixas de ancoragem -formas predefinidasque ajudam o modelo a prever as dimensões do objeto.
- Espinha dorsal: CSP-Darknet53 centrada no fluxo de gradiente.
- Cabeça: Cabeça acoplada com previsão baseada em âncoras.
- Pós-processamento: Requer Supressão Não Máxima (NMS) para filtrar as detecções duplicadas.
YOLOv10: Eficiência NMS
YOLOv10 apresenta um design holístico orientado para a eficiência e a precisão. A sua caraterística de destaque é a estratégia de formaçãoNMS, utilizando atribuições duplas consistentes. Isto permite que o modelo preveja exatamente uma caixa delimitadora por objeto durante a inferência, removendo completamente o passo NMS indutor de latência.
- Espinha dorsal: Melhorado com convoluções de núcleo grande e auto-atenção parcial.
- Cabeça: Cabeça unificada que combina atribuições de etiquetas um-para-muitos e um-para-um.
- Otimização: Conceção de blocos orientada para reduzir a redundância.
Análise de Desempenho
A tabela seguinte compara as métricas de desempenho no conjunto de dadosCOCO . Enquanto YOLOv5 permanece competitivo, particularmente na velocidade CPU para a sua variante Nano, YOLOv10 demonstra uma eficiência superior em termos de parâmetros e precisãomAP).
| Modelo | tamanho (pixels) | mAPval 50-95 | Velocidade CPU ONNX (ms) | Velocidade T4 TensorRT10 (ms) | parâmetros (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv5n | 640 | 28.0 | 73.6 | 1.12 | 2.6 | 7.7 |
| YOLOv5s | 640 | 37.4 | 120.7 | 1.92 | 9.1 | 24.0 |
| YOLOv5m | 640 | 45.4 | 233.9 | 4.03 | 25.1 | 64.2 |
| YOLOv5l | 640 | 49.0 | 408.4 | 6.61 | 53.2 | 135.0 |
| YOLOv5x | 640 | 50.7 | 763.2 | 11.89 | 97.2 | 246.4 |
| 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 |
Discriminação métrica
- Precisão (mAP): YOLOv10 mostra um salto significativo na precisão média. Por exemplo, o YOLOv10n atinge 39,5 mAP em comparação com os 28,0 mAP do YOLOv5n, o que o torna muito mais capaz de detetar objectos difíceis.
- Eficiência: YOLOv10 alcança estes resultados com menos parâmetros (2,3M vs 2,6M para o modelo Nano), demonstrando os benefícios do seu design arquitetónico optimizado.
- Velocidade de inferência: O YOLOv5n permanece incrivelmente rápido em CPUs(73,6 ms), o que é crítico para dispositivos de borda GPU GPU, como unidades Raspberry Pi mais antigas. No entanto, no hardware GPU TensorRT), YOLOv10 mantém velocidades competitivas, apesar de sua maior precisão.
Forças e Fraquezas
Ultralytics YOLOv5
- Ecossistema incomparável: Apoiado por anos de desenvolvimento, tem uma das maiores comunidades activas. Os problemas são resolvidos rapidamente e os recursos são abundantes.
- Versatilidade: Para além da deteção, suporta nativamente a segmentação e classificação de imagens.
- Facilidade de utilização: A API foi concebida para ser simples. Carregar um modelo do PyTorch Hub requer uma única linha de código.
- Implementação: O suporte alargado para formatos de exportação garante que funciona em tudo, desde telemóveis a servidores na nuvem.
YOLOv10
- Baixa latência: A remoção do NMS reduz significativamente o tempo de pós-processamento, o que é vital para aplicações em tempo real em que cada milissegundo conta.
- Eficiência de parâmetros: Proporciona uma maior precisão por parâmetro, o que o torna um forte candidato para dispositivos com armazenamento ou memória limitados.
- Foco: Embora poderoso, é principalmente especializado na deteção de objectos, não possuindo a amplitude multitarefa nativa (como a estimativa de pose) encontrada na série Ultralytics YOLO (v8, 11).
Requisitos de memória
Ambos os modelos foram concebidos para serem leves. Ao contrário dos grandes modelos transformadores que consomem grandes quantidades de memória CUDA durante o treino, os modelos Ultralytics YOLO são optimizados para eficiência de memória, permitindo que sejam treinados em GPUs de consumo com VRAM modesta.
Casos de Uso no Mundo Real
Quando escolher YOLOv5
YOLOv5 é a escolha pragmática para sistemas de produção que exigem estabilidade e amplo suporte de plataforma.
- Automação industrial: Amplamente utilizado na indústria transformadora para controlo de qualidade, onde a fiabilidade é fundamental.
- Aplicações móveis: A sua compatibilidade comprovada com iOS CoreML) e Android TFLite) torna-o ideal para a integração de aplicações no dispositivo.
- Prototipagem rápida: O grande volume de tutoriais e documentação permite que os programadores passem do conceito ao POC em horas.
Quando escolher YOLOv10
YOLOv10 é excelente para cenários que exigem a mais elevada relação precisão/eficiência.
- Robótica de alta velocidade: A arquitetura NMS reduz a variação da latência, o que é crucial para os circuitos de controlo dos robôs autónomos.
- Investigação académica: Os investigadores que procuram comparar os mais recentes paradigmas de deteção de ponta a ponta considerarão a arquitetura do YOLOv10 inovadora e eficaz.
- Vigilância remota: O elevado mAP com baixo número de parâmetros adequa-se a sistemas de segurança que funcionam com largura de banda ou armazenamento limitados.
Formação e facilidade de utilização
Ultralytics dá prioridade a uma experiência de programador simplificada. Quer esteja a utilizar o repositório YOLOv5 clássico ou o moderno ultralytics para os modelos mais recentes, o processo é intuitivo.
Utilizar YOLOv5
YOLOv5 é famoso por ser fácil de carregar através do PyTorch Hub para inferência instantânea.
import torch
# Load YOLOv5s from PyTorch Hub
model = torch.hub.load("ultralytics/yolov5", "yolov5s")
# Perform inference on an image
img = "https://ultralytics.com/images/zidane.jpg"
results = model(img)
# Display results
results.show()
Utilizar YOLOv10
YOLOv10 pode ser integrado utilizando o ultralytics Python , beneficiando da mesma API poderosa.
from ultralytics import YOLO
# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
# Train the model on COCO data
model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference
model.predict("https://ultralytics.com/images/bus.jpg", save=True)
Conclusão
Ambas as arquitecturas representam marcos importantes na visão por computador. YOLOv5 continua a ser o cavalo de batalha fiável da indústria - robusto, versátil e apoiado por um enorme ecossistema. É a escolha segura para diversas necessidades de implantação. YOLOv10 ultrapassa os limites da eficiência com o seu design NMS, oferecendo uma atualização atraente para utilizadores especificamente focados em tarefas de deteção que necessitam de maximizar a precisão em hardware limitado.
Para os programadores que procuram o melhor dos dois mundos - combinando a maturidade do ecossistema do Ultralytics com a precisão e a velocidade de ponta - recomendamos que explorem o YOLO11. Ele unifica esses avanços em uma estrutura única e poderosa, pronta para qualquer tarefa de visão.
Para explorar mais comparações, consulte YOLOv5 vs. YOLOv8 ou YOLOv10 vs. YOLO11.