Modelos y plataformas de IA
YOLOv9: Un salto en la detección de objetos en tiempo real
Detección de objetos ha experimentado un rápido avance en los últimos años gracias a los algoritmos de aprendizaje profundo como YOLO (You Only Look Once). La última iteración, YOLOv9, presenta mejoras importantes en precisión, eficiencia y aplicabilidad con respecto a las versiones anteriores. En este artículo, exploraremos las innovaciones que convierten a YOLOv9 en 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 profundizar en lo que es nuevo en YOLOv9, revisemos 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 rectángulos delimitadores alrededor de los objetos detectados, cada uno 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.
Existen 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. Intercambian algo de precisión por tiempos de inferencia muy rápidos.
YOLO fue 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 las 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 rectángulos delimitadores 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ó la 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 aún más el rendimiento.
Así que, en resumen, las versiones anteriores de YOLO lograron una mayor precisión a través de mejoras en la arquitectura del modelo, técnicas de entrenamiento y 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 computacionalmente intensivos, se vuelven impracticables 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 integrado. Los 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 expandir 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 Generalizada (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 crítica 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 exprimir 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ómputo.
Al equilibrar y combinar cuidadosamente estos bloques, GELAN alcanza un punto óptimo entre rendimiento, parámetros y velocidad. La misma arquitectura modular puede escalarse hacia arriba o hacia abajo en 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ó a YOLOv7-Nano con 11M de parámetros. Y GELAN-Medio con 20M de parámetros se desempeñó al mismo nivel 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 tan importante como maximizar la precisión con recursos limitados. Los autores de YOLOv9 identificaron problemas al entrenar 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 un mejor señal de gradiente a través de la red. Pero tiende a descomponerse y causar divergencia para modelos más pequeños y 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 gradiente de múltiples niveles – Un bloque de fusión agrega gradientes de todas las ramas antes de alimentarlos de regreso al modelo principal. Esto evita la divergencia entre ramas.
Al generar gradientes más confiables, PGI mejora la convergencia y la eficiencia del entrenamiento en todos los tamaños de modelos:
Los experimentos mostraron que PGI mejoró la precisión en todos los tamaños de modelos, especialmente en 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 base. Las ganancias fueron aún más significativas para modelos más profundos como YOLOv9-E con un 55,6% de mAP.
Así que, al proporcionar gradientes más confiables, PGI permite que los modelos más pequeños y eficientes 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 las mejoras arquitectónicas 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 10-15% menos parámetros y 25% menos cálculos. Esto trae mejoras significativas en velocidad y capacidad en todos los tamaños de modelos.
- 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 más pequeños de YOLOv9 incluso superan a modelos más grandes preentrenados como RT-DETR-X. A pesar de utilizar 36% menos parámetros, YOLOv9-E logra un 55,6% mejor 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 Generalizada (GELAN) que maximiza la precisión dentro de un presupuesto mínimo de parámetros. Se basa en modelos de 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 de CSPNet y ELAN
Las versiones recientes de YOLO desde la v5 han utilizado troncos basados en la Red de Etapas Parciales (CSPNet) para una mayor eficiencia. CSPNet permite que los mapas de características se agreguen a través de ramas paralelas de la red 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 Red de Agregación de Capas Eficientes (ELAN), que simplificó la estructura de bloques:
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 una eficiencia flexible
Los autores generalizaron aún más ELAN para crear GELAN, el tronco utilizado en YOLOv9. GELAN realizó 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 en profundidad – Profundidades de bloque separadas para la rama principal versus la rama de agregación simplifican la fine-tuning del uso de recursos.
- Rendimiento estable en diferentes configuraciones – GELAN mantiene la precisión con diferentes tipos y profundidades de bloques, permitiendo un escalado flexible.
Estos cambios convierten a GELAN en un tronco fuerte pero configurable para maximizar la eficiencia:
En los experimentos, los modelos GELAN superaron consistentemente a las arquitecturas de 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ó con los modelos YOLOv7 medianos más pesados
Así que GELAN proporciona un tronco optimizado para escalar YOLO en 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 modelos
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 modelos.
El problema de los 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 muy profundas exacerbaban esto a través del cuello de botella de la información – los gradientes de las capas más 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 modelos, 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 de los gradientes:
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 gradiente de múltiples niveles
Un bloque de fusión agrega gradientes de todas las ramas antes de alimentarlos de regreso al modelo principal. Esto evita la divergencia entre ramas.
Al generar gradientes más confiables, PGI mejora la convergencia y la eficiencia del entrenamiento en todos los tamaños de modelos:
- 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 mejoró la precisión para las configuraciones pequeñas y grandes de YOLOv9 sobre el GELAN base:
- +0,1-0,4% AP para YOLOv9-Pequeño
- +0,5-0,6% AP 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 en precisión
Al combinar las mejoras arquitectónicas de GELAN y las mejoras de entrenamiento de PGI, YOLOv9 logra 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 destacados:
- YOLOv9-Pequeño supera a YOLO-MS-Pequeño con 10% menos parámetros y cálculos
- YOLOv9-Medio se iguala con los modelos YOLOv7 más pesados utilizando menos de la mitad de los recursos
- YOLOv9-Grande supera a YOLOv8-X con 15% menos parámetros y 25% menos FLOPs
Cabe destacar que los modelos más pequeños de YOLOv9 incluso superan a 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 la 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 y las innovaciones que permiten el 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 modelos.
- Mayor precisión con menos recursos – Reduce parámetros y cálculos en 10-15% con respecto a YOLOv8 con mejor precisión. Permite una inferencia más eficiente.
- Resultados superiores en todos los tamaños de modelos – Establece un nuevo estado del arte para configuraciones de modelos ligeros, medianos y grandes. Superan a modelos preentrenados pesados.
- Aplicabilidad expandida – 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 impulsa 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 crítica de visión por computadora.












