Ultralytics YOLOv5 🚀 es un modelo de visión artificial de vanguardia (SOTA) desarrollado por Ultralytics. Basado en el framework PyTorch, YOLOv5 es conocido por su facilidad de uso, velocidad y precisión. Incorpora una amplia investigación y desarrollo con las mejores prácticas, lo que lo convierte en una opción popular para diversas tareas de IA visual.
Dirección del Proyecto: https://github.com/ultralytics/yolov5
YOLOv5 soporta múltiples tareas de visión artificial:
Las características clave incluyen inferencia en tiempo real, soporte para múltiples técnicas de entrenamiento como el aumento del tiempo de prueba (TTA) y la integración de modelos, y compatibilidad con formatos de exportación como TFLite, ONNX, CoreML y TensorRT.
YOLOv5 ofrece varios tamaños de modelo para satisfacer diferentes necesidades:
Modelo | Parámetros (M) | Velocidad | Precisión | Escenario de Uso |
---|---|---|---|---|
YOLOv5n | 1.9 | Más Rápido | Más Baja | Dispositivos móviles, computación en el borde |
YOLOv5s | 7.2 | Rápido | Media | Aplicaciones generales |
YOLOv5m | 21.2 | Medio | Más Alta | Rendimiento equilibrado |
YOLOv5l | 46.5 | Más Lento | Alta | Requisitos de alta precisión |
YOLOv5x | 86.7 | Más Lento | Más Alta | Requisitos de máxima precisión |
Rendimiento en el conjunto de datos COCO:
# Clonar el repositorio
git clone https://github.com/ultralytics/yolov5
cd yolov5
# Instalar dependencias
pip install -r requirements.txt
import torch
# Cargar el modelo YOLOv5
model = torch.hub.load("ultralytics/yolov5", "yolov5s")
# Definir la fuente de la imagen de entrada
img = "https://ultralytics.com/images/zidane.jpg"
# Ejecutar la inferencia
results = model(img)
# Procesar los resultados
results.print() # Imprimir los resultados en la consola
results.show() # Mostrar los resultados en una ventana
results.save() # Guardar los resultados en runs/detect/exp
# Inferencia usando la cámara web
python detect.py --weights yolov5s.pt --source 0
# Inferencia en un archivo de imagen local
python detect.py --weights yolov5s.pt --source img.jpg
# Inferencia en un archivo de video
python detect.py --weights yolov5s.pt --source vid.mp4
# Inferencia en un directorio de imágenes
python detect.py --weights yolov5s.pt --source path/to/images/
# Inferencia en un video de YouTube
python detect.py --weights yolov5s.pt --source 'https://youtu.be/LNwODJXcvt4'
# Entrenar YOLOv5s en el conjunto de datos COCO, 300 epochs
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5s.yaml --batch-size 64
# Entrenar YOLOv5m
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5m.yaml --batch-size 40
# Entrenar YOLOv5l
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5l.yaml --batch-size 24
# Usar entrenamiento distribuido con múltiples GPUs
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
YOLOv5 versión 7.0 introdujo la funcionalidad de segmentación de instancias, alcanzando un rendimiento de vanguardia en el conjunto de datos COCO.
Modelo | mAP^box | mAP^mask | Parámetros (M) | Velocidad (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 |
# Entrenar el modelo de segmentación
python segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640
# Validar el modelo de segmentación
python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640
# Usar el modelo de segmentación para la predicción
python segment/predict.py --weights yolov5m-seg.pt --source data/images/bus.jpg
YOLOv5 versión 6.2 agregó la funcionalidad de clasificación de imágenes, con resultados de entrenamiento de 90 epochs en el conjunto de datos ImageNet:
Modelo | Precisión Top1 | Precisión Top5 | Parámetros (M) | Velocidad (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 |
# Entrenar en el conjunto de datos CIFAR-100
python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128
# Validar el modelo ImageNet
python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224
# Predicción de clasificación de imágenes
python classify/predict.py --weights yolov5s-cls.pt --source data/images/bus.jpg
YOLOv5 soporta múltiples formatos de implementación:
# Exportar a formato ONNX
python export.py --weights yolov5s.pt --include onnx
# Exportar a formato TensorRT
python export.py --weights yolov5s.pt --include engine
# Exportar a formato CoreML (para iOS)
python export.py --weights yolov5s.pt --include coreml
# Exportar a formato TFLite (para dispositivos móviles)
python export.py --weights yolov5s.pt --include tflite
Mejorar la precisión de la predicción mediante aumentos de reflexión y escala:
python val.py --data coco.yaml --img 1536 --iou 0.7 --augment
Combinar múltiples modelos para obtener un mejor rendimiento:
python val.py --data coco.yaml --weights yolov5s.pt yolov5m.pt yolov5l.pt yolov5x.pt
Encontrar automáticamente los mejores hiperparámetros de entrenamiento:
python train.py --data coco.yaml --evolve 300
YOLOv5 está profundamente integrado con múltiples plataformas de IA líderes:
YOLOv5, como un hito importante en el campo de la detección de objetos, se ha convertido en el framework preferido para la investigación académica y las aplicaciones industriales gracias a su excelente rendimiento, facilidad de uso y ricas funcionalidades. Tanto los principiantes como los desarrolladores profesionales pueden encontrar soluciones adecuadas en el ecosistema de YOLOv5.