Detección de Objetos II: RetinaNet

Rubén Rodríguez Abril

RetinaNet es un algoritmo avanzado de detección de objetos, que consigue extraordinarias mejoras respecto a YOLO tanto en el tiempo de ejecución como en ahorro de poder computacional.

Detección en dos fases

La detección de objetos y la segmentación de instancia, técnicas de Visión Artificial presentadas en artículos anteriores, requieren del empleo de extensos recursos computacionales, lo que dificulta su uso en el procesamiento de imágenes en video.

Particularmente, el algoritmo de Mask R-CNN analizado en el artículo inmediatamente anterior, alberga el inconveniente de que necesita de dos fases para realizar su tarea de segmentación de instancia. En la primera de ellas, una red auxiliar propone ventanas candidatas. En la segunda fase, cada una de estas ventanas es clasificada según el objeto que contenga, se ajustan sus coordenadas y se genera una máscara binaria. La existencia de dos fases en lugar de una, aunque ralentiza la tarea de visión, proporciona en cambio al sistema una mayor precisión en sus resultados.

RetinaNet

El equipo de Facebook AI Research (FAIR), liderado por Tsung-Yi Lin, presentó un nuevo algoritmo de detección de objetos, RetinaNet, que a pesar de realizar la tarea de detección de un sólo golpe, obtenía resultados comparables a los de Faster R-CNN (de dos fases).

Los autores del trabajo se percataron de que en algoritmos de detección de objetos y segmentación de instancia, la inmensa mayoría de las ventanas creadas por la red durante las fases iniciales de su entrenamiento eran negativos (no capturaban ningún objeto). Como consecuencia de ello, en la formación de la función de pérdida existía una descompensación a favor de dichos negativos. La red entonces devenía inestable y no lograba converger a ningún punto. En los algoritmos de dos fases (como Mask R-CNN), este fenómeno no sucedía ya que la red auxiliar realizaba previamente una labor de descarte de estos negativos falsos.

Función de pérdida en RetinaNet

Por este motivo, los investigadores propusieron modificar la función de pérdida de la entropía cruzada, de tal manera que los negativos fáciles de detectar contribuyeran muy poco a la misma. La nueva función, denominada pérdida focal (focal loss, FL) tiene esta forma:

FL = -(1 – p_{t})^{γ}log  p_{t}

donde FL es la función de pérdida, p_{t} es la probabilidad atribuida por la red a la categoría correcta y γ una constante. Cuando p_{t} es muy alta, significa que la red ha acertado de una manera relativamente fácil.

En YOLO, un algoritmo que también funciona de un sólo golpe, la contribución a la función de pérdida de aquellas casillas que no detectan ningún objeto es diez veces inferior a la de las que sí realizan la detección. Tanto en este caso como en RetinaNet, lo que se pretende es corregir la descompensación a favor de los falsos negativos.

Arquitectura de RetinaNet

La arquitectura de la red se compone de un armazón (backbone) y una cabeza (head).

Armazón

El armazón es una red residual seguida una red piramidal de características (Feature Pyramid Net, FPN). El armazón en su conjunto tiene una arquitectura muy parecida a U-Net, que ya analizamos en el capítulo de Segmentación Semántica. La red en este caso tiene dos ramas. Una ascendente, en la que las capas de convolución hacen disminuir la resolución de de los mapas, aumentando a cambio el número de los mismos. Y otra descendente en la que sucede exactamente lo contrario. Existen conexiones atajo que conectan ambas ramas a varios niveles.

Un ejemplo de RetinaNet con ResNet50. Las capas de la red piramidal de características (excepto la primera P7) la forman composiciones entre una operación de convolución sobre las salidas de los bloques de ResNet y una operación de aumento de resolución (upsampling) sobre la capa inmediatamente anterior.

La rama ascendente es una red residual. Puede tratarse de ResNet50 o de ResNet101. En cualquiera de los casos, al concluir cada bloque la resolución de los mapas de características se reduce a la mitad por cada lado, al mismo tiempo que una conexión atajo transfiere la información a una capa equivalente de la rama descendente. Una convolución de 1×1 asegura que el número de mapas de características de la conexión atajo se corresponde con el nivel de la red descendiente al que se incorpora.

La rama descendente es una Red Piramidal de Características (Feature Pyramid Network, FPN). Se trata de una red convolucional en la que cada capa duplica (para cada lado) la dimensión de los mapas de la capa anterior. La capa más baja es P1, que tiene cuatro veces menos píxeles que la imagen de entrada, mientras que la más alta, P5 tiene 32×32 píxeles.

Cabeza

La cabeza extrae información de cada uno de los niveles de la rama descendente. En cada una de estas salidas, la información se hace pasar a través de dos subredes: una de ellas, la subred clasificadora determina la clase a la que pertenece el objeto detectado (0, en el caso de ausencia de detección) y la otra, la subred regresora, señala las coordenadas de las ventanas.

En cada nivel se definen nueve anclas, que son ventanas prototipo de proporciones 1:1, 1:2, 2:1 a tres escalas diferentes. La subred regresora define las ventanas respecto a estas anclas, y señala cuánto se desplazan las coordenadas de cada nueva ventana respecto a su prototipo.

La cabeza de Retinanet la constituyen las salidas de todas las capas de FPN, cada una formada por dos subredes. 256 mapas de características se hacen pasar a través de 4 capas de convolución de 3×3 paralelas. Y finalmente una convolución de 1×1, reduce de nuevo el número de mapas de características en ambas redes a ak en la subred clasificadora y 4k en la subred regresora, donde a es el número de anclas y K el de clases. Cada mapa de la subred regresora corresponde a una de las cuatro desplazamientos de coordenadas respecto a un ancla.

Al igual que sucede en el caso de Mask R-CNN, sobre la última capa de las subredes se aplica un retículo de 3×3, que va recorriendo todos los píxeles. En cada una de las posiciones de este retículo, el sistema calcula 9 ventanas y determina las puntuaciones de las mismas para cada una de las clases. Si ninguna de ellas obtiene una puntuación mínima, es descartada.

Interpretación

Como el lector podrá suponer, las ventanas extraídas de la cima de la pirámide contienen información global, y suelen abarcar buena parte, o la mayoría de la pantalla de entrada. Por el contrario, las que se extraen de la base de la pirámide suelen encerrar objetos pequeños, cuya localización requiere de alta resolución.

Conclusiones

RetinaNet consiguió combinar la precisión media de los sistemas de detección de dos fases (Mask R-CNN) con la rapidez de los sistemas, que funcionaban mediante un sólo golpe (por ejemplo YOLO).

Ello se consiguió mediante la introducción de la red piramidal de rasgos (FPN) en la arquitectura de red, pero sobre todo mediante la modificación de la función de pérdida de la entropía cruzada, la “pérdida focal” o FL.

En la siguiente sección veremos cómo las innovaciones de RetinaNet fueron aprovechadas para crear un nuevo algoritmo de segmentación de instancia que también funcionaba de un sólo golpe: YOLACT

Lecturas recomendadas

-Tsung-Yi Lin et al. (2018). Focal Loss for Dense Object Detection.

-Tsung-Yi Lin et al. (2017). Feature Pyramid Networks For Object Detection.

Imagen destacada de GoogLeNet
Deep Learning

GoogLeNet