YOLOv7 vs YOLOv10: Evolução da Arquitetura e Análise de Desempenho
A evolução da família YOLO (You Only Look Once) representa uma linha temporal fascinante dos avanços da visão por computador, equilibrando o eterno compromisso entre a velocidade de inferência e a precisão da deteção. Esta comparação analisa dois marcos significativos: YOLOv7um modelo robusto que estabeleceu novos padrões de referência em 2022, e YOLOv10, uma versão de 2024 que introduz uma mudança de paradigma com a formação NMS.
Embora ambos os modelos sejam excelentes opções para a deteção de objectos, respondem a filosofias de arquitetura diferentes. YOLOv7 ultrapassa os limites do "bag-of-freebies" treinável e da otimização do caminho do gradiente, enquanto YOLOv10 se concentra na eliminação dos estrangulamentos do pós-processamento para alcançar uma eficiência de ponta a ponta em tempo real.
YOLOv7: otimizar o caminho do gradiente
Lançado em julho de 2022, YOLOv7 introduziu alterações arquitectónicas significativas centradas na otimização do processo de formação sem aumentar os custos de inferência. Tornou-se rapidamente um favorito para tarefas de visão computacional de uso geral devido à sua alta precisão no conjunto de dadosCOCO .
Autores: Chien-Yao Wang, Alexey Bochkovskiy, e Hong-Yuan Mark Liao
Organização: Instituto de Ciência da Informação, Academia Sinica, Taiwan
Data: 2022-07-06
ArXiv:YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors
GitHub:WongKinYiu/yolov7
Principais caraterísticas arquitectónicas
YOLOv7 introduziu a Rede de Agregação de Camadas Eficiente Alargada (E-ELAN). Esta arquitetura permite que o modelo aprenda caraterísticas mais diversas através do controlo dos caminhos de gradiente mais curtos e mais longos, garantindo que a rede converge eficazmente durante o treino.
Além disso, YOLOv7 utiliza fortemente os métodos "Bag-of-Freebies" que melhoram a precisão durante o treinamento sem aumentar o custo de inferência. Estes incluem a re-parametrização do modelo, em que uma estrutura de treino complexa é simplificada numa estrutura de inferência optimizada, reduzindo a latência e mantendo o desempenho aprendido.
YOLOv10: O fim do NMS
YOLOv10, lançado em maio de 2024 por investigadores da Universidade de Tsinghua, aborda um obstáculo de longa data na deteção de objectos: Supressão não máximaNMS). Os modelos YOLO tradicionais prevêem várias caixas delimitadoras para um único objeto e dependem da NMS para filtrar os duplicados. Este passo de pós-processamento acrescenta latência que varia consoante o número de objectos na cena.
Autores: Ao Wang, Hui Chen, Lihao Liu, et al.
Organização: Universidade de Tsinghua
Data: 2024-05-23
ArXiv:YOLOv10: Deteção de objectos em tempo real de ponta a ponta
GitHub:THU-MIG/yolov10
Principais caraterísticas arquitectónicas
YOLOv10 introduz uma estratégia de atribuição dupla consistente. Durante o treinamento, o modelo usa tanto uma cabeça um-para-muitos (para supervisão rica) quanto uma cabeça um-para-um (para previsão de ponta a ponta). Durante a inferência, apenas a cabeça um-para-um é utilizada, eliminando totalmente a necessidade de NMS . Isto resulta numa inferência previsível e de baixa latência, tornando-a altamente adequada para aplicações de IA de ponta em que o tempo de processamento tem de ser constante.
Comparação técnica: Arquitetura e desempenho
A principal distinção entre estes modelos reside na sua abordagem à eficiência da inferência. YOLOv7 baseia-se numa espinha dorsal altamente optimizada (E-ELAN) para extrair caraterísticas de forma eficiente, mas continua a exigir o pós-processamento tradicional. YOLOv10 modifica a cabeça de deteção fundamental para remover as etapas de pós-processamento, alcançando uma latência mais baixa para níveis de precisão semelhantes.
Métricas de Desempenho
Tal como ilustrado no quadro seguinte, YOLOv10 demonstra uma eficiência superior. Por exemplo, o YOLOv10b atinge um valor mais elevado de mAP mais elevado (52,7%) do que o YOLOv7l (51,4%), utilizando significativamente menos parâmetros (24,4M vs 36,9M) e operações de vírgula flutuante (FLOPs).
Compreender a latência
A métrica "Speed" destaca o impacto do design NMS do YOLOv10. Ao remover a etapa NMS , YOLOv10 reduz a sobrecarga computacional durante a inferência, o que é particularmente benéfico em aceleradores de hardware como o TensorRT , onde o pós-processamento pode se tornar um gargalo.
| Modelo | tamanho (pixels) | mAPval 50-95 | Velocidade CPU ONNX (ms) | Velocidade T4 TensorRT10 (ms) | parâmetros (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
| 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 |
Forças e Fraquezas
Pontos fortes YOLOv7 :
- Robustez comprovada: Extensivamente testado em vários contextos académicos e industriais desde 2022.
- Suporte de alta resolução: Excelente desempenho em entradas de resolução mais elevada (por exemplo, 1280 píxeis) através de variantes W6/E6 específicas.
- Recursos da comunidade: Existe um grande volume de tutoriais e implementações de terceiros devido à sua idade.
YOLOv7 Pontos fracos:
- Complexidade: A re-parametrização e a estrutura da cabeça auxiliar podem complicar o pipeline de formação em comparação com os modelos Ultralytics modernos.
- Dependência deNMS : A velocidade de inferência é parcialmente dependente da densidade da cena devido ao NMS.
Pontos fortes YOLOv10 :
- Latência mais baixa: A arquitetura NMS permite uma inferência extremamente rápida, ideal para inferência em tempo real.
- Eficiência: Atinge a precisão mais avançada com menos parâmetros e menor utilização de memória.
- Facilidade de implantação: A remoção da etapa NMS simplifica o processo de exportação para formatos como ONNX e TensorRT.
YOLOv10 Pontos fracos:
- Especificidade da tarefa: centrado principalmente na deteção de objectos, enquanto outros modelos no ecossistema Ultralytics (como o YOLO11) suportam nativamente a segmentação, a estimativa de pose e o OBB num quadro unificado.
Casos de Uso Ideais
A escolha entre YOLOv7 e YOLOv10 depende frequentemente dos condicionalismos específicos do ambiente de implantação.
- Utilize YOLOv7 se: Se estiver a trabalhar num projeto antigo que já integra a arquitetura v7, ou se necessitar de variantes específicas de alta resolução (como o YOLOv7) para a deteção de pequenos objectos em imagens de grandes dimensões, em que a velocidade de inferência é secundária em relação à precisão bruta.
- Utilize YOLOv10 se: Está a implementar em dispositivos periféricos com recursos limitados (Raspberry Pi, Jetson Nano, telemóveis) ou necessita de uma latência mínima absoluta para aplicações como a condução autónoma ou a robótica de alta velocidade. A menor pegada de memória também torna mais barata a execução em ambientes de nuvem.
A vantagem Ultralytics
Quer escolha YOLOv7 ou YOLOv10, a sua utilização através da APIPython Ultralytics oferece vantagens significativas em relação à utilização do código bruto do repositório. Ultralytics integrou estes modelos num ecossistema unificado que dá prioridade à facilidade de utilização, à eficiência da formação e à versatilidade.
Experiência do utilizador simplificada
O treino de modelos complexos de aprendizagem profunda exigia, historicamente, a gestão de ficheiros de configuração e dependências intrincados. A estrutura Ultralytics padroniza esse processo. Os programadores podem alternar entre arquitecturas (por exemplo, de YOLOv10n para YOLOv10s ou mesmo para YOLO11) alterando um único argumento de cadeia de caracteres, sem reescrever os carregadores de dados ou os scripts de validação.
Exemplo de código
O exemplo a seguir demonstra como carregar e fazer previsões com esses modelos usando o pacote Ultralytics . Note como a API permanece consistente, independentemente da arquitetura do modelo subjacente.
from ultralytics import YOLO
# Load a pre-trained YOLOv10 model (NMS-free)
model_v10 = YOLO("yolov10n.pt")
# Load a pre-trained YOLOv7 model
model_v7 = YOLO("yolov7.pt")
# Run inference on an image
# The API handles underlying differences automatically
results_v10 = model_v10("https://ultralytics.com/images/bus.jpg")
results_v7 = model_v7("https://ultralytics.com/images/bus.jpg")
# Print results
for result in results_v10:
result.show() # Display predictions
Ecossistema e preparação para o futuro
Embora YOLOv7 e YOLOv10 sejam poderosos, o ecossistema Ultralytics está em constante evolução. O mais recente YOLO11 baseia-se nas lições aprendidas com a v7 (agregação de recursos) e a v10 (eficiência).
- Bem mantido: As actualizações frequentes garantem a compatibilidade com as versões mais recentes do PyTorch, CUDA e formatos de exportaçãoCoreML, ONNX, TensorRT).
- Eficiência de memória: Os modelos Ultralytics são projectados para minimizar o uso de VRAM GPU durante o treino, permitindo tamanhos de lote maiores no hardware do consumidor em comparação com muitas alternativas baseadas no Transformer (como o RT-DETR).
- Eficiência de treinamento: Com hiperparâmetros pré-ajustados e análise "inteligente" do conjunto de dados, a convergência do treino é frequentemente mais rápida, poupando custos de computação.
Para os programadores que iniciam novos projectos hoje, explorar o YOLO11 é altamente recomendado, uma vez que oferece um equilíbrio refinado entre a velocidade observada no YOLOv10 e a extração robusta de caraterísticas dos antecessores, juntamente com suporte nativo para tarefas que vão além da simples deteção, como a segmentação de instâncias e a estimativa de pose.
Explore Outros Modelos
Se estiver interessado em mais comparações ou em arquitecturas diferentes, considere estes recursos:
- YOLO11 vs YOLOv8 - Compare os mais recentes modelos topo de gama.
- RT-DETR vs YOLOv10 - Deteção baseada em transformador vs. eficiência baseada em CNN.
- YOLOv9 vs YOLOv10 - Examinando a Informação de Gradiente Programável (PGI) vs. desenhos NMS.