Ir al contenido

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

YOLOv10, basado en el paquete UltralyticsPython por investigadores de la Universidad de Tsinghua, introduce un nuevo enfoque para la detección de objetos en tiempo real, abordando tanto las deficiencias en el post-procesamiento como en la arquitectura del modelo encontradas en versiones anteriores de YOLO . Mediante la eliminación de la supresión no máxima (NMS) y la optimización de 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 doble asignación coherente para una formación sin NMS



Observa: Cómo entrenar YOLOv10 en el conjunto de datos SKU-110k utilizando Ultralytics | Retail Dataset

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 de NMS y las ineficiencias arquitectónicas han dificultado 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 (Path Aggregation Network) para una fusión eficaz de características 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 eficiencia.

Características principales

  1. Formación sin NMS: Utiliza asignaciones duales coherentes para eliminar la necesidad de NMS, reduciendo la latencia de inferencia.
  2. Diseño holístico de modelos: Optimización exhaustiva de varios componentes tanto desde el punto de vista de la eficiencia como de la precisión, incluidos cabezales de clasificación ligeros, muestreo descendente desacoplado de canales espaciales y diseño de bloques guiado por rangos.
  3. Capacidades de modelo mejoradas: 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 de gran tamaño para una mayor precisión a costa de un aumento de los 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

Doble asignación coherente para una formación 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 rica y un despliegue eficiente de extremo a extremo. La métrica de correspondencia coherente 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 desacoplado espacio-canal: 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 en función de 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 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 sometido a pruebas exhaustivas en pruebas de referencia estándar como COCO, demostrando un rendimiento y una eficacia superiores. El modelo obtiene resultados de vanguardia en distintas variantes, con mejoras significativas en latencia y precisión en comparación con versiones anteriores y otros detectores actuales.

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 compatibles

La serie de modelos YOLOv10 ofrece una gama de modelos, cada uno de ellos optimizado para la detección de objetos de alto rendimiento. Estos modelos se adaptan a diferentes necesidades de cálculo 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

Exportar YOLOv10

Debido a las nuevas operaciones introducidas con YOLOv10, no todos los formatos de exportación proporcionados por Ultralytics son actualmente compatibles. La siguiente tabla muestra los formatos que se han convertido con éxito utilizando Ultralytics para YOLOv10. No dude en abrir una solicitud de extracción si es capaz de proporcionar un cambio de contribución para añadir soporte de exportación de formatos adicionales para YOLOv10.

Formato de exportación Apoyo a la exportación Inferencia del modelo exportado Notas
TorchScript Estándar PyTorch formato del modelo.
ONNX Amplio soporte para el despliegue.
OpenVINO Optimizado para el hardware Intel .
TensorRT Optimizado para GPUs NVIDIA .
CoreML Limitado a dispositivos Apple.
TF SavedModel TensorFlowformato de modelo estándar.
TF GraphDef Formato heredado TensorFlow .
TF Lite Optimizado para móviles e incrustado.
TF Borde TPU Específico de los dispositivos Google's Edge TPU .
TF.js Entorno JavaScript para uso en navegadores.
PaddlePaddle Popular en China; menos apoyo mundial.
NCNN Capa torch.topk no existe ni está registrado

Conclusión

YOLOv10 establece un nuevo estándar en la detección de objetos en tiempo real al subsanar las deficiencias de las versiones anteriores de YOLO e incorporar 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 extensa 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, consulte 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 coherentes durante el entrenamiento y componentes de modelo optimizados para un rendimiento superior con una sobrecarga computacional reducida. Para obtener más información sobre su arquitectura y características principales, consulte la sección de descripción general de YOLOv10.

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

Para facilitar la inferencia, puede 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, visite 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 modelos para adaptarse a diferentes casos de uso:

  • YOLOv10-N: adecuado para entornos con recursos muy limitados
  • YOLOv10-S: equilibrio entre 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 informáticos
  • 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. Explore la sección Variantes de modelos 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 consistentes para el entrenamiento. Este enfoque reduce la latencia de la inferencia y mejora la eficacia de la predicción. La arquitectura también incluye una cabeza uno a uno para la inferencia, lo que garantiza que cada objeto obtiene una única mejor predicción. Para una explicación detallada, consulte 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 soporta varios formatos de exportación, incluyendo TorchScript, ONNX, OpenVINO, y TensorRT. Sin embargo, no todos los formatos de exportación proporcionados por Ultralytics son actualmente soportados por YOLOv10 debido a sus nuevas operaciones. Para más detalles sobre los formatos soportados e instrucciones sobre la exportación, visite la sección Exportar YOLOv10.

¿Cuáles son los parámetros 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. En la sección de comparaciones se detallan las pruebas comparativas.

Creado hace 6 meses ✏️ Actualizado hace 2 meses

Comentarios