YOLOv10: Deteção de Objetos de Ponta a Ponta em Tempo Real#
O YOLOv10, lançado em maio de 2024 e construído sobre o Ultralytics pacote Python por pesquisadores da Universidade de Tsinghua, introduz uma nova abordagem para a detecção de objetos em tempo real, abordando tanto as deficiências de pós-processamento quanto de arquitetura de modelos encontradas em versões anteriores do YOLO. Ao eliminar a supressão não máxima (NMS) e otimizar vários componentes do modelo, o YOLOv10 alcançou excelente desempenho com sobrecarga computacional significativamente reduzida no momento de seu lançamento. Seu design ponta a ponta sem NMS pioneirizou uma abordagem que foi desenvolvida posteriormente no YOLO26.

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
Visão geral#
A detecção de objetos em tempo real visa prever com precisão categorias e posições de objetos em imagens com baixa latência. A série YOLO tem estado na vanguarda desta pesquisa devido ao seu equilíbrio entre desempenho e eficiência. No entanto, a dependência de NMS e as ineficiências arquitetônicas têm dificultado o desempenho ideal. O YOLOv10 aborda esses problemas introduzindo atribuições duplas consistentes para treinamento sem NMS e uma estratégia holística de design de modelo impulsionada por eficiência e precisão.
Arquitetura#
A arquitetura do YOLOv10 baseia-se nos pontos fortes dos modelos YOLO anteriores, introduzindo várias inovações fundamentais. A arquitetura do modelo consiste nos seguintes componentes:
- Backbone: Responsável pela extração de características, o backbone no YOLOv10 usa uma versão aprimorada do CSPNet (Cross Stage Partial Network) para melhorar o fluxo de gradiente e reduzir a redundância computacional.
- Neck: O neck foi concebido para agregar características de diferentes escalas e passá-las para a head. Inclui camadas PAN (Path Aggregation Network) para uma fusão eficaz de características multiescala.
- One-to-Many Head: Gera múltiplas previsões por objeto durante o treino para fornecer sinais de supervisão ricos e melhorar a precisão da aprendizagem.
- One-to-One Head: Gera uma única melhor previsão por objeto durante a inferência para eliminar a necessidade de NMS, reduzindo assim a latência e melhorando a eficiência.
Principais recursos#
- Treinamento Sem NMS: Utiliza atribuições duplas consistentes para eliminar a necessidade de NMS, reduzindo a latência de inferência.
- Design Holístico de Modelo: Otimização abrangente de vários componentes, tanto de eficiência quanto de precisão, incluindo heads de classificação leves, downsampling desacoplado espaço-canal e design de bloco guiado por ranking.
- Capacidades Aprimoradas do Modelo: Incorpora convoluções de grande núcleo e módulos de autoatenção parcial para melhorar o desempenho sem custo computacional significativo.
Variantes do Modelo#
O YOLOv10 está disponível em várias escalas de modelo para atender às diferentes necessidades de aplicação:
- YOLOv10n: Versão Nano para ambientes extremamente limitados em recursos.
- YOLOv10s: Versão Small que equilibra velocidade e precisão.
- YOLOv10m: Versão Medium para uso de propósito geral.
- YOLOv10b: Versão equilibrada com maior largura para maior precisão.
- YOLOv10l: Versão Large para maior precisão à custa de maiores recursos computacionais.
- YOLOv10x: Versão Extra-large para máxima precisão e desempenho.
Desempenho#
O YOLOv10 supera versões anteriores do YOLO e outros modelos de última geração em termos de precisão e eficiência. Por exemplo, o YOLOv10s é 1,8x mais rápido que o RT-DETR-R18 com AP semelhante no conjunto de dados COCO, e o YOLOv10b tem 46% menos latência e 25% menos parâmetros do que o YOLOv9-C com o mesmo desempenho.
Latência medida com TensorRT FP16 num GPU T4.
| Modelo | Tamanho de Entrada | APval | FLOPs (G) | Latência (ms) |
|---|---|---|---|---|
| [YOLOv10n][1] | 640 | 38.5 | 6.7 | 1.84 |
| [YOLOv10s][2] | 640 | 46.3 | 21.6 | 2.49 |
| [YOLOv10m][3] | 640 | 51.1 | 59.1 | 4.74 |
| [YOLOv10b][4] | 640 | 52.5 | 92.0 | 5.74 |
| [YOLOv10l][5] | 640 | 53.2 | 120.3 | 7.28 |
| [YOLOv10x][6] | 640 | 54.4 | 160.4 | 10.70 |
Metodologia#
Atribuições Duplas Consistentes para Treino Sem NMS#
O YOLOv10 emprega atribuições de rótulo duplas, combinando estratégias de um para muitos e de um para um durante o treinamento para garantir supervisão rica e implantação eficiente de ponta a ponta. A métrica de correspondência consistente alinha a supervisão entre ambas as estratégias, aprimorando a qualidade das previsões durante a inferência.
Design de Modelo Impulsionado por Eficiência e Precisão Holísticas#
Melhorias de Eficiência#
- Head de Classificação Leve: Reduz a carga computacional da head de classificação usando convoluções separáveis por profundidade.
- Downsampling Desacoplado Espaço-Canal: Desacopla a redução espacial e a modulação de canal para minimizar a perda de informação e o custo computacional.
- Design de Bloco Guiado por Ranking: Adapta o design do bloco com base na redundância intrínseca do estágio, garantindo a utilização ideal dos parâmetros.
Melhorias de Precisão#
- Convolução de Grande Núcleo: Amplia o campo receptivo para aprimorar a capacidade de extração de características.
- Autoatenção Parcial (PSA): Incorpora módulos de autoatenção para melhorar a aprendizagem de representação global com sobrecarga mínima.
Experiências e Resultados#
O YOLOv10 foi extensivamente testado em benchmarks padrão como o COCO, demonstrando desempenho e eficiência superiores. O modelo atinge resultados de última geração em diferentes variantes, exibindo melhorias significativas em latência e precisão em comparação com versões anteriores e outros detectores contemporâneos.
Comparações#

Comparado com outros detetores de última geração:
- YOLOv10s / x são 1,8× / 1,3× mais rápidos que o RT-DETR-R18 / R101 com precisão semelhante
- YOLOv10b tem 25% menos parâmetros e 46% menos latência que o YOLOv9-C com a mesma precisão
- YOLOv10l / x superam o YOLOv8l / x em 0,3 AP / 0,5 AP com 1,8× / 2,3× menos parâmetros
Aqui está uma comparação detalhada das variantes do YOLOv10 com outros modelos de última geração:
| Modelo | Params (M) | FLOPs (G) | mAPval 50-95 | Latência (ms) | Latência-forward (ms) |
|---|---|---|---|---|---|
| YOLOv6-3.0-N | 4.7 | 11.4 | 37.0 | 2.69 | 1.76 |
| Gold-YOLO-N | 5.6 | 12.1 | 39.6 | 2.92 | 1.82 |
| YOLOv8n | 3.2 | 8.7 | 37.3 | 6.16 | 1.77 |
| YOLOv10n | 2.3 | 6.7 | 39.5 | 1.84 | 1.79 |
| YOLOv6-3.0-S | 18.5 | 45.3 | 44.3 | 3.42 | 2.35 |
| Gold-YOLO-S | 21.5 | 46.0 | 45.4 | 3.82 | 2.73 |
| YOLOv8s | 11.2 | 28.6 | 44.9 | 7.07 | 2.33 |
| YOLOv10s | 7.2 | 21.6 | 46.8 | 2.49 | 2.39 |
| RT-DETR-R18 | 20.0 | 60.0 | 46.5 | 4.58 | 4.49 |
| YOLOv6-3.0-M | 34.9 | 85.8 | 49.1 | 5.63 | 4.56 |
| Gold-YOLO-M | 41.3 | 87.5 | 49.8 | 6.38 | 5.45 |
| YOLOv8m | 25.9 | 78.9 | 50.6 | 9.50 | 5.09 |
| YOLOv10m | 15.4 | 59.1 | 51.3 | 4.74 | 4.63 |
| YOLOv6-3.0-L | 59.6 | 150.7 | 51.8 | 9.02 | 7.90 |
| Gold-YOLO-L | 75.1 | 151.7 | 51.8 | 10.65 | 9.78 |
| YOLOv8l | 43.7 | 165.2 | 52.9 | 12.39 | 8.06 |
| RT-DETR-R50 | 42.0 | 136.0 | 53.1 | 9.20 | 9.07 |
| YOLOv10l | 24.4 | 120.3 | 53.4 | 7.28 | 7.21 |
| YOLOv8x | 68.2 | 257.8 | 53.9 | 16.86 | 12.83 |
| RT-DETR-R101 | 76.0 | 259.0 | 54.3 | 13.71 | 13.58 |
| YOLOv10x | 29.5 | 160.4 | 54.4 | 10.70 | 10.60 |
Os valores de parâmetros e FLOPs são para o modelo fundido após model.fuse(), que mescla as camadas Conv e BatchNorm e remove o cabeçote de detecção auxiliar de um para muitos. Os checkpoints pré-treinados retêm a arquitetura de treinamento completa e podem mostrar contagens mais altas.
Exemplos de uso#
Para prever novas imagens com o YOLOv10. Os modelos também podem ser treinados em GPUs na nuvem através da Plataforma Ultralytics:
from ultralytics import YOLO
# Load a pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
# Perform object detection on an image
results = model("image.jpg")
# Display the results
results[0].show()Para treinar YOLOv10 em um conjunto de dados personalizado:
from ultralytics import YOLO
# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")
# Train the model
model.train(data="coco8.yaml", epochs=100, imgsz=640)Tarefas e modos suportados#
A série de modelos YOLOv10 oferece uma gama de modelos, cada um otimizado para Detecção de Objetos de alto desempenho. Esses modelos atendem a necessidades computacionais e requisitos de precisão variados, tornando-os versáteis para uma ampla gama de aplicações.
| Modelo | Nomes de arquivo | Tarefas | Treinamento | Validação | Inferência | Exportar |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | Detecção de Objetos | ✅ | ✅ | ✅ | ✅ |
Exportando YOLOv10#
Devido às novas operações introduzidas com o YOLOv10, nem todos os formatos de exportação fornecidos pelo Ultralytics são atualmente suportados. A tabela a seguir descreve quais formatos foram convertidos com sucesso usando o Ultralytics para o YOLOv10. Sinta-se à vontade para abrir um pull request se puder fornecer uma alteração de contribuição para adicionar suporte de exportação de formatos adicionais para o YOLOv10.
| Formato de Exportação | Suporte de Exportação | Inferência de Modelo Exportado | Notas |
|---|---|---|---|
| TorchScript | ✅ | ✅ | Formato de modelo padrão do PyTorch. |
| ONNX | ✅ | ✅ | Amplamente suportado para implantação. |
| OpenVINO | ✅ | ✅ | Otimizado para hardware Intel. |
| TensorRT | ✅ | ✅ | Otimizado para GPUs NVIDIA. |
| CoreML | ✅ | ✅ | Limitado a dispositivos Apple. |
| TF SavedModel | ✅ | ✅ | Formato de modelo padrão do TensorFlow. |
| TF GraphDef | ✅ | ✅ | Formato TensorFlow legado. |
| LiteRT | ✅ | ✅ | Otimizado para dispositivos móveis, embarcados e navegadores (LiteRT.js). |
| TF Edge TPU | ✅ | ✅ | Específico para dispositivos Edge TPU do Google. |
| PaddlePaddle | ❌ | ❌ | Popular na China; menor suporte global. |
| NCNN | ✅ | ❌ | A camada torch.topk não existe ou não está registrada |
Conclusão#
O YOLOv10 estabeleceu um novo padrão na detecção de objetos em tempo real em seu lançamento, abordando as deficiências das versões anteriores do YOLO e incorporando estratégias de design inovadoras. Sua abordagem sem NMS pioneirizou a detecção de objetos de ponta a ponta na família YOLO. Para o modelo Ultralytics mais recente com desempenho aprimorado e inferência sem NMS, veja o YOLO26.
Citações e Agradecimentos#
Gostaríamos de agradecer aos autores do YOLOv10 da Universidade de Tsinghua por sua extensa pesquisa e contribuições significativas para o framework Ultralytics:
@inproceedings{wang2024yolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
booktitle={Advances in Neural Information Processing Systems},
doi = {10.52202/079017-3429},
url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
volume={37},
pages={107984--108011},
year={2024}
}Para implementação detalhada, inovações arquitetônicas e resultados experimentais, consulte o artigo de pesquisa e o repositório do GitHub do YOLOv10 pela equipe da Universidade de Tsinghua.
FAQ#
O que é o YOLOv10 e como ele difere das versões anteriores do YOLO?#
O YOLOv10, desenvolvido por pesquisadores da Universidade de Tsinghua, introduz várias inovações importantes para a detecção de objetos em tempo real. Ele elimina a necessidade de supressão de não-máximos (NMS) empregando atribuições duplas consistentes durante o treinamento e componentes de modelo otimizados para desempenho superior com sobrecarga computacional reduzida. Para mais detalhes sobre sua arquitetura e recursos principais, confira a seção Visão geral do YOLOv10.
Como posso começar a executar inferências usando o YOLOv10?#
Para uma inferência fácil, você pode usar a biblioteca Python Ultralytics YOLO ou a interface de linha de comando (CLI). Abaixo estão exemplos de previsão de novas imagens usando o YOLOv10:
from ultralytics import YOLO
# Load the pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()Para mais exemplos de uso, visite nossa seção Exemplos de Uso.
Quais variantes de modelo o YOLOv10 oferece e quais são seus casos de uso?#
O YOLOv10 oferece várias variantes de modelo para atender a diferentes casos de uso:
- YOLOv10n: Adequado para ambientes extremamente limitados em recursos
- YOLOv10s: Equilibra velocidade e precisão
- YOLOv10m: Uso de propósito geral
- YOLOv10b: Maior precisão com largura aumentada
- YOLOv10l: Alta precisão ao custo de recursos computacionais
- YOLOv10x: Precisão e desempenho máximos
Cada variante é projetada para diferentes necessidades computacionais e requisitos de precisão, tornando-as versáteis para uma variedade de aplicações. Explore a seção Variantes do Modelo para mais informações.
Como a abordagem sem NMS no YOLOv10 melhora o desempenho?#
O YOLOv10 elimina a necessidade de supressão de não-máximos (NMS) durante a inferência empregando atribuições duplas consistentes para o treinamento. Essa abordagem reduz a latência de inferência e aprimora a eficiência de previsão. A arquitetura também inclui um cabeçote de um para um para inferência, garantindo que cada objeto receba uma única melhor previsão. Para uma explicação detalhada, consulte a seção Atribuições Duplas Consistentes para Treinamento Sem NMS.
Onde posso encontrar as opções de exportação para modelos YOLOv10?#
O YOLOv10 suporta vários formatos de exportação, incluindo TorchScript, ONNX, OpenVINO e TensorRT. No entanto, nem todos os formatos de exportação fornecidos pelo Ultralytics são atualmente suportados para o YOLOv10 devido às suas novas operações. Para detalhes sobre os formatos suportados e instruções sobre exportação, visite a seção Exportando o YOLOv10.
Quais são os benchmarks de desempenho para os modelos YOLOv10?#
O YOLOv10 supera versões anteriores do YOLO e outros modelos de última geração em precisão e eficiência. Por exemplo, o YOLOv10s é 1,8x mais rápido que o RT-DETR-R18 com um AP semelhante no conjunto de dados COCO. O YOLOv10b mostra 46% menos latência e 25% menos parâmetros do que o YOLOv9-C com o mesmo desempenho. Benchmarks detalhados podem ser encontrados na seção Comparações.