YOLO Vision 2026:

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.

Atribuição dupla consistente do YOLOv10 para treinamento sem NMS



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:

  1. 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.
  2. 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.
  3. 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.
  4. 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#

  1. Treinamento Sem NMS: Utiliza atribuições duplas consistentes para eliminar a necessidade de NMS, reduzindo a latência de inferência.
  2. 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.
  3. 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.

Desempenho

Latência medida com TensorRT FP16 num GPU T4.

ModeloTamanho de EntradaAPvalFLOPs (G)Latência (ms)
[YOLOv10n][1]64038.56.71.84
[YOLOv10s][2]64046.321.62.49
[YOLOv10m][3]64051.159.14.74
[YOLOv10b][4]64052.592.05.74
[YOLOv10l][5]64053.2120.37.28
[YOLOv10x][6]64054.4160.410.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#

  1. Head de Classificação Leve: Reduz a carga computacional da head de classificação usando convoluções separáveis por profundidade.
  2. 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.
  3. 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#

  1. Convolução de Grande Núcleo: Amplia o campo receptivo para aprimorar a capacidade de extração de características.
  2. 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#

Comparação do YOLOv10 com detectores de objetos SOTA

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
Desempenho

Aqui está uma comparação detalhada das variantes do YOLOv10 com outros modelos de última geração:

ModeloParams
(M)
FLOPs
(G)
mAPval
50-95
Latência
(ms)
Latência-forward
(ms)
YOLOv6-3.0-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8n3.28.737.36.161.77
YOLOv10n2.36.739.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8s11.228.644.97.072.33
YOLOv10s7.221.646.82.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
Gold-YOLO-M41.387.549.86.385.45
YOLOv8m25.978.950.69.505.09
YOLOv10m15.459.151.34.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8l43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10l24.4120.353.47.287.21
YOLOv8x68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10x29.5160.454.410.7010.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:

Exemplo
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:

Exemplo
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.

ModeloNomes de arquivoTarefasTreinamentoValidaçãoInferênciaExportar
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.ptDetecçã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çãoSuporte de ExportaçãoInferência de Modelo ExportadoNotas
TorchScriptFormato de modelo padrão do PyTorch.
ONNXAmplamente suportado para implantação.
OpenVINOOtimizado para hardware Intel.
TensorRTOtimizado para GPUs NVIDIA.
CoreMLLimitado a dispositivos Apple.
TF SavedModelFormato de modelo padrão do TensorFlow.
TF GraphDefFormato TensorFlow legado.
LiteRTOtimizado para dispositivos móveis, embarcados e navegadores (LiteRT.js).
TF Edge TPUEspecífico para dispositivos Edge TPU do Google.
PaddlePaddlePopular na China; menor suporte global.
NCNNA 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:

Citação
@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:

Exemplo
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.

Comentários