YOLOv10: Detección de objetos de extremo a extremo en tiempo real

YOLOv10, released in May 2024 and built on the Ultralytics Python package by researchers at Tsinghua University, introduces a new approach to real-time object detection, addressing both the post-processing and model architecture deficiencies found in previous YOLO versions. By eliminating non-maximum suppression (NMS) and optimizing various model components, YOLOv10 achieved excellent performance with significantly reduced computational overhead at its time of release. Its NMS-free end-to-end design pioneered an approach that has been further developed in YOLO26.

Asignación dual consistente de YOLOv10 para entrenamiento libre de NMS



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 NMS y las ineficiencias arquitectónicas han obstaculizado un rendimiento óptimo. YOLOv10 aborda estos problemas introduciendo asignaciones duales consistentes para el entrenamiento libre de NMS y una estrategia de diseño de modelo integral impulsada por la eficiencia y la precisión.

Arquitectura

La arquitectura de YOLOv10 se basa en las fortalezas de los modelos YOLO anteriores e introduce varias innovaciones clave. La arquitectura del modelo consta de los siguientes componentes:

  1. 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 gradiente y reducir la redundancia computacional.
  2. 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.
  3. 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.
  4. 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

  1. Entrenamiento libre de NMS: Utiliza asignaciones duales consistentes para eliminar la necesidad de NMS, reduciendo la latencia de inferencia.
  2. Diseño holístico del modelo: Optimización integral de varios componentes desde las perspectivas de eficiencia y precisión, incluyendo heads de clasificación ligeros, submuestreo desacoplado espacio-canal y diseño de bloques guiado por rango.
  3. Capacidades mejoradas del modelo: Incorpora convoluciones de kernel grande y módulos de autoatención parcial para mejorar el rendimiento sin un costo 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 pequeña que equilibra velocidad y precisión.
  • YOLOv10m: Versión mediana para uso general.
  • YOLOv10b: Versión equilibrada con mayor ancho para una mayor precisión.
  • YOLOv10l: Versión grande para mayor precisión a costa de mayores recursos computacionales.
  • YOLOv10x: Versión extra grande para máxima precisión y rendimiento.

Rendimiento

YOLOv10 supera a las versiones anteriores de YOLO y 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 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.

Rendimiento

Latencia medida con TensorRT FP16 en GPU T4.

ModeloTamaño de entradaAPvalFLOPs (G)Latencia (ms)
[YOLOv10n][1]64038.56.71.84
[YOLOv10s][2]64046.321.62.49
[YOLOv10m][3]64051.159.14.74
[YOLOv10b][4]64052.592.05.74
[YOLOv10l][5]64053.2120.37.28
[YOLOv10x][6]64054.4160.410.70

Metodología

Asignaciones duales consistentes para entrenamiento libre de 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 coincidencia consistente alinea la supervisión entre ambas estrategias, mejorando la calidad de las predicciones durante la inferencia.

Diseño del modelo integral impulsado por la eficiencia-precisión

Mejoras de eficiencia

  1. Head de clasificación ligero: Reduce la carga computacional del head de clasificación mediante el uso de convoluciones separables en profundidad.
  2. Submuestreo desacoplado espacio-canal: Desacopla la reducción espacial y la modulación de canales para minimizar la pérdida de información y el costo computacional.
  3. Diseño de bloques guiado por rango: Adapta el diseño del bloque en función de la redundancia intrínseca de la etapa, asegurando una utilización óptima de los parámetros.

Mejoras de precisión

  1. Convolución de kernel grande: Amplía el campo receptivo para mejorar la capacidad de extracción de características.
  2. Autoatención parcial (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 una 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

Comparación de YOLOv10 con detectores de objetos SOTA

Comparado 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
Rendimiento

Aquí tienes una comparación detallada de las variantes de YOLOv10 con otros modelos de vanguardia:

ModeloParámetros
(M)
FLOPs
(G)
mAPval
50-95
Latencia
(ms)
Latencia-adelante
(ms)
YOLOv6-3.0-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8n3.28.737.36.161.77
YOLOv10n2.36.739.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8s11.228.644.97.072.33
YOLOv10s7.221.646.82.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
Gold-YOLO-M41.387.549.86.385.45
YOLOv8m25.978.950.69.505.09
YOLOv10m15.459.151.34.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8l43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10l24.4120.353.47.287.21
YOLOv8x68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10x29.5160.454.410.7010.60

Los valores de Params y FLOPs corresponden al modelo fusionado tras model.fuse(), que combina las capas Conv y BatchNorm y elimina la cabecera auxiliar de detección de uno a muchos. Los puntos de control preentrenados conservan la arquitectura de entrenamiento completa y pueden mostrar recuentos más altos.

Ejemplos de uso

Para realizar predicciones en imágenes nuevas con YOLOv10. Los modelos también pueden entrenarse en GPUs en la nube a través de la Ultralytics Platform:

Ejemplo
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:

Ejemplo
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 admitidos

La serie de modelos YOLOv10 ofrece una gama de modelos, cada uno optimizado para 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.

ModeloNombres de archivoTareasInferenciaValidaciónEntrenamientoExportar (Export)
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.ptDetecció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 describe qué formatos se han convertido correctamente utilizando Ultralytics para YOLOv10. No dudes en abrir una 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ónSoporte de ExportaciónInferencia de Modelo ExportadoNotas
TorchScriptFormato de modelo estándar de PyTorch.
ONNXAmpliamante compatible para el despliegue.
OpenVINOOptimizado para hardware Intel.
TensorRTOptimizado para GPUs NVIDIA.
CoreMLLimitado a dispositivos Apple.
TF SavedModelFormato de modelo estándar de TensorFlow.
TF GraphDefFormato de TensorFlow heredado.
TF LiteOptimizado para dispositivos móviles y embebidos.
TF Edge TPUEspecífico para los dispositivos Edge TPU de Google.
TF.jsEntorno JavaScript para uso en navegador.
PaddlePaddlePopular en China; soporte global menor.
NCNNLa 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 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 conocer el último modelo de Ultralytics con un rendimiento mejorado e inferencia sin NMS, consulta YOLO26.

Citas y reconocimientos

Queremos reconocer a los autores de YOLOv10 de la Tsinghua University por su extensa investigación y sus significativas contribuciones al framework Ultralytics:

Cita
@article{THU-MIGyolov10,
  title={YOLOv10: Real-Time End-to-End Object Detection},
  author={Ao Wang, Hui Chen, Lihao Liu, et al.},
  journal={arXiv preprint arXiv:2405.14458},
  year={2024},
  institution={Tsinghua University},
  license = {AGPL-3.0}
}

Para una implementación detallada, innovaciones arquitectónicas y resultados experimentales, consulta el artículo de investigación de YOLOv10 y el repositorio de GitHub del equipo de la Tsinghua University.

Preguntas frecuentes

¿Qué es YOLOv10 y en qué se diferencia de las versiones anteriores de YOLO?

YOLOv10, desarrollado por investigadores de la Tsinghua University, introduce varias innovaciones clave en la detección de objetos en tiempo real. Elimina la necesidad de 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 menor sobrecarga computacional. Para más detalles sobre su arquitectura y características clave, echa un vistazo a la sección Resumen de YOLOv10.

¿Cómo puedo empezar a ejecutar inferencias usando YOLOv10?

Para una inferencia sencilla, puedes usar la librería de Python de Ultralytics YOLO o la interfaz de línea de comandos (CLI). A continuación se muestran ejemplos de cómo realizar predicciones en imágenes nuevas con YOLOv10:

Ejemplo
from ultralytics import YOLO

# Load the pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()

Para más ejemplos de uso, visita nuestra sección 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 extremadamente limitados en recursos
  • YOLOv10s: Equilibra velocidad y precisión
  • YOLOv10m: Uso de propósito general
  • YOLOv10b: Mayor precisión con mayor 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 Model Variants para más información.

¿Cómo mejora el rendimiento el enfoque sin NMS en YOLOv10?

YOLOv10 elimina la necesidad de supresión de no máximos (NMS) durante la inferencia al emplear asignaciones duales consistentes para el entrenamiento. Este enfoque reduce la latencia de inferencia y mejora la eficiencia de la predicción. La arquitectura también incluye una cabeza 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 Consistent Dual Assignments for NMS-Free Training.

¿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 admitidos e instrucciones sobre cómo exportar, visita la sección Exporting YOLOv10.

¿Cuáles son los puntos de referencia de rendimiento para los modelos YOLOv10?

YOLOv10 supera a versiones anteriores de YOLO y 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. Los puntos de referencia detallados se pueden encontrar en la sección Comparisons.

Comentarios