Comparação das Versões do YOLO: do YOLOv1 ao YOLOv8
Guia completo sobre as diferentes versões do YOLO, suas características e aplicações.
I
InSkillCoach
· min
Comparação das Versões do YOLO: do YOLOv1 ao YOLOv8
Guia completo sobre a evolução do YOLO (You Only Look Once) ao longo de suas diferentes versões.
1. YOLOv1 a YOLOv5
1.1 YOLOv1 (2015)
- Primeira versão, criada por Joseph Redmon
- Arquitetura simples com 24 camadas de convolução
- Limitações:
- Baixa precisão em objetos pequenos
- Dificuldade com objetos próximos
- Sem detecção multiescala
1.2 YOLOv2 (2016)
- Principais melhorias:
- Batch Normalization
- Anchors boxes
- Dimension clustering
- Fine-grained features
- Multi-scale training
1.3 YOLOv3 (2018)
- Principais características:
- Detecção multiescala
- Feature Pyramid Network (FPN)
- Melhor tratamento de objetos pequenos
- Suporte a 80 classes
1.4 YOLOv4 (2020)
- Melhorias significativas:
- Mosaic augmentation
- CSP (Cross Stage Partial Network)
- PANet
- SAM (Spatial Attention Module)
- Melhor precisão e velocidade
1.5 YOLOv5 (2020)
- Desenvolvida pela Ultralytics
- Características:
- Auto-learning bounding box anchors
- Mosaic augmentation
- Multi-scale training
- Suporte a vários frameworks
2. YOLOv6 e YOLOv7
2.1 YOLOv6 (2022)
- Desenvolvida pela Meituan
- Melhorias:
- RepVGG backbone
- CSPVoVNet neck
- Melhor desempenho em dispositivos móveis
- Otimização para inferência
2.2 YOLOv7 (2022)
- Desenvolvida por WongKinYiu
- Inovações:
- E-ELAN (Extended Efficient Layer Aggregation Network)
- Model scaling
- Auxiliary head
- Melhor precisão que o YOLOv5
3. YOLOv8 (2023)
3.1 Principais Características
# Installation
pip install ultralytics
# Import
from ultralytics import YOLO
# Modèles disponibles
model_nano = YOLO('yolov8n.pt') # Nano
model_small = YOLO('yolov8s.pt') # Small
model_medium = YOLO('yolov8m.pt') # Medium
model_large = YOLO('yolov8l.pt') # Large
model_xlarge = YOLO('yolov8x.pt') # XLarge
3.2 Melhorias
-
Arquitetura
- Novo backbone CSP
- Melhor tratamento das características
- Otimização para inferência
-
Desempenho
- Velocidade de inferência aprimorada
- Melhor precisão
- Suporte a múltiplas tarefas
-
Funcionalidades
- Detecção de objetos
- Segmentação de instâncias
- Classificação de imagens
- Pose estimation
4. Comparação de Desempenho
4.1 Métricas
def benchmark_yolo_versions():
# Configuration
test_image = "path/to/test/image.jpg"
# Test des différentes versions
versions = {
'v5': YOLO('yolov5n.pt'),
'v6': YOLO('yolov6n.pt'),
'v7': YOLO('yolov7n.pt'),
'v8': YOLO('yolov8n.pt')
}
results = {}
for version, model in versions.items():
# Mesure du temps d'inférence
start_time = time.time()
results[version] = model(test_image)
inference_time = time.time() - start_time
print(f"YOLO{version}:")
print(f"Temps d'inférence: {inference_time:.2f}s")
print(f"Nombre de détections: {len(results[version][0].boxes)}")
print(f"Précision moyenne: {results[version][0].boxes.conf.mean():.2f}")
4.2 Tabela Comparativa
| Versão | Velocidade | Precisão | Memória | Funcionalidades |
|---|---|---|---|---|
| v5 | Base | Base | Base | Base |
| v6 | +10% | +3% | -5% | +1 nova |
| v7 | +15% | +5% | -8% | +2 novas |
| v8 | +20% | +7% | -10% | +3 novas |
5. Aplicações Práticas
5.1 Detecção em Tempo Real
def real_time_detection():
# Initialisation
cap = cv2.VideoCapture(0)
model = YOLO('yolov8n.pt') # Utilisation de YOLOv8
while cap.isOpened():
success, frame = cap.read()
if not success:
continue
# Détection
results = model(frame)
# Visualisation
annotated_frame = results[0].plot()
# Affichage
cv2.imshow('YOLOv8 Detection', annotated_frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
5.2 Segmentação de Instâncias
def instance_segmentation():
# Initialisation
model = YOLO('yolov8n-seg.pt')
# Segmentation
results = model('path/to/image.jpg')
# Visualisation
for result in results:
# Masques de segmentation
masks = result.masks
# Boîtes de détection
boxes = result.boxes
# Visualisation
annotated_frame = result.plot()
cv2.imshow('Segmentation', annotated_frame)
cv2.waitKey(0)
cv2.destroyAllWindows()
6. Boas Práticas
-
Escolha da Versão
- v5 para aplicações básicas
- v6 para aplicações móveis
- v7 para aplicações avançadas
- v8 para aplicações inovadoras
-
Otimização
- Usar aceleração por GPU
- Ajustar os limiares de confiança
- Otimizar o tamanho do batch
-
Implantação
- Exportar no formato apropriado
- Usar aceleração de hardware
- Implementar um sistema de cache
Conclusão
Pontos-chave:
- Evolução significativa do desempenho
- Novas funcionalidades a cada versão
- Otimização contínua para inferência
- Suporte a múltiplas tarefas com o YOLOv8
Recomendações:
- Escolher a versão de acordo com as necessidades
- Otimizar o desempenho
- Usar aceleração de hardware
- Implementar um tratamento robusto de erros
Sobre InSkillCoach
Especialista em treinamento e tecnologias
Coach especializado em tecnologias avançadas e IA, apoiado pela GNeurone Inc.
Certificações:
- AWS Certified Solutions Architect – Professional
- Certificações Google Cloud
- Microsoft Certified: DevOps Engineer Expert
- Certified Kubernetes Administrator (CKA)
- CompTIA Security+
777
252
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão