Ultralytics YOLO27:

Ultralytics YOLOv5#

Visão geral#

YOLOv5u representa um avanço nas metodologias de deteção de objetos. Com origem na arquitetura fundamental do modelo YOLOv5 desenvolvido pela Ultralytics, o YOLOv5u integra a cabeça dividida sem âncoras e sem objectness, uma funcionalidade anteriormente introduzida nos modelos YOLOv8. Esta adaptação aperfeiçoa a arquitetura do modelo, resultando num compromisso melhorado entre precisão e velocidade em tarefas de deteção de objetos. Tendo em conta os resultados empíricos e as funcionalidades derivadas, o YOLOv5u oferece uma alternativa eficiente para quem procura soluções robustas tanto em investigação como em aplicações práticas.

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

Os modelos treinados com o repositório YOLOv5 original não são compatíveis com a biblioteca Ultralytics

A Ultralytics disponibiliza uma variante do modelo YOLOv5 sem âncoras. Os modelos treinados com o repositório ultralytics/yolov5 não podem ser carregados com a biblioteca ultralytics/ultralytics. Para utilizar o YOLOv5 aqui, treina um novo modelo a partir de um checkpoint Ultralytics YOLOv5u (por exemplo, yolov5su.pt).

Experimenta na Ultralytics Platform

Explora e executa modelos YOLOv5 diretamente na Ultralytics Platform.

Principais funcionalidades#

  • Cabeça Ultralytics dividida e sem âncoras: Os modelos tradicionais de deteção de objetos dependem de caixas de âncora predefinidas para prever a localização dos objetos. No entanto, o YOLOv5u moderniza esta abordagem. Ao adotar uma cabeça Ultralytics dividida e sem âncoras, garante um mecanismo de deteção mais flexível e adaptável, melhorando consequentemente o desempenho em cenários diversos.

  • Compromisso otimizado entre precisão e velocidade: A velocidade e a precisão costumam seguir em direções opostas. Mas o YOLOv5u desafia este compromisso. Oferece um equilíbrio calibrado, garantindo deteções em tempo real sem comprometer a precisão. Esta funcionalidade é especialmente valiosa 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: Reconhecendo que tarefas diferentes exigem conjuntos de ferramentas diferentes, o YOLOv5u disponibiliza uma grande variedade de modelos pré-treinados. Quer te concentres em Inferência, Validação ou Treino, existe um modelo feito à medida à tua espera. Esta variedade garante que não estás simplesmente a utilizar uma solução única para todos os casos, mas sim um modelo ajustado especificamente ao teu desafio.

Tarefas e modos suportados#

Os modelos YOLOv5u, com vários pesos pré-treinados, destacam-se em tarefas de Deteção de objetos. Suportam uma ampla variedade de modos, o que os torna adequados para aplicações diversas, desde o desenvolvimento até à implementação.

Tipo de modeloPesos pré-treinadosTarefaTreinoValidaçãoInferênciaExportação
YOLOv5uyolov5nu, yolov5su, yolov5mu, yolov5lu, yolov5xu, yolov5n6u, yolov5s6u, yolov5m6u, yolov5l6u, yolov5x6uDeteção de objetos

Esta tabela apresenta uma visão geral detalhada das variantes do modelo YOLOv5u, destacando a sua aplicabilidade em tarefas de deteção de objetos e o suporte para vários modos operacionais, como Inferência, Validação, Treino e Exportação. Este suporte abrangente garante que podes tirar pleno partido das capacidades dos modelos YOLOv5u numa ampla variedade de cenários de deteção de objetos.

Métricas de desempenho#

Desempenho

Consulta a documentação de deteção para ver exemplos de utilização destes modelos treinados com COCO, que incluem 80 classes pré-treinadas.

ModeloYAMLtamanho
(píxeis)
mAPval
50-95
Velocidade
CPU ONNX
(ms)
Velocidade
A100 TensorRT
(ms)
parâmetros
(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.331.3
yolov5s6u.ptyolov5s6.yaml128048.6422.62.3415.397.6
yolov5m6u.ptyolov5m6.yaml128053.6810.94.3641.2261.3
yolov5l6u.ptyolov5l6.yaml128055.71470.95.4786.1549.4
yolov5x6u.ptyolov5x6.yaml128056.82436.58.98155.51002.8

Exemplos de utilização#

Este exemplo apresenta exemplos simples de treino e inferência com YOLOv5. Para obter a documentação completa sobre estes e outros modos, consulta as páginas de documentação Predict, Train, Val e Export.

Exemplo

Os modelos *.pt pré-treinados do PyTorch, bem como os ficheiros de configuração *.yaml, podem ser transmitidos à classe YOLO() para criar uma instância de modelo em Python:

from ultralytics import YOLO

# Load a COCO-pretrained YOLOv5nu model
model = YOLO("yolov5nu.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 YOLOv5nu 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 investigação formal sobre o YOLOv5 devido à natureza em rápida evolução dos modelos. Concentramo-nos em desenvolver a tecnologia e torná-la mais fácil de utilizar, em vez de produzir documentação estática. Para obteres as informações mais atualizadas sobre a arquitetura, as funcionalidades e a utilização do YOLO, consulta o nosso repositório no GitHub e a nossa documentação.

Se utilizares YOLOv5 ou YOLOv5u na tua investigação, cita 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}
}

Tem em atenção que os modelos YOLOv5 são disponibilizados ao abrigo das licenças AGPL-3.0 e empresarial.

Perguntas frequentes#

  • O Ultralytics YOLOv5u é uma versão avançada do YOLOv5 que integra uma cabeça dividida sem âncoras e sem objectness, melhorando o compromisso entre precisão e velocidade em tarefas de deteção de objetos em tempo real. Ao contrário do YOLOv5 tradicional, o YOLOv5u adota um mecanismo de deteção sem âncoras, tornando-o mais flexível e adaptável em cenários diversos. Para obteres informações mais detalhadas sobre as suas funcionalidades, consulta a Visão geral do YOLOv5.

  • A cabeça Ultralytics sem âncoras no YOLOv5u melhora o desempenho da deteção de objetos ao eliminar a dependência de caixas de âncora predefinidas. Isto resulta num mecanismo de deteção mais flexível e adaptável, capaz de lidar com vários tamanhos e formas de objetos com maior eficiência. Esta melhoria contribui diretamente para um compromisso equilibrado entre precisão e velocidade, tornando o YOLOv5u adequado para aplicações em tempo real. Obtém mais informações sobre a sua arquitetura na secção Principais funcionalidades.

  • Sim, podes utilizar modelos YOLOv5u pré-treinados para várias tarefas, como Deteção de objetos. Estes modelos suportam vários modos, incluindo Inferência, Validação, Treino e Exportação. Esta flexibilidade permite tirar partido das capacidades dos modelos YOLOv5u em diferentes requisitos operacionais. Para obteres uma visão geral detalhada, consulta a secção Tarefas e modos suportados.

  • As métricas de desempenho dos modelos YOLOv5u variam consoante a plataforma e o hardware utilizado. Por exemplo, o modelo YOLOv5nu alcança 34,3 mAP no conjunto de dados COCO, com uma velocidade de 73,6 ms no CPU (ONNX) e 1,06 ms num A100 TensorRT. Podes encontrar métricas de desempenho detalhadas para diferentes modelos YOLOv5u na secção Métricas de desempenho, que apresenta uma comparação abrangente entre vários dispositivos.

  • Podes treinar um modelo YOLOv5u carregando um modelo pré-treinado e executando o comando de treino com o teu conjunto de dados. Eis um exemplo rápido:

    Exemplo
    from ultralytics import YOLO
    
    # Load a COCO-pretrained YOLOv5nu model
    model = YOLO("yolov5nu.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 obteres instruções mais detalhadas, visita a secção Exemplos de utilização.

Comentários