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 o desempenho mais avançado com uma sobrecarga computacional significativamente reduzida. Experiências exaustivas demonstram a superioridade da relação precisão-latência em várias escalas de modelos.
Ver: Como treinar o YOLOv10 no conjunto de dados SKU-110k utilizando Ultralytics | Conjunto de dados de retalho
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 caraterí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.
- Pescoço: O pescoço foi concebido para agregar caraterísticas de diferentes escalas e passá-las para a cabeça. Inclui camadas PAN (Path Aggregation Network) para uma fusão eficaz de caraterísticas multiescala.
- 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.
Caraterí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 desacoplada de canais espaciais e conceção de blocos guiados por 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 um custo computacional significativo.
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 maiores 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
- Cabeça de classificação leve: Reduz a sobrecarga computacional da cabeça de classificação através da utilização de convoluções separáveis em profundidade.
- Amostragem descendente dissociada 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 guiada por classificação: Adapta a conceção de blocos com base na redundância intrínseca das fases, assegurando uma utilização óptima 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 caraterí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 ponta 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
Em comparação 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 à do YOLOv9-C com a mesma precisão
- O YOLOv10-L / X é superior ao YOLOv8-L / X em 0,3 AP / 0,5 AP com 1,8× / 2,3× menos parâmetros
Aqui está 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 para a frente (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
A série de modelos YOLOv10 oferece uma gama de modelos, cada um optimizado para a Deteção de Objectos de elevado desempenho. Estes modelos respondem a diferentes necessidades computacionais e requisitos de precisão, tornando-os versáteis para uma vasta 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 | ✅ | ✅ | ✅ | ✅ |
Exportação do YOLOv10
Devido às novas operações introduzidas com o YOLOv10, nem todos os formatos de exportação fornecidos por 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 de pull se você puder fornecer uma alteração de contribuição para adicionar suporte à exportação de formatos adicionais para YOLOv10.
Formato de exportação | Apoio à exportação | Inferência de modelos exportados | Notas |
---|---|---|---|
TorchScript | ✅ | ✅ | Formato padrão PyTorch formato do modelo. |
ONNX | ✅ | ✅ | Amplamente suportado para implantação. |
OpenVINO | ✅ | ✅ | Optimizado para hardware Intel . |
TensorRT | ✅ | ✅ | Optimizado para NVIDIA GPUs. |
CoreML | ✅ | ✅ | Limitado a dispositivos Apple. |
TF SavedModel | ✅ | ✅ | TensorFlowdo modelo de formato padrão da empresa. |
TF GraphDef | ✅ | ✅ | Formato herdado TensorFlow . |
TF Leve | ✅ | ✅ | Optimizado para dispositivos móveis e incorporado. |
TF Borda TPU | ✅ | ✅ | Específico para os dispositivos Google's Edge TPU . |
TF.js | ✅ | ✅ | Ambiente JavaScript para utilização no browser. |
PaddlePaddle | ❌ | ❌ | Popular na China; menos apoio a nível mundial. |
NCNN | ✅ | ❌ | Camada torch.topk não existe nem está registado |
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 conceção 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, consulte o artigo de investigação YOLOv10 e o repositório GitHub da equipa da Universidade de Tsinghua.
FAQ
O que é o YOLOv10 e em que é que difere das 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 treino e componentes de modelo optimizados para um desempenho superior com uma sobrecarga computacional reduzida. Para mais detalhes sobre a sua arquitetura e principais caraterísticas, consulte a secção de visão geral do YOLOv10.
Como posso começar a executar a inferência utilizando 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
Para mais exemplos de utilização, visite 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: Equilíbrio entre 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. Explore a secção Variantes do modelo para obter 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 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 obter detalhes sobre os formatos suportados e instruções de exportação, visite 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. Os parâmetros de referência detalhados podem ser encontrados na secção Comparações.