Home
Login

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.

AGPL-3.0Python 54.3kultralyticsyolov5 Last Updated: 2025-06-21

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

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.

Star History Chart