talón YOLOv9: un salto en la detección de objetos en tiempo real - Unite.AI
Contáctanos

Inteligencia artificial

YOLOv9: un salto en la detección de objetos en tiempo real

mm

Publicado

 on

Detección de objetos ha experimentado un rápido avance en los últimos años gracias a deep learning algoritmos como YOLO (Solo miras una vez). La última iteración, YOLOv9, aporta importantes mejoras en precisión, eficiencia y aplicabilidad con respecto a versiones anteriores. En esta publicación, profundizaremos en las innovaciones que hacen de YOLOv9 un nuevo estado del arte para la detección de objetos en tiempo real.

Una introducción rápida a la detección de objetos

Antes de entrar en las novedades de 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 vehículos autónomos, sistemas de vigilancia y búsqueda de imágenes.

El detector toma una imagen como entrada y genera cuadros 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.

Hay dos enfoques principales para la detección de objetos:

  • Detectores de dos etapas Al igual que Faster R-CNN, primero genera propuestas de región y luego clasifica y refina los límites de cada región. Suelen ser más precisos pero más lentos.
  • Detectores de una etapa como YOLO, aplica un modelo directamente sobre la imagen en una sola pasada. Cambian cierta precisión por tiempos de inferencia muy rápidos.

YOLO fue pionero en el enfoque de una sola etapa. Veamos cómo ha evolucionado en múltiples versiones para mejorar la precisión y la eficiencia.

Revisión de versiones anteriores de YOLO

La familia de modelos YOLO (Solo miras una vez) ha estado a la vanguardia de la detección rápida de objetos desde que se publicó la versión original en 2016. Aquí hay una descripción general rápida de cómo YOLO ha progresado en múltiples iteraciones:

  • YOLOv1 propuso un modelo unificado para predecir cuadros delimitadores y probabilidades de clase directamente a partir de imágenes completas en una sola pasada. Esto lo hizo extremadamente rápido en comparación con los modelos anteriores de dos etapas.
  • YOLOv2 Se mejoró el original mediante el uso de normalización por lotes para una mejor estabilidad, anclaje de cajas en varias escalas y relaciones de aspecto para detectar múltiples tamaños y una variedad de otras optimizaciones.
  • YOLOv3 Se agregó un nuevo extractor de funciones llamado Darknet-53 con más capas y accesos directos entre ellas, lo que mejora aún más la precisión.
  • YOLOv4 combinó ideas de otros detectores de objetos y modelos de segmentación para aumentar aún más la precisión y al mismo tiempo mantener una inferencia rápida.
  • YOLOv5 Reescribí completamente YOLOv4 en PyTorch y agregué una nueva columna vertebral de extracción de funciones llamada CSPDarknet junto con varias otras mejoras.
  • YOLOv6 Continuó optimizando la arquitectura y el proceso de capacitación, con modelos previamente entrenados en grandes conjuntos de datos externos para mejorar aún más el rendimiento.

En resumen, las versiones anteriores de YOLO lograron una mayor precisión mediante mejoras en la arquitectura del modelo, las técnicas de capacitación y la capacitación previa. Pero a medida que los modelos se hacen más grandes y complejos, la velocidad y la eficiencia empiezan a verse afectadas.

La necesidad de una mayor eficiencia

Muchas aplicaciones requieren que la detección de objetos se ejecute en tiempo real en dispositivos con recursos informáticos limitados. A medida que los modelos se vuelven más grandes y más intensivos en términos computacionales, su implementación se vuelve poco práctica.

Por ejemplo, un automóvil autónomo necesita detectar objetos a altas velocidades de cuadro utilizando procesadores dentro del vehículo. Una cámara de seguridad necesita ejecutar la detección de objetos en su transmisión de video dentro de su propio hardware integrado. Los teléfonos y otros dispositivos de consumo tienen restricciones térmicas y de energía muy estrictas.

Las versiones recientes de YOLO obtienen una alta precisión con una gran cantidad de parámetros y operaciones de suma múltiple (FLOP). Pero esto tiene como coste la velocidad, el tamaño y la eficiencia energética.

Por ejemplo, YOLOv5-L requiere más de 100 mil millones de FLOP 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.

Entonces, para ampliar la aplicabilidad de la detección de objetos, necesitamos formas de mejorar la eficiencia, obteniendo mayor precisión con menos parámetros y cálculos. Veamos las técnicas utilizadas en YOLOv9 para afrontar este desafío.

YOLOv9: mayor 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:

  1. Un nuevo modelo de arquitectura llamado Red general de agregación de capas eficiente (GELAN) que maximiza la precisión mientras minimiza los parámetros y FLOP.
  2. Una técnica de entrenamiento llamada Información de gradiente programable (PGI) eso proporciona gradientes de aprendizaje más confiables, especialmente para modelos más pequeños.

Veamos cómo cada uno de estos avances ayuda a mejorar la eficiencia.

Arquitectura más eficiente con GELAN

La arquitectura del modelo en sí es fundamental para equilibrar la precisión con la velocidad y el uso de recursos durante la inferencia. La red neuronal necesita suficiente profundidad y ancho para capturar características relevantes de las imágenes de entrada. Pero demasiadas capas o filtros conducen a modelos lentos e inflados.

Los autores diseñaron GELAN específicamente para obtener la máxima precisión de la arquitectura más pequeña posible.

GELAN utiliza dos bloques de construcción principales apilados juntos:

  • Bloques de agregación de capas eficientes – Estas transformaciones agregadas en 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 información a través de capas. Cualquier bloque se puede sustituir según restricciones informáticas.

Al equilibrar y combinar cuidadosamente estos bloques, GELAN alcanza un punto óptimo entre rendimiento, parámetros y velocidad. La misma arquitectura modular puede ampliarse o reducirse en diferentes tamaños de modelos y hardware.

Los experimentos demostraron que GELAN adapta un mayor rendimiento a modelos más pequeños en comparación con arquitecturas YOLO anteriores. Por ejemplo, GELAN-Small con parámetros de 7M superó al parámetro de 11M YOLOv7-Nano. Y GELAN-Medium con parámetros de 20M funcionó a la par con los modelos medianos YOLOv7 que requieren parámetros de 35-40M.

Entonces, 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 recursos limitados. A continuación veremos cómo PGI les ayuda a ellos también a entrenar mejor.

Mejor entrenamiento con información de gradiente programable (PGI)

El entrenamiento de modelos es igualmente importante para 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 determinar en qué medida se actualizan los pesos de un modelo durante el entrenamiento. Los gradientes ruidosos o engañosos conducen a una mala convergencia. Este problema se vuelve más pronunciado en las redes más pequeñas.

La técnica de la supervisión profunda soluciona esto introduciendo ramas laterales adicionales con pérdidas para propagar una mejor señal de gradiente a través de la red. Pero tiende a fallar y causar divergencias en los modelos más pequeños y livianos.

YOLOv9: Aprenda lo que quiere aprender utilizando información de gradiente programable

YOLOv9: aprenda lo que desea 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). La IGP tiene dos componentes principales:

  • Ramas auxiliares reversibles – Estos proporcionan gradientes más limpios al mantener conexiones reversibles a la entrada utilizando bloques como RevCols.
  • Integración de gradiente multinivel – Esto evita que interfieran las divergencias de diferentes ramas laterales. Combina gradientes de todas las ramas antes de retroalimentar al modelo principal.

Al generar gradientes más confiables, PGI ayuda a que los modelos más pequeños se entrenen con la misma eficacia que los más grandes:

Los experimentos demostraron 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-Small entre un 0.1% y un 0.4% con respecto al valor inicial de GELAN-Small. Las ganancias fueron aún más significativas para modelos más profundos como YOLOv9-E con un mAP del 55.6%.

Por lo tanto, PGI permite que modelos más pequeños y eficientes se entrenen con niveles de precisión más altos que antes solo se podían lograr mediante modelos sobreparametrizados.

YOLOv9 establece un nuevo estado del arte en eficiencia

Al combinar los avances arquitectónicos de GELAN con las mejoras de capacitación de PGI, YOLOv9 logra una eficiencia y un rendimiento sin precedentes:

  • En comparación con versiones anteriores de YOLO, YOLOv9 obtiene mejor precisión con entre un 10% y un 15% menos de parámetros y un 25% menos de cálculos. Esto aporta importantes mejoras 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 FLOP. Requiere muchos menos recursos para alcanzar un nivel de rendimiento determinado.
  • Los modelos YOLOv9 más pequeños incluso superan a los modelos preentrenados más grandes como RT-DETR-X. A pesar de usar 36% menos parámetros, YOLOv9-E logra mejor 55.6% AP a través de arquitecturas más eficientes.

Entonces, al abordar la eficiencia en los niveles de arquitectura y capacitación, YOLOv9 establece un nuevo estado del arte para maximizar el rendimiento dentro de recursos limitados.

GELAN – Arquitectura optimizada para la eficiencia

YOLOv9 presenta una nueva arquitectura llamada Red de agregación de capas eficiente general (GELAN) que maximiza la precisión dentro de un presupuesto de parámetros mínimo. Se basa en modelos YOLO anteriores, pero optimiza los distintos componentes específicamente para lograr eficiencia.

https://arxiv.org/abs/2402.13616

YOLOv9: Aprenda lo que quiere 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 backbones basados ​​en Cross-Stage Partial Network (CSPNet) para mejorar la eficiencia. CSPNet permite agregar mapas de características a través de ramas de red paralelas y al mismo tiempo agregar 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 actualizó CSPNet a Efficient Layer Aggregation Network (ELAN), lo que simplificó la estructura del bloque:

ELAN eliminó las conexiones de acceso directo entre capas a favor de un nodo de agregación en la salida. Esto mejoró aún más la eficiencia de los parámetros y FLOP.

Generalización de ELAN para una eficiencia flexible

Los autores generalizaron ELAN aún más para crear GELAN, la columna vertebral utilizada en YOLOv9. GELAN realizó modificaciones clave para mejorar la flexibilidad y la eficiencia:

  • Bloques computacionales intercambiables – La ELAN anterior tenía capas convolucionales fijas. GELAN permite sustituir cualquier bloque computacional como ResNets o CSPNet, brindando más opciones arquitectónicas.
  • Parametrización en profundidad – Las profundidades de bloque separadas para la rama principal frente a la rama agregadora simplifican el ajuste del uso de recursos.
  • Rendimiento estable en todas las configuraciones – GELAN mantiene la precisión con diferentes tipos de bloques y profundidades, lo que permite un escalado flexible.

Estos cambios hacen de GELAN una columna vertebral 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-Small con parámetros de 7M superó los parámetros de 7M de YOLOv11-Nano
  • GELAN-Medium combina modelos medianos YOLOv7 más pesados

Por lo tanto, GELAN proporciona una columna vertebral optimizada para escalar YOLO a través de diferentes objetivos de eficiencia. A continuación veremos cómo PGI les ayuda a entrenar mejor.

PGI: formación mejorada para todos los tamaños de modelos

Si bien las elecciones de arquitectura afectan la eficiencia en el momento de la inferencia, el proceso de capacitación 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 fiables

Durante el entrenamiento, una función de pérdida compara los resultados del modelo con las etiquetas reales y calcula un gradiente de error para actualizar los parámetros. Degradados ruidosos o engañosos conducir a una mala convergencia y eficiencia.

Las redes muy profundas exacerban esto a través de la cuello de botella de información – Los gradientes de capas profundas se corrompen por señales perdidas o comprimidas.

Supervisión profunda ayuda introduciendo ramas laterales auxiliares con pérdidas para proporcionar pendientes más limpias. Pero a menudo Se descompone para modelos más pequeños., provocando interferencias y divergencias entre diferentes ramas.

Por lo tanto, necesitamos una forma de proporcionar gradientes confiables que funcionen en todos los tamaños de modelos, especialmente en los más pequeños.

Presentación de la información de gradiente programable (PGI)

Para abordar los gradientes poco confiables, YOLOv9 propone información de gradiente programable (PGI). PGI tiene dos componentes principales diseñados para mejorar la calidad del gradiente:

1. Ramas auxiliares reversibles

sucursales adicionales proporcionan conexiones reversibles volver a la entrada usando bloques como RevCols. Esto mantiene gradientes limpios evitando el cuello de botella de información.

2. Integración de gradiente multinivel

Un bloque de fusión agrega gradientes de todas las ramas antes de retroalimentarlo 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 beneficiarse de una supervisión profunda que antes no podían utilizar
  • Modelos más grandes obtener gradientes más limpios que permitan una mejor generalización

Los experimentos demostraron que PGI aumentó la precisión para configuraciones YOLOv9 pequeñas y grandes con respecto a GELAN de referencia:

  • +0.1-0.4% AP para YOLOv9-Small
  • +0.5-0.6% AP para modelos YOLOv9 más grandes

Por lo tanto, los gradientes programables de PGI permiten que modelos grandes y pequeños se entrenen de manera más eficiente.

YOLOv9 establece una nueva precisión de vanguardia

Al combinar mejoras arquitectónicas de GELAN y mejoras de capacitación de PGI, YOLOv9 logra nuevos resultados de vanguardia 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 aspectos clave:

  • YOLOv9-Small supera a YOLO-MS-Small con un 10% menos de parámetros y cálculos
  • YOLOv9-Medium combina modelos YOLOv7 más pesados ​​utilizando menos de la mitad de los recursos
  • YOLOv9-Large supera a YOLOv8-X con un 15% menos de parámetros y un 25% menos de FLOP

Sorprendentemente, los modelos YOLOv9 más pequeños incluso superan a los modelos más pesados ​​de otros detectores que utilizan entrenamiento previo 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 eficiencia superior de YOLOv9. Las mejoras permiten la detección de objetos de alta precisión en más casos de uso del mundo real.

Conclusiones clave sobre las actualizaciones de YOLOv9

Recapitulemos rápidamente algunas de las actualizaciones e innovaciones clave que permiten el nuevo rendimiento de última generación de YOLOv9:

  • Arquitectura optimizada GELAN – Mejora la eficiencia de los 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 los parámetros y los cálculos entre un 10 y un 15 % con respecto a YOLOv8 con mayor precisión. Permite una inferencia más eficiente.
  • Resultados superiores en todos los tamaños de modelos – Establece nueva tecnología de punta para configuraciones de modelos livianos, medianos y grandes. Supera a los modelos fuertemente entrenados previamente.
  • Aplicabilidad ampliada – Una mayor eficiencia amplía los casos de uso viables, como la detección en tiempo real en dispositivos periféricos.

Al abordar directamente la precisión, la eficiencia y la aplicabilidad, YOLOv9 avanza la detección de objetos para satisfacer diversas necesidades del mundo real. Las actualizaciones proporcionan una base sólida para la innovación futura en esta capacidad crítica de visión por computadora.

He pasado los últimos cinco años sumergiéndome en el fascinante mundo del aprendizaje automático y el aprendizaje profundo. Mi pasión y experiencia me han llevado a contribuir en más de 50 proyectos diversos de ingeniería de software, con un enfoque particular en AI/ML. Mi curiosidad constante también me ha atraído hacia el procesamiento del lenguaje natural, un campo que estoy ansioso por explorar más a fondo.