YOLOv10: detección de objetos integral en tiempo real#
YOLOv10, publicado en mayo de 2024 y basado en 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 del modelo presentes en versiones anteriores de YOLO. Al eliminar la supresión no máxima (NMS) y optimizar diversos componentes del modelo, YOLOv10 logró un rendimiento excelente con una reducción considerable de la sobrecarga computacional en el momento de su lanzamiento. Su diseño integral sin NMS inició un enfoque que se ha desarrollado posteriormente 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 las posiciones de los objetos en imágenes con una latencia baja. La serie YOLO ha estado a la vanguardia de esta investigación gracias a su equilibrio entre rendimiento y eficiencia. Sin embargo, la dependencia de NMS y las ineficiencias arquitectónicas han impedido lograr un rendimiento óptimo. YOLOv10 aborda estos problemas introduciendo asignaciones duales coherentes para el entrenamiento sin NMS y una estrategia integral de diseño de modelos guiada 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: encargado de la extracción de características, el backbone de YOLOv10 utiliza una versión mejorada de CSPNet (red parcial entre etapas) para mejorar el flujo de gradientes y reducir la redundancia computacional.
- Neck: el neck está diseñado para agregar características de distintas escalas y pasarlas al head. Incluye capas PAN (red de agregación de rutas) para una fusión eficaz de características multiescala.
- Head one-to-many: genera varias predicciones por objeto durante el entrenamiento para proporcionar señales de supervisión enriquecidas y mejorar la precisión del aprendizaje.
- Head one-to-one: genera una única predicción óptima por objeto durante la inferencia para eliminar la necesidad de NMS, reduciendo así la latencia y mejorando 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 de Modelo Holístico: Optimización integral de varios componentes desde las perspectivas de eficiencia y precisión, incluyendo cabezas de clasificación ligeras, submuestreo desacoplado de espacio-canal y diseño de bloques guiado por 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 está disponible en varias escalas de modelo para adaptarse a distintas necesidades de aplicación:
- 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 obtener más precisión.
- YOLOv10l: versión grande para obtener más precisión a costa de un mayor uso de recursos computacionales.
- YOLOv10x: versión extragrande para obtener la máxima precisión y rendimiento.
Rendimiento#
YOLOv10 supera a las 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 de uno a muchos y de uno a uno durante el entrenamiento para garantizar una supervisión rica y un despliegue de extremo a extremo eficiente. La predicción y validación de Ultralytics utilizan por defecto la cabeza de uno a muchos con NMS; configura nms=False para seleccionar la cabeza libre de NMS. La métrica de coincidencia consistente alinea la supervisión entre ambas estrategias, mejorando la calidad de las predicciones durante la inferencia.
Diseño integral del modelo guiado por la eficiencia y la precisión#
Mejoras de eficiencia#
- Head de clasificación ligero: reduce la sobrecarga computacional del head de clasificación mediante convoluciones separables en profundidad.
- Submuestreo Desacoplado de Espacio-Canal: 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 rangos: adapta el diseño de los bloques en función de 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 ampliamente en benchmarks estándar como COCO, donde ha demostrado 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 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
Las figuras siguientes son las indicadas en el artículo de YOLOv10, medidas 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 prioritaria (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 corresponden al modelo fusionado después de model.fuse(), que combina las capas Conv y BatchNorm y elimina el head de detección auxiliar one-to-many. Los checkpoints preentrenados conservan la arquitectura de entrenamiento completa y pueden mostrar valores superiores.
Ejemplos de uso#
Para predecir imágenes nuevas con YOLOv10. También puedes entrenar los modelos en GPU en la nube mediante Ultralytics Platform:
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 con 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 compatibles#
La serie de modelos YOLOv10 ofrece una variedad de modelos, cada uno optimizado para la detección de objetos de alto rendimiento. Estos modelos 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 | ✅ | ✅ | ✅ | ✅ |
Exportación de YOLOv10#
Debido a las nuevas operaciones introducidas con YOLOv10, actualmente no se admiten todos los formatos de exportación proporcionados por Ultralytics. En la siguiente tabla se indican los formatos que se han convertido correctamente mediante Ultralytics para YOLOv10. No dudes en abrir una solicitud de cambios si puedes realizar una contribución para añadir compatibilidad de exportación con otros formatos para YOLOv10.
| Formato de exportación | Compatibilidad con la exportación | Inferencia del modelo exportado | Notas |
|---|---|---|---|
| TorchScript | ✅ | ✅ | Formato de modelo estándar de PyTorch. |
| ONNX | ✅ | ✅ | Ampliamente compatible con el 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 móviles, dispositivos integrados y navegadores (LiteRT.js). |
| TF Edge TPU | ✅ | ✅ | Específico para los dispositivos Edge TPU de Google. |
| PaddlePaddle | ❌ | ❌ | Popular en China; menos compatible a nivel mundial. |
| NCNN | ✅ | ❌ | El operador torch.topk no es compatible con el tiempo de ejecución de NCNN. |
Conclusión#
YOLOv10 estableció un nuevo estándar en la detección de objetos en tiempo real tras 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 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#
Nos gustaría reconocer el trabajo de los autores de YOLOv10 de la Universidad de Tsinghua por su extensa investigación y sus importantes contribuciones al marco 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 de Tsinghua.
Preguntas frecuentes#
YOLOv10, desarrollado por investigadores de la Universidad de Tsinghua, introduce varias innovaciones clave para la detección de objetos en tiempo real. Elimina la necesidad de aplicar la supresión no máxima (NMS) mediante asignaciones duales coherentes durante el entrenamiento y componentes del modelo optimizados, lo que proporciona un rendimiento superior con una menor sobrecarga 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 realizar inferencias fácilmente, puedes usar la biblioteca YOLO de Ultralytics para Python o la interfaz de línea de comandos (CLI). A continuación se muestran ejemplos de predicción de nuevas imágenes con YOLOv10:
Ejemplofrom 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 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: Alta precisión a costa de recursos computacionales
- YOLOv10x: Máxima precisión y rendimiento
Cada variante está diseñada para distintas necesidades computacionales y requisitos de precisión, por lo que son versátiles para una amplia variedad de aplicaciones. Consulta la sección Variantes de modelo para obtener más información.
YOLOv10 entrena con asignaciones duales coherentes para que su cabeza uno a uno produzca una única mejor predicción por objeto, lo que elimina la necesidad de supresión de no máximos (NMS) en la inferencia. La predicción y la validación de Ultralytics usan por defecto la cabeza de uno a muchos con NMS; configura
nms=Falsepara seleccionar la cabeza sin NMS y omitir la fase de NMS. Para obtener una explicación detallada, consulta la sección Consistent Dual Assignments for NMS-Free Training.YOLOv10 admite varios formatos de exportación, incluidos 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 obtener información detallada sobre los formatos compatibles y las instrucciones de exportación, visita la sección Exportación de 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 muestra un 46 % menos de latencia y un 25 % menos de parámetros que YOLOv9-C con el mismo rendimiento. Puedes encontrar métricas detalladas en la sección Comparaciones.