Ir al contenido

YOLOv10: Detección de Objetos de Extremo a Extremo en Tiempo Real

YOLOv10, construido sobre el paquete de 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 post-procesamiento como de arquitectura del modelo encontradas en versiones anteriores de YOLO. Al eliminar la supresión no máxima (NMS) y optimizar varios componentes del modelo, YOLOv10 logra un rendimiento de última generación con una sobrecarga computacional significativamente reducida. Amplios experimentos demuestran sus superiores equilibrios de precisión-latencia en múltiples escalas de modelo.

Asignación dual consistente de YOLOv10 para el entrenamiento sin NMS



Ver: Cómo entrenar YOLOv10 en el conjunto de datos SKU-110k usando Ultralytics | Conjunto de datos de minoristas

Visió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 las 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 dificultado un rendimiento óptimo. YOLOv10 aborda estos problemas introduciendo asignaciones duales consistentes para el entrenamiento sin NMS y una estrategia holística de diseño de modelos impulsada por la eficiencia y la precisión.

Arquitectura

La arquitectura de YOLOv10 se basa en las fortalezas de los modelos YOLO anteriores al tiempo que 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 (Red Parcial de Etapas Cruzadas) para mejorar el flujo de gradiente y reducir la redundancia computacional.
  2. Cuello (Neck): El cuello está diseñado para agregar características de diferentes escalas y pasarlas al encabezado. Incluye capas PAN (Path Aggregation Network) para una fusión de características multiescala eficaz.
  3. Encabezado de uno a muchos (One-to-Many Head): Genera múltiples predicciones por objeto durante el entrenamiento para proporcionar señales de supervisión enriquecidas y mejorar la precisión del aprendizaje.
  4. Encabezado de uno a uno (One-to-One Head): Genera una única mejor predicción por objeto durante la inferencia para eliminar la necesidad de NMS, lo que reduce la latencia y mejora la eficiencia.

Características clave

  1. Entrenamiento sin 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 perspectivas de eficiencia y precisión, incluidos los encabezados de clasificación ligeros, el submuestreo desacoplado espacial-canal y el diseño de bloques guiado por rango.
  3. 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 de modelo

YOLOv10 viene en varias escalas de modelo para satisfacer diferentes 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 de propósito general.
  • YOLOv10b: Versión equilibrada con mayor anchura para una mayor precisión.
  • YOLOv10l: Versión grande para una mayor precisión a costa de un aumento de los recursos computacionales.
  • YOLOv10x: Versión extra grande para máxima precisión y rendimiento.

Rendimiento

YOLOv10 supera a las versiones anteriores de YOLO y a otros modelos de última generación 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.

Modelo Tamaño de entrada APval FLOPs (G) Latencia (ms)
YOLOv10n 640 38.5 6.7 1.84
YOLOv10s 640 46.3 21.6 2.49
YOLOv10m 640 51.1 59.1 4.74
YOLOv10b 640 52.5 92.0 5.74
YOLOv10l 640 53.2 120.3 7.28
YOLOv10x 640 54.4 160.4 10.70

Metodología

Asignaciones duales consistentes para 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 una implementación 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 de modelo holístico impulsado por la eficiencia y la precisión

Mejoras de eficiencia

  1. Encabezado de clasificación ligero: Reduce la sobrecarga computacional del encabezado de clasificación mediante el uso de convoluciones separables en profundidad.
  2. Submuestreo desacoplado espacial-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 de bloques en función de la redundancia de etapa intrínseca, lo que garantiza 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 la representación global con una sobrecarga mínima.

Experimentos y resultados

YOLOv10 se ha probado exhaustivamente en puntos de referencia estándar como COCO, lo que demuestra un rendimiento y una eficiencia superiores. El modelo logra resultados de última generación en diferentes variantes, mostrando mejoras significativas en la latencia y la precisión en comparación con las versiones anteriores y otros detectores contemporáneos.

Comparaciones

Comparación de YOLOv10 con los detectores de objetos SOTA

Comparado con otros detectores de última generación:

  • 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 supera a YOLOv8l / x en 0.3 AP / 0.5 AP con 1.8× / 2.3× menos parámetros

Rendimiento

Aquí hay una comparación detallada de las variantes de YOLOv10 con otros modelos de última generación:

Modelo Parámetros
(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

Ejemplos de uso

Para predecir nuevas imágenes con YOLOv10:

Ejemplo

from ultralytics import YOLO

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

# Perform object detection on an image
results = model("image.jpg")

# Display the results
results[0].show()
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo detect predict model=yolov10n.pt source=path/to/bus.jpg

Para entrenar YOLOv10 en un dataset 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)
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640

# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov10n.yaml source=path/to/bus.jpg

Tareas y modos admitidos

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 gama de aplicaciones.

Modelo Nombres de archivo Tareas Inferencia Validación Entrenamiento Exportar
YOLOv10 yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt Detección de objetos

Exportación de 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 con éxito utilizando Ultralytics para YOLOv10. No dude en abrir un pull request si puede proporcionar un cambio de contribución para agregar 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 su implementación.
OpenVINO Optimizado para hardware Intel.
TensorRT Optimizado para GPUs NVIDIA.
CoreML Limitado a dispositivos Apple.
TF SavedModel Formato de modelo estándar de TensorFlow.
TF GraphDef Formato TensorFlow antiguo.
TF Lite Optimizado para dispositivos móviles e integrados.
TF Edge TPU Específico para los dispositivos Edge TPU de Google.
TF.js Entorno JavaScript para uso en navegador.
PaddlePaddle Popular en China; menor soporte global.
NCNN Capa torch.topk no existe o no está registrada

Conclusión

YOLOv10 establece un nuevo estándar en la detección de objetos en tiempo real al abordar las deficiencias de las versiones anteriores de YOLO e incorporar estrategias de diseño innovadoras. Su capacidad para ofrecer una alta precisión con un bajo coste computacional lo convierte en una opción ideal para una amplia gama de aplicaciones del mundo real, incluyendo la fabricación, el comercio minorista y los vehículos autónomos.

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:

@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 obtener información detallada sobre la implementación, las innovaciones arquitectónicas y los resultados experimentales, consulte el artículo de investigación y el repositorio de GitHub de YOLOv10 del equipo de la Universidad de Tsinghua.

Preguntas frecuentes

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

YOLOv10, desarrollada 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 no máxima (NMS) mediante el empleo de asignaciones duales consistentes durante el entrenamiento y componentes de modelo optimizados para un rendimiento superior con una menor sobrecarga computacional. Para obtener más detalles sobre su arquitectura y características clave, consulte la sección de descripción general de YOLOv10.

¿Cómo puedo empezar a ejecutar la inferencia usando YOLOv10?

Para facilitar la inferencia, puede utilizar la librería de python Ultralytics YOLO o la interfaz de línea de comandos (CLI). A continuación, se muestran ejemplos de predicción de nuevas imágenes utilizando YOLOv10:

Ejemplo

from ultralytics import YOLO

# Load the pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg

Para obtener más ejemplos de uso, visite 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 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. Explore la sección de Variantes de modelo 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 no máxima (NMS) durante la inferencia mediante el empleo de asignaciones duales consistentes para el entrenamiento. Este enfoque reduce la latencia de la inferencia y mejora la eficiencia de la predicción. La arquitectura también incluye un encabezado uno a uno para la inferencia, lo que garantiza que cada objeto obtenga una única mejor predicción. Para obtener una explicación detallada, consulte 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 la exportación, visite 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 ú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. Se pueden encontrar benchmarks detallados en la sección de Comparaciones.



📅 Creado hace 1 año ✏️ Actualizado hace 5 meses

Comentarios