Ultralytics YOLOv5

Visão geral

O YOLOv5u representa um avanço nas metodologias de detecção de objetos. Originado a partir da arquitetura fundamental do modelo YOLOv5 desenvolvido pela Ultralytics, o YOLOv5u integra o "split head" sem âncoras e sem "objectness", um recurso introduzido anteriormente nos modelos YOLOv8. Essa adaptação refina a arquitetura do modelo, levando a uma melhor relação precisão-velocidade em tarefas de detecção de objetos. Dados os resultados empíricos e seus recursos derivados, o YOLOv5u oferece uma alternativa eficiente para quem busca soluções robustas tanto em pesquisa quanto em aplicações práticas.

Arquitetura e desempenho do modelo de detecção de objetos YOLOv5

Os modelos YOLOv5 treinados pelo [ultralytics/yolov5](https://github.com/ultralytics/yolov5) não são compatíveis com a biblioteca [ultralytics/ultralytics](https://github.com/ultralytics/ultralytics)

A Ultralytics fornece uma variante sem âncoras do modelo YOLOv5. Modelos treinados com o repositório original do YOLOv5 não podem ser usados com a biblioteca Ultralytics.

Experimente na Plataforma Ultralytics

Explore e execute modelos YOLOv5 diretamente na Plataforma Ultralytics.

Principais recursos

  • Cabeça Ultralytics de Divisão sem Âncoras (Anchor-free Split Head): Os modelos tradicionais de detecção de objetos dependem de caixas âncora predefinidas para prever a localização dos objetos. No entanto, o YOLOv5u moderniza essa abordagem. Ao adotar uma cabeça Ultralytics dividida e sem âncoras, ele garante um mecanismo de detecção mais flexível e adaptável, melhorando consequentemente o desempenho em diversos cenários.

  • Equilíbrio Otimizado entre Precisão e Velocidade: Velocidade e precisão muitas vezes puxam em direções opostas. Mas o YOLOv5u desafia esse compromisso. Ele oferece um equilíbrio calibrado, garantindo detecções em tempo real sem comprometer a precisão. Esse recurso é particularmente inestimável para aplicações que exigem respostas rápidas, como veículos autônomos, robótica e análise de vídeo em tempo real.

  • Variedade de Modelos Pré-treinados: Entendendo que diferentes tarefas exigem diferentes ferramentas, o YOLOv5u oferece uma infinidade de modelos pré-treinados. Se você estiver focado em Inferência, Validação ou Treinamento, há um modelo sob medida esperando por você. Essa variedade garante que você não esteja apenas usando uma solução genérica, mas um modelo especificamente ajustado para o seu desafio único.

Tarefas e modos suportados

Os modelos YOLOv5u, com vários pesos pré-treinados, destacam-se em tarefas de Detecção de Objetos. Eles suportam uma ampla gama de modos, tornando-os adequados para diversas aplicações, desde o desenvolvimento até a implantação.

Tipo de ModeloPesos Pré-treinadosTarefaInferência (Inference)ValidaçãoTreinamentoExport
YOLOv5uyolov5nu, yolov5su, yolov5mu, yolov5lu, yolov5xu, yolov5n6u, yolov5s6u, yolov5m6u, yolov5l6u, yolov5x6uDetecção de Objetos

Esta tabela fornece uma visão detalhada das variantes do modelo YOLOv5u, destacando sua aplicabilidade em tarefas de detecção de objetos e suporte para vários modos operacionais, como Inferência, Validação, Treinamento e Exportação. Esse suporte abrangente garante que os usuários possam aproveitar totalmente os recursos dos modelos YOLOv5u em uma ampla gama de cenários de detecção de objetos.

Métricas de desempenho

Desempenho

Consulte os Documentos de detecção para exemplos de uso com esses modelos treinados no COCO, que incluem 80 classes pré-treinadas.

ModeloYAMLtamanho
(pixels)
mAPval
50-95
Velocidade
CPU ONNX
(ms)
Velocidade
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
yolov5nu.ptyolov5n.yaml64034.373.61.062.67.7
yolov5su.ptyolov5s.yaml64043.0120.71.279.124.0
yolov5mu.ptyolov5m.yaml64049.0233.91.8625.164.2
yolov5lu.ptyolov5l.yaml64052.2408.42.5053.2135.0
yolov5xu.ptyolov5x.yaml64053.2763.23.8197.2246.4
yolov5n6u.ptyolov5n6.yaml128042.1211.01.834.37.8
yolov5s6u.ptyolov5s6.yaml128048.6422.62.3415.324.6
yolov5m6u.ptyolov5m6.yaml128053.6810.94.3641.265.7
yolov5l6u.ptyolov5l6.yaml128055.71470.95.4786.1137.4
yolov5x6u.ptyolov5x6.yaml128056.82436.58.98155.4250.7

Exemplos de Uso

Este exemplo fornece exemplos simples de treinamento e inferência do YOLOv5. Para a documentação completa sobre estes e outros modos, consulte as páginas de documentação de Predict, Train, Val e Export.

Exemplo

Modelos PyTorch pré-treinados *.pt, bem como ficheiros de configuração *.yaml, podem ser passados para a classe YOLO() para criar uma instância de modelo em Python:

from ultralytics import YOLO

# Load a COCO-pretrained YOLOv5n model
model = YOLO("yolov5n.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the YOLOv5n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")

Citações e Agradecimentos

Publicação do Ultralytics YOLOv5

A Ultralytics não publicou um artigo de pesquisa formal para o YOLOv5 devido à natureza em rápida evolução dos modelos. Focamo-nos no avanço da tecnologia e em torná-la mais fácil de usar, em vez de produzir documentação estática. Para obter as informações mais atualizadas sobre a arquitetura, recursos e uso do YOLO, consulte nosso repositório no GitHub e a documentação.

Se você usa o YOLOv5 ou YOLOv5u em sua pesquisa, cite o repositório Ultralytics YOLOv5 da seguinte forma:

Citação
@software{yolov5,
  title = {Ultralytics YOLOv5},
  author = {Glenn Jocher},
  year = {2020},
  version = {7.0},
  license = {AGPL-3.0},
  url = {https://github.com/ultralytics/yolov5},
  doi = {10.5281/zenodo.3908559},
  orcid = {0000-0001-5950-6979}
}

Observe que os modelos YOLOv5 são fornecidos sob as licenças AGPL-3.0 e Enterprise.

FAQ

O que é o Ultralytics YOLOv5u e como ele difere do YOLOv5?

O Ultralytics YOLOv5u é uma versão avançada do YOLOv5, integrando a cabeça de divisão sem âncoras e sem "objectness" que melhora o compromisso entre precisão e velocidade para tarefas de detecção de objetos em tempo real. Diferente do YOLOv5 tradicional, o YOLOv5u adota um mecanismo de detecção sem âncoras, tornando-o mais flexível e adaptável em diversos cenários. Para obter informações mais detalhadas sobre seus recursos, consulte a Visão Geral do YOLOv5.

Como a cabeça Ultralytics sem âncoras melhora o desempenho da detecção de objetos no YOLOv5u?

A cabeça Ultralytics sem âncoras no YOLOv5u melhora o desempenho da detecção de objetos eliminando a dependência de caixas âncora predefinidas. Isso resulta em um mecanismo de detecção mais flexível e adaptável que pode lidar com vários tamanhos e formas de objetos com maior eficiência. Esse aprimoramento contribui diretamente para um equilíbrio entre precisão e velocidade, tornando o YOLOv5u adequado para aplicações em tempo real. Saiba mais sobre sua arquitetura na seção Principais Recursos.

Posso usar modelos YOLOv5u pré-treinados para diferentes tarefas e modos?

Sim, você pode usar modelos YOLOv5u pré-treinados para várias tarefas, como Detecção de Objetos. Esses modelos suportam múltiplos modos, incluindo Inferência, Validação, Treinamento e Exportação. Essa flexibilidade permite que os usuários aproveitem os recursos dos modelos YOLOv5u em diferentes requisitos operacionais. Para uma visão geral detalhada, verifique a seção Tarefas e Modos Suportados.

Como as métricas de desempenho dos modelos YOLOv5u se comparam em diferentes plataformas?

As métricas de desempenho dos modelos YOLOv5u variam dependendo da plataforma e do hardware utilizados. Por exemplo, o modelo YOLOv5nu atinge um mAP de 34.3 no conjunto de dados COCO com uma velocidade de 73.6 ms em CPU (ONNX) e 1.06 ms em A100 TensorRT. Métricas de desempenho detalhadas para diferentes modelos YOLOv5u podem ser encontradas na seção Métricas de Desempenho, que fornece uma comparação abrangente entre vários dispositivos.

Como posso treinar um modelo YOLOv5u usando a API Python do Ultralytics?

Você pode treinar um modelo YOLOv5u carregando um modelo pré-treinado e executando o comando de treinamento com seu conjunto de dados. Aqui está um exemplo rápido:

Exemplo
from ultralytics import YOLO

# Load a COCO-pretrained YOLOv5n model
model = YOLO("yolov5n.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Para instruções mais detalhadas, visite a seção Exemplos de Uso.

Comentários