YOLOv5, el modelo de detección de objetos en tiempo real más avanzado basado en PyTorch, que admite tareas de detección de objetos, segmentación de imágenes y clasificación de imágenes.
Introducción Detallada al Proyecto YOLOv5
Resumen del Proyecto
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
Características Principales
Soporte Multitarea
YOLOv5 soporta múltiples tareas de visión artificial:
- Detección de Objetos: Identificación y localización de múltiples objetos en imágenes.
- Segmentación de Instancias: Segmentación de objetos a nivel de píxel.
- Clasificación de Imágenes: Clasificación de categorías de imágenes individuales.
Ventajas Técnicas
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.
Arquitectura y Rendimiento del Modelo
Especificaciones del Modelo
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 |
Métricas de Rendimiento
Rendimiento en el conjunto de datos COCO:
- YOLOv5s: mAP@0.5:0.95 = 37.4%, Velocidad 6.4ms (V100)
- YOLOv5m: mAP@0.5:0.95 = 45.4%, Velocidad 8.2ms (V100)
- YOLOv5l: mAP@0.5:0.95 = 49.0%, Velocidad 10.1ms (V100)
- YOLOv5x: mAP@0.5:0.95 = 50.7%, Velocidad 12.1ms (V100)
Instalación y Inicio Rápido
Requisitos del Entorno
- Python >= 3.8.0
- PyTorch >= 1.8
Pasos de Instalación
# Clonar el repositorio
git clone https://github.com/ultralytics/yolov5
cd yolov5
# Instalar dependencias
pip install -r requirements.txt
Usar PyTorch Hub para la Inferencia
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 en Línea de Comandos
# 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 un Modelo Personalizado
Ejemplo de Comando de Entrenamiento
# 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
Entrenamiento con Múltiples GPUs
# 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
Funcionalidad de Segmentación de Instancias
YOLOv5 versión 7.0 introdujo la funcionalidad de segmentación de instancias, alcanzando un rendimiento de vanguardia en el conjunto de datos COCO.
Rendimiento del Modelo de Segmentación
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 |
Ejemplo de Entrenamiento de Segmentación
# 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
Funcionalidad de Clasificación de Imágenes
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:
Rendimiento del Modelo de Clasificación
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 |
Ejemplo de Entrenamiento de Clasificación
# 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
Exportación e Implementación del Modelo
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
Funciones Avanzadas
Aumento del Tiempo de Prueba (TTA)
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
Integración de Modelos
Combinar múltiples modelos para obtener un mejor rendimiento:
python val.py --data coco.yaml --weights yolov5s.pt yolov5m.pt yolov5l.pt yolov5x.pt
Evolución de Hiperparámetros
Encontrar automáticamente los mejores hiperparámetros de entrenamiento:
python train.py --data coco.yaml --evolve 300
Integración y Ecosistema
YOLOv5 está profundamente integrado con múltiples plataformas de IA líderes:
- Weights & Biases: Seguimiento y visualización de experimentos
- Comet ML: Gestión y monitorización de experimentos
- Roboflow: Etiquetado y gestión de datos
- Intel OpenVINO: Optimización e implementación de modelos
- Neural Magic: Raleo y aceleración de modelos
- Ultralytics HUB: Plataforma integral de entrenamiento e implementación
Comunidad y Soporte
- Repositorio de GitHub: https://github.com/ultralytics/yolov5
- Documentación Oficial: https://docs.ultralytics.com/yolov5/
- Comunidad de Discord: https://discord.com/invite/ultralytics
- Comentarios y Problemas: https://github.com/ultralytics/yolov5/issues
Conclusión
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.