Explore Ultralytics YOLOv8
Visão geral
O YOLOv8 foi lançado pela Ultralytics em 10 de janeiro de 2023, oferecendo desempenho de ponta em termos de precisão e velocidade. Construído sobre os avanços das versões anteriores do YOLO, o YOLOv8 introduziu novos recursos e otimizações que o tornam uma escolha ideal para várias tarefas de detecção de objetos em uma ampla gama de aplicações.
Assista: Visão Geral do Modelo Ultralytics YOLOv8
Principais Características do YOLOv8
- Arquiteturas Avançadas de Backbone e Neck: O YOLOv8 emprega arquiteturas de backbone e neck de última geração, resultando em melhor extração de recursos e desempenho de detecção de objetos.
- Head Ultralytics Dividido e Livre de Âncoras: O YOLOv8 adota um head Ultralytics dividido e livre de âncoras, o que contribui para uma melhor precisão e um processo de detecção mais eficiente em comparação com as abordagens baseadas em âncoras.
- Tradeoff Otimizado de Precisão e Velocidade: Com foco em manter um equilíbrio ideal entre precisão e velocidade, o YOLOv8 é adequado para tarefas de detecção de objetos em tempo real em diversas áreas de aplicação.
- Variedade de Modelos Pré-treinados: O YOLOv8 oferece uma variedade de modelos pré-treinados para atender a várias tarefas e requisitos de desempenho, tornando mais fácil encontrar o modelo certo para seu caso de uso específico.
Tarefas e Modos Suportados
A série YOLOv8 oferece uma gama diversificada de modelos, cada um especializado para tarefas específicas em visão computacional. Esses modelos são projetados para atender a vários requisitos, desde detecção de objetos até tarefas mais complexas, como segmentação de instâncias, detecção de pose/keypoints, detecção de objetos orientados e classificação.
Cada variante da série YOLOv8 é otimizada para sua respectiva tarefa, garantindo alto desempenho e precisão. Além disso, esses modelos são compatíveis com vários modos operacionais, incluindo Inferência, Validação, Treinamento e Exportação, facilitando seu uso em diferentes estágios de implementação e desenvolvimento.
Modelo | Nomes de arquivos | Tarefa | Inferência | Validação | Treinamento | Exportar |
---|---|---|---|---|---|---|
YOLOv8 | yolov8n.pt yolov8s.pt yolov8m.pt yolov8l.pt yolov8x.pt |
Detecção | ✅ | ✅ | ✅ | ✅ |
YOLOv8-seg | yolov8n-seg.pt yolov8s-seg.pt yolov8m-seg.pt yolov8l-seg.pt yolov8x-seg.pt |
Segmentação de Instância | ✅ | ✅ | ✅ | ✅ |
YOLOv8-pose | yolov8n-pose.pt yolov8s-pose.pt yolov8m-pose.pt yolov8l-pose.pt yolov8x-pose.pt yolov8x-pose-p6.pt |
Pose/Keypoints | ✅ | ✅ | ✅ | ✅ |
YOLOv8-obb | yolov8n-obb.pt yolov8s-obb.pt yolov8m-obb.pt yolov8l-obb.pt yolov8x-obb.pt |
Detecção Orientada | ✅ | ✅ | ✅ | ✅ |
YOLOv8-cls | yolov8n-cls.pt yolov8s-cls.pt yolov8m-cls.pt yolov8l-cls.pt yolov8x-cls.pt |
Classificação | ✅ | ✅ | ✅ | ✅ |
Esta tabela fornece uma visão geral das variantes do modelo YOLOv8, destacando sua aplicabilidade em tarefas específicas e sua compatibilidade com vários modos operacionais, como Inferência, Validação, Treinamento e Exportação. Ela demonstra a versatilidade e robustez da série YOLOv8, tornando-os adequados para uma variedade de aplicações em visão computacional.
Métricas de Desempenho
Desempenho
Consulte a Documentação de Detecção para exemplos de uso com estes modelos treinados em COCO, que incluem 80 classes pré-treinadas.
Modelo | tamanho (pixels) |
mAPval 50-95 |
Velocidade CPU ONNX (ms) |
Velocidade A100 TensorRT (ms) |
parâmetros (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 37.3 | 80.4 | 0.99 | 3.2 | 8.7 |
YOLOv8s | 640 | 44.9 | 128.4 | 1.20 | 11.2 | 28.6 |
YOLOv8m | 640 | 50.2 | 234.7 | 1.83 | 25.9 | 78.9 |
YOLOv8l | 640 | 52.9 | 375.2 | 2.39 | 43.7 | 165.2 |
YOLOv8x | 640 | 53.9 | 479.1 | 3.53 | 68.2 | 257.8 |
Consulte a Documentação de Detecção para exemplos de uso com estes modelos treinados em Open Image V7, que incluem 600 classes pré-treinadas.
Modelo | tamanho (pixels) |
mAPval 50-95 |
Velocidade CPU ONNX (ms) |
Velocidade A100 TensorRT (ms) |
parâmetros (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 18.4 | 142.4 | 1.21 | 3.5 | 10.5 |
YOLOv8s | 640 | 27.7 | 183.1 | 1.40 | 11.4 | 29.7 |
YOLOv8m | 640 | 33.6 | 408.5 | 2.26 | 26.2 | 80.6 |
YOLOv8l | 640 | 34.9 | 596.9 | 2.43 | 44.1 | 167.4 |
YOLOv8x | 640 | 36.3 | 860.6 | 3.56 | 68.7 | 260.6 |
Consulte a Documentação de Segmentação para exemplos de uso com estes modelos treinados em COCO, que incluem 80 classes pré-treinadas.
Modelo | tamanho (pixels) |
mAPbox 50-95 |
mAPmask 50-95 |
Velocidade CPU ONNX (ms) |
Velocidade A100 TensorRT (ms) |
parâmetros (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-seg | 640 | 36.7 | 30.5 | 96.1 | 1.21 | 3.4 | 12.6 |
YOLOv8s-seg | 640 | 44.6 | 36.8 | 155.7 | 1.47 | 11.8 | 42.6 |
YOLOv8m-seg | 640 | 49.9 | 40.8 | 317.0 | 2.18 | 27.3 | 110.2 |
YOLOv8l-seg | 640 | 52.3 | 42.6 | 572.4 | 2.79 | 46.0 | 220.5 |
YOLOv8x-seg | 640 | 53.4 | 43.4 | 712.1 | 4.02 | 71.8 | 344.1 |
Consulte a Documentação de Classificação para exemplos de uso com estes modelos treinados em ImageNet, que incluem 1000 classes pré-treinadas.
Modelo | tamanho (pixels) |
acc top1 |
acc top5 |
Velocidade CPU ONNX (ms) |
Velocidade A100 TensorRT (ms) |
parâmetros (M) |
FLOPs (B) a 224 |
---|---|---|---|---|---|---|---|
YOLOv8n-cls | 224 | 69.0 | 88.3 | 12.9 | 0.31 | 2.7 | 0.5 |
YOLOv8s-cls | 224 | 73.8 | 91.7 | 23.4 | 0.35 | 6.4 | 1.7 |
YOLOv8m-cls | 224 | 76.8 | 93.5 | 85.4 | 0.62 | 17.0 | 5.3 |
YOLOv8l-cls | 224 | 76.8 | 93.5 | 163.0 | 0.87 | 37.5 | 12.3 |
YOLOv8x-cls | 224 | 79.0 | 94.6 | 232.0 | 1.01 | 57.4 | 19.0 |
Consulte a Documentação de Estimativa de Pose para exemplos de uso com estes modelos treinados em COCO, que incluem 1 classe pré-treinada, 'pessoa'.
Modelo | tamanho (pixels) |
mAPpose 50-95 |
mAPpose 50 |
Velocidade CPU ONNX (ms) |
Velocidade A100 TensorRT (ms) |
parâmetros (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-pose | 640 | 50.4 | 80.1 | 131.8 | 1.18 | 3.3 | 9.2 |
YOLOv8s-pose | 640 | 60.0 | 86.2 | 233.2 | 1.42 | 11.6 | 30.2 |
YOLOv8m-pose | 640 | 65.0 | 88.8 | 456.3 | 2.00 | 26.4 | 81.0 |
YOLOv8l-pose | 640 | 67.6 | 90.0 | 784.5 | 2.59 | 44.4 | 168.6 |
YOLOv8x-pose | 640 | 69.2 | 90.2 | 1607.1 | 3.73 | 69.4 | 263.2 |
YOLOv8x-pose-p6 | 1280 | 71.6 | 91.2 | 4088.7 | 10.04 | 99.1 | 1066.4 |
Consulte a Documentação de Detecção Orientada para exemplos de uso com estes modelos treinados em DOTAv1, que incluem 15 classes pré-treinadas.
Modelo | tamanho (pixels) |
mAPteste 50 |
Velocidade CPU ONNX (ms) |
Velocidade A100 TensorRT (ms) |
parâmetros (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n-obb | 1024 | 78.0 | 204.77 | 3.57 | 3.1 | 23.3 |
YOLOv8s-obb | 1024 | 79.5 | 424.88 | 4.07 | 11.4 | 76.3 |
YOLOv8m-obb | 1024 | 80.5 | 763.48 | 7.61 | 26.4 | 208.6 |
YOLOv8l-obb | 1024 | 80.7 | 1278.42 | 11.83 | 44.5 | 433.8 |
YOLOv8x-obb | 1024 | 81.36 | 1759.10 | 13.23 | 69.5 | 676.7 |
Exemplos de Uso do YOLOv8
Este exemplo fornece exemplos simples de treinamento e inferência do YOLOv8. Para obter a documentação completa sobre estes e outros modos, consulte as páginas de documentação Predict, Train, Val e Export.
Observe que o exemplo abaixo é para modelos YOLOv8 Detect para detecção de objetos. Para tarefas suportadas adicionais, consulte os documentos Segment, Classify, OBB e os documentos Pose.
Exemplo
PyTorch pré-treinados *.pt
modelos, bem como a configuração *.yaml
os arquivos podem ser passados para o YOLO()
classe para criar uma instância de modelo em python:
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.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 YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
Comandos da CLI estão disponíveis para executar os modelos diretamente:
# Load a COCO-pretrained YOLOv8n model and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640
# Load a COCO-pretrained YOLOv8n model and run inference on the 'bus.jpg' image
yolo predict model=yolov8n.pt source=path/to/bus.jpg
Citações e Agradecimentos
Publicação Ultralytics YOLOv8
A Ultralytics não publicou um artigo de pesquisa formal para o YOLOv8 devido à natureza em rápida evolução dos modelos. Nosso foco é aprimorar a tecnologia e 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, os recursos e o uso do YOLO, consulte nosso repositório GitHub e a documentação.
Se você usar o modelo YOLOv8 ou qualquer outro software deste repositório em seu trabalho, cite-o usando o seguinte formato:
@software{yolov8_ultralytics,
author = {Glenn Jocher and Ayush Chaurasia and Jing Qiu},
title = {Ultralytics YOLOv8},
version = {8.0.0},
year = {2023},
url = {https://github.com/ultralytics/ultralytics},
orcid = {0000-0001-5950-6979, 0000-0002-7603-6750, 0000-0003-3783-7069},
license = {AGPL-3.0}
}
Observe que o DOI está pendente e será adicionado à citação assim que estiver disponível. Os modelos YOLOv8 são fornecidos sob as licenças AGPL-3.0 e Enterprise.
FAQ
O que é YOLOv8 e como ele difere das versões anteriores do YOLO?
O YOLOv8 foi projetado para melhorar o desempenho da detecção de objetos em tempo real com recursos avançados. Ao contrário das versões anteriores, o YOLOv8 incorpora um cabeçalho Ultralytics dividido sem âncoras, backbone e arquiteturas de neck de última geração e oferece uma relação otimizada entre precisão e velocidade, tornando-o ideal para diversas aplicações. Para mais detalhes, consulte as seções Visão Geral e Principais Recursos.
Como posso usar o YOLOv8 para diferentes tarefas de visão computacional?
O YOLOv8 suporta uma ampla gama de tarefas de visão computacional, incluindo detecção de objetos, segmentação de instâncias, detecção de pose/keypoints, detecção de objetos orientados e classificação. Cada variante de modelo é otimizada para sua tarefa específica e compatível com vários modos operacionais, como Inference, Validation, Training e Export. Consulte a seção Tarefas e Modos Suportados para obter mais informações.
Quais são as métricas de desempenho para modelos YOLOv8?
Os modelos YOLOv8 alcançam desempenho de última geração em vários conjuntos de dados de benchmarking. Por exemplo, o modelo YOLOv8n atinge um mAP (precisão média média) de 37,3 no conjunto de dados COCO e uma velocidade de 0,99 ms no A100 TensorRT. Métricas de desempenho detalhadas para cada variante de modelo em diferentes tarefas e conjuntos de dados podem ser encontradas na seção Métricas de Desempenho.
Como faço para treinar um modelo YOLOv8?
O treinamento de um modelo YOLOv8 pode ser feito usando Python ou CLI. Abaixo estão exemplos de treinamento de um modelo usando um modelo YOLOv8 pré-treinado em COCO no conjunto de dados COCO8 por 100 épocas:
Exemplo
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.pt")
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640
Para mais detalhes, visite a documentação de Treinamento.
Posso comparar modelos YOLOv8 para desempenho?
Sim, os modelos YOLOv8 podem ser comparados em termos de velocidade e precisão em vários formatos de exportação. Você pode usar PyTorch, ONNX, TensorRT e muito mais para benchmarking. Abaixo estão exemplos de comandos para benchmarking usando Python e CLI:
Exemplo
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0
Para obter informações adicionais, consulte a seção Métricas de Desempenho.