¿Cómo funcionan las redes de transformadores espaciales?

En mi opinión, podemos entenderlo mejor en un ejemplo simple: recortar la cabeza del pájaro (en la imagen de entrada existe un pájaro completo).

Durante el paso directo : en primer lugar, la entrada (mapa de características) U se pasa a la red de localización, que genera una matriz de parámetros theta (tenga en cuenta que theta está condicionada a la entrada actual). Entonces, nuestro mapa de características de salida esperado V es la cabeza del ave, por lo tanto, de acuerdo con la transformación afín, multiplicamos la verdad de tierra de salida V por theta , que tiene como objetivo encontrar la región en la imagen de entrada que mejor coincida con V Este proceso se llama generador de cuadrícula . Finalmente, usamos el generador para muestrear U (como una operación PS) para obtener transformaciones predichas. A través del cálculo de la pérdida de salida, la pérdida fluirá mediante el proceso Back-Propogation para actualizar los parámetros.

Durante el paso hacia atrás : los gradientes de la siguiente capa fluyen hacia atrás en dos corrientes: (1) V -> U -> capas anteriores ; (2) V -> (x_sample, y_sample) -> theta -> parámetros en la red de localización (porque theta está condicionado a la entrada de corriente, por lo tanto, el segundo flujo se detiene aquí).

Una red de transformadores espaciales en sus palabras más simples aprende a seleccionar la región correcta de la imagen de entrada, rotar esa parte de la imagen para normalizar la pose y también escalar la región recortada antes de alimentarla a la CNN.

Los parámetros de transformación afines aprendidos del módulo de transformador espacial le permiten realizar las tareas anteriores. Para hacerlo de manera efectiva, la Red de Transformadores Espaciales simplemente construye otra pequeña CNN dentro de sí misma que toma la imagen de entrada y aprende los parámetros de transformación afines.

Como estos parámetros son números continuos (6 de ellos como parte de una matriz), solo actúa como un módulo de regresión.

Una vez que se aprenden los parámetros, estos parámetros se utilizan para cortar, rotar y escalar una parte particular de la imagen de entrada y luego se alimenta a la CNN para su clasificación.

En lugar de permitir que las capas convolucionales genéricas aprendan ciertas variaciones, como la escala y la rotación en el plano (o transformaciones más afines en general) que requerirían muchos ejemplos de entrenamiento para aprender correctamente; El transformador espacial regresa la transformación afín para aplicarse a mapas de activación completos.

Ya sabemos que tales transformaciones son importantes en el reconocimiento, por ejemplo, si desea reconocer a un perro pequeño en medio de un montón de desorden, desea ‘acercar’. Una capa de transformador le da directamente a la red la capacidad de aprender estas transformaciones (con los parámetros apropiados), a diferencia de una CNN clásica donde estas transformaciones tienen que ser aproximadas implícitamente por varias capas de no linealidades más genéricas. Puede pensar en la capa como una forma de regularización o inducir conocimiento previo en el marco de CNN.

Todos aquí han dado muy buenas respuestas. Solo me gustaría agregar que la capa del transformador es una capa de un disparo, por lo que es posible que no funcione bien. Por esta razón, hoy en día se prefiere algo como g-cnns y / o agrupación cíclica.