YOLOv3 e YOLOv3u

Visão geral

Este documento apresenta uma visão geral de três modelos de detecção de objetos intimamente relacionados, nomeadamente YOLOv3, YOLOv3-Ultralytics e YOLOv3u.

  1. YOLOv3: Esta é a terceira versão do algoritmo de detecção de objetos You Only Look Once (YOLO). Originalmente desenvolvido por Joseph Redmon, o YOLOv3 melhorou os seus predecessores ao introduzir funcionalidades como previsões multiescala e três tamanhos diferentes de kernels de detecção.

  2. YOLOv3u: Esta é uma versão atualizada do YOLOv3-Ultralytics que incorpora o cabeçalho dividido (split head) sem âncoras (anchor-free) e sem objectness (objectness-free) utilizado nos modelos YOLOv8. O YOLOv3u mantém a mesma arquitetura de backbone e neck do YOLOv3, mas com o detection head atualizado do YOLOv8.

Banner do modelo de detecção de objetos YOLOv3

Principais recursos

  • YOLOv3: Introduziu a utilização de três escalas diferentes para detecção, aproveitando três tamanhos diferentes de kernels de detecção: 13x13, 26x26 e 52x52. Isto melhorou significativamente a precisão de detecção para objetos de diferentes tamanhos. Adicionalmente, o YOLOv3 adicionou funcionalidades como previsões multi-label para cada bounding box e uma melhor rede de extração de características.

  • YOLOv3u: Este modelo atualizado incorpora o cabeçalho dividido sem âncoras e sem objectness do YOLOv8. Ao eliminar a necessidade de anchor boxes pré-definidas e pontuações de objectness, este design de cabeça de detecção pode melhorar a capacidade do modelo para detectar objetos de tamanhos e formas variáveis. Isto torna o YOLOv3u mais robusto e preciso para tarefas de detecção de objetos.

Tarefas e modos suportados

O YOLOv3 foi concebido especificamente para tarefas de object detection. A Ultralytics suporta três variantes do YOLOv3: yolov3u, yolov3-tinyu e yolov3-sppu. O u no nome significa que estes utilizam o cabeçalho sem âncoras do YOLOv8, ao contrário da sua arquitetura original que é baseada em âncoras. Estes modelos são reconhecidos pela sua eficácia em vários cenários do mundo real, equilibrando precisão e velocidade. Cada variante oferece características e otimizações únicas, tornando-os adequados para uma gama de aplicações.

Todos os três modelos suportam um conjunto abrangente de modos, garantindo versatilidade em várias fases de model deployment e desenvolvimento. Estes modos incluem Inference, Validation, Training e Export, fornecendo aos utilizadores um conjunto de ferramentas completo para uma detecção de objetos eficaz.

Tipo de ModeloPesos Pré-treinadosTarefas SuportadasInferência (Inference)ValidaçãoTreinamentoExport
YOLOv3(u)yolov3u.ptDetecção de Objetos
YOLOv3-Tiny(u)yolov3-tinyu.ptDetecção de Objetos
YOLOv3u-SPP(u)yolov3-sppu.ptDetecção de Objetos

Esta tabela fornece uma visão rápida das capacidades de cada variante do YOLOv3, destacando a sua versatilidade e adequação para várias tarefas e modos operacionais em fluxos de trabalho de detecção de objetos.

Exemplos de Uso

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

Exemplo

Modelos PyTorch pré-treinados *.pt, bem como ficheiros de configuração *.yaml, podem ser passados para a classe YOLO() para criar uma instância de modelo em Python:

from ultralytics import YOLO

# Load a COCO-pretrained YOLOv3u model
model = YOLO("yolov3u.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 YOLOv3u model on the 'bus.jpg' image
results = model("path/to/bus.jpg")

Citações e Agradecimentos

Se utilizares o YOLOv3 na tua investigação, por favor cita os artigos originais do YOLO e o repositório Ultralytics YOLOv3:

Citação
@article{redmon2018yolov3,
  title={YOLOv3: An Incremental Improvement},
  author={Redmon, Joseph and Farhadi, Ali},
  journal={arXiv preprint arXiv:1804.02767},
  year={2018}
}

Obrigado a Joseph Redmon e Ali Farhadi pelo desenvolvimento do YOLOv3 original.

FAQ

Quais são as diferenças entre o YOLOv3, o YOLOv3-Ultralytics e o YOLOv3u?

O YOLOv3 é a terceira iteração do algoritmo de object detection YOLO (You Only Look Once) desenvolvido por Joseph Redmon, conhecido pelo seu equilíbrio entre accuracy e velocidade, utilizando três escalas diferentes (13x13, 26x26 e 52x52) para detecções. O YOLOv3-Ultralytics é a adaptação da Ultralytics do YOLOv3 que adiciona suporte para mais modelos pré-treinados e facilita a personalização do modelo. O YOLOv3u é uma variante atualizada do YOLOv3-Ultralytics, integrando o cabeçalho dividido sem âncoras e sem objectness do YOLOv8, melhorando a robustez e precisão da detecção para vários tamanhos de objetos. Para mais detalhes sobre as variantes, consulta a série YOLOv3.

Como posso treinar um modelo YOLOv3 utilizando a Ultralytics?

Treinar um modelo YOLOv3 com a Ultralytics é simples. Podes treinar o modelo utilizando Python ou CLI:

Exemplo
from ultralytics import YOLO

# Load a COCO-pretrained YOLOv3u model
model = YOLO("yolov3u.pt")

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Para opções de treino e diretrizes mais abrangentes, visita a nossa documentação do modo Train.

O que torna o YOLOv3u mais preciso para tarefas de detecção de objetos?

O YOLOv3u melhora o YOLOv3 e o YOLOv3-Ultralytics ao incorporar o cabeçalho dividido sem âncoras e sem objectness utilizado nos modelos YOLOv8. Esta atualização elimina a necessidade de anchor boxes pré-definidas e pontuações de objectness, aumentando a sua capacidade para detectar objetos de tamanhos e formas variáveis com mais precisão. Isto torna o YOLOv3u uma melhor escolha para tarefas complexas e diversas de detecção de objetos. Para mais informações, consulta a secção Principais Funcionalidades.

Como posso utilizar modelos YOLOv3 para inferência?

Podes realizar inferência utilizando modelos YOLOv3 através de scripts Python ou comandos CLI:

Exemplo
from ultralytics import YOLO

# Load a COCO-pretrained YOLOv3u model
model = YOLO("yolov3u.pt")

# Run inference with the YOLOv3u model on the 'bus.jpg' image
results = model("path/to/bus.jpg")

Consulta a documentação do modo Inference para mais detalhes sobre a execução de modelos YOLO.

Que tarefas são suportadas pelo YOLOv3 e pelas suas variantes?

O YOLOv3, o YOLOv3-Tiny e o YOLOv3-SPP suportam principalmente tarefas de detecção de objetos. Estes modelos podem ser utilizados para várias fases de implantação e desenvolvimento de modelos, tais como Inferência, Validação, Treino e Exportação. Para um conjunto abrangente de tarefas suportadas e detalhes mais profundos, visita a nossa documentação de tarefas de Object Detection.

Onde posso encontrar recursos para citar o YOLOv3 na minha investigação?

Se utilizares o YOLOv3 na tua investigação, por favor cita os artigos originais do YOLO e o repositório Ultralytics YOLOv3. Exemplo de citação BibTeX:

Citação
@article{redmon2018yolov3,
  title={YOLOv3: An Incremental Improvement},
  author={Redmon, Joseph and Farhadi, Ali},
  journal={arXiv preprint arXiv:1804.02767},
  year={2018}
}

Para mais detalhes de citação, consulta a secção Citações e Agradecimentos.

Comentários