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.
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:
- 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.
- 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.
- 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.
- 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
- Treinamento sem NMS: Utiliza atribuições duplas consistentes para eliminar a necessidade de NMS, reduzindo a latência da inferência.
- 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.
- 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
- Cabeça de classificação leve: Reduz a sobrecarga computacional da cabeça de classificação utilizando convoluções separáveis em profundidade.
- 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.
- 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
- Convolução de núcleo grande: Aumenta o campo recetivo para melhorar a capacidade de extração de características.
- 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 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
Para treinar o YOLOv10 num conjunto de dados personalizado:
Exemplo
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:
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.