YOLOv5 frente a EfficientDet#
Al embarcarte en un nuevo proyecto de visión artificial, elegir la arquitectura de red neuronal adecuada es una de las decisiones más importantes que tomarás. Esta guía ofrece una comparación técnica exhaustiva entre Ultralytics YOLOv5 y EfficientDet de Google. Mediante el análisis de sus arquitecturas, métricas de rendimiento y ecosistemas de entrenamiento, queremos ayudar a desarrolladores e investigadores a identificar el mejor modelo de detección de objetos para sus entornos de implementación específicos.
Aunque EfficientDet introdujo conceptos novedosos en el escalado compuesto y la fusión de características, YOLOv5 revolucionó el sector al democratizar el acceso a la IA de alto rendimiento gracias a su implementación de PyTorch, extraordinariamente intuitiva, su experiencia de usuario optimizada y su equilibrio incomparable entre velocidad y precisión.
Ultralytics YOLOv5: el estándar del sector en accesibilidad#
Publicado en el verano de 2020, YOLOv5 marcó un cambio decisivo en la evolución de YOLO. Al pasar del framework Darknet basado en C a PyTorch nativo, se convirtió en la arquitectura de referencia para desarrolladores que querían crear, entrenar e implementar modelos rápidamente.
- Autores: Glenn Jocher
- Organización: Ultralytics
- Fecha: 2020-06-26
- GitHub: https://github.com/ultralytics/yolov5
- Documentación: https://docs.ultralytics.com/models/yolov5
Innovaciones arquitectónicas#
YOLOv5 es conocido por su arquitectura altamente optimizada, que prioriza un ciclo de vida fluido del aprendizaje automático. Utiliza un backbone CSPDarknet53 modificado junto con un cuello Path Aggregation Network (PANet), lo que mejora considerablemente la propagación de características en varias escalas espaciales.
Entre sus principales avances se incluyen:
- Aumento de datos Mosaic: esta técnica de entrenamiento combina cuatro imágenes de entrenamiento distintas en un único mosaico. Esto obliga al modelo a aprender a identificar objetos en contextos espaciales complejos y aumenta considerablemente su capacidad para detectar objetivos pequeños.
- Cajas anchor de aprendizaje automático: antes de comenzar el entrenamiento, YOLOv5 analiza tus datos de entrenamiento personalizados y calcula automáticamente las dimensiones óptimas de las cajas anchor mediante agrupamiento k-means.
- Eficiencia de memoria: en comparación con los modelos pesados basados en Transformer, YOLOv5 mantiene un consumo de memoria considerablemente menor tanto durante el entrenamiento como durante la inferencia, lo que le permite ejecutarse sin problemas en hardware de consumo.
EfficientDet: detección de objetos escalable#
Presentado por Google Research en 2019, EfficientDet tenía como objetivo proporcionar una familia de detectores de objetos escalables. Se basa en el backbone de clasificación de imágenes EfficientNet e introduce un novedoso mecanismo de fusión de características.
- Autores: Mingxing Tan, Ruoming Pang y Quoc V. Le
- Organización: Google
- Fecha: 20-11-2019
- Arxiv: https://arxiv.org/abs/1911.09070
- GitHub: https://github.com/google/automl/tree/master/efficientdet
- Documentación: https://github.com/google/automl/tree/master/efficientdet#readme
Innovaciones arquitectónicas#
La propuesta central de EfficientDet reside en su enfoque sistemático del escalado y la agregación de características:
- BiFPN (red piramidal de características bidireccional): a diferencia de las FPN tradicionales, que solo transmiten información de arriba abajo, BiFPN permite una fusión rápida y sencilla de características a varias escalas mediante la introducción de pesos aprendibles que determinan la importancia de las distintas características de entrada.
- Escalado compuesto: EfficientDet escala conjuntamente la resolución, la profundidad y la anchura de todas las redes de backbone, de características y de predicción de cajas/clases, lo que da lugar a modelos que van desde el ligero D0 hasta el enorme D7.
Más información sobre EfficientDet
Mientras que EfficientDet depende en gran medida del ecosistema de TensorFlow y de las bibliotecas AutoML, YOLOv5 funciona de forma nativa en PyTorch y ofrece un flujo de trabajo que muchos desarrolladores consideran más intuitivo, más propio de Python y más fácil de depurar.
Comparación de rendimiento y métricas#
Al comparar estos modelos, es fundamental evaluar su rendimiento en benchmarks estándar como el dataset COCO. La tabla siguiente destaca las ventajas y desventajas entre el tamaño, la demanda computacional (FLOPs) y la velocidad de inferencia.
| Modelo | tamaño (píxeles) | mAPval 50-95 | Velocidad CPU ONNX (ms) | Velocidad T4 TensorRT10 (ms) | parámetros (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv5n | 640 | 28.0 | 73.6 | 1.12 | 2.6 | 7.7 |
| YOLOv5s | 640 | 37.4 | 120.7 | 1.92 | 9.1 | 24.0 |
| YOLOv5m | 640 | 45.4 | 233.9 | 4.03 | 25.1 | 64.2 |
| YOLOv5l | 640 | 49.0 | 408.4 | 6.61 | 53.2 | 135.0 |
| YOLOv5x | 640 | 50.7 | 763.2 | 11.89 | 97.2 | 246.4 |
| EfficientDet-d0 | 640 | 34.6 | 10.2 | 3.92 | 3.9 | 2.54 |
| EfficientDet-d1 | 640 | 40.5 | 13.5 | 7.31 | 6.6 | 6.1 |
| EfficientDet-d2 | 640 | 43.0 | 17.7 | 10.92 | 8.1 | 11.0 |
| EfficientDet-d3 | 640 | 47.5 | 28.0 | 19.59 | 12.0 | 24.9 |
| EfficientDet-d4 | 640 | 49.7 | 42.8 | 33.55 | 20.7 | 55.2 |
| EfficientDet-d5 | 640 | 51.5 | 72.5 | 67.86 | 33.7 | 130.0 |
| EfficientDet-d6 | 640 | 52.6 | 92.8 | 89.29 | 51.9 | 226.0 |
| EfficientDet-d7 | 640 | 53.7 | 122.0 | 128.07 | 51.9 | 325.0 |
Análisis equilibrado#
YOLOv5 destaca por su flexibilidad de implementación y su compatibilidad con la aceleración de hardware en bruto. Fíjate en las velocidades de TensorRT increíblemente rápidas en la GPU T4. Esto hace que YOLOv5 sea especialmente adecuado para el análisis de vídeo de alto rendimiento y las canalizaciones de inferencia en tiempo real. Además, el ecosistema de Ultralytics permite exportar a formatos como ONNX, CoreML y TensorRT con un comando de una sola línea.
EfficientDet ofrece una excelente eficiencia de parámetros. Para un número determinado de parámetros, a menudo obtiene una precisión media promedio (mAP) elevada. Sin embargo, esta eficiencia teórica no siempre se traduce en tiempos de inferencia más rápidos en tiempo real en GPU de edge debido al complejo enrutamiento de la capa BiFPN, que puede estar limitado por el ancho de banda de memoria en lugar de por la capacidad de cálculo.
Ecosistema y facilidad de uso#
La ventaja decisiva de elegir un modelo de Ultralytics reside en el ecosistema que lo rodea. YOLOv5 forma parte de un repositorio con un mantenimiento intensivo y un desarrollo activo, respaldado por una comunidad enorme.
Con la introducción de Ultralytics Platform, puedes pasar sin complicaciones de la recopilación de datos a la implementación. Esta plataforma admite anotación automática, entrenamiento en la nube y monitorización de modelos desde el primer momento. En cambio, entrenar EfficientDet suele requerir lidiar con las complejidades de las API antiguas de detección de objetos de TensorFlow, lo que puede suponer una curva de aprendizaje pronunciada para la creación rápida de prototipos.
Además, la versatilidad de YOLOv5 va más allá de las cajas delimitadoras. Gracias a sus actualizaciones continuas, el framework de Ultralytics admite de forma nativa la segmentación de instancias y la clasificación de imágenes, proporcionando una API unificada para varias tareas de visión artificial.
Casos de uso ideales#
- Elige YOLOv5 cuando: necesites crear prototipos rápidamente, disfrutar de una experiencia de entrenamiento sin fricciones y realizar una implementación en edge altamente optimizada. Es ideal para drones, análisis del comercio minorista y aplicaciones móviles en las que la baja latencia sea fundamental.
- Elige EfficientDet cuando: trabajes estrictamente en un entorno Google Cloud/TensorFlow AutoML y necesites la máxima precisión por parámetro sin limitaciones estrictas de latencia en tiempo real.
La nueva generación: adopta YOLO26#
Aunque YOLOv5 sigue siendo un caballo de batalla fiable, el panorama de la visión artificial ha evolucionado. Para los desarrolladores que busquen el estado del arte absoluto en 2026, YOLO26 representa la nueva cumbre de la gama de Ultralytics.
Sobre la base del legado de sus predecesores (como YOLOv8 y YOLO11), YOLO26 introduce innovaciones revolucionarias:
- Diseño de extremo a extremo sin NMS: YOLO26 elimina de forma nativa la necesidad del posprocesamiento de supresión de no máximos. Esto reduce considerablemente la variabilidad de la latencia y simplifica la arquitectura de implementación.
- Hasta un 43 % más de velocidad en inferencia con CPU: optimizado especialmente para la IA en edge, ofrece velocidades sin precedentes en dispositivos edge de bajo consumo y CPU estándar sin GPU dedicadas.
- Optimizador MuSGD: inspirado en las técnicas de entrenamiento de los modelos de lenguaje de gran tamaño (LLM), esta combinación híbrida de SGD y Muon garantiza un entrenamiento muy estable y una convergencia rápida.
- Funciones de pérdida avanzadas: la integración de ProgLoss y STAL mejora considerablemente el reconocimiento de objetivos pequeños, algo esencial para las imágenes de drones a gran altitud y la robótica.
- Eliminación de DFL: al eliminar Distribution Focal Loss, se agiliza el proceso de exportación del modelo y se mejora aún más la compatibilidad con diversos aceleradores de hardware.
Los usuarios interesados en explorar otras arquitecturas recientes del ecosistema de Ultralytics también pueden comparar modelos como YOLOv10 o RT-DETR.
La API de Python de Ultralytics está diseñada para ofrecer compatibilidad hacia atrás y hacia delante. ¡Actualizar de YOLOv5 a YOLO26 es literalmente tan sencillo como cambiar la cadena de pesos del modelo en tu código!
Ejemplo de código: entrenamiento e inferencia#
Para demostrar la facilidad de uso incomparable del ecosistema de Ultralytics, a continuación se muestra cómo puedes entrenar y ejecutar inferencia con un modelo YOLO moderno. Este código se puede ejecutar al 100 % y gestiona automáticamente la descarga del dataset, los bucles de entrenamiento y la validación.
from ultralytics import YOLO
# Load a modern model (Swap 'yolov5s.pt' for 'yolo26n.pt' to test the newest architecture!)
model = YOLO("yolov5s.pt")
# Train the model on the COCO8 example dataset for 20 epochs
results = model.train(data="coco8.yaml", epochs=20, imgsz=640)
# Run inference on an image from the web
inference_results = model("https://ultralytics.com/images/bus.jpg")
# Display the image with bounding boxes
inference_results[0].show()Al priorizar la experiencia de usuario, mantener un ecosistema sólido y ampliar continuamente los límites de lo posible con actualizaciones como YOLO26, Ultralytics garantiza que los desarrolladores siempre dispongan de las mejores herramientas para resolver desafíos de inteligencia visual del mundo real.