YOLOv3 e YOLOv3u#
Visão geral#
Este documento apresenta uma visão geral de três modelos de deteção de objetos estreitamente relacionados, nomeadamente YOLOv3, YOLOv3-Ultralytics e YOLOv3u.
-
YOLOv3: Esta é a terceira versão do algoritmo de deteção de objetos You Only Look Once (YOLO). Desenvolvido originalmente por Joseph Redmon, o YOLOv3 melhorou os seus antecessores ao introduzir funcionalidades como previsões multiescala e três tamanhos diferentes de kernels de deteção.
-
YOLOv3-Ultralytics: Esta é a implementação de YOLOv3 da Ultralytics em PyTorch, mantida no repositório ultralytics/yolov3. Mantém a arquitetura original baseada em âncoras e adiciona mais modelos pré-treinados e uma personalização mais simples.
-
YOLOv3u: Esta é uma versão atualizada do YOLOv3-Ultralytics que incorpora a cabeça dividida sem âncoras e sem objectness utilizada nos modelos YOLOv8. O YOLOv3u mantém a mesma arquitetura de backbone e neck do YOLOv3, mas utiliza a cabeça de deteção atualizada do YOLOv8.

Principais funcionalidades#
-
YOLOv3: Introduziu a utilização de três escalas diferentes para a deteção, recorrendo a três tamanhos diferentes de kernels de deteção: 13x13, 26x26 e 52x52. Isto melhorou significativamente a precisão da deteção de objetos de vários tamanhos. Além disso, o YOLOv3 adicionou funcionalidades como previsões multilabel para cada caixa delimitadora e uma rede extratora de características melhorada.
-
YOLOv3u: Este modelo atualizado incorpora a cabeça dividida sem âncoras e sem objectness do YOLOv8. Ao eliminar a necessidade de caixas-âncora predefinidas e pontuações de objectness, este design da cabeça de deteção pode melhorar a capacidade do modelo para detetar objetos de vários tamanhos e formas. Isto torna o YOLOv3u mais robusto e preciso em tarefas de deteção de objetos.
Tarefas e modos compatíveis#
O YOLOv3 foi concebido especificamente para tarefas de deteção de objetos. A Ultralytics disponibiliza três variantes do YOLOv3: yolov3u, yolov3-tinyu e yolov3-sppu. O u no nome indica que estas variantes utilizam a cabeça sem âncoras do YOLOv8, ao contrário da arquitetura original, baseada em âncoras. Estes modelos são conhecidos pela sua eficácia em vários cenários reais, equilibrando precisão e velocidade. Cada variante oferece funcionalidades e otimizações únicas, sendo adequada para uma variedade de aplicações.
Os três modelos suportam um conjunto abrangente de modos, garantindo versatilidade nas várias etapas da implementação do modelo e do desenvolvimento. Estes modos incluem Inferência, Validação, Treino e Exportação, disponibilizando aos utilizadores um conjunto completo de ferramentas para uma deteção de objetos eficaz.
| Tipo de modelo | Pesos pré-treinados | Tarefas suportadas | Treinamento | Validação | Inferência | Exportar |
|---|---|---|---|---|---|---|
| YOLOv3(u) | yolov3u.pt | Deteção de objetos | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-Tiny(u) | yolov3-tinyu.pt | Deteção de objetos | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-SPP(u) | yolov3-sppu.pt | Deteção de objetos | ✅ | ✅ | ✅ | ✅ |
Esta tabela apresenta, num relance, as capacidades de cada variante do YOLOv3, destacando a sua versatilidade e adequação a várias tarefas e modos de operação nos fluxos de trabalho de deteção de objetos.
Exemplos de uso#
Este exemplo apresenta exemplos simples de treino e inferência com YOLOv3. Para consultar a documentação completa sobre estes e outros modos, vê as páginas de documentação Predict, Train, Val e Export.
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
# Carrega um modelo YOLOv3u pré-treinado no COCO
model = YOLO("yolov3u.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)
# Executa a inferência com o modelo YOLOv3u na imagem 'bus.jpg'
results = model("path/to/bus.jpg")Citações e agradecimentos#
Se utilizares YOLOv3 na tua investigação, cita os artigos originais do YOLO e o repositório YOLOv3 da Ultralytics:
@article{redmon2018yolov3,
title={YOLOv3: An Incremental Improvement},
author={Redmon, Joseph and Farhadi, Ali},
journal={arXiv preprint arXiv:1804.02767},
year={2018}
}Agradecemos a Joseph Redmon e Ali Farhadi pelo desenvolvimento do YOLOv3 original.
Perguntas frequentes#
O YOLOv3 é a terceira iteração do algoritmo de deteção de objetos YOLO (You Only Look Once), desenvolvido por Joseph Redmon e conhecido pelo equilíbrio entre precisão e velocidade, utilizando três escalas diferentes (13x13, 26x26 e 52x52) para as deteções. O YOLOv3-Ultralytics é uma adaptação do YOLOv3 da Ultralytics que adiciona suporte para mais modelos pré-treinados e facilita a personalização dos modelos. O YOLOv3u é uma variante melhorada do YOLOv3-Ultralytics, que integra a cabeça dividida sem âncoras e sem objectness do YOLOv8, melhorando a robustez e a precisão da deteção para objetos de vários tamanhos. Para mais informações sobre as variantes, consulta a série YOLOv3.
Treinar um modelo YOLOv3 com a Ultralytics é simples. Podes treinar o modelo com Python ou CLI:
Exemplofrom ultralytics import YOLO # Carrega um modelo YOLOv3u pré-treinado no COCO model = YOLO("yolov3u.pt") # Treina o modelo no conjunto de dados de exemplo COCO8 durante 100 épocas results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Para consultar mais opções e orientações de treino, visita a documentação do modo Train.
O YOLOv3u melhora o YOLOv3 e o YOLOv3-Ultralytics ao incorporar a cabeça dividida sem âncoras e sem objectness utilizada nos modelos YOLOv8. Esta atualização elimina a necessidade de caixas-âncora predefinidas e pontuações de objectness, aumentando a capacidade de detetar objetos de vários tamanhos e formas com maior precisão. Isto torna o YOLOv3u uma opção melhor para tarefas de deteção de objetos complexas e variadas. Para mais informações, consulta a secção Principais funcionalidades.
Podes executar inferências com modelos YOLOv3 através de scripts Python ou comandos CLI:
Exemplofrom ultralytics import YOLO # Carrega um modelo YOLOv3u pré-treinado no COCO model = YOLO("yolov3u.pt") # Executa a inferência com o modelo YOLOv3u na imagem 'bus.jpg' results = model("path/to/bus.jpg")Consulta a documentação do modo de inferência para saber mais sobre como executar modelos YOLO.
O YOLOv3, o YOLOv3-Tiny e o YOLOv3-SPP suportam principalmente tarefas de deteção de objetos. Estes modelos podem ser utilizados em várias etapas da implementação e do desenvolvimento de modelos, como inferência, validação, treino e exportação. Para consultar a lista completa de tarefas suportadas e informações mais detalhadas, visita a documentação das tarefas de deteção de objetos.
Se utilizares YOLOv3 na tua investigação, cita os artigos originais do YOLO e o repositório YOLOv3 da Ultralytics. 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 informações sobre citações, consulta a secção Citações e agradecimentos.