Ir al contenido

YOLOv10 vs. YOLOv8: Una comparación técnica para la detección de objetos en tiempo real

La evolución de la familia YOLO (You Only Look Once) ha impulsado constantemente los límites de la visión artificial, ofreciendo a los desarrolladores herramientas más rápidas y precisas para la detección de objetos. Al elegir entre YOLOv10 y YOLOv8, es crucial comprender los matices en la arquitectura, la eficiencia y el soporte del ecosistema. Si bien YOLOv10 introduce nuevos cambios arquitectónicos para mejorar la eficiencia, YOLOv8 sigue siendo un estándar robusto y versátil conocido por su facilidad de uso y su completo conjunto de características.

Esta guía proporciona una comparación técnica detallada para ayudarle a seleccionar el modelo adecuado para sus proyectos de aprendizaje automático.

Análisis de rendimiento

Las métricas de rendimiento en el conjunto de datos COCO ilustran las distintas filosofías de diseño detrás de estos modelos. YOLOv10 se centra en gran medida en reducir el recuento de parámetros y las operaciones de punto flotante (FLOPs), a menudo logrando un mAP (precisión media promedio) más alto para un tamaño de modelo dado. Sin embargo, YOLOv8 mantiene velocidades de inferencia altamente competitivas, particularmente en las CPU y cuando se exporta a formatos optimizados como TensorRT, equilibrando la velocidad bruta con las capacidades prácticas de implementación.

Modelotamaño
(píxeles)
mAPval
50-95
Velocidad
CPU ONNX
(ms)
Velocidad
T4 TensorRT10
(ms)
parámetros
(M)
FLOPs
(B)
YOLOv10n64039.5-1.562.36.7
YOLOv10s64046.7-2.667.221.6
YOLOv10m64051.3-5.4815.459.1
YOLOv10b64052.7-6.5424.492.0
YOLOv10l64053.3-8.3329.5120.3
YOLOv10x64054.4-12.256.9160.4
YOLOv8n64037.380.41.473.28.7
YOLOv8s64044.9128.42.6611.228.6
YOLOv8m64050.2234.75.8625.978.9
YOLOv8l64052.9375.29.0643.7165.2
YOLOv8x64053.9479.114.3768.2257.8

YOLOv10: Eficiencia a través de la innovación arquitectónica

Autores: Ao Wang, Hui Chen, Lihao Liu, et al.
Organización:Tsinghua University
Fecha: 2024-05-23
Arxiv:YOLOv10: Detección de objetos end-to-end en tiempo real
GitHub:THU-MIG/yolov10

YOLOv10 fue desarrollado por investigadores de la Universidad de Tsinghua con un objetivo principal: eliminar la dependencia de la supresión no máxima (NMS) durante el post-procesamiento. NMS puede ser un cuello de botella en aplicaciones críticas de latencia. YOLOv10 introduce una estrategia de asignación dual consistente durante el entrenamiento, lo que permite que el modelo prediga un único cuadro óptimo para cada objeto, convirtiéndolo efectivamente en un detector de extremo a extremo.

Puntos fuertes clave de YOLOv10

  • Inferencia sin NMS: Al eliminar el paso de NMS, YOLOv10 reduce la sobrecarga computacional durante la fase de post-procesamiento, lo que puede disminuir la latencia en escenarios edge específicos.
  • Eficiencia de parámetros: El diseño holístico del modelo reduce significativamente el número de parámetros y FLOPs en comparación con las generaciones anteriores, lo que lo hace atractivo para dispositivos con almacenamiento extremadamente limitado.
  • Alta Precisión: Alcanza puntuaciones de mAP de última generación para su tamaño, lo que demuestra la eficacia de sus optimizaciones arquitectónicas.

Debilidades

  • Especialización de Tareas: YOLOv10 está diseñado principalmente para la detección de objetos. Carece de soporte nativo para otras tareas de visión artificial, como la segmentación de instancias o la estimación de poses, de forma predeterminada.
  • Madurez del ecosistema: Como una versión académica más reciente, tiene menos integraciones de terceros y recursos de la comunidad en comparación con el ecosistema establecido de Ultralytics.

Más información sobre YOLOv10

Ultralytics YOLOv8: El estándar versátil de la industria

Autores: Glenn Jocher, Ayush Chaurasia y Jing Qiu
Organización:Ultralytics
Fecha: 2023-01-10
Docs:Documentación de Ultralytics YOLOv8
GitHub:ultralytics/ultralytics

Lanzado por Ultralytics, YOLOv8 representa la culminación de años de investigación en IA práctica y fácil de usar. Está diseñado no solo para un alto rendimiento, sino también para una experiencia de desarrollador excepcional. YOLOv8 utiliza un mecanismo de detection sin anclajes y un flujo de gradiente enriquecido para garantizar un entrenamiento robusto. Su característica destacada es su soporte nativo para una amplia gama de tareas: detection, segmentation, clasificación, estimación de pose y OBB, todo dentro de un único marco unificado.

  • Facilidad de uso: Ultralytics YOLOv8 es famoso por sus interfaces simples de python y CLI. Los desarrolladores pueden entrenar, validar e implementar modelos con tan solo unas pocas líneas de código.
  • Ecosistema bien mantenido: Ser parte del ecosistema Ultralytics significa acceso a actualizaciones frecuentes, una comunidad masiva y una integración perfecta con herramientas como Ultralytics HUB para una gestión de modelos sin esfuerzo.
  • Equilibrio de rendimiento: Logra un equilibrio ideal entre velocidad y precisión. El modelo está altamente optimizado para varios backends de hardware, incluyendo CPU, GPU y Edge TPUs.
  • Eficacia de la formación: YOLOv8 ofrece procesos de formación eficientes con menores requisitos de memoria que muchas alternativas basadas en transformadores, lo que supone un ahorro en costes computacionales.
  • Versatilidad: A diferencia de los modelos limitados a bounding boxes, YOLOv8 puede gestionar proyectos complejos que requieran máscaras de segmentación o keypoints sin cambiar de framework.

Eficiencia de Memoria

Los modelos de Ultralytics como YOLOv8 están diseñados para ser eficientes en cuanto a la memoria. Esto reduce significativamente la barrera de entrada para el entrenamiento de modelos personalizados, ya que requieren menos memoria CUDA en comparación con los modelos de transformadores voluminosos como RT-DETR, lo que permite el entrenamiento en GPU de nivel de consumidor.

Más información sobre YOLOv8

Análisis comparativo: Arquitectura y casos de uso

Diferencias Arquitectónicas

La diferencia fundamental radica en las estrategias de post-procesamiento y asignación. YOLOv10 emplea una arquitectura de doble head donde un head utiliza la asignación de uno a muchos (como los YOLO tradicionales) para obtener señales de supervisión enriquecidas durante el entrenamiento, mientras que el otro utiliza la asignación de uno a uno para la inferencia, eliminando la necesidad de NMS.

YOLOv8, por el contrario, utiliza un asignador alineado a la tarea y una estructura de cabezal acoplado sin anclajes. Este diseño simplifica el cabezal de detección y mejora la generalización. Si bien requiere NMS, la operación está altamente optimizada en formatos de exportación como ONNX y TensorRT, lo que a menudo hace que la diferencia práctica de latencia sea insignificante en canalizaciones de implementación robustas.

Casos de Uso Ideales

La elección entre los dos a menudo se reduce a las limitaciones específicas de su proyecto:

  1. Edge AI de alto rendimiento (YOLOv10): Si su aplicación se ejecuta en hardware con recursos severamente limitados donde cada megabyte de almacenamiento cuenta, o si la operación NMS crea un cuello de botella específico en su chip de destino, YOLOv10 es un excelente candidato. Los ejemplos incluyen sensores integrados en la agricultura o drones ligeros.

  2. IA de propósito general y multi tarea (YOLOv8): Para la gran mayoría de las aplicaciones comerciales y de investigación, YOLOv8 es la opción superior. Su capacidad para realizar segmentation (por ejemplo, imágenes médicas precisas) y estimación de pose (por ejemplo, análisis deportivo) la hace increíblemente versátil. Además, su extensa documentación y soporte garantizan que los desarrolladores puedan resolver los problemas rápidamente e implementar más rápido.

Implementación de código

Una de las principales ventajas del marco de Ultralytics es la API unificada. Tanto si está utilizando YOLOv8 como si está explorando modelos más nuevos, el flujo de trabajo sigue siendo coherente e intuitivo.

Así de fácil puedes iniciar el entrenamiento para un modelo YOLOv8 usando Python:

from ultralytics import YOLO

# Load a pre-trained YOLOv8 model
model = YOLO("yolov8n.pt")

# Train the model on your custom dataset
# The system automatically handles data downloading and processing
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference on an image
results = model("path/to/image.jpg")

Para YOLOv10, el paquete Ultralytics también facilita el acceso, permitiendo a los investigadores experimentar con la arquitectura dentro de un entorno familiar:

from ultralytics import YOLO

# Load a pre-trained YOLOv10 model
model = YOLO("yolov10n.pt")

# Train the model using the same simple API
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Conclusión

Tanto YOLOv10 como YOLOv8 son hitos impresionantes en la visión artificial. YOLOv10 supera los límites de la eficiencia arquitectónica, ofreciendo una visión de los futuros sin NMS para aplicaciones especializadas de baja latencia.

Sin embargo, Ultralytics YOLOv8 sigue siendo el modelo de referencia recomendado para desarrolladores y organizaciones. Su ecosistema robusto, fiabilidad probada y capacidades multitarea proporcionan una solución integral que va más allá de la simple detección. Con Ultralytics YOLOv8, no solo obtiene un modelo, sino un conjunto de herramientas completo para construir, entrenar e implementar soluciones de IA de primer nivel de manera eficiente.

Para aquellos que buscan mantenerse a la vanguardia, asegúrese de consultar también YOLO11, la última iteración de Ultralytics que ofrece ganancias de rendimiento y eficiencia aún mayores con respecto a YOLOv8.

Lecturas adicionales


Comentarios