Ir para o conteúdo

YOLOv10 vs. YOLOv8: Uma comparação técnica para a deteção de objectos em tempo real

A evolução da família YOLO (You Only Look Once) tem vindo a alargar consistentemente os limites da visão por computador, oferecendo aos programadores ferramentas mais rápidas e mais precisas para a deteção de objectos. Ao escolher entre YOLOv10 e YOLOv8é crucial compreender as nuances na arquitetura, eficiência e suporte do ecossistema. Embora YOLOv10 introduza novas alterações na arquitetura para aumentar a eficiência, YOLOv8 continua a ser uma norma robusta e versátil, conhecida pela sua facilidade de utilização e pelo conjunto abrangente de funcionalidades.

Este guia fornece uma comparação técnica detalhada para o ajudar a selecionar o modelo certo para os seus projectos de aprendizagem automática.

Análise de Desempenho

As métricas de desempenho no conjunto de dadosCOCO ilustram as filosofias de conceção distintas subjacentes a estes modelos. YOLOv10 concentra-se fortemente na redução da contagem de parâmetros e das operações de vírgula flutuante (FLOPs), atingindo frequentemente uma maior mAP (precisão média média) para um determinado tamanho de modelo. No entanto, YOLOv8 mantém velocidades de inferência altamente competitivas, particularmente em CPUs e quando exportado para formatos otimizados como TensorRTequilibrando a velocidade bruta com capacidades práticas de implementação.

Modelotamanho
(pixels)
mAPval
50-95
Velocidade
CPU ONNX
(ms)
Velocidade
T4 TensorRT10
(ms)
parâmetros
(M)
FLOPs
(B)
YOLOv10n64039.5-1.562.36.7
YOLOv10s64046.7-2.667.221.6
YOLOv10m64051.3-5.4815.459.1
YOLOv10b64052.7-6.5424.492.0
YOLOv10l64053.3-8.3329.5120.3
YOLOv10x64054.4-12.256.9160.4
YOLOv8n64037.380.41.473.28.7
YOLOv8s64044.9128.42.6611.228.6
YOLOv8m64050.2234.75.8625.978.9
YOLOv8l64052.9375.29.0643.7165.2
YOLOv8x64053.9479.114.3768.2257.8

YOLOv10: Eficiência através da inovação arquitetónica

Autores: Ao Wang, Hui Chen, Lihao Liu, et al.
Organização:Universidade de Tsinghua
Data: 2024-05-23
Arxiv:YOLOv10: Deteção de objectos em tempo real de ponta a ponta
GitHub:THU-MIG/yolov10

YOLOv10 foi desenvolvido por investigadores da Universidade de Tsinghua com um objetivo principal: eliminar a dependência da supressão não máximaNMS) durante o pós-processamento. NMS pode ser um gargalo em aplicações críticas em termos de latência. YOLOv10 introduz uma estratégia consistente de atribuição dupla durante o treino, permitindo que o modelo preveja uma única melhor caixa para cada objeto, tornando-o efetivamente um detetor de ponta a ponta.

Principais pontos fortes do YOLOv10

  • InferênciaNMS: Ao remover a etapa NMS , YOLOv10 reduz a sobrecarga computacional durante a fase de pós-processamento, o que pode diminuir a latência em cenários de borda específicos.
  • Eficiência de parâmetros: O design holístico do modelo reduz significativamente o número de parâmetros e FLOPs em comparação com as gerações anteriores, tornando-o atrativo para dispositivos com armazenamento extremamente limitado.
  • Elevada precisão: Atinge os melhores resultados mAP para o seu tamanho, demonstrando a eficácia das suas optimizações de arquitetura.

Fraquezas

  • Especialização de tarefas: YOLOv10 foi concebido principalmente para a deteção de objectos. Não tem suporte nativo para outras tarefas de visão computacional, como segmentação de instâncias ou estimativa de pose.
  • Maturidade do ecossistema: Sendo uma versão académica mais recente, tem menos integrações de terceiros e recursos da comunidade em comparação com o ecossistema Ultralytics estabelecido.

Saiba mais sobre o YOLOv10

Ultralytics YOLOv8: O padrão versátil da indústria

Autores: Glenn Jocher, Ayush Chaurasia e Jing Qiu
Organização:Ultralytics
Data: 2023-01-10
Docs:Ultralytics YOLOv8 Documentation
GitHub:ultralytics

Lançado pela Ultralytics, YOLOv8 representa o culminar de anos de investigação sobre IA prática e fácil de utilizar. Foi concebido não só para um elevado desempenho, mas também para uma experiência de desenvolvimento excecional. YOLOv8 utiliza um mecanismo de deteção sem âncoras e um fluxo de gradiente rico para garantir uma formação robusta. A sua caraterística de destaque é o suporte nativo para uma vasta gama de tarefas - deteção, segmentação, classificação, estimativa de pose e OBB - tudo numa estrutura única e unificada.

  • Facilidade de utilização: Ultralytics YOLOv8 é conhecido pela sua simplicidade Python e CLI . Os desenvolvedores podem treinar, validar e implantar modelos com apenas algumas linhas de código.
  • Ecossistema bem mantido: Fazer parte do ecossistema Ultralytics significa ter acesso a actualizações frequentes, a uma comunidade massiva e a uma integração perfeita com ferramentas como o Ultralytics HUB para uma gestão de modelos sem esforço.
  • Equilíbrio de desempenho: Atinge um equilíbrio ideal entre velocidade e precisão. O modelo é altamente optimizado para vários backends de hardware, incluindo CPU, GPU e Edge TPUs.
  • Eficiência na formação: YOLOv8 oferece processos de formação eficientes com requisitos de memória mais baixos do que muitas alternativas baseadas em transformadores, poupando nos custos computacionais.
  • Versatilidade: Ao contrário dos modelos limitados a caixas delimitadoras, YOLOv8 pode lidar com projectos complexos que requerem máscaras de segmentação ou pontos-chave sem mudar de estrutura.

Eficiência da memória

Os modelos Ultralytics , como o YOLOv8 , são projetados para serem eficientes em termos de memória. Isso reduz significativamente a barreira de entrada para o treinamento de modelos personalizados, pois eles exigem menos memória CUDA em comparação com modelos de transformadores volumosos como RT-DETRpermitindo o treinamento em GPUs de nível de consumidor.

Saiba mais sobre o YOLOv8.

Análise comparativa: Arquitetura e casos de utilização

Diferenças arquitectónicas

A diferença fundamental reside nas estratégias de pós-processamento e de atribuição. YOLOv10 utiliza uma arquitetura de cabeça dupla em que uma cabeça utiliza a atribuição um-para-muitos (como os YOLOs tradicionais) para sinais de supervisão ricos durante o treino, enquanto a outra utiliza a atribuição um-para-um para a inferência, eliminando a necessidade de NMS.

YOLOv8pelo contrário, utiliza um atribuidor alinhado com a tarefa e uma estrutura de cabeça acoplada sem âncoras. Esta conceção simplifica a cabeça de deteção e melhora a generalização. Embora exija NMS, a operação é altamente optimizada em formatos de exportação como ONNX e TensorRT, muitas vezes tornando a diferença prática de latência insignificante em pipelines de implantação robustos.

Casos de Uso Ideais

A escolha entre os dois depende frequentemente das restrições específicas do seu projeto:

  1. IA de borda de alto desempenho (YOLOv10): Se a sua aplicação for executada em hardware com recursos severamente limitados, onde cada megabyte de armazenamento conta, ou se a operação NMS criar um estrangulamento específico no seu chip alvo, YOLOv10 é um excelente candidato. Os exemplos incluem sensores incorporados na agricultura ou drones leves.

  2. IA para fins gerais e multitarefas (YOLOv8): Para a grande maioria das aplicações comerciais e de investigação, YOLOv8 é a escolha superior. A sua capacidade de realizar segmentação (por exemplo, imagens médicas precisas) e estimativa de pose (por exemplo, análise de desportos) torna-o incrivelmente versátil. Além disso, a sua extensa documentação e suporte garantem que os programadores possam resolver problemas rapidamente e implementar mais rapidamente.

Implementação do código

Uma das principais vantagens da estrutura Ultralytics é a API unificada. Quer esteja a utilizar YOLOv8 ou a explorar modelos mais recentes, o fluxo de trabalho mantém-se consistente e intuitivo.

Eis como é fácil iniciar o treino de um modelo YOLOv8 utilizando Python:

from ultralytics import YOLO

# Load a pre-trained YOLOv8 model
model = YOLO("yolov8n.pt")

# Train the model on your custom dataset
# The system automatically handles data downloading and processing
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference on an image
results = model("path/to/image.jpg")

Para o YOLOv10, o pacote Ultralytics também facilita o acesso, permitindo que os investigadores experimentem a arquitetura num ambiente familiar:

from ultralytics import YOLO

# Load a pre-trained YOLOv10 model
model = YOLO("yolov10n.pt")

# Train the model using the same simple API
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Conclusão

Tanto YOLOv10 como YOLOv8 são marcos impressionantes na visão por computador. YOLOv10 ultrapassa os limites da eficiência arquitetónica, oferecendo um vislumbre de um futuro NMS para aplicações especializadas de baixa latência.

No entanto, Ultralytics YOLOv8 continua a ser o modelo recomendado para programadores e organizações. O seu ecossistema robusto, a sua fiabilidade comprovada e as suas capacidades multitarefa proporcionam uma solução abrangente que vai para além da simples deteção. Com o Ultralytics YOLOv8, não se obtém apenas um modelo, mas um conjunto de ferramentas completo para criar, treinar e implementar soluções de IA de classe mundial de forma eficiente.

Para aqueles que procuram manter-se na vanguarda absoluta, não se esqueçam de consultar também YOLO11a mais recente iteração da Ultralytics , que oferece ganhos de desempenho e eficiência ainda maiores em relação ao YOLOv8.

Leitura Adicional


Comentários