Salta para o conteúdo

YOLOv8

Visão geral

YOLOv8 é a mais recente iteração da série YOLO de detectores de objectos em tempo real, oferecendo um desempenho de ponta em termos de precisão e velocidade. Com base nos avanços das versões anteriores do YOLO , o YOLOv8 introduz novas funcionalidades e optimizações que o tornam a escolha ideal para várias tarefas de deteção de objectos numa vasta gama de aplicações.

Ultralytics YOLOv8



Observa: Ultralytics YOLOv8 Visão geral do modelo

Características principais

  • Arquitecturas avançadas de espinha dorsal e de pescoço: YOLOv8 utiliza arquitecturas de espinha dorsal e de pescoço de última geração, o que resulta num melhor desempenho da extração de características e da deteção de objectos.
  • Cabeça dividida Ultralytics sem âncoras: YOLOv8 adopta uma cabeça dividida Ultralytics sem âncoras, o que contribui para uma melhor precisão e um processo de deteção mais eficiente em comparação com as abordagens baseadas em âncoras.
  • Compensação optimizada entre precisão e velocidade: Com o objetivo de manter um equilíbrio ótimo entre precisão e velocidade, o YOLOv8 é adequado para tarefas de deteção de objectos em tempo real em diversas áreas de aplicação.
  • Variedade de modelos pré-treinados: YOLOv8 oferece uma gama de modelos pré-treinados para atender a várias tarefas e requisitos de desempenho, tornando mais fácil encontrar o modelo certo para o teu caso de utilização específico.

Tarefas e modos suportados

A série YOLOv8 oferece uma gama diversificada de modelos, cada um especializado em tarefas específicas de visão computacional. Estes modelos foram concebidos para responder a vários requisitos, desde a deteção de objectos a tarefas mais complexas como a segmentação de instâncias, deteção de pose/pontos-chave, deteção de objectos orientados e classificação.

Cada variante da série YOLOv8 é optimizada para a sua respectiva tarefa, garantindo um elevado 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 implantação e desenvolvimento.

Modelo Nomes de ficheiros Tarefa Inferência Validação Formação Exportação
YOLOv8 yolov8n.pt yolov8s.pt yolov8m.pt yolov8l.pt yolov8x.pt Deteção
YOLOv8-seg yolov8n-seg.pt yolov8s-seg.pt yolov8m-seg.pt yolov8l-seg.pt yolov8x-seg.pt Segmentação de instâncias
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 Deteçã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 a sua aplicabilidade em tarefas específicas e a sua compatibilidade com vários modos operacionais, como Inferência, Validação, Treino e Exportação. Mostra a versatilidade e a robustez da série YOLOv8 , tornando-a adequada para uma variedade de aplicações em visão computacional.

Métricas de desempenho

Desempenho

Consulta os Documentos de deteção para obteres exemplos de utilização com estes modelos treinados em COCO, que incluem 80 classes pré-treinadas.

Modelo tamanho
(pixéis)
mAPval
50-95
Velocidade
CPU ONNX
(ms)
Velocidade
A100 TensorRT
(ms)
params
(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

Consulta os Documentos de deteção para obteres exemplos de utilização com estes modelos treinados no Open Image V7, que inclui 600 classes pré-treinadas.

Modelo tamanho
(pixéis)
mAPval
50-95
Velocidade
CPU ONNX
(ms)
Velocidade
A100 TensorRT
(ms)
params
(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

Consulta os documentos de segmentação para obteres exemplos de utilização com estes modelos treinados em COCO, que incluem 80 classes pré-treinadas.

Modelo tamanho
(pixéis)
mAPbox
50-95
mAPmask
50-95
Velocidade
CPU ONNX
(ms)
Velocidade
A100 TensorRT
(ms)
params
(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

Consulta os documentos de classificação para obteres exemplos de utilização com estes modelos treinados no ImageNet, que incluem 1000 classes pré-treinadas.

Modelo tamanho
(pixéis)
acc
top1
acc
top5
Velocidade
CPU ONNX
(ms)
Velocidade
A100 TensorRT
(ms)
params
(M)
FLOPs
(B) a 640
YOLOv8n-cls 224 69.0 88.3 12.9 0.31 2.7 4.3
YOLOv8s-cls 224 73.8 91.7 23.4 0.35 6.4 13.5
YOLOv8m-cls 224 76.8 93.5 85.4 0.62 17.0 42.7
YOLOv8l-cls 224 76.8 93.5 163.0 0.87 37.5 99.7
YOLOv8x-cls 224 79.0 94.6 232.0 1.01 57.4 154.8

Consulta os Documentos de Estimativa de Pose para exemplos de utilização com estes modelos treinados em COCO, que incluem 1 classe pré-treinada, 'pessoa'.

Modelo tamanho
(pixéis)
mAPpose
50-95
mAPpose
50
Velocidade
CPU ONNX
(ms)
Velocidade
A100 TensorRT
(ms)
params
(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

Consulta os documentos de deteção orientada para obteres exemplos de utilização com estes modelos treinados no DOTAv1, que incluem 15 classes pré-treinadas.

Modelo tamanho
(pixéis)
mAPtest
50
Velocidade
CPU ONNX
(ms)
Velocidade
A100 TensorRT
(ms)
params
(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 utilização

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

Nota que o exemplo abaixo é para YOLOv8 Detetar modelos para deteção de objectos. Para outras tarefas suportadas, consulta os documentos Segmentar, Classificar, OBB e Pose.

Exemplo

PyTorch pré-treinado *.pt modelos, bem como a configuração *.yaml podem ser passados para o YOLO() 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")

CLI estão disponíveis para executar diretamente os modelos:

# 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

Se utilizares o modelo YOLOv8 ou qualquer outro software deste repositório no teu trabalho, por favor cita-o utilizando 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}
}

Tenha em atenção que o DOI está pendente e será adicionado à citação assim que estiver disponível. YOLOv8 models are provided under AGPL-3.0 e licenças Enterprise.

FAQ

O que é YOLOv8 e quais são as suas diferenças em relação às versões anteriores de YOLO ?

YOLOv8 é a mais recente iteração da série Ultralytics YOLO , concebida para melhorar o desempenho da deteção de objectos em tempo real com funcionalidades avançadas. Ao contrário das versões anteriores, o YOLOv8 incorpora uma cabeça Ultralytics dividida sem âncoras, arquitecturas de espinha dorsal e pescoço de última geração e oferece uma compensação optimizada entre precisão e velocidade, tornando-o ideal para diversas aplicações. Para mais detalhes, consulta as secções Visão geral e Principais características.

Como posso utilizar YOLOv8 para diferentes tarefas de visão computacional?

YOLOv8 suporta uma vasta gama de tarefas de visão computacional, incluindo deteção de objectos, segmentação de instâncias, deteção de pose/pontos-chave, deteção de objectos orientados e classificação. Cada variante de modelo é otimizada para sua tarefa específica e compatível com vários modos operacionais, como Inferência, Validação, Treinamento e Exportação. Consulta a secção Tarefas e modos suportados para obteres mais informações.

Quais são os indicadores de desempenho dos modelos YOLOv8 ?

YOLOv8 Os modelos da atingem o desempenho mais avançado em vários conjuntos de dados de referência. 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. As métricas de desempenho detalhadas para cada variante do modelo em diferentes tarefas e conjuntos de dados podem ser encontradas na secção Métricas de desempenho.

Como é que treino 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 pelo COCO no conjunto de dados COCO8 para 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 informações, consulta a documentação sobre formação.

Posso comparar o desempenho dos modelos YOLOv8 ?

Sim, os modelos YOLOv8 podem ser comparados quanto ao desempenho em termos de velocidade e precisão em vários formatos de exportação. Podes utilizar PyTorch, ONNX, TensorRT, entre outros, para a avaliação comparativa. Abaixo estão os comandos de exemplo para a avaliação comparativa 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 mais informações, consulta a secção Métricas de desempenho.



Criado em 2023-11-12, Atualizado em 2024-07-04
Autores: glenn-jocher (17), Burhan-Q (1), Laughing-q (2), AyushExel (1), fcakyon (1)

Comentários