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
O YOLOv5 suporta várias tarefas de visão computacional:
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.
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 |
Desempenho no conjunto de dados COCO:
# Clonar o repositório
git clone https://github.com/ultralytics/yolov5
cd yolov5
# Instalar as dependências
pip install -r requirements.txt
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 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'
# 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
# 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
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.
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 |
# 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
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:
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 |
# 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
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
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
Combinar vários modelos para obter melhor desempenho:
python val.py --data coco.yaml --weights yolov5s.pt yolov5m.pt yolov5l.pt yolov5x.pt
Encontrar automaticamente os melhores hiperparâmetros de treinamento:
python train.py --data coco.yaml --evolve 300
O YOLOv5 está profundamente integrado com várias plataformas de IA convencionais:
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.