Ir para o conteúdo

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

O YOLOv10, construído no pacote Python Ultralytics 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 as de arquitetura de modelo 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ça um desempenho de última geração com uma sobrecarga computacional significativamente reduzida. Experimentos extensivos demonstram suas vantagens superiores de precisão e latência em várias escalas de modelo.

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



Assista: Como Treinar o YOLOv10 no Dataset SKU-110k usando Ultralytics | Dataset de Varejo

Visão geral

A detecção de objetos em tempo real visa prever com precisão as categorias e posições dos 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 do NMS e as ineficiências arquitetônicas têm prejudicado o desempenho ideal. O YOLOv10 aborda essas questões introduzindo atribuições duplas consistentes para treinamento sem NMS e uma estratégia holística de design de modelo orientada à eficiência e precisão.

Arquitetura

A arquitetura do YOLOv10 se baseia nos pontos fortes dos modelos YOLO anteriores, ao mesmo tempo em que introduz várias inovações importantes. 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 é projetado para agregar recursos de diferentes escalas e passá-los para o head. Ele inclui camadas PAN (Path Aggregation Network) para uma fusão eficaz de recursos multiescala.
  3. Head Um-para-Muitos: 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. Head Um-para-Um: 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 Características

  1. Treinamento sem NMS: Utiliza atribuições duplas consistentes para eliminar a necessidade de NMS, reduzindo a latência de inferência.
  2. Design de Modelo Holístico: Otimização abrangente de vários componentes, tanto da perspectiva de eficiência quanto de precisão, incluindo heads de classificação leves, down sampling espacial-canal desacoplado e design de bloco guiado por classificação.
  3. Capacidades de Modelo Aprimoradas: Incorpora convoluções de kernel grande e módulos de autoatenção parcial para melhorar o desempenho sem custo computacional significativo.

Variantes de Modelo

O YOLOv10 está disponível em várias escalas de modelo para atender a diferentes necessidades de aplicação:

  • YOLOv10n: Versão Nano para ambientes extremamente limitados em recursos.
  • YOLOv10s: Versão pequena que equilibra velocidade e precisão.
  • YOLOv10m: Versão média para uso geral.
  • YOLOv10b: Versão equilibrada com largura aumentada para maior precisão.
  • YOLOv10l: Versão grande para maior precisão ao custo de recursos computacionais aumentados.
  • 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 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 na GPU T4.

Modelo Tamanho da Entrada APval FLOPs (G) Latência (ms)
YOLOv10n 640 38.5 6.7 1.84
YOLOv10s 640 46.3 21.6 2.49
YOLOv10m 640 51.1 59.1 4.74
YOLOv10b 640 52.5 92.0 5.74
YOLOv10l 640 53.2 120.3 7.28
YOLOv10x 640 54.4 160.4 10.70

Metodologia

Atribuições Duplas Consistentes para Treinamento Livre de NMS

O YOLOv10 emprega atribuições de rótulos duplos, combinando estratégias de um-para-muitos e um-para-um durante o treinamento para garantir uma supervisão rica e uma 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.

Eficiência Holística - Design de Modelo Impulsionado pela Precisão

Melhorias de Eficiência

  1. Cabeçalho de Classificação Leve: Reduz a sobrecarga computacional do cabeçalho de classificação usando convoluções separáveis em profundidade.
  2. Subamostragem Desacoplada Espacial-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 Ranqueamento: 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 receptivo para melhorar a capacidade de extração de recursos.
  2. Autoatenção Parcial (PSA): Incorpora módulos de autoatenção para melhorar o aprendizado de representação global com sobrecarga mínima.

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 última geração 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 com outros detectores de última geração:

  • YOLOv10s / x são 1,8× / 1,3× mais rápidos que RT-DETR-R18 / R101 com precisão similar
  • YOLOv10b tem 25% menos parâmetros e 46% menor latência do que YOLOv9-C com a mesma precisão
  • YOLOv10l / x supera 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:

Modelo Parâmetros
(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

Exemplos de uso

Para prever novas imagens com YOLOv10:

Exemplo

from ultralytics import YOLO

# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")

# Perform object detection on an image
results = model("image.jpg")

# Display the results
results[0].show()
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo detect predict model=yolov10n.pt source=path/to/bus.jpg

Para treinar o YOLOv10 num 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)
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640

# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov10n.yaml source=path/to/bus.jpg

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

Modelo Nomes de arquivos Tarefas Inferência Validação Treinamento 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 pela Ultralytics são atualmente suportados. A tabela seguinte descreve quais os formatos que foram convertidos com sucesso utilizando a Ultralytics para o YOLOv10. Sinta-se à vontade para abrir um pull request se puder fornecer uma alteração de contribuição para adicionar suporte à exportação de formatos adicionais para o YOLOv10.

Formato de Exportação Suporte à Exportação Inferência do Modelo Exportado Notas
TorchScript Formato de modelo PyTorch padrão.
ONNX Amplamente suportado para implementaçã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.
TF Lite Otimizado para dispositivos móveis e embarcados.
TF Edge TPU Específico para dispositivos Edge TPU da Google.
TF.js Ambiente JavaScript para uso no navegador.
PaddlePaddle Popular na China; menor suporte global.
NCNN Camada torch.topk não existe ou não está registada

Conclusão

O YOLOv10 estabelece um novo padrão na detecção de objetos em tempo real, abordando as deficiências das versões anteriores do YOLO e incorporando estratégias de design inovadoras. A sua capacidade de fornecer alta precisão com baixo custo computacional torna-o uma escolha ideal para uma vasta gama de aplicações do mundo real, incluindo fabrico, retalho e veículos autónomos.

Citações e Agradecimentos

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

@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 arquitetónicas e resultados experimentais, consulte o artigo de pesquisa do YOLOv10 e o repositório GitHub da equipa da Universidade de Tsinghua.

FAQ

O que é 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. Elimina a necessidade de supressão não máxima (NMS) empregando atribuições duplas consistentes durante o treinamento e componentes de modelo otimizados para um desempenho superior com sobrecarga computacional reduzida. Para mais detalhes sobre sua arquitetura e principais recursos, consulte a seção de visão geral do YOLOv10.

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

Para facilitar a inferência, você pode usar a biblioteca Ultralytics YOLO em python ou a interface de linha de comando (CLI). Abaixo estão exemplos de previsão de novas imagens usando YOLOv10:

Exemplo

from ultralytics import YOLO

# Load the pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg

Para mais exemplos de uso, visite nossa seção de 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 geral
  • YOLOv10b: Maior precisão com largura aumentada
  • YOLOv10l: Alta precisão ao custo de recursos computacionais
  • YOLOv10x: Máxima precisão e desempenho

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 de Variantes de Modelo para obter mais informações.

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

O YOLOv10 elimina a necessidade de supressão não máxima (NMS) durante a inferência, empregando atribuições duplas consistentes para o treinamento. Essa abordagem reduz a latência de inferência e aumenta a eficiência da previsão. A arquitetura também inclui um cabeçalho individual para inferência, garantindo que cada objeto receba uma única melhor previsão. Para uma explicação detalhada, consulte a seção de Atribuições Duplas Consistentes para Treinamento Livre de 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 pela Ultralytics são atualmente suportados para YOLOv10 devido às suas novas operações. Para obter detalhes sobre os formatos suportados e instruções sobre como exportar, visite a seção Exportando YOLOv10.

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

O YOLOv10 supera as versões anteriores do YOLO e outros modelos de ponta 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.



📅 Criado há 1 ano ✏️ Atualizado há 3 meses

Comentários