Inteligencia artificial
YOLOv9: Un salto en la detección de objetos en tiempo real
Detección de objetos ha visto un avance rápido en los últimos años gracias a algoritmos de aprendizaje profundo como YOLO (You Only Look Once). La última iteración, YOLOv9, trae mejoras importantes en precisión, eficiencia y aplicabilidad con respecto a las versiones anteriores. En este post, profundizaremos en las innovaciones que hacen que YOLOv9 sea un nuevo estado del arte para la detección de objetos en tiempo real.
Una breve introducción a la detección de objetos
Antes de sumergirnos en lo que es nuevo en YOLOv9, repasemos brevemente cómo funciona la detección de objetos. El objetivo de la detección de objetos es identificar y localizar objetos dentro de una imagen, como coches, personas o animales. Es una capacidad clave para aplicaciones como coches autónomos, sistemas de vigilancia y búsqueda de imágenes.
El detector toma una imagen como entrada y produce cajas delimitadoras alrededor de los objetos detectados, cada una con una etiqueta de clase asociada. Conjuntos de datos populares como MS COCO proporcionan miles de imágenes etiquetadas para entrenar y evaluar estos modelos.
Hay dos enfoques principales para la detección de objetos:
- Detectores de dos etapas como Faster R-CNN generan primero propuestas de región, luego clasifican y refinan los límites de cada región. Tienen tendencia a ser más precisos pero más lentos.
- Detectores de una etapa como YOLO aplican un modelo directamente sobre la imagen en una sola pasada. Sacrifican algo de precisión por tiempos de inferencia muy rápidos.
YOLO pionero en el enfoque de una etapa. Veamos cómo ha evolucionado a lo largo de múltiples versiones para mejorar la precisión y la eficiencia.
Revisión de versiones anteriores de YOLO
La familia de modelos YOLO (You Only Look Once) ha estado a la vanguardia de la detección de objetos rápida desde que se publicó la versión original en 2016. Aquí hay una visión general rápida de cómo YOLO ha progresado a lo largo de múltiples iteraciones:
- YOLOv1 propuso un modelo unificado para predecir cajas delimitadoras y probabilidades de clase directamente desde imágenes completas en una sola pasada. Esto lo hizo extremadamente rápido en comparación con los modelos de dos etapas anteriores.
- YOLOv2 mejoró el original utilizando la normalización por lotes para una mejor estabilidad, anclando cajas en varias escalas y relaciones de aspecto para detectar múltiples tamaños, y una variedad de otras optimizaciones.
- YOLOv3 agregó un nuevo extractor de características llamado Darknet-53 con más capas y atajos entre ellas, lo que mejoró aún más la precisión.
- YOLOv4 combinó ideas de otros detectores de objetos y modelos de segmentación para empujar la precisión aún más alto mientras mantenía una inferencia rápida.
- YOLOv5 reescribió completamente YOLOv4 en PyTorch y agregó un nuevo extractor de características llamado CSPDarknet junto con varias otras mejoras.
- YOLOv6 continuó optimizando la arquitectura y el proceso de entrenamiento, con modelos preentrenados en grandes conjuntos de datos externos para mejorar el rendimiento aún más.
Así que en resumen, las versiones anteriores de YOLO lograron una mayor precisión a través de mejoras en la arquitectura del modelo, las técnicas de entrenamiento y el preentrenamiento. Pero a medida que los modelos se vuelven más grandes y complejos, la velocidad y la eficiencia comienzan a sufrir.
La necesidad de una mejor eficiencia
Muchas aplicaciones requieren que la detección de objetos se ejecute en tiempo real en dispositivos con recursos de cómputo limitados. A medida que los modelos se vuelven más grandes y más intensivos en cálculos, se vuelven imprácticos para implementar.
Por ejemplo, un coche autónomo necesita detectar objetos a altas tasas de cuadros utilizando procesadores dentro del vehículo. Una cámara de seguridad necesita ejecutar la detección de objetos en su flujo de video dentro de su propia hardware incrustado. Teléfonos y otros dispositivos de consumo tienen restricciones de energía y térmicas muy estrictas.
Las versiones recientes de YOLO obtienen alta precisión con un gran número de parámetros y operaciones de multiplicación y suma (FLOPs). Pero esto se produce a costa de la velocidad, el tamaño y la eficiencia de energía.
Por ejemplo, YOLOv5-L requiere más de 100 mil millones de FLOPs para procesar una sola imagen de 1280×1280. Esto es demasiado lento para muchos casos de uso en tiempo real. La tendencia de modelos cada vez más grandes también aumenta el riesgo de sobreajuste y hace que sea más difícil generalizar.
Así que para ampliar la aplicabilidad de la detección de objetos, necesitamos formas de mejorar la eficiencia: obtener mejor precisión con menos parámetros y cálculos. Veamos las técnicas utilizadas en YOLOv9 para abordar este desafío.
YOLOv9 – Mejor precisión con menos recursos
Los investigadores detrás de YOLOv9 se centraron en mejorar la eficiencia para lograr un rendimiento en tiempo real en una gama más amplia de dispositivos. Introdujeron dos innovaciones clave:
- Una nueva arquitectura de modelo llamada Red de agregación de capas eficientes generalizadas (GELAN) que maximiza la precisión mientras minimiza los parámetros y los FLOPs.
- Una técnica de entrenamiento llamada Información de gradiente programable (PGI) que proporciona gradientes de aprendizaje más confiables, especialmente para modelos más pequeños.
Veamos cómo cada una de estas mejoras ayuda a mejorar la eficiencia.
Arquitectura más eficiente con GELAN
La arquitectura del modelo en sí es crucial para equilibrar la precisión con la velocidad y el uso de recursos durante la inferencia. La red neuronal necesita suficiente profundidad y anchura para capturar características relevantes de las imágenes de entrada. Pero demasiadas capas o filtros conducen a modelos lentos y abultados.
Los autores diseñaron GELAN específicamente para sacar la máxima precisión de la arquitectura más pequeña posible.
GELAN utiliza dos bloques de construcción principales apilados:
- Bloques de agregación de capas eficientes – Estos agregan transformaciones a través de múltiples ramas de la red para capturar características de múltiples escalas de manera eficiente.
- Bloques computacionales – Los bloques CSPNet ayudan a propagar la información a través de las capas. Cualquier bloque puede ser sustituido según las restricciones de cálculo.
Al equilibrar y combinar cuidadosamente estos bloques, GELAN alcanza un punto óptimo entre rendimiento, parámetros y velocidad. La misma arquitectura modular se puede escalar hacia arriba o hacia abajo a través de diferentes tamaños de modelos y hardware.
Los experimentos mostraron que GELAN ajusta más rendimiento en modelos más pequeños en comparación con las arquitecturas de YOLO anteriores. Por ejemplo, GELAN-Pequeño con 7M de parámetros superó al YOLOv7-Nano con 11M de parámetros. Y GELAN-Medio con 20M de parámetros se desempeñó igual que los modelos YOLOv7 medianos que requieren 35-40M de parámetros.
Así que al diseñar una arquitectura parametrizada específicamente optimizada para la eficiencia, GELAN permite que los modelos se ejecuten más rápido y en dispositivos con más restricciones de recursos. A continuación, veremos cómo PGI los ayuda a entrenar mejor también.
Mejor entrenamiento con información de gradiente programable (PGI)
El entrenamiento del modelo es igual de importante para maximizar la precisión con recursos limitados. Los autores de YOLOv9 identificaron problemas de entrenamiento de modelos más pequeños causados por información de gradiente poco confiable.
Gradientes determinan cuánto se actualizan los pesos del modelo durante el entrenamiento. Los gradientes ruidosos o engañosos llevan a una mala convergencia. Este problema se vuelve más pronunciado para redes más pequeñas.
La técnica de supervisión profunda aborda esto al introducir ramas laterales adicionales con pérdidas para propagar una mejor señal de gradiente a través de la red. Pero tiende a descomponerse y causar divergencia para modelos ligeros.

YOLOv9: Aprendiendo lo que quieres aprender utilizando información de gradiente programable https://arxiv.org/abs/2402.13616
Para superar esta limitación, YOLOv9 introduce información de gradiente programable (PGI). PGI tiene dos componentes principales:
- Ramas reversibles auxiliares – Estas proporcionan gradientes más limpios al mantener conexiones reversibles con la entrada utilizando bloques como RevCols.
- Integración de gradientes de múltiples niveles – Esto evita la divergencia de diferentes ramas laterales que interfieren. Combina los gradientes de todas las ramas antes de alimentarlos de regreso al modelo principal.
Al generar gradientes más confiables, PGI ayuda a que los modelos más pequeños se entrenen tan efectivamente como los más grandes:
Los experimentos mostraron que PGI mejoró la precisión en todos los tamaños de modelo, especialmente en las configuraciones más pequeñas. Por ejemplo, aumentó las puntuaciones AP de YOLOv9-Pequeño en 0,1-0,4% sobre el GELAN-Pequeño de referencia. Las ganancias fueron aún más significativas para modelos más profundos como YOLOv9-E con 55,6% de mAP.
Así que PGI permite que los modelos eficientes y pequeños se entrenen para alcanzar niveles de precisión previamente solo alcanzables por modelos sobreparametrizados.
YOLOv9 establece un nuevo estado del arte para la eficiencia
Al combinar los avances arquitectónicos de GELAN con las mejoras de entrenamiento de PGI, YOLOv9 logra una eficiencia y rendimiento sin precedentes:
- En comparación con las versiones anteriores de YOLO, YOLOv9 obtiene mejor precisión con un 10-15% menos de parámetros y un 25% menos de cálculos. Esto trae mejoras importantes en velocidad y capacidad en todos los tamaños de modelo.
- YOLOv9 supera a otros detectores en tiempo real como YOLO-MS y RT-DETR en términos de eficiencia de parámetros y FLOPs. Requiere muchos menos recursos para alcanzar un nivel de rendimiento determinado.
- Los modelos YOLOv9 más pequeños incluso superan a modelos preentrenados más grandes como RT-DETR-X. A pesar de utilizar 36% menos parámetros, YOLOv9-E logra mejor precisión del 55,6% AP a través de arquitecturas más eficientes.
Así que al abordar la eficiencia a nivel de arquitectura y entrenamiento, YOLOv9 establece un nuevo estado del arte para maximizar el rendimiento dentro de recursos limitados.
GELAN – Arquitectura optimizada para la eficiencia
YOLOv9 introduce una nueva arquitectura llamada Red de agregación de capas eficientes generalizadas (GELAN) que maximiza la precisión dentro de un presupuesto mínimo de parámetros. Se basa en los modelos YOLO anteriores pero optimiza los diversos componentes específicamente para la eficiencia.

YOLOv9: Aprendiendo lo que quieres aprender utilizando información de gradiente programable
https://arxiv.org/abs/2402.13616
Antecedentes sobre CSPNet y ELAN
Las versiones recientes de YOLO desde la v5 han utilizado patrones de red basados en Cross-Stage Partial Network (CSPNet) para mejorar la eficiencia. CSPNet permite que los mapas de características se agreguen a través de ramas de red paralelas mientras se agrega una sobrecarga mínima:
Esto es más eficiente que simplemente apilar capas en serie, lo que a menudo conduce a cálculos redundantes y sobreparametrización.
YOLOv7 mejoró CSPNet a Efficient Layer Aggregation Network (ELAN), que simplificó la estructura de bloque:
ELAN eliminó las conexiones de atajo entre capas a favor de un nodo de agregación en la salida. Esto mejoró aún más la eficiencia de parámetros y FLOPs.
Generalizando ELAN para flexibilidad y eficiencia
Los autores generalizaron aún más ELAN para crear GELAN, el patrón utilizado en YOLOv9. GELAN hizo modificaciones clave para mejorar la flexibilidad y la eficiencia:
- Bloques computacionales intercambiables – ELAN anterior tenía capas convolucionales fijas. GELAN permite sustituir cualquier bloque computacional como ResNets o CSPNet, proporcionando más opciones arquitectónicas.
- Parametrización de profundidad – Las profundidades de bloque separadas para la rama principal versus la rama del agregador simplifican la ajuste fino del uso de recursos.
- Rendimiento estable en diferentes configuraciones – GELAN mantiene la precisión con diferentes tipos de bloques y profundidades, permitiendo una escalabilidad flexible.
Estos cambios hacen que GELAN sea una base sólida pero configurable para maximizar la eficiencia:
En los experimentos, los modelos GELAN superaron consistentemente a las arquitecturas YOLO anteriores en precisión por parámetro:
- GELAN-Pequeño con 7M de parámetros superó a YOLOv7-Nano con 11M de parámetros
- GELAN-Medio se igualó a los modelos YOLOv7 medianos
Así que GELAN proporciona una base optimizada para escalar YOLO a través de diferentes objetivos de eficiencia. A continuación, veremos cómo PGI los ayuda a entrenar mejor.
PGI – Entrenamiento mejorado para todos los tamaños de modelo
Mientras que las elecciones de arquitectura impactan la eficiencia en el momento de la inferencia, el proceso de entrenamiento también afecta el uso de recursos del modelo. YOLOv9 utiliza una nueva técnica llamada información de gradiente programable (PGI) para mejorar el entrenamiento en diferentes tamaños y complejidades de modelo.
El problema de gradientes poco confiables
Durante el entrenamiento, una función de pérdida compara las salidas del modelo con las etiquetas de verdad y calcula un gradiente de error para actualizar los parámetros. Gradientes ruidosos o engañosos llevan a una mala convergencia y eficiencia.
Las redes neuronales muy profundas exacerbates esto a través del cuello de botella de la información – los gradientes de las capas profundas se corrompen por señales perdidas o comprimidas.
Supervisión profunda ayuda al introducir ramas laterales auxiliares con pérdidas para proporcionar gradientes más limpios. Pero a menudo se descompone para modelos más pequeños, causando interferencia y divergencia entre diferentes ramas.
Así que necesitamos una forma de proporcionar gradientes confiables que funcione en todos los tamaños de modelo, especialmente en los más pequeños.
Presentando información de gradiente programable (PGI)
Para abordar los gradientes poco confiables, YOLOv9 propone información de gradiente programable (PGI). PGI tiene dos componentes diseñados para mejorar la calidad del gradiente:
1. Ramas reversibles auxiliares
Ramas adicionales proporcionan conexiones reversibles de regreso a la entrada utilizando bloques como RevCols. Esto mantiene gradientes limpios evitando el cuello de botella de la información.
2. Integración de gradientes de múltiples niveles
Un bloque de fusión agrega los gradientes de todas las ramas antes de alimentarlos de regreso al modelo principal. Esto evita la divergencia a través de las ramas.
Al generar gradientes más confiables, PGI mejora la convergencia y la eficiencia del entrenamiento en todos los tamaños de modelo:
- Modelos ligeros se benefician de la supervisión profunda que no podían usar antes
- Modelos más grandes obtienen gradientes más limpios que permiten una mejor generalización
Los experimentos mostraron que PGI aumentó la precisión para las configuraciones pequeñas y grandes de YOLOv9 sobre el GELAN de referencia:
- +0,1-0,4% de precisión para YOLOv9-Pequeño
- +0,5-0,6% de precisión para los modelos YOLOv9 más grandes
Así que los gradientes programables de PGI permiten que los modelos, tanto grandes como pequeños, se entrenen de manera más eficiente.
YOLOv9 establece un nuevo estado del arte de precisión
Al combinar las mejoras arquitectónicas de GELAN y las mejoras de entrenamiento de PGI, YOLOv9 logra nuevos resultados de estado del arte para la detección de objetos en tiempo real.
Los experimentos en el conjunto de datos COCO muestran que YOLOv9 supera a las versiones anteriores de YOLO, así como a otros detectores en tiempo real como YOLO-MS, en precisión y eficiencia:
Algunos puntos clave:
- YOLOv9-Pequeño supera a YOLO-MS-Pequeño con un 10% menos de parámetros y cálculos
- YOLOv9-Medio se iguala a los modelos YOLOv7 más pesados utilizando menos de la mitad de los recursos
- YOLOv9-Grande supera a YOLOv8-X con un 15% menos de parámetros y un 25% menos de FLOPs
Remarkablemente, los modelos YOLOv9 más pequeños incluso superan a los modelos más pesados de otros detectores que utilizan preentrenamiento como RT-DETR-X. A pesar de tener 4 veces menos parámetros, YOLOv9-E supera a RT-DETR-X en precisión.
Estos resultados demuestran la superior eficiencia de YOLOv9. Las mejoras permiten una detección de objetos de alta precisión en más casos de uso del mundo real.
Puntos clave sobre las mejoras de YOLOv9
Resumamos algunos de los puntos clave sobre las mejoras y las innovaciones que permiten el nuevo rendimiento de estado del arte de YOLOv9:
- Arquitectura GELAN optimizada – Mejora la eficiencia de parámetros a través de bloques de agregación flexibles. Permite escalar modelos para diferentes objetivos.
- Información de gradiente programable – Proporciona gradientes confiables a través de conexiones reversibles y fusión. Mejora el entrenamiento en todos los tamaños de modelo.
- Mayor precisión con menos recursos – Reduce los parámetros y los cálculos en un 10-15% sobre YOLOv8 con mejor precisión. Permite una inferencia más eficiente.
- Resultados superiores en todos los tamaños de modelo – Establece un nuevo estado del arte para configuraciones de modelos ligeros, medianos y grandes. Superará a los modelos preentrenados más pesados.
- Aplicabilidad ampliada – Una mayor eficiencia amplía los casos de uso viables, como la detección en tiempo real en dispositivos de borde.
Al abordar directamente la precisión, la eficiencia y la aplicabilidad, YOLOv9 mueve la detección de objetos hacia adelante para satisfacer las diversas necesidades del mundo real. Las mejoras proporcionan una base sólida para la innovación futura en esta capacidad de visión por computadora crítica.


