Segmentación de Instancia II: YOLACT

Rubén Rodríguez Abril

YOLACT representa una notable mejora respecto a otros algoritmos de Segmentación de Instancia. Estos avances posibilitan a la red la detección de los objetos en tiempo real con una gran precisión.

YOLACT

En este artículo analizaremos uno de los algoritmos de visión artificial más avanzados del estado de la técnica: YOLACT. Su tarea es la segmentación de instancia, que puede realizar con una gran precisión y gran velocidad gracias a las innovaciones introducidas por el algoritmo de RetinaNet, analizado en el artículo anterior.

En la segmentación de instancia, la red detecta los objetos existentes en una imagen de entrada, encierra a cada uno de ellos en una ventana y les atribuye una máscara binaria. La máscara binaria señala qué píxeles de la ventana pertenecen al objeto detectado y cuáles no.

Máscaras y prototipos

El algoritmo YOLACT presenta como particularidad que las máscaras de segmentación se elaboran mediante la combinación lineal de prototipos de máscaras de segmentación. Estos prototipos pueden tener las más diversas apariencias: algunos de ellos parten la imagen en dos, otros trazan contornos en torno a los objetos o se activan en las regiones de fondo. La red elabora los prototipos y determina a la vez los coeficientes que se atribuyen a cada uno de ellos, pero la generación de estos parámetros es independiente y atañe a dos redes paralelas específicas.

Al procesar una imagen el algoritmo YOLACT genera un número fijo de prototipos de máscaras y, por cada ventana que detecta, un vector con el mismo número de coeficientes (en la imagen, los valores encima de los prototipos). Estos coeficientes ponderan cada uno de los prototipos. La suma lineal de cada prototipo ponderado resulta en la máscara de segmentación de la ventana.

Arquitectura de la red

La arquitectura de YOLACT es muy parecida a la de RetinaNet. La red se compone de dos secciones diferentes:

-Un armazón, que es una red convolucional de gran profundidad dividida en dos secciones consecutivas, ascendente y descendente. La sección ascendente transforma la información geométrica local en información global y semántica. Es una red residual ResNet-101. La sección descendente transforma de nuevo la información geométrica global en local. Se trata de una red piramidal de rasgos (FPN), cuyos pormenores se describieron en el artículo inmediatamente anterior de esta serie.

-La cabeza extrae información de los diferentes niveles de la FPN, y a partir de ellos propone las coordenadas de las ventanas, la clasificación de los objetos encerrados en las mismas y los coeficientes de los mismos.

-La red auxiliar Protonet encargada de elaborar los prototipos.

Protonet

Protonet es una red convolucional, que a partir de la última capa de la pirámide elabora k prototipos diferentes. Los 256 mapas o canales de resolución 69×69 de la base de la pirámide son sometidos a tres operaciones sucesivas de convolución 3×3. Tras ello, otra operación de convolución 3×3 aumenta la resolución a 138×138. La última operación, una convolución 1×1, reduce el número de canales a k. Estos canales son los prototipos.

Ejemplo de Protonet de 32 prototipos de máscaras de segmentación (k = 32)

Cabeza predictora

La cabeza predictora es similar a la de RetinaNet. Las ventanas se definen respecto a unas anclas. A cada nivel de la pirámide se crean nueve anclas, correspondientes a proporciones de 1:1, 1:2, 2:1, y tres escalas diferentes. La red calcula los desplazamientos de coordenadas respecto a las anclas, la clase de la ventana y los coeficientes.

Se aplican dos convoluciones sucesivas de 3×3 sobre las capas de cada nivel de la pirámide. Tras ello, convoluciones paralelas de 1×1, crean tres capas paralelas diferentes: la primera de ellas, de ca canales/mapas de características, contiene información relativa a las clases, la segunda, de 4a canales, información relativa a las coordinadas de las ventanas, y la tercera, de ka canales, información relativa a los coeficientes de los prototipos; donde c es el número de clases, a el número de anclas y k el de prototipos.

Una de las redes de la cabeza de YOLACT. Este ejemplo de arquitectura aplica 9 anclas a partir de las cuales genera las ventanas, un número de clases de 80 y 32 coeficientes, uno por cada prototipo.

Creación de máscaras y ventanas

Generación de la ventana

Los prototipos, creados por Protonet, son los mismos para todas las ventanas, pero no así sus coeficientes, que son únicos para cada ventana. Al igual que en la red citada, un retículo de 3×3 va barriendo todos los canales, y calculando todas las variables citadas. Para cada posición el retículo calcula los valores correspondientes a las 9 anclas. Aquellas ventanas que no puedan ser asignadas a una clase son descartadas.

Una vez que las ventanas han sido calculadas, se aplica respecto a ellas el procedimiento de supresión no-maximal (non maximal suppresion, NMS): si dos ventanas, correspondientes a una misma clase, tienen un índice de Jacquard superior al de un cierto umbral, la ventana que tenga menor puntuación es eliminada.

Composición de la máscara

Tras la creación de las ventanas, la máscara binaria de cada una de ellas se crea como sigue: los prototipos son recortados de acuerdo con las coordenadas de la respectiva ventana. Y tras ello se superponen. A cada prototipo se le atribuirá una intensidad proporcionar a su coeficiente en esa ventana. El último paso es el de la binarización: los píxeles que sobrepasen cierto umbral de excitación, se les atribuirá valor de uno. A los que no lo hagan, valor de cero.

Función de pérdida

La función de pérdida es extraordinariamente simple: se trata de la entropía categórica en la subred clasificadora, la entropía binaria en el caso de las máscaras y regresión L1 para el caso de las coordenadas de las ventanas. Se les asigna un peso respectivo de 1, 1,5 y 6,125. Para impedir que pueda existir una descompensación durante el entrenamiento de la red que provoque la divergencia de la misma, se establece una ratio de negativos/positivos de 3 a 1.

Mejoras del algoritmo

Los autores YOLACT presentaron pocos meses después una versión mejorada del algoritmo, YOLACT++. El nuevo sistema era capaz de confeccionar máscaras binarias, con una precisión media aceptable (34,1 mAP en MS COCO), a 33,5 marcos por segundo. Es una velocidad, pues, comparable a la del cine o las transmisiones en streaming.

Tres son las grandes novedades introducidas: una unidad de reclasificación de máscaras, convoluciones deformables y anclas con mejores proporciones.

Clasificación de máscaras

Se trata de una cuarta salida dentro de la cabeza. Su misión es predecir la fiabilidad de la ventana para cada una de las clases.

La entrada de la nueva unidad es la imagen al completo, con todos sus bits a cero salvo los correspondientes a la ventana. En este caso, los bits son similares a los de su máscara binaria.

Sucesivas capas transforman la imagen en un vector de c dimensiones, donde c es el número de clases.

convoluciones deformables

En una convolución regular, el kernel se despliega sobre un retículo regular de n×n dimensiones. En una convolución deformable, las casillas del retículo pueden variar de posición y dispersarse a lo largo de la capa de entrada. Hay una deformación geométrica del kernel. Los coeficientes de desplazamientos de las casillas son aprendidos.

Conclusiones

La principal novedad de YOLACT es la existencia de prototipos, que son un subtipo de mapas de características a partir de los cuales pueden dibujarse todos los objetos de la imagen.

Tal y como expusimos en nuestros artículos sobre GoogLeNet y arquetipos en la IA, en las redes convolucionales, las posibles configuraciones de cada capa convolucional reciben el nombre de espacios de características o espacios de Fukushima. Por lo general, la información almacenada por estos espacios es de cada vez mayor nivel de significación conforme avanzamos hacia la salida. Así, en GoogLeNet, las neuronas del inicio se activan ante la presencia de líneas o círculos. Las de capas más profundas responden ante texturas, y por último ante objetos concretos. YOLACT ha demostrado que, por medio de ResNets y redes piramidales (FPN), es posible que una capa convolucional defina prototipos: imágenes cuyas combinaciones lineales son capaces de reconstruir los objetos de la imagen original, y que albergan información geométrica suficiente como para dibujar con precisión todas las ventanas de localización

Lecturas recomendadas

-Bolya et al (2019). YOLACT: Real-time Instance Segmentation.

-Bolya et al (2019). YOLACT++: Better Real-time Instance Segmentation.

La Máquina Oráculo utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies