Segmentación de Instancia I: Mask R-CNN
Rubén Rodríguez Abril
La Segmentación de Instancia combina el método de Segmentación Semántica que interpreta los objetos de una imagen y la Detección de Objetos, que los localiza dentro de la imagen. En este artículo expondremos uno de las arquitecturas más usadas para la Segmentación de Instancia, una red denominada Mask R-CNN.
Segmentación de Instancia
La Segmentación de Instancia es aquel sistema de Visión Artificial en el que cada objeto es singularizado en una imagen por medio de una ventana delimitadora (bounding box) y una máscara binaria, que determina qué pixeles de dicha ventana pertenecen al objeto localizado. Se trata, por tanto, de un sistema híbrido entre la detección de objetos y la segmentación semántica, y en cierto modo puede ser considerado como una evolución del primero.

El sistema toma como entrada una imagen y ofrece como salida varios cuadros delimitadores y sus máscaras binarias. El cuadro delimitador es una terna de 5 números, que se corresponden con el centro de la ventana (x,y), su altura (h), anchura (b) y la clase (c) a la que pertenece. La máscara binaria es un mapa de bits de m×n dimensiones. El número uno corresponde a la presencia del objeto en el píxel de que se trate y el cero a su ausencia.
Estructura del algoritmo
En los siguientes párrafos analizaremos el funcionamiento de uno de los algoritmos más utilizados en Segmentación de Instancia, Mask R-CNN, que evolucionó a partir de un procedimiento concebido para localizar objetos: R-CNN. A diferencia de lo que sucede con YOLO, que funciona de un sólo “golpe”, en Mask R-CNN el procedimiento de detección se compone, en líneas generales, de los siguientes pasos
Armazón
La imagen de entrada se hace pasar a través de una red convolucional muy profunda, generalmente residual, que recibe el nombre de armazón.
RPN
A partir de los datos de la última capa convolucional del armazón, una segunda red denominada RPN (Region Proposal Network) crea decenas o centenares de ventanas candidatas, destinadas a ser analizadas. Las ventanas candidatas (que no son más que paralepípedos) se proyectan sobre la última capa convolucional del armazón, y así se extraen parcelas denominadas regiones de interés o, en lengua inglesa, regions of interest (RoIs).
Red detectora
Estas parcelas tienen que ser redimensionadas a un cuadrado de dimensiones n×n mediante un procedimiento de agrupación max-pooling denominado RoiAlign.
Una vez redimensionados, los cuadrados resultantes pueden hacerse pasar a través de una tercera red detectora, que tiene tres salidas diferentes. La primera de ellas, el clasificador, señala qué posibilidad existe de que la región encierre un objeto perteneciente a una clase determinada. La segunda salida regresor modifica las coordenadas de la región de interés, y sirve para reenfocar la imagen. La tercera salida es un mapa binario de dimensiones n×n, la máscara de segmentación.

En el caso de que hubiera dos regiones solapadas conteniendo el mismo tipo de objeto, la que tenga peor puntuación es eliminada. Se considera que existe solapamiento cuando el índice de Jaccard (intersección sobre unión) de las dos regiones sobrepasa un umbral determinado (supresión no maximal).
Ejemplo de Segmentación de Instancia: la red de Mask R-CNN
Las redes de segmentación de instancia se componen, al igual que muchos otros sistemas de visión artificial, de dos partes: una sección convolucional, que en algunas publicaciones recibe el nombre de armazón (backbone), y otra sección detectora, que recibe el nombre de cabeza (head).
Armazón
En Mask R-CNN el armazón está compuesto de la sección convolucional de ResNet50, que como su propio nombre indica, es una red residual compuesta de 50 capas. En ResNet50, las capas convolucionales se agrupan en 4 bloques sucesivos. Vienen seguidas por una capa de agrupación (pooling) y otra densamente conectada. Los autores de Mask R-CNN usan como armazón tan sólo a los cuatro bloques convolucionales, a los que denominan ResNet50-C4.
Cabeza
La cabeza se estructura en una red auxiliar (RPN), que realiza propuestas de regiones candidatas y una red principal, que analiza dichas regiones. Las dos redes toman su entrada del mismo armazón convolucional.
Red de Propuestas de Regiones RPN
La red auxiliar RPN tiene por entrada un cuadro de 3×3 dimensiones, que está densamente conectado con una segunda capa de 256 o 512 neuronas. En la sección tercera y final de la red hay dos capas de salida, también densamente conectadas con la anterior, que contienen respectivamente, las coordenadas de las ventanas y la posibilidad de que haya en ellas objetos.
La red auxiliar va progresivamente barriendo, con su entrada de 3×3, la última capa de ResNet50-C4.

A la izquierda un mapa de características de la última capa del armazón. El recuadro magenta muestra una posible entrada de 3×3 para RPN. Esta entrada supone la composición de la sección sobre todos los mapas de la última capa convolucional. A la derecha se marcan con cruces los centros de cada una de estas entradas para un mapa de características de 8×8 (y stride 1).
La definición de las ventanas se realiza respecto a 15 ventanas prototipo denominadas anclas. Las anclas son, respectivamente, de proporciones 1:1, 2:1 y 1:2, y cinco escalas predeterminadas de diferentes tamaños. Todas ellas están centradas en el centro del retículo 3×3.

Un ejemplo de seis anclas a partir de dos tamaños y tres proporciones distintas, cuyo centro es la sección de 3×3 que entra en la red.
Las 60 (15×4) neuronas de esta capa señalan la tasa de deformación y de desplazamiento de cada ventana respecto a su ancla. Su función de pérdida es una regresión. La segunda de las capas de salida es un simple clasificador binario. Señala la posibilidad de que la ventana propuesta contenga un objeto. La función de pérdida es la entropía binaria cruzada. Si la posibilidad sobrepasa el umbral de 0,5, la ventana es propuesta a la red detectora.

RoiAlign y Red Detectora
La segunda parte de la cabeza de la red es el detector. Se encarga de analizar las propuestas de ventana que ha realizado. Las cuatro coordenadas de la propuesta no son proyectadas sobre la imagen de entrada sino sobre la última capa convolucional del armazón (ResNet50-C4). El resultado de esta proyección recibe el nombre de región de interés (Region of Interest, RoI).
Antes de ser procesada por el detector esta región de interés debe ser deformada a un cuadrado de resolución de 7×7 píxeles. Ello se hace mediante una operación de pooling (pixelado) denominada RoIAlign.
La región de interés, ya con dimensiones de 7×7, se hace pasar entonces por la red detectora.
Ésta viene integrada por el quinto bloque de ResNet50, que crea 2048 mapas de características, seguido de una convolución con kernel 3×3 y stride 1 (produce 1024 mapas), y de una sección de salida.
Creación de la máscara de segmentación
La sección de salida tiene dos ramas. En la primera de ellas, se aplican procesos dos procesos sucesivos de desconvolución que disminuyen el número de mapas de características a 80 y aumentan la resolución de los mismos a 14×14 píxeles. Cada uno de estos mapas de características representa las 80 clases de objetos de la base MS COCO. Y los valores de cada neurona señalan la probabilidad de que en dicho píxel haya un objeto (o no) de la clase respectiva. Estas máscaras binarias cuadradas (una para cada clase) se redimensionan entonces a la anchura y altura de la nueva ventana. Por último, los valores de los píxeles se «binarizan». Es decir, se anulan si su valor es inferior a 0.5. En caso contrario, toman el valor de uno.
Creación de la nueva ventana
La segunda rama consiste en una operación de average-pooling seguida de las dos capas de salida paralelas. La operación de average-pooling implica hacer la media, para cada mapa de características, del valor de activación de sus 49 píxeles. Obtenemos con ello un vector de 2.048 valores que se conecta densamente con las dos capas de salida paralelas. La primera capa de salida clasificadora, contiene 80 neuronas que representan las puntuaciones de las 80 clases. La segunda capa regresora, contiene modificaciones a las coordenadas de la región de interés. A partir de ella se calculan las coordenadas definitivas de la nueva ventana.
En todas las capas, la función activación es la rectificadora (ReLU), salvo en la salida clasificadora. Las neuronas de esta última tienen una activación sigmoide a la que se aplica además otra función softmax.

Un ejemplo de red detectora para el caso en que el armazón sea ResNet-50. La primera de las capas convolucionales de esta red corresponde a la última de las capas del armazón (por tanto RPN operaría sobre la penúltima de dichas capas). La ruta de la izquierda comienza con una capa de desconvolución que amplia la resolución (en morado). La ruta de la izquierda lo forman capas densamente conectadas que devuelven la probabilidad mayor (en este caso gato de entre las 80 clases) y ajustan la ventana.
Función de Pérdida en Segmentación de Instancia
En Segmentación de Instancia se definen dos funciones de pérdida diferentes. Una para la RPN y otra para la red detectora.
Función de pérdida para la RPN
La función de pérdida de la RPN tiene esta estructura
Se dice que una ventana es positiva si ostenta el mayor índice de Jacquard con una ventana de la verdad subyacente (o un índice de 0,7, aunque no sea el mayor). En ese caso, el valor de p_{i}^{*} es uno. En caso contrario, la ventana es negativa y p_{i}^{*} es cero. p_{i} es la probabilidad que la red atribuye a que la ventana propuesta sea positiva y L_{cls} es la entropía binaria entre ambas variables y equivale a –log p_{i}.
L_{reg} es una regresión de las coordenadas propuestas t_{i} respecto a las de la verdad subyacente, t_{i}^{*}. En el sumatorio sólo participan aquellas ventanas que ostenten una calificación positiva. N_{reg} y N_{cls} representan los números de ventanas y de clases, respectivamente. λ es una constante.
Función de pérdida de la red detectora
La función de pérdida de la red detectora se compone de tres términos diferentes:
La función de pérdida L_{cls} es la correspondiente al clasificador. Es la entropía categórica entre la categoría predicha u y la de la verdad subyacente v y su fórmula es -log u, para la clase correcta. El segundo elemento, L_{caja}, es una regresión de las coordenadas propuestas por la red a las existentes en la verdad subyacente. Sólo se computa cuando la ventana pertenece a una clase diferente a 0. El último elemento L_{masc} es una entropía categórica binaria aplicada sobre la máscara. Aunque la red predice N máscaras binarias pertenecientes a N clases, sólo la máscara perteneciente a la clase correcta participa en el cálculo de la función de pérdida.
Conclusión
La segmentación de instancia es una de las disciplinas de visión artificial que mayor desarrollo están teniendo en los últimos años. En la actualidad, de lo que se trata es de diseñar sistemas que sean lo suficientemente rápidos como para procesar decenas de marcos por segundo, y por lo tanto, puedan localizar objetos en vivo. En el próximo artículo analizaremos otro sistema de segmentación de instancia basado en el algoritmo YOLO. Se trata de YOLACT++, cuyo rendimiento es, en algunas circunstancias, del orden de dos o tres veces superior que el de Mask R-CNN.