YOLOv10: Deteção de Objetos End-to-End em Tempo Real

YOLOv10, released in May 2024 and built on the Ultralytics Python package by researchers at Tsinghua University, introduces a new approach to real-time object detection, addressing both the post-processing and model architecture deficiencies found in previous YOLO versions. By eliminating non-maximum suppression (NMS) and optimizing various model components, YOLOv10 achieved excellent performance with significantly reduced computational overhead at its time of release. Its NMS-free end-to-end design pioneered an approach that has been further developed in 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 deteçã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 arquiteturais dificultaram o desempenho ideal. O YOLOv10 aborda estas questões introduzindo atribuições duplas consistentes para treinamento sem NMS e uma estratégia de design de modelo holística focada em eficiência-precisão.

Arquitetura

A arquitetura do YOLOv10 baseia-se nos pontos fortes dos modelos YOLO anteriores enquanto introduz 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 utiliza uma versão aprimorada da CSPNet (Cross Stage Partial Network) para melhorar o fluxo de gradiente e reduzir a redundância computacional.
  2. Neck: O neck é projetado para agregar características de diferentes escalas e passá-las para o 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 treinamento para fornecer sinais de supervisão ricos e melhorar a precisão do aprendizado.
  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 do Modelo: Otimização abrangente de vários componentes sob as perspetivas de eficiência e precisão, incluindo heads de classificação leves, downsampling desacoplado de espaço-canal e design de bloco orientado por classificação.
  3. Capacidades Aprimoradas do Modelo: Incorpora convoluções de kernel grande e módulos de atenção parcial para melhorar o desempenho sem custo computacional significativo.

Variantes do Modelo

O YOLOv10 vem em várias escalas de modelo para atender a diferentes necessidades de aplicação:

  • YOLOv10n: Versão nano para ambientes com recursos extremamente limitados.
  • YOLOv10s: Versão pequena que equilibra velocidade e precisão.
  • YOLOv10m: Versão média para uso geral.
  • YOLOv10b: Versão equilibrada com maior largura para maior precisão.
  • YOLOv10l: Versão grande para maior precisão ao custo de maiores recursos computacionais.
  • YOLOv10x: Versão extra grande para máxima precisão e desempenho.

Desempenho

O YOLOv10 supera as versões anteriores do YOLO e outros modelos de ponta em termos de precisão e eficiência. Por exemplo, o YOLOv10s é 1,8x mais rápido que o RT-DETR-R18 com AP similar no dataset COCO, e o YOLOv10b tem 46% menos latência e 25% menos parâmetros que o YOLOv9-C com o mesmo desempenho.

Desempenho

Latência medida com TensorRT FP16 numa GPU T4.

ModeloTamanho da 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 Treinamento sem NMS

O YOLOv10 emprega atribuições duplas de etiquetas, combinando estratégias one-to-many e one-to-one durante o treinamento para garantir uma supervisão rica e uma implementação end-to-end eficiente. A métrica de correspondência consistente alinha a supervisão entre ambas as estratégias, melhorando a qualidade das previsões durante a inferência.

Design de Modelo Holístico Orientado por Eficiência-Precisão

Melhorias de Eficiência

  1. Head de Classificação Leve: Reduz o custo computacional do head de classificação usando convoluções separáveis por profundidade.
  2. Downsampling Desacoplado de 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 Orientado por Classificação: 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 Kernel Grande: Amplia o campo recetivo para melhorar a capacidade de extração de características.
  2. Atenção Parcial (PSA): Incorpora módulos de autoatenção para melhorar o aprendizado de representação global com custo mínimo.

Experimentos e Resultados

O YOLOv10 foi extensivamente testado em benchmarks padrão como o COCO, demonstrando desempenho e eficiência superiores. O modelo alcança resultados de ponta em diferentes variantes, mostrando 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 a outros detectores de ponta:

  • YOLOv10s / x são 1,8× / 1,3× mais rápidos que o RT-DETR-R18 / R101 com precisão similar
  • 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 ponta:

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 Params e FLOPs são para o modelo fundido após model.fuse(), que combina camadas Conv e BatchNorm e remove a cabeça de detecção auxiliar one-to-many. Checkpoints pré-treinados mantêm a arquitetura de treinamento completa e podem apresentar contagens maiores.

Exemplos de Uso

Para prever novas imagens com YOLOv10. Os modelos também podem ser treinados em GPUs na nuvem através da Ultralytics Platform:

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 o 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 Object Detection de alto desempenho. Estes modelos atendem a diferentes necessidades computacionais e requisitos de precisão, tornando-os versáteis para uma ampla gama de aplicações.

ModeloNomes de arquivoTarefasInferência (Inference)ValidaçãoTreinamentoExport
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.ptDetecção de Objetos

Exportando o YOLOv10

Devido às novas operações introduzidas com o YOLOv10, nem todos os formatos de exportação fornecidos pela Ultralytics são atualmente suportados. A tabela a seguir descreve quais formatos foram convertidos com sucesso usando a Ultralytics para o YOLOv10. Sinta-se à vontade para abrir um pull request se você conseguir fornecer uma alteração de contribuição para adicionar suporte de exportação a formatos adicionais para o YOLOv10.

Formato de ExportaçãoSuporte de ExportaçãoInferência do Modelo ExportadoNotas
TorchScriptFormato de modelo PyTorch padrão.
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 legado do TensorFlow.
TF LiteOtimizado para dispositivos móveis e embarcados.
TF Edge TPUEspecífico para dispositivos Edge TPU do Google.
TF.jsAmbiente JavaScript para uso em navegador.
PaddlePaddlePopular na China; suporte global menor.
NCNNCamada torch.topk não existe ou não está registrada

Conclusão

O YOLOv10 estabeleceu um novo padrão em detecção de objetos em tempo real em seu lançamento ao abordar as deficiências das versões anteriores do YOLO e incorporar estratégias de design inovadoras. Sua abordagem sem NMS foi pioneira na detecção de objetos de ponta a ponta na família YOLO. Para o modelo mais recente da Ultralytics com desempenho aprimorado e inferência sem NMS, veja YOLO26.

Citações e Agradecimentos

Gostaríamos de agradecer aos autores do YOLOv10 da Tsinghua University por sua extensa pesquisa e contribuições significativas para o framework Ultralytics:

Citação
@article{THU-MIGyolov10,
  title={YOLOv10: Real-Time End-to-End Object Detection},
  author={Ao Wang, Hui Chen, Lihao Liu, et al.},
  journal={arXiv preprint arXiv:2405.14458},
  year={2024},
  institution={Tsinghua University},
  license = {AGPL-3.0}
}

Para uma implementação detalhada, inovações arquiteturais e resultados experimentais, consulte o artigo de pesquisa e o repositório GitHub do YOLOv10 pela equipe da Tsinghua University.

FAQ

O que é o YOLOv10 e como ele difere das versões anteriores do YOLO?

O YOLOv10, desenvolvido por pesquisadores da Tsinghua University, introduz várias inovações importantes para a detecção de objetos em tempo real. Ele elimina a necessidade de supressão não-máxima (NMS) ao empregar atribuições duplas consistentes durante o treinamento e componentes de modelo otimizados para desempenho superior com menor sobrecarga computacional. Para mais detalhes sobre sua arquitetura e principais recursos, confira a seção visão geral do YOLOv10.

Como posso começar a executar a inferência usando o YOLOv10?

Para 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 com recursos extremamente limitados
  • 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 Model Variants para mais informações.

Como a abordagem livre de NMS no YOLOv10 melhora o desempenho?

O YOLOv10 elimina a necessidade de non-maximum suppression (NMS) durante a inferência ao empregar atribuições duplas consistentes para o treinamento. Esta abordagem reduz a latência de inferência e aumenta a eficiência da predição. A arquitetura também inclui uma head de um para um para inferência, garantindo que cada objeto receba uma única melhor predição. Para uma explicação detalhada, consulte a seção Consistent Dual Assignments for NMS-Free Training.

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 pela Ultralytics são atualmente suportados para o YOLOv10 devido às suas novas operações. Para detalhes sobre os formatos suportados e instruções sobre como exportar, visite a seção Exporting YOLOv10.

Quais são os benchmarks de desempenho para os modelos YOLOv10?

O YOLOv10 supera as versões anteriores do YOLO e outros modelos de ponta tanto em precisão quanto em eficiência. Por exemplo, o YOLOv10s é 1,8x mais rápido que o RT-DETR-R18 com um AP similar no conjunto de dados COCO. O YOLOv10b apresenta 46% menos latência e 25% menos parâmetros que o YOLOv9-C com o mesmo desempenho. Benchmarks detalhados podem ser encontrados na seção Comparisons.

Comentários