YOLOv10: detección de objetos integral en tiempo real#
YOLOv10, publicado en mayo de 2024 y desarrollado sobre el paquete de Python de Ultralytics por investigadores de la Universidad de Tsinghua, presenta un nuevo enfoque para la detección de objetos en tiempo real que aborda tanto las deficiencias del posprocesamiento como las de la arquitectura de los modelos de versiones anteriores de YOLO. Al eliminar la supresión no máxima (NMS) y optimizar diversos componentes del modelo, YOLOv10 alcanzó un rendimiento excelente con una sobrecarga computacional significativamente menor en el momento de su lanzamiento. Su diseño integral sin NMS sentó las bases de un enfoque que se ha seguido desarrollando en YOLO26.

Ver: Cómo entrenar YOLOv10 con el conjunto de datos SKU-110k mediante Ultralytics | Conjunto de datos para comercios
Descripción general#
La detección de objetos en tiempo real busca predecir con precisión las categorías y posiciones de los objetos en imágenes con una latencia baja. La serie YOLO está a la vanguardia de esta investigación por su equilibrio entre rendimiento y eficiencia. Sin embargo, la dependencia de NMS y las ineficiencias arquitectónicas han impedido alcanzar un rendimiento óptimo. YOLOv10 aborda estos problemas con las asignaciones duales coherentes para el entrenamiento sin NMS y una estrategia integral de diseño de modelos que prioriza la eficiencia y la precisión.
Arquitectura#
La arquitectura de YOLOv10 aprovecha las ventajas de los modelos YOLO anteriores e incorpora varias innovaciones clave. La arquitectura del modelo consta de los siguientes componentes:
- Backbone: Se encarga de la extracción de características. El backbone de YOLOv10 utiliza una versión mejorada de CSPNet (red parcial entre etapas) para optimizar el flujo del gradiente y reducir la redundancia computacional.
- Cuello: El cuello está diseñado para agregar características de distintas escalas y pasarlas a la cabeza. Incluye capas PAN (red de agregación de rutas) para fusionar eficazmente características multiescala.
- Cabeza de asignación uno a muchos: Genera varias predicciones por objeto durante el entrenamiento para proporcionar abundantes señales de supervisión y mejorar la precisión del aprendizaje.
- Cabezal uno a uno: genera una única predicción óptima por objeto durante la inferencia para eliminar la necesidad de NMS, lo que reduce la latencia y mejora la eficiencia.
Características principales#
- Entrenamiento sin NMS: utiliza asignaciones duales coherentes para eliminar la necesidad de NMS y reducir la latencia de inferencia.
- Diseño integral del modelo: optimización exhaustiva de varios componentes desde las perspectivas de la eficiencia y la precisión, incluidos cabezales de clasificación ligeros, submuestreo desacoplado espacial y por canales, y diseño de bloques guiado por el rango.
- Capacidades mejoradas del modelo: 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 ofrece modelos de distintas escalas para adaptarse a las necesidades de diferentes aplicaciones:
- YOLOv10n: versión nano para entornos con recursos extremadamente limitados.
- YOLOv10s: versión pequeña que equilibra velocidad y precisión.
- YOLOv10m: versión mediana para uso general.
- YOLOv10b: versión equilibrada con mayor anchura para lograr más precisión.
- YOLOv10l: versión grande para lograr más precisión a costa de un mayor consumo de recursos computacionales.
- YOLOv10x: versión extragrande para obtener la máxima precisión y rendimiento.
Rendimiento#
YOLOv10 supera a versiones anteriores de YOLO y a otros modelos de vanguardia en 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 conjunto de datos 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 una 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 coherentes para el entrenamiento sin NMS#
YOLOv10 emplea asignaciones de etiquetas duales, combinando estrategias uno a muchos y uno a uno durante el entrenamiento para garantizar una supervisión amplia y una implementación eficiente de extremo a extremo. La predicción y la validación de Ultralytics usan de forma predeterminada el cabezal uno a muchos con NMS; establece nms=False para seleccionar el cabezal sin NMS. La métrica de emparejamiento coherente alinea la supervisión de ambas estrategias y mejora la calidad de las predicciones durante la inferencia.
Diseño integral del modelo guiado por la eficiencia y la precisión#
Mejoras de eficiencia#
- Cabezal de clasificación ligero: reduce la carga computacional del cabezal de clasificación mediante convoluciones separables en profundidad.
- Submuestreo desacoplado espacial y por canales: desacopla la reducción espacial y la modulación de canales para minimizar la pérdida de información y el coste computacional.
- Diseño de bloques guiado por el rango: adapta el diseño de los bloques a la redundancia intrínseca de cada etapa para garantizar un uso óptimo 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.
- Autoatención parcial (PSA): incorpora módulos de autoatención para mejorar el aprendizaje de representaciones globales con una sobrecarga mínima.
Experimentos y resultados#
YOLOv10 se ha probado exhaustivamente en benchmarks estándar como COCO, donde demuestra un rendimiento y una eficiencia superiores. El modelo logra resultados de vanguardia en sus distintas variantes y muestra mejoras significativas de latencia y precisión frente a versiones anteriores y otros detectores actuales.
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 una latencia un 46 % menor que YOLOv9-C con la misma precisión
- YOLOv10l / x superan a YOLOv8l / x por 0,3 AP / 0,5 AP con 1,8× / 2,3× menos parámetros
Las cifras siguientes son las que se indican en el artículo de YOLOv10 y se han medido según su propio protocolo, por lo que no son directamente comparables con los valores de las páginas de modelos de Ultralytics:
| Modelo | Parámetros (M) | FLOPs (G) | mAPval 50-95 | Latencia (ms) | Latencia en la pasada hacia delante (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 | 38.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.3 | 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.1 | 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.2 | 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 corresponden al modelo fusionado tras model.fuse(), que combina las capas Conv y BatchNorm y elimina el cabezal auxiliar de detección uno a muchos. Los puntos de control preentrenados conservan la arquitectura completa de entrenamiento y pueden mostrar cifras más altas.
Ejemplos de uso#
También puedes entrenar modelos en GPU en la nube a través de Ultralytics Platform. Para hacer predicciones sobre imágenes nuevas con YOLOv10:
from ultralytics import YOLO
# Carga un modelo YOLOv10n preentrenado
model = YOLO("yolov10n.pt")
# Detectar objetos en una imagen
results = model("image.jpg")
# Muestra los resultados
results[0].show()Para entrenar YOLOv10 con un conjunto de datos personalizado:
from ultralytics import YOLO
# Carga el modelo YOLOv10n desde cero
model = YOLO("yolov10n.yaml")
# Entrenar el modelo
model.train(data="coco8.yaml", epochs=100, imgsz=640)Tareas y modos compatibles#
La serie de modelos YOLOv10 ofrece varios modelos, cada uno optimizado para la detección de objetos de alto rendimiento. Se adaptan a distintas necesidades computacionales y requisitos de precisión, por lo que son 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 yolov10b.pt yolov10l.pt yolov10x.pt | Detección de objetos | ✅ | ✅ | ✅ | ✅ |
Exportar YOLOv10#
Debido a las nuevas operaciones introducidas con YOLOv10, actualmente no se admiten todos los formatos de exportación que ofrece Ultralytics. La tabla siguiente indica los formatos que se han convertido correctamente con Ultralytics para YOLOv10. Si puedes contribuir con un cambio para añadir compatibilidad con la exportación a otros formatos para YOLOv10, no dudes en crear una solicitud de incorporación de cambios.
| Formato de exportación | Compatibilidad con la exportación | Inferencia del modelo exportado | Notas |
|---|---|---|---|
| TorchScript | ✅ | ✅ | Formato estándar de modelo PyTorch. |
| ONNX | ✅ | ✅ | Ampliamente compatible para la implementación. |
| OpenVINO | ✅ | ✅ | Optimizado para hardware Intel. |
| TensorRT | ✅ | ✅ | Optimizado para GPU NVIDIA. |
| CoreML | ✅ | ✅ | Limitado a dispositivos Apple. |
| TF SavedModel | ✅ | ✅ | Formato estándar de modelo de TensorFlow. |
| TF GraphDef | ✅ | ✅ | Formato heredado de TensorFlow. |
| TF Edge TPU | ✅ | ✅ | Específico para dispositivos Edge TPU de Google. |
| LiteRT | ✅ | ✅ | Optimizado para móviles, sistemas integrados y navegadores (LiteRT.js). |
| PaddlePaddle | ❌ | ❌ | Popular en China; con menor compatibilidad a escala global. |
| NCNN | ✅ | ❌ | El operador torch.topk no es compatible con el entorno de ejecución NCNN. |
Conclusión#
YOLOv10 marcó un nuevo estándar en la detección de objetos en tiempo real cuando se lanzó, al abordar las deficiencias de 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 dentro de la familia YOLO. Para consultar el modelo más reciente de Ultralytics, con un rendimiento mejorado e inferencia sin NMS, visita YOLO26.
Citas y agradecimientos#
Queremos agradecer a los autores de YOLOv10 de la Universidad Tsinghua su exhaustiva investigación y sus importantes contribuciones al framework de 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 obtener información detallada sobre la implementación, las innovaciones arquitectónicas y los resultados experimentales, consulta el artículo de investigación de YOLOv10 y el repositorio de GitHub del equipo de la Universidad Tsinghua.
Preguntas frecuentes#
YOLOv10, desarrollado por investigadores de la Universidad Tsinghua, introduce varias innovaciones clave en la detección de objetos en tiempo real. Elimina la necesidad de supresión no máxima (NMS) mediante el uso de asignaciones duales coherentes durante el entrenamiento y de componentes del modelo optimizados, que ofrecen un rendimiento superior con una menor carga computacional. Para obtener más información sobre su arquitectura y sus características principales, consulta la sección Descripción general de YOLOv10.
Para hacer inferencias fácilmente, puedes usar la biblioteca Python Ultralytics YOLO o la interfaz de línea de comandos (CLI). A continuación tienes ejemplos de cómo predecir imágenes nuevas con YOLOv10:
Ejemplofrom ultralytics import YOLO # Carga el modelo YOLOv10n preentrenado model = YOLO("yolov10n.pt") results = model("image.jpg") results[0].show()Para ver más ejemplos de uso, visita la sección Ejemplos de uso.
YOLOv10 ofrece varias variantes de modelo para adaptarse a distintos casos de uso:
- YOLOv10n: Adecuado para entornos con recursos extremadamente limitados
- YOLOv10s: Equilibra velocidad y precisión
- YOLOv10m: Uso general
- YOLOv10b: Mayor precisión con una anchura superior
- YOLOv10l: Gran precisión a costa de más recursos computacionales
- YOLOv10x: Máxima precisión y rendimiento
Cada variante está diseñada para distintas necesidades computacionales y requisitos de precisión, lo que las hace versátiles para una gran variedad de aplicaciones. Consulta la sección Variantes del modelo para obtener más información.
YOLOv10 se entrena con asignaciones duales coherentes, de modo que su cabezal uno a uno genera una única predicción óptima por objeto, lo que elimina la necesidad de aplicar la supresión no máxima (NMS) durante la inferencia. La predicción y la validación de Ultralytics usan por defecto el cabezal uno a muchos con NMS; establece
nms=Falsepara seleccionar el cabezal sin NMS y omitir el paso de NMS. Para obtener una explicación detallada, consulta la sección Asignaciones duales coherentes para el entrenamiento sin NMS.YOLOv10 admite varios formatos de exportación, como TorchScript, ONNX, OpenVINO y TensorRT. Sin embargo, actualmente no admite todos los formatos de exportación que ofrece Ultralytics debido a sus nuevas operaciones. Para consultar los formatos admitidos y las instrucciones de exportación, visita la sección Exportar YOLOv10.
YOLOv10 supera a las versiones anteriores de YOLO y a otros modelos de última generación 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 conjunto de datos COCO. YOLOv10b presenta un 46 % menos de latencia y un 25 % menos de parámetros que YOLOv9-C con el mismo rendimiento. Puedes encontrar pruebas de rendimiento detalladas en la sección Comparativas.