YOLOv10: Detección de objetos de extremo a extremo en tiempo real#
YOLOv10, publicado en mayo de 2024 y basado en el paquete Python de Ultralytics por investigadores de la Universidad de Tsinghua, introduce un nuevo enfoque para la detección de objetos en tiempo real, abordando tanto las deficiencias de postprocesamiento como las de la arquitectura de modelos encontradas en versiones anteriores de YOLO. Al eliminar la supresión de no máximos (NMS) y optimizar varios componentes del modelo, YOLOv10 logró un rendimiento excelente con una carga computacional reducida significativamente en el momento de su lanzamiento. Su diseño de extremo a extremo sin NMS fue pionero en un enfoque que se ha desarrollado aún más en YOLO26.

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
Descripción general#
La detección de objetos en tiempo real tiene como objetivo predecir con precisión las categorías y posiciones de los objetos en imágenes con baja latencia. La serie YOLO ha estado a la vanguardia de esta investigación debido a su equilibrio entre rendimiento y eficiencia. Sin embargo, la dependencia de la supresión de no máximos (NMS) y las ineficiencias arquitectónicas han impedido un rendimiento óptimo. YOLOv10 aborda estos problemas introduciendo asignaciones duales consistentes para el entrenamiento sin NMS y una estrategia de diseño de modelo holística impulsada por la eficiencia y la precisión.
Arquitectura#
La arquitectura de YOLOv10 se basa en los puntos fuertes de los modelos YOLO anteriores e introduce varias innovaciones clave. La arquitectura del modelo consta de los siguientes componentes:
- Backbone: Responsable de la extracción de características, el backbone en YOLOv10 utiliza una versión mejorada de CSPNet (Cross Stage Partial Network) para mejorar el flujo de gradientes y reducir la redundancia computacional.
- Neck: El neck está diseñado para agregar características de diferentes escalas y pasarlas al head. Incluye capas de PAN (Path Aggregation Network) para una fusión efectiva de características multiescala.
- One-to-Many Head: Genera múltiples predicciones por objeto durante el entrenamiento para proporcionar señales de supervisión ricas y mejorar la precisión del aprendizaje.
- One-to-One Head: Genera una única mejor predicción por objeto durante la inferencia para eliminar la necesidad de NMS, reduciendo así la latencia y mejorando la eficiencia.
Características clave#
- Entrenamiento sin NMS: Utiliza asignaciones duales consistentes para eliminar la necesidad de la supresión de no máximos (NMS), reduciendo la latencia de inferencia.
- Holistic Model Design: Optimización integral de varios componentes desde perspectivas de eficiencia y precisión, incluyendo cabezales de clasificación ligeros, submuestreo desacoplado de canal espacial y diseño de bloques guiado por rango.
- Capacidades de modelo mejoradas: Incorpora convoluciones de kernel grande y módulos de autoatención parcial para mejorar el rendimiento sin un coste computacional significativo.
Variantes del modelo#
YOLOv10 viene en varias escalas de modelo para satisfacer diferentes necesidades de aplicación:
- YOLOv10n: Versión Nano para entornos extremadamente limitados en recursos.
- YOLOv10s: Versión Small que equilibra velocidad y precisión.
- YOLOv10m: Versión Medium para uso general.
- YOLOv10b: Versión Balanced con mayor anchura para una mayor precisión.
- YOLOv10l: Versión Large para mayor precisión a costa de mayores recursos computacionales.
- YOLOv10x: Versión Extra-large para máxima precisión y rendimiento.
Rendimiento#
YOLOv10 supera a las versiones anteriores de YOLO y a otros modelos de vanguardia en términos de precisión y eficiencia. Por ejemplo, YOLOv10s es 1.8 veces más rápido que RT-DETR-R18 con un AP similar en el dataset COCO, y YOLOv10b tiene un 46% menos de latencia y un 25% menos de parámetros que YOLOv9-C con el mismo rendimiento.
Latencia medida con TensorRT FP16 en GPU T4.
| Modelo | Tamaño de entrada | APval | FLOPs (G) | Latencia (ms) |
|---|---|---|---|---|
| [YOLOv10n][1] | 640 | 38.5 | 6.7 | 1.84 |
| [YOLOv10s][2] | 640 | 46.3 | 21.6 | 2.49 |
| [YOLOv10m][3] | 640 | 51.1 | 59.1 | 4.74 |
| [YOLOv10b][4] | 640 | 52.5 | 92.0 | 5.74 |
| [YOLOv10l][5] | 640 | 53.2 | 120.3 | 7.28 |
| [YOLOv10x][6] | 640 | 54.4 | 160.4 | 10.70 |
Metodología#
Asignaciones duales consistentes para el entrenamiento sin NMS#
YOLOv10 emplea asignaciones de etiquetas duales, combinando estrategias de uno a muchos y de uno a uno durante el entrenamiento para garantizar una supervisión rica y un despliegue eficiente de extremo a extremo. La métrica de concordancia consistente alinea la supervisión entre ambas estrategias, mejorando la calidad de las predicciones durante la inferencia.
Diseño de modelo holístico impulsado por la eficiencia y la precisión#
Mejoras de eficiencia#
- Lightweight Classification Head: Reduce la carga computacional del cabezal de clasificación mediante el uso de convoluciones separables en profundidad.
- Spatial-Channel Decoupled Down sampling: Desacopla la reducción espacial y la modulación de canales para minimizar la pérdida de información y el coste computacional.
- Rank-Guided Block Design: Adapta el diseño de bloques en función de la redundancia intrínseca de la etapa, asegurando una utilización óptima de los parámetros.
Mejoras de precisión#
- Convolución de kernel grande: Amplía el campo receptivo para mejorar la capacidad de extracción de características.
- Partial Self-Attention (PSA): Incorpora módulos de autoatención para mejorar el aprendizaje de representación global con una sobrecarga mínima.
Experimentos y resultados#
YOLOv10 ha sido ampliamente probado en benchmarks estándar como COCO, demostrando un rendimiento y eficiencia superiores. El modelo logra resultados de vanguardia en diferentes variantes, mostrando mejoras significativas en latencia y precisión en comparación con versiones anteriores y otros detectores contemporáneos.
Comparaciones#

En comparación con otros detectores de vanguardia:
- YOLOv10s / x son 1.8× / 1.3× más rápidos que RT-DETR-R18 / R101 con una precisión similar
- YOLOv10b tiene un 25% menos de parámetros y un 46% menos de latencia que YOLOv9-C con la misma precisión
- YOLOv10l / x superan a YOLOv8l / x en 0.3 AP / 0.5 AP con 1.8× / 2.3× menos parámetros
Aquí tienes una comparación detallada de las variantes de YOLOv10 con otros modelos de vanguardia:
| Modelo | Params (M) | FLOPs (G) | mAPval 50-95 | Latencia (ms) | Latencia-forward (ms) |
|---|---|---|---|---|---|
| YOLOv6-3.0-N | 4.7 | 11.4 | 37.0 | 2.69 | 1.76 |
| Gold-YOLO-N | 5.6 | 12.1 | 39.6 | 2.92 | 1.82 |
| YOLOv8n | 3.2 | 8.7 | 37.3 | 6.16 | 1.77 |
| YOLOv10n | 2.3 | 6.7 | 39.5 | 1.84 | 1.79 |
| YOLOv6-3.0-S | 18.5 | 45.3 | 44.3 | 3.42 | 2.35 |
| Gold-YOLO-S | 21.5 | 46.0 | 45.4 | 3.82 | 2.73 |
| YOLOv8s | 11.2 | 28.6 | 44.9 | 7.07 | 2.33 |
| YOLOv10s | 7.2 | 21.6 | 46.8 | 2.49 | 2.39 |
| RT-DETR-R18 | 20.0 | 60.0 | 46.5 | 4.58 | 4.49 |
| YOLOv6-3.0-M | 34.9 | 85.8 | 49.1 | 5.63 | 4.56 |
| Gold-YOLO-M | 41.3 | 87.5 | 49.8 | 6.38 | 5.45 |
| YOLOv8m | 25.9 | 78.9 | 50.6 | 9.50 | 5.09 |
| YOLOv10m | 15.4 | 59.1 | 51.3 | 4.74 | 4.63 |
| YOLOv6-3.0-L | 59.6 | 150.7 | 51.8 | 9.02 | 7.90 |
| Gold-YOLO-L | 75.1 | 151.7 | 51.8 | 10.65 | 9.78 |
| YOLOv8l | 43.7 | 165.2 | 52.9 | 12.39 | 8.06 |
| RT-DETR-R50 | 42.0 | 136.0 | 53.1 | 9.20 | 9.07 |
| YOLOv10l | 24.4 | 120.3 | 53.4 | 7.28 | 7.21 |
| YOLOv8x | 68.2 | 257.8 | 53.9 | 16.86 | 12.83 |
| RT-DETR-R101 | 76.0 | 259.0 | 54.3 | 13.71 | 13.58 |
| YOLOv10x | 29.5 | 160.4 | 54.4 | 10.70 | 10.60 |
Los valores de parámetros y FLOPs son para el modelo fusionado después de model.fuse(), que combina las capas Conv y BatchNorm y elimina la cabeza de detección auxiliar de uno a muchos. Los checkpoints preentrenados conservan toda la arquitectura de entrenamiento y pueden mostrar recuentos más altos.
Ejemplos de uso#
Para predecir nuevas imágenes con YOLOv10. Los modelos también se pueden entrenar en GPU en la nube a través de la plataforma Ultralytics:
from ultralytics import YOLO
# Load a pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
# Perform object detection on an image
results = model("image.jpg")
# Display the results
results[0].show()Para entrenar YOLOv10 en un conjunto de datos personalizado:
from ultralytics import YOLO
# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")
# Train the model
model.train(data="coco8.yaml", epochs=100, imgsz=640)Tareas y modos soportados#
La serie de modelos YOLOv10 ofrece una gama de modelos, cada uno optimizado para la detección de objetos de alto rendimiento. Estos modelos se adaptan a diversas necesidades computacionales y requisitos de precisión, lo que los hace versátiles para una amplia variedad de aplicaciones.
| Modelo | Nombres de archivo | Tareas | Entrenamiento | Validación | Inferencia | Exportar |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | Detección de objetos | ✅ | ✅ | ✅ | ✅ |
Exportar YOLOv10#
Debido a las nuevas operaciones introducidas con YOLOv10, no todos los formatos de exportación proporcionados por Ultralytics son compatibles actualmente. La siguiente tabla detalla qué formatos se han convertido con éxito utilizando Ultralytics para YOLOv10. No dudes en abrir un pull request si puedes proporcionar un cambio de contribución para añadir soporte de exportación de formatos adicionales para YOLOv10.
| Formato de exportación | Soporte de exportación | Inferencia del modelo exportado | Notas |
|---|---|---|---|
| TorchScript | ✅ | ✅ | Formato de modelo estándar de PyTorch. |
| ONNX | ✅ | ✅ | Ampliamente compatible para despliegue. |
| OpenVINO | ✅ | ✅ | Optimizado para hardware Intel. |
| TensorRT | ✅ | ✅ | Optimizado para GPU NVIDIA. |
| CoreML | ✅ | ✅ | Limitado a dispositivos Apple. |
| TF SavedModel | ✅ | ✅ | Formato de modelo estándar de TensorFlow. |
| TF GraphDef | ✅ | ✅ | Formato heredado de TensorFlow. |
| LiteRT | ✅ | ✅ | Optimizado para dispositivos móviles, integrados y navegadores (LiteRT.js). |
| TF Edge TPU | ✅ | ✅ | Específico para dispositivos Edge TPU de Google. |
| PaddlePaddle | ❌ | ❌ | Popular en China; menor soporte global. |
| NCNN | ✅ | ❌ | La capa torch.topk no existe o no está registrada |
Conclusión#
YOLOv10 estableció un nuevo estándar en la detección de objetos en tiempo real en su lanzamiento al abordar las deficiencias de las versiones anteriores de YOLO e incorporar estrategias de diseño innovadoras. Su enfoque sin NMS fue pionero en la detección de objetos de extremo a extremo en la familia YOLO. Para ver el modelo más reciente de Ultralytics con rendimiento mejorado e inferencia sin NMS, consulta YOLO26.
Citas y agradecimientos#
Nos gustaría agradecer a los autores de YOLOv10 de la Universidad de Tsinghua por su extensa investigación y sus importantes contribuciones al framework Ultralytics:
@inproceedings{wang2024yolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
booktitle={Advances in Neural Information Processing Systems},
doi = {10.52202/079017-3429},
url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
volume={37},
pages={107984--108011},
year={2024}
}Para una implementación detallada, innovaciones arquitectónicas y resultados experimentales, consulta el paper de investigación y el repositorio de GitHub de YOLOv10 por el equipo de la Universidad de Tsinghua.
FAQ#
¿Qué es YOLOv10 y en qué se diferencia de las versiones anteriores de YOLO?#
YOLOv10, desarrollado por investigadores de la Universidad de Tsinghua, introduce varias innovaciones clave en la detección de objetos en tiempo real. Elimina la necesidad de la supresión de no máximos (NMS) empleando asignaciones duales consistentes durante el entrenamiento y componentes de modelo optimizados para un rendimiento superior con una sobrecarga computacional reducida. Para más detalles sobre su arquitectura y características clave, consulta la sección de descripción general de YOLOv10.
¿Cómo puedo empezar a ejecutar inferencias utilizando YOLOv10?#
Para una inferencia sencilla, puedes utilizar la biblioteca de Python de Ultralytics YOLO o la interfaz de línea de comandos (CLI). A continuación tienes ejemplos de cómo realizar predicciones en imágenes nuevas utilizando YOLOv10:
from ultralytics import YOLO
# Load the pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()Para ver más ejemplos de uso, visita nuestra sección de ejemplos de uso.
¿Qué variantes de modelo ofrece YOLOv10 y cuáles son sus casos de uso?#
YOLOv10 ofrece varias variantes de modelo para adaptarse a diferentes casos de uso:
- YOLOv10n: Adecuado para entornos con recursos extremadamente limitados
- YOLOv10s: Equilibra velocidad y precisión
- YOLOv10m: Uso de propósito general
- YOLOv10b: Mayor precisión con un aumento en la anchura
- YOLOv10l: Alta precisión a costa de recursos computacionales
- YOLOv10x: Máxima precisión y rendimiento
Cada variante está diseñada para diferentes necesidades computacionales y requisitos de precisión, lo que las hace versátiles para una variedad de aplicaciones. Explora la sección de variantes de modelos para obtener más información.
¿Cómo mejora el rendimiento el enfoque sin NMS en YOLOv10?#
YOLOv10 elimina la necesidad de la supresión de no máximos (NMS) durante la inferencia mediante el empleo de asignaciones duales consistentes para el entrenamiento. Este enfoque reduce la latencia de inferencia y mejora la eficiencia de predicción. La arquitectura también incluye una cabeza de uno a uno para la inferencia, asegurando que cada objeto obtenga una única mejor predicción. Para una explicación detallada, consulta la sección de asignaciones duales consistentes para el entrenamiento sin NMS.
¿Dónde puedo encontrar las opciones de exportación para los modelos YOLOv10?#
YOLOv10 admite varios formatos de exportación, incluidos TorchScript, ONNX, OpenVINO y TensorRT. Sin embargo, no todos los formatos de exportación proporcionados por Ultralytics son compatibles actualmente con YOLOv10 debido a sus nuevas operaciones. Para obtener detalles sobre los formatos compatibles e instrucciones sobre cómo exportar, visita la sección de exportación de YOLOv10.
¿Cuáles son los puntos de referencia de rendimiento para los modelos YOLOv10?#
YOLOv10 supera a las versiones anteriores de YOLO y a otros modelos de vanguardia tanto en precisión como en eficiencia. Por ejemplo, YOLOv10s es 1.8 veces más rápido que RT-DETR-R18 con un AP similar en el dataset COCO. YOLOv10b muestra un 46% menos de latencia y un 25% menos de parámetros que YOLOv9-C con el mismo rendimiento. Se pueden encontrar benchmarks detallados en la sección de comparaciones.