Saltar al contenido

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

YOLOv10, construido sobre el Ultralytics Python paquete de los investigadores de la Universidad de Tsinghua, introduce un nuevo enfoque para la detección de objetos en tiempo real, abordando las deficiencias tanto del postprocesamiento como de la arquitectura del modelo encontradas en las versiones anteriores de YOLO . Al eliminar la supresión no máxima (NMS) y optimizar varios componentes del modelo, YOLOv10 consigue un rendimiento de vanguardia con una sobrecarga computacional significativamente reducida. Extensos experimentos demuestran su superior equilibrio entre precisión y latencia en múltiples escalas de modelos.

YOLOv10 asignación dual coherente para un entrenamiento sin NMS

Visión general

La detección de objetos en tiempo real pretende 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 por su equilibrio entre rendimiento y eficiencia. Sin embargo, la dependencia del NMS y las ineficiencias arquitectónicas han obstaculizado un rendimiento óptimo. YOLOv10 aborda estos problemas introduciendo asignaciones duales coherentes para un entrenamiento sin NMS y una estrategia holística de diseño de modelos basada en la eficiencia y la precisión.

Arquitectura

La arquitectura de YOLOv10 se basa en los puntos fuertes de los modelos anteriores de YOLO , al tiempo que introduce varias innovaciones clave. La arquitectura del modelo consta de los siguientes componentes:

  1. Red troncal: Responsable de la extracción de características, la columna vertebral de YOLOv10 utiliza una versión mejorada de CSPNet (Cross Stage Partial Network) para mejorar el flujo de gradiente y reducir la redundancia computacional.
  2. Cuello: El cuello está diseñado para agregar características de diferentes escalas y pasarlas a la cabeza. Incluye capas PAN (Red de Agregación de Caminos) para una fusión eficaz de rasgos multiescala.
  3. Cabezal Uno a Muchos: Genera múltiples predicciones por objeto durante el entrenamiento para proporcionar ricas señales de supervisión y mejorar la precisión del aprendizaje.
  4. Cabezal Uno a Uno: Genera una única mejor predicción por objeto durante la inferencia para eliminar la necesidad de NMS, reduciendo así la latencia y mejorando la eficacia.

Características principales

  1. Entrenamiento sin NMS: Utiliza asignaciones duales coherentes para eliminar la necesidad de NMS, reduciendo la latencia de la inferencia.
  2. Diseño holístico del modelo: Optimización exhaustiva de varios componentes, tanto desde el punto de vista de la eficacia como de la precisión, incluidos los cabezales de clasificación ligeros, el muestreo descendente desacoplado de canales espaciales y el diseño de bloques guiado por rangos.
  3. Capacidades mejoradas del modelo: Incorpora convoluciones de núcleo grande y módulos de autoatención parcial para mejorar el rendimiento sin un coste computacional significativo.

Variantes de modelos

YOLOv10 está disponible en varias escalas de modelos para satisfacer las distintas necesidades de aplicación:

  • YOLOv10-N: Versión nano para entornos con recursos extremadamente limitados.
  • YOLOv10-S: Versión pequeña que equilibra velocidad y precisión.
  • YOLOv10-M: Versión media para uso general.
  • YOLOv10-B: Versión equilibrada con mayor anchura para una mayor precisión.
  • YOLOv10-L: Versión grande para mayor precisión a costa de mayores recursos informáticos.
  • YOLOv10-X: Versión extragrande para máxima precisión y rendimiento.

Rendimiento

YOLOv10 supera en precisión y eficacia a las versiones anteriores de YOLO y a otros modelos de vanguardia. Por ejemplo, YOLOv10-S es 1,8 veces más rápido que RT-DETR-R18 con un AP similar en el conjunto de datos COCO, y YOLOv10-B tiene un 46% menos de latencia y un 25% menos de parámetros que YOLOv9-C con el mismo rendimiento.

Modelo Tamaño de entrada APval FLOPs (G) Latencia (ms)
YOLOv10-N 640 38.5 6.7 1.84
YOLOv10-S 640 46.3 21.6 2.49
YOLOv10-M 640 51.1 59.1 4.74
YOLOv10-B 640 52.5 92.0 5.74
YOLOv10-L 640 53.2 120.3 7.28
YOLOv10-X 640 54.4 160.4 10.70

Latencia medida con TensorRT FP16 en T4 GPU.

Metodología

Asignaciones dobles coherentes para una formación 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 coincidencia consistente alinea la supervisión entre ambas estrategias, mejorando la calidad de las predicciones durante la inferencia.

Diseño holístico de modelos basado en la eficiencia y la precisión

Mejoras de la eficiencia

  1. Cabezal de clasificación ligero: Reduce la carga computacional del cabezal de clasificación utilizando convoluciones separables en profundidad.
  2. Muestreo descendente espacial-canal desacoplado: Desacopla la reducción espacial y la modulación del canal para minimizar la pérdida de información y el coste computacional.
  3. Diseño de bloques guiado por rangos: Adapta el diseño de los bloques basándose en la redundancia intrínseca de las etapas, garantizando una utilización óptima de los parámetros.

Mejoras de precisión

  1. Convolución de núcleo grande: Amplía el campo receptivo para mejorar la capacidad de extracción de rasgos.
  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 pruebas de referencia estándar como COCO, demostrando un rendimiento y una eficacia superiores. El modelo alcanza resultados de vanguardia en distintas 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 los detectores de objetos SOTA

En comparación con otros detectores de última generación:

  • YOLOv10-S / X son 1,8× / 1,3× más rápidos que RT-DETR-R18 / R101 con una precisión similar
  • YOLOv10-B tiene un 25% menos de parámetros y un 46% menos de latencia que YOLOv9-C con la misma precisión
  • YOLOv10-L / X supera a YOLOv8-L / 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 del YOLOv10 con otros modelos de última generación:

Modelo Parámetros
(M)
FLOPs
(G)
mAPval
50-95
Latencia
(ms)
Latencia-reenvío
(ms)
YOLOv6-3.0-N 4.7 11.4 37.0 2.69 1.76
Oro-YOLO-N 5.6 12.1 39.6 2.92 1.82
YOLOv8-N 3.2 8.7 37.3 6.16 1.77
YOLOv10-N 2.3 6.7 39.5 1.84 1.79
YOLOv6-3.0-S 18.5 45.3 44.3 3.42 2.35
Oro-YOLO-S 21.5 46.0 45.4 3.82 2.73
YOLOv8-S 11.2 28.6 44.9 7.07 2.33
YOLOv10-S 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
Oro-YOLO-M 41.3 87.5 49.8 6.38 5.45
YOLOv8-M 25.9 78.9 50.6 9.50 5.09
YOLOv10-M 15.4 59.1 51.3 4.74 4.63
YOLOv6-3.0-L 59.6 150.7 51.8 9.02 7.90
Oro-YOLO-L 75.1 151.7 51.8 10.65 9.78
YOLOv8-L 43.7 165.2 52.9 12.39 8.06
RT-DETR-R50 42.0 136.0 53.1 9.20 9.07
YOLOv10-L 24.4 120.3 53.4 7.28 7.21
YOLOv8-X 68.2 257.8 53.9 16.86 12.83
RT-DETR-R101 76.0 259.0 54.3 13.71 13.58
YOLOv10-X 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 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)
# 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 satisfacen las diferentes 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 Formación 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 actualmente se admiten. En la tabla siguiente se describen los formatos que se han convertido correctamente mediante Ultralytics para YOLOv10. Siéntase libre de abrir una solicitud de incorporación de cambios si puede proporcionar un cambio de contribución para agregar soporte de exportación de formatos adicionales para YOLOv10.

Formato de exportación Soportado
TorchScript
ONNX
OpenVINO
TensorRT
CoreML
TF SavedModel
TF GraphDef
TF Lite
TF Arista TPU
TF.js
PaddlePaddle
NCNN

Conclusión

YOLOv10 establece un nuevo estándar en la detección de objetos en tiempo real, abordando las deficiencias de las versiones anteriores de YOLO e incorporando estrategias de diseño innovadoras. Su capacidad para ofrecer una gran precisión con un bajo coste computacional lo convierte en la opción ideal para una amplia gama de aplicaciones del mundo real.

Citas y agradecimientos

Nos gustaría agradecer a los autores de YOLOv10 de la Universidad de Tsinghua su amplia investigación y sus importantes contribuciones al Ultralytics marco:

@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 documento de investigación YOLOv10 y el repositorio GitHub del equipo de la Universidad Tsinghua.

PREGUNTAS FRECUENTES

¿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 supresión no máxima (NMS) empleando asignaciones duales consistentes durante el entrenamiento y componentes de modelo optimizados para un rendimiento superior con una sobrecarga computacional reducida. Para obtener más detalles sobre su arquitectura y características principales, consulta la sección Visión general de YOLOv10.

¿Cómo puedo empezar a realizar inferencias con YOLOv10?

Para facilitar la inferencia, puedes utilizar la biblioteca Ultralytics YOLO Python 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 YOLOv10-N model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg

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?

El YOLOv10 ofrece varias variantes de modelo para adaptarse a diferentes casos de uso:

  • YOLOv10-N: Adecuado para entornos con recursos extremadamente limitados
  • YOLOv10-S: Equilibra velocidad y precisión
  • YOLOv10-M: Uso general
  • YOLOv10-B: Mayor precisión con mayor anchura
  • YOLOv10-L: Alta precisión a costa de recursos computacionales
  • YOLOv10-X: 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 gran variedad de aplicaciones. Explora la sección Variantes del modelo para obtener más información.

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

YOLOv10 elimina la necesidad de supresión no máxima (NMS) durante la inferencia empleando asignaciones duales coherentes para el entrenamiento. Este enfoque reduce la latencia de la inferencia y mejora la eficacia de la predicción. La arquitectura también incluye un cabezal uno a uno para la inferencia, que garantiza que cada objeto obtenga una única mejor predicción. Para una explicación detallada, consulta la sección Asignaciones duales coherentes para un entrenamiento sin NMS.

¿Dónde puedo encontrar las opciones de exportación de los modelos YOLOv10?

YOLOv10 admite varios formatos de exportación, como 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 más detalles sobre los formatos admitidos e instrucciones sobre la exportación, visita la sección Exportar YOLOv10.

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

YOLOv10 supera a las versiones anteriores de YOLO y a otros modelos de vanguardia tanto en precisión como en eficacia. Por ejemplo, YOLOv10-S es 1,8 veces más rápido que RT-DETR-R18 con un PA similar en el conjunto de datos COCO. YOLOv10-B muestra un 46% menos de latencia y un 25% menos de parámetros que YOLOv9-C con el mismo rendimiento. Puedes encontrar pruebas comparativas detalladas en la sección Comparaciones.



Creado 2024-05-25, Actualizado 2024-07-24
Autores: hasanghaffari93 (1), glenn-jocher (5), zhixuwei (1), abirami-vina (1), RizwanMunawar (3), Burhan-Q (1)

Comentarios