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.

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).
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 modelo | Pesos pré-treinados | Tarefa | Treino | Validação | Inferência | Exportação |
|---|---|---|---|---|---|---|
| YOLOv5u | yolov5nu, yolov5su, yolov5mu, yolov5lu, yolov5xu, yolov5n6u, yolov5s6u, yolov5m6u, yolov5l6u, yolov5x6u | Deteçã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#
Consulta a documentação de deteção para ver exemplos de utilização destes modelos treinados com COCO, que incluem 80 classes pré-treinadas.
| Modelo | YAML | tamanho (píxeis) | mAPval 50-95 | Velocidade CPU ONNX (ms) | Velocidade A100 TensorRT (ms) | parâmetros (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| yolov5nu.pt | yolov5n.yaml | 640 | 34.3 | 73.6 | 1.06 | 2.6 | 7.7 |
| yolov5su.pt | yolov5s.yaml | 640 | 43.0 | 120.7 | 1.27 | 9.1 | 24.0 |
| yolov5mu.pt | yolov5m.yaml | 640 | 49.0 | 233.9 | 1.86 | 25.1 | 64.2 |
| yolov5lu.pt | yolov5l.yaml | 640 | 52.2 | 408.4 | 2.50 | 53.2 | 135.0 |
| yolov5xu.pt | yolov5x.yaml | 640 | 53.2 | 763.2 | 3.81 | 97.2 | 246.4 |
| yolov5n6u.pt | yolov5n6.yaml | 1280 | 42.1 | 211.0 | 1.83 | 4.3 | 31.3 |
| yolov5s6u.pt | yolov5s6.yaml | 1280 | 48.6 | 422.6 | 2.34 | 15.3 | 97.6 |
| yolov5m6u.pt | yolov5m6.yaml | 1280 | 53.6 | 810.9 | 4.36 | 41.2 | 261.3 |
| yolov5l6u.pt | yolov5l6.yaml | 1280 | 55.7 | 1470.9 | 5.47 | 86.1 | 549.4 |
| yolov5x6u.pt | yolov5x6.yaml | 1280 | 56.8 | 2436.5 | 8.98 | 155.5 | 1002.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.
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#
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:
@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:
Exemplofrom 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.