Ultralytics YOLOv5#
Visão geral#
O 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 previsão de presença de objetos, uma funcionalidade introduzida anteriormente nos modelos YOLOv8. Esta adaptação aperfeiçoa a arquitetura do modelo, melhorando o equilíbrio entre precisão e velocidade nas tarefas de deteção de objetos. Com base nos resultados empíricos e nas funcionalidades derivadas, o YOLOv5u oferece uma alternativa eficiente para quem procura soluções robustas tanto na investigação como em aplicações práticas.

A Ultralytics disponibiliza uma variante do modelo YOLOv5 sem âncoras. Não é possível carregar modelos treinados com o repositório ultralytics/yolov5 através da biblioteca ultralytics/ultralytics. Para usar o YOLOv5 aqui, treina um modelo novo a partir de um checkpoint Ultralytics YOLOv5u (por exemplo, yolov5su.pt).
Explora e executa modelos YOLOv5 diretamente na Ultralytics Platform.
Principais funcionalidades#
-
Cabeça dividida sem âncoras da Ultralytics: Os modelos tradicionais de deteção de objetos dependem de caixas-âncora predefinidas para prever a localização dos objetos. No entanto, o YOLOv5u moderniza esta abordagem. Ao adotar uma cabeça dividida da Ultralytics sem âncoras, garante um mecanismo de deteção mais flexível e adaptável, melhorando assim o desempenho em diversos cenários.
-
Equilíbrio otimizado entre precisão e velocidade: A velocidade e a precisão são muitas vezes objetivos opostos. Mas o YOLOv5u desafia este compromisso. Oferece um equilíbrio calibrado, garantindo deteções em tempo real sem comprometer a precisão. Esta funcionalidade é particularmente 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, há um modelo feito à medida à tua espera. Esta variedade garante que não estás apenas a usar uma solução universal, mas um modelo ajustado especificamente ao teu desafio.
Tarefas e modos compatíveis#
Os modelos YOLOv5u, com vários pesos pré-treinados, destacam-se em tarefas de deteção de objetos. São compatíveis com uma vasta gama de modos, o que os torna adequados para diversas aplicações, desde o desenvolvimento até à implementação.
| Tipo de modelo | Pesos pré-treinados | Tarefa | Treinamento | Validação | Inferência | Exportar |
|---|---|---|---|---|---|---|
| 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 a compatibilidade com vários modos operacionais, como inferência, validação, treino e exportação. Esta compatibilidade abrangente garante que os utilizadores podem aproveitar plenamente as capacidades dos modelos YOLOv5u em vários 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 no COCO, que incluem 80 classes pré-treinadas.
| Modelo | YAML | tamanho (pixels) | 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 uso#
Este exemplo apresenta exemplos simples de treino e inferência com YOLOv5. Para consultar a documentação completa destes e de outros modos, vê as páginas de documentação de previsão, treino, validação e exportação.
Os modelos *.pt pré-treinados em PyTorch, assim como os ficheiros de configuração *.yaml, podem ser passados à classe YOLO() para criar uma instância do modelo em Python:
from ultralytics import YOLO
# Carregar um modelo YOLOv5nu pré-treinado no COCO
model = YOLO("yolov5nu.pt")
# Exibir informações do modelo (opcional)
model.info()
# Treina o modelo no conjunto de dados de exemplo COCO8 durante 100 épocas
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Executar inferência com o modelo YOLOv5nu na imagem 'bus.jpg'
results = model("path/to/bus.jpg")Citações e agradecimentos#
A Ultralytics não publicou um artigo de investigação formal sobre o YOLOv5, dada a rápida evolução dos modelos. O nosso foco é fazer avançar a tecnologia e torná-la mais fácil de usar, em vez de produzir documentação estática. Para obteres as informações mais recentes sobre a arquitetura, as funcionalidades e a utilização do YOLO, consulta o nosso repositório do GitHub e a nossa documentação.
Se usares o YOLOv5 ou o 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 Enterprise.
Perguntas frequentes#
O Ultralytics YOLOv5u é uma versão avançada do YOLOv5 que integra uma cabeça dividida sem âncoras e sem previsão de presença de objetos, melhorando o equilíbrio entre precisão e velocidade nas 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, o que o torna mais flexível e adaptável a diversos cenários. Para obteres informações mais detalhadas sobre as funcionalidades, consulta a visão geral do YOLOv5.
A cabeça da Ultralytics sem âncoras do YOLOv5u melhora o desempenho da deteção de objetos ao eliminar a dependência de caixas-âncora predefinidas. Isto resulta num mecanismo de deteção mais flexível e adaptável, capaz de lidar com objetos de vários tamanhos e formas com maior eficiência. Esta melhoria contribui diretamente para um equilíbrio entre precisão e velocidade, tornando o YOLOv5u adequado para aplicações em tempo real. Aprende mais sobre a arquitetura na secção Principais funcionalidades.
Sim, podes usar modelos YOLOv5u pré-treinados para várias tarefas, como a deteção de objetos. Estes modelos são compatíveis com vários modos, incluindo inferência, validação, treino e exportação. Esta flexibilidade permite aos utilizadores aproveitar as capacidades dos modelos YOLOv5u para diferentes requisitos operacionais. Para uma visão geral detalhada, consulta a secção Tarefas e modos compatíveis.
As métricas de desempenho dos modelos YOLOv5u variam consoante a plataforma e o hardware utilizados. Por exemplo, o modelo YOLOv5nu alcança 34,3 mAP no conjunto de dados COCO, com uma velocidade de 73,6 ms na CPU (ONNX) e de 1,06 ms no A100 com 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 # Carregar um modelo YOLOv5nu pré-treinado no COCO model = YOLO("yolov5nu.pt") # Exibir informações do modelo (opcional) model.info() # Treina o modelo no conjunto de dados de exemplo COCO8 durante 100 épocas results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Para instruções mais detalhadas, visita a secção Exemplos de utilização.