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. Neck: The neck is designed to aggregate features from different scales and passes them to the head. It includes PAN (Path Aggregation Network) layers for effective multi-scale feature fusion.
  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

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

The YOLOv10 models series offers a range of models, each optimized for high-performance Object Detection. These models cater to varying computational needs and accuracy requirements, making them versatile for a wide array of applications.

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

Exporting YOLOv10

Due to the new operations introduced with YOLOv10, not all export formats provided by Ultralytics are currently supported. The following table outlines which formats have been successfully converted using Ultralytics for YOLOv10. Feel free to open a pull request if you're able to provide a contribution change for adding export support of additional formats for YOLOv10.

Export Format Supported
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.



Created 2024-05-25, Updated 2024-06-24
Authors: RizwanMunawar (3), Burhan-Q (1), glenn-jocher (3)

Comentários