Salta para o conteúdo

YOLOv10: Deteção de objectos em tempo real de ponta a ponta

O YOLOv10, construído sobre o pacote Ultralytics Python por investigadores da Universidade de Tsinghua, introduz uma nova abordagem à deteção de objectos em tempo real, resolvendo as deficiências do pós-processamento e da arquitetura do modelo encontradas nas versões anteriores de YOLO . Ao eliminar a supressão não máxima (NMS) e otimizar vários componentes do modelo, o YOLOv10 atinge um desempenho de ponta com uma sobrecarga computacional significativamente reduzida. Experiências extensivas demonstram a superioridade da relação precisão-latência em várias escalas de modelos.

YOLOv10 atribuição dupla consistente para uma formação sem NMS

Visão geral

A deteção de objectos em tempo real visa prever com precisão as categorias e posições dos objectos nas imagens com baixa latência. A série YOLO tem estado na vanguarda desta investigação devido ao seu equilíbrio entre desempenho e eficiência. No entanto, a dependência de NMS e as ineficiências arquitectónicas têm impedido um desempenho ótimo. O YOLOv10 aborda estas questões introduzindo atribuições duplas consistentes para formação sem NMS e uma estratégia holística de conceção de modelos orientada para a eficiência e a precisão.

Arquitetura

A arquitetura do YOLOv10 baseia-se nos pontos fortes dos modelos anteriores do YOLO , introduzindo simultaneamente várias inovações importantes. A arquitetura do modelo é constituída pelos seguintes componentes:

  1. Backbone: Responsável pela extração de características, o backbone no YOLOv10 utiliza uma versão melhorada da CSPNet (Cross Stage Partial Network) para melhorar o fluxo de gradiente e reduzir a redundância computacional.
  2. Pescoço: O pescoço foi concebido para agregar características de diferentes escalas e passá-las para a cabeça. Inclui camadas PAN (Path Aggregation Network) para uma fusão eficaz de características multiescala.
  3. Cabeça Um-para-Muitos: Gera várias previsões por objeto durante a formação para fornecer sinais de supervisão ricos e melhorar a precisão da aprendizagem.
  4. Cabeça 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.

Características principais

  1. Treinamento sem NMS: Utiliza atribuições duplas consistentes para eliminar a necessidade de NMS, reduzindo a latência da inferência.
  2. Conceção holística do modelo: Otimização abrangente de vários componentes, tanto do ponto de vista da eficiência como da precisão, incluindo cabeças de classificação leves, amostragem descendente dissociada de canais espaciais e conceção de blocos orientados para a classificação.
  3. Capacidades de modelo melhoradas: Incorpora convoluções de núcleo grande e módulos de auto-atenção parcial para melhorar o desempenho sem custos computacionais significativos.

Variantes do modelo

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

  • YOLOv10-N: Versão nano para ambientes com recursos extremamente limitados.
  • YOLOv10-S: Versão pequena que equilibra velocidade e precisão.
  • YOLOv10-M: Versão média para utilização geral.
  • YOLOv10-B: Versão equilibrada com maior largura para maior precisão.
  • YOLOv10-L: Versão grande para uma maior precisão à custa de mais recursos computacionais.
  • YOLOv10-X: 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 última geração em termos de precisão e eficiência. Por exemplo, o YOLOv10-S é 1,8x mais rápido do que o RT-DETR-R18 com AP semelhante no conjunto de dados COCO, e o YOLOv10-B tem 46% menos latência e 25% menos parâmetros do que o YOLOv9-C com o mesmo desempenho.

Modelo Tamanho da entrada APval FLOPs (G) Latência (ms)
YOLOv10-N 640 38.5 6.7 1.84
YOLOv10-S 640 46.3 21.6 2.49
YOLOv10-M 640 51.1 59.1 4.74
YOLOv10-B 640 52.5 92.0 5.74
YOLOv10-L 640 53.2 120.3 7.28
YOLOv10-X 640 54.4 160.4 10.70

Latência medida com TensorRT FP16 em T4 GPU.

Metodologia

Atribuições duplas consistentes para uma formação sem NMS

O YOLOv10 emprega atribuições de rótulos duplos, combinando estratégias 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 as duas estratégias, melhorando a qualidade das previsões durante a inferência.

Conceção holística de modelos orientada para a eficiência e a precisão

Melhorias de eficiência

  1. Cabeça de classificação leve: Reduz a sobrecarga computacional da cabeça de classificação utilizando convoluções separáveis em profundidade.
  2. Amostragem descendente desacoplada de canal espacial: Desacopla a redução espacial e a modulação de canal para minimizar a perda de informação e o custo computacional.
  3. Conceção de blocos orientada para a 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 núcleo grande: Aumenta o campo recetivo para melhorar a capacidade de extração de características.
  2. Partial Self-Attention (PSA): Incorpora módulos de auto-atenção para melhorar a aprendizagem da representação global com um mínimo de sobrecarga.

Experiências e resultados

O YOLOv10 foi amplamente 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, apresentando melhorias significativas na latência e precisão em comparação com versões anteriores e outros detectores contemporâneos.

Comparações

Comparação do YOLOv10 com os detectores de objectos SOTA

Compara com outros detectores de última geração:

  • O YOLOv10-S / X é 1,8× / 1,3× mais rápido do que o RT-DETR-R18 / R101 com uma precisão semelhante
  • O YOLOv10-B tem menos 25% de parâmetros e uma latência 46% inferior ao YOLOv9-C com a mesma precisão
  • O YOLOv10-L / X é superior ao YOLOv8-L / X em 0,3 AP / 0,5 AP com menos 1,8× / 2,3× parâmetros

Aqui tens uma comparação detalhada das variantes do YOLOv10 com outros modelos topo de gama:

Modelo Parâmetros
(M)
FLOPs
(G)
mAPval
50-95
Latência
(ms)
Latência de encaminhamento
(ms)
YOLOv6-3.0-N 4.7 11.4 37.0 2.69 1.76
Ouro-YOLO-N 5.6 12.1 39.6 2.92 1.82
YOLOv8-N 3.2 8.7 37.3 6.16 1.77
YOLOv10-N 2.3 6.7 39.5 1.84 1.79
YOLOv6-3.0-S 18.5 45.3 44.3 3.42 2.35
Ouro-YOLO-S 21.5 46.0 45.4 3.82 2.73
YOLOv8-S 11.2 28.6 44.9 7.07 2.33
YOLOv10-S 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
Ouro-YOLO-M 41.3 87.5 49.8 6.38 5.45
YOLOv8-M 25.9 78.9 50.6 9.50 5.09
YOLOv10-M 15.4 59.1 51.3 4.74 4.63
YOLOv6-3.0-L 59.6 150.7 51.8 9.02 7.90
Ouro-YOLO-L 75.1 151.7 51.8 10.65 9.78
YOLOv8-L 43.7 165.2 52.9 12.39 8.06
RT-DETR-R50 42.0 136.0 53.1 9.20 9.07
YOLOv10-L 24.4 120.3 53.4 7.28 7.21
YOLOv8-X 68.2 257.8 53.9 16.86 12.83
RT-DETR-R101 76.0 259.0 54.3 13.71 13.58
YOLOv10-X 29.5 160.4 54.4 10.70 10.60

Exemplos de utilização

Para prever novas imagens com o 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 variedade de modelos, cada um otimizado para detecção de objetos de alto desempenho. Esses modelos atendem a diversas necessidades computacionais e requisitos de precisão, tornando-os versáteis para uma ampla gama de aplicações.

Modelo Nomes de ficheiros Tarefas Inferência Validação Formação Exportação
YOLOv10 yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt Deteção de objectos

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 Ultralytics para YOLOv10. Sinta-se à vontade para abrir uma solicitação pull se puder fornecer uma alteração de contribuição para adicionar suporte à exportação de formatos adicionais para YOLOv10.

Formato de exportação Suportado
TorchScript
ONNX
OpenVINO
TensorRT
CoreML
TF SavedModel
TF GraphDef
TF Leve
TF Borda TPU
TF.js
PaddlePaddle
NCNN

Conclusão

O YOLOv10 estabelece um novo padrão na deteção de objectos em tempo real, resolvendo 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 a escolha ideal para uma ampla gama de aplicações do mundo real.

Citações e agradecimentos

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

@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 arquitectónicas e resultados experimentais, consulta o artigo de investigação YOLOv10 e o repositório GitHub da equipa da Universidade de Tsinghua.

FAQ

O que é o YOLOv10 e quais são as suas diferenças em relação às versões anteriores do YOLO ?

O YOLOv10, desenvolvido por investigadores da Universidade de Tsinghua, introduz várias inovações importantes na deteção de objectos 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 a sua arquitetura e principais características, consulta a secção de visão geral do YOLOv10.

Como é que posso começar a fazer inferência com o YOLOv10?

Para facilitar a inferência, pode utilizar a biblioteca Ultralytics YOLO Python ou a interface de linha de comandos (CLI). Abaixo estão exemplos de previsão de novas imagens usando YOLOv10:

Exemplo

from ultralytics import YOLO

# Load the pre-trained YOLOv10-N 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 utilização, visita a nossa secção Exemplos de utilização.

Que variantes de modelo oferece o YOLOv10 e quais são os seus casos de utilização?

O YOLOv10 oferece várias variantes de modelos para responder a diferentes casos de utilização:

  • YOLOv10-N: Adequado para ambientes com recursos extremamente limitados
  • YOLOv10-S: equilibra velocidade e precisão
  • YOLOv10-M: Utilização geral
  • YOLOv10-B: Maior precisão com maior largura
  • YOLOv10-L: Alta precisão à custa de recursos computacionais
  • YOLOv10-X: Máxima precisão e desempenho

Cada variante foi concebida para diferentes necessidades computacionais e requisitos de precisão, tornando-as versáteis para uma variedade de aplicações. Explora a secção Variantes do modelo para obteres mais informações.

Como é que a abordagem sem 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 treinamento. Esta abordagem reduz a latência da inferência e melhora a eficiência da previsão. A arquitetura também inclui uma cabeça um-para-um para inferência, garantindo que cada objeto obtém uma única melhor previsão. Para obter uma explicação detalhada, consulte a secção Atribuições duplas consistentes para formação sem NMS.

Onde posso encontrar as opções de exportação para os 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 por Ultralytics são atualmente suportados pelo YOLOv10 devido às suas novas operações. Para mais detalhes sobre os formatos suportados e instruções de exportação, visita a secção Exportar YOLOv10.

Quais são as referências de desempenho dos modelos YOLOv10?

O YOLOv10 supera as versões anteriores do YOLO e outros modelos de última geração, tanto em termos de precisão como de eficiência. Por exemplo, o YOLOv10-S é 1,8x mais rápido do que o RT-DETR-R18 com um PA semelhante no conjunto de dados COCO. O YOLOv10-B apresenta 46% menos latência e 25% menos parâmetros do que o YOLOv9-C com o mesmo desempenho. Podes encontrar referências detalhadas na secção Comparações.



Criado em 2024-05-25, atualizado em 2024-07-24
Autores: hasanghaffari93 (1), glenn-jocher (5), zhixuwei (1), abirami-vina (1), RizwanMunawar (3), Burhan-Q (1)

Comentários