YOLOv5, o modelo de detecção de objetos em tempo real de última geração baseado em PyTorch, suporta tarefas de detecção de objetos, segmentação de imagens e classificação de imagens.
Introdução Detalhada ao Projeto YOLOv5
Visão Geral do Projeto
Ultralytics YOLOv5 🚀 é um modelo de visão computacional de ponta (SOTA) desenvolvido pela Ultralytics. Baseado no framework PyTorch, o YOLOv5 é conhecido por sua facilidade de uso, velocidade e precisão. Ele incorpora insights e melhores práticas de extensa pesquisa e desenvolvimento, tornando-o uma escolha popular para diversas tarefas de IA visual.
Endereço do Projeto: https://github.com/ultralytics/yolov5
Características Principais
Suporte Multitarefa
O YOLOv5 suporta várias tarefas de visão computacional:
- Detecção de Objetos: Identificação e localização de múltiplos objetos em imagens.
- Segmentação de Instâncias: Segmentação de objetos em nível de pixel.
- Classificação de Imagens: Classificação de categorias de imagens individuais.
Vantagens Técnicas
As características principais incluem inferência em tempo real, suporte para várias técnicas de treinamento, como aumento de tempo de teste (TTA) e integração de modelos, e compatibilidade com formatos de exportação como TFLite, ONNX, CoreML e TensorRT.
Arquitetura e Desempenho do Modelo
Especificações do Modelo
O YOLOv5 oferece vários tamanhos de modelo para atender a diferentes necessidades:
Modelo | Parâmetros (M) | Velocidade | Precisão | Cenários de Aplicação |
---|---|---|---|---|
YOLOv5n | 1.9 | Mais Rápido | Mais Baixa | Dispositivos móveis, computação de borda |
YOLOv5s | 7.2 | Rápido | Média | Aplicações gerais |
YOLOv5m | 21.2 | Médio | Mais Alta | Desempenho equilibrado |
YOLOv5l | 46.5 | Mais Lento | Alta | Requisitos de alta precisão |
YOLOv5x | 86.7 | Mais Lento | Mais Alta | Requisitos de precisão máxima |
Métricas de Desempenho
Desempenho no conjunto de dados COCO:
- YOLOv5s: mAP@0.5:0.95 = 37.4%, velocidade 6.4ms (V100)
- YOLOv5m: mAP@0.5:0.95 = 45.4%, velocidade 8.2ms (V100)
- YOLOv5l: mAP@0.5:0.95 = 49.0%, velocidade 10.1ms (V100)
- YOLOv5x: mAP@0.5:0.95 = 50.7%, velocidade 12.1ms (V100)
Instalação e Início Rápido
Requisitos de Ambiente
- Python >= 3.8.0
- PyTorch >= 1.8
Passos de Instalação
# Clonar o repositório
git clone https://github.com/ultralytics/yolov5
cd yolov5
# Instalar as dependências
pip install -r requirements.txt
Usando o PyTorch Hub para Inferência
import torch
# Carregar o modelo YOLOv5
model = torch.hub.load("ultralytics/yolov5", "yolov5s")
# Definir a fonte da imagem de entrada
img = "https://ultralytics.com/images/zidane.jpg"
# Executar a inferência
results = model(img)
# Processar os resultados
results.print() # Imprimir os resultados no console
results.show() # Exibir os resultados em uma janela
results.save() # Salvar os resultados em runs/detect/exp
Inferência na Linha de Comando
# Inferência usando a câmera
python detect.py --weights yolov5s.pt --source 0
# Inferência em um arquivo de imagem local
python detect.py --weights yolov5s.pt --source img.jpg
# Inferência em um arquivo de vídeo
python detect.py --weights yolov5s.pt --source vid.mp4
# Inferência em um diretório de imagens
python detect.py --weights yolov5s.pt --source path/to/images/
# Inferência em um vídeo do YouTube
python detect.py --weights yolov5s.pt --source 'https://youtu.be/LNwODJXcvt4'
Treinando um Modelo Personalizado
Exemplo de Comando de Treinamento
# Treinar o YOLOv5s no conjunto de dados COCO, 300 epochs
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5s.yaml --batch-size 64
# Treinar o YOLOv5m
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5m.yaml --batch-size 40
# Treinar o YOLOv5l
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5l.yaml --batch-size 24
Treinamento Multi-GPU
# Usar treinamento distribuído multi-GPU
python -m torch.distributed.run --nproc_per_node 4 --master_port 1 train.py --data coco.yaml --weights '' --cfg yolov5s.yaml --batch-size 64 --device 0,1,2,3
Funcionalidade de Segmentação de Instâncias
A versão 7.0 do YOLOv5 introduziu a funcionalidade de segmentação de instâncias, alcançando desempenho de ponta no conjunto de dados COCO.
Desempenho do Modelo de Segmentação
Modelo | mAP^box | mAP^mask | Parâmetros (M) | Velocidade (ms) |
---|---|---|---|---|
YOLOv5n-seg | 27.6 | 23.4 | 2.0 | 59.2 |
YOLOv5s-seg | 37.6 | 32.0 | 7.6 | 63.7 |
YOLOv5m-seg | 45.0 | 37.1 | 22.0 | 89.5 |
YOLOv5l-seg | 49.0 | 39.9 | 47.8 | 168.4 |
YOLOv5x-seg | 50.7 | 41.4 | 88.8 | 265.7 |
Exemplo de Treinamento de Segmentação
# Treinar o modelo de segmentação
python segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640
# Validar o modelo de segmentação
python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640
# Usar o modelo de segmentação para previsão
python segment/predict.py --weights yolov5m-seg.pt --source data/images/bus.jpg
Funcionalidade de Classificação de Imagens
A versão 6.2 do YOLOv5 adicionou a funcionalidade de classificação de imagens, com resultados de treinamento de 90 epochs no conjunto de dados ImageNet:
Desempenho do Modelo de Classificação
Modelo | Precisão Top1 | Precisão Top5 | Parâmetros (M) | Velocidade (ms) |
---|---|---|---|---|
YOLOv5s-cls | 71.5% | 90.2% | 5.5 | 1.7 |
YOLOv5m-cls | 75.9% | 92.9% | 13.0 | 2.8 |
YOLOv5l-cls | 78.0% | 94.0% | 27.4 | 4.9 |
YOLOv5x-cls | 79.0% | 94.4% | 55.4 | 8.7 |
Exemplo de Treinamento de Classificação
# Treinar no conjunto de dados CIFAR-100
python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128
# Validar o modelo ImageNet
python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224
# Previsão de classificação de imagem
python classify/predict.py --weights yolov5s-cls.pt --source data/images/bus.jpg
Exportação e Implantação de Modelos
O YOLOv5 suporta vários formatos de implantação:
# Exportar para o formato ONNX
python export.py --weights yolov5s.pt --include onnx
# Exportar para o formato TensorRT
python export.py --weights yolov5s.pt --include engine
# Exportar para o formato CoreML (adequado para iOS)
python export.py --weights yolov5s.pt --include coreml
# Exportar para o formato TFLite (adequado para dispositivos móveis)
python export.py --weights yolov5s.pt --include tflite
Funcionalidades Avançadas
Aumento de Tempo de Teste (TTA)
Melhorar a precisão da previsão por meio de reflexão e aumento de escala:
python val.py --data coco.yaml --img 1536 --iou 0.7 --augment
Integração de Modelos
Combinar vários modelos para obter melhor desempenho:
python val.py --data coco.yaml --weights yolov5s.pt yolov5m.pt yolov5l.pt yolov5x.pt
Evolução de Hiperparâmetros
Encontrar automaticamente os melhores hiperparâmetros de treinamento:
python train.py --data coco.yaml --evolve 300
Integração e Ecossistema
O YOLOv5 está profundamente integrado com várias plataformas de IA convencionais:
- Weights & Biases: Rastreamento e visualização de experimentos
- Comet ML: Gerenciamento e monitoramento de experimentos
- Roboflow: Anotação e gerenciamento de dados
- Intel OpenVINO: Otimização e implantação de modelos
- Neural Magic: Esparsificação e aceleração de modelos
- Ultralytics HUB: Plataforma completa de treinamento e implantação
Comunidade e Suporte
- Repositório GitHub: https://github.com/ultralytics/yolov5
- Documentação Oficial: https://docs.ultralytics.com/yolov5/
- Comunidade Discord: https://discord.com/invite/ultralytics
- Feedback de Problemas: https://github.com/ultralytics/yolov5/issues
Resumo
Como um marco importante no campo da detecção de objetos, o YOLOv5 se tornou a estrutura preferida para pesquisa acadêmica e aplicações industriais devido ao seu excelente desempenho, facilidade de uso e recursos avançados. Sejam iniciantes ou desenvolvedores profissionais, todos podem encontrar soluções adequadas no ecossistema YOLOv5.