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 na GPU T4.

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) APval (%) Latência (ms) Latência (Forward) (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

Em breve

A equipa do Ultralytics está a trabalhar ativamente na integração oficial dos modelos YOLOv10 no ultralytics pacote. Quando a integração estiver concluída, os exemplos de utilização apresentados abaixo estarão totalmente funcionais. Fica atento, seguindo as nossas redes sociais e Repositório GitHub para obteres as últimas actualizações sobre a integração do YOLOv10. Agradecemos a tua paciência e entusiasmo! 🚀

Para prever novas imagens com o YOLOv10:

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 num 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)

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.



Created 2024-05-25, Updated 2024-06-10
Authors: glenn-jocher (3), RizwanMunawar (2)

Comentários