Redes de transformadores espaciales en MATLAB

Este artículo abordará el tema de la construcción de capas personalizadas de redes neuronales, utilizando la diferenciación automática y trabajando con capas estándar de aprendizaje profundo de redes neuronales en MATLAB basado en un clasificador que utiliza una red de transformación espacial.





Spatial Transformer Network (STN) es un ejemplo de módulos LEGO diferenciables que puede utilizar para construir y mejorar su red neuronal. STN, aplicando una transformación afín entrenada con interpolación posterior, priva a las imágenes de invariancia espacial. En términos generales, la tarea de STN es rotar o reducir / ampliar la imagen original para que la red del clasificador principal pueda identificar más fácilmente el objeto deseado. Un bloque STN se puede colocar en una red neuronal convolucional (CNN), trabajando en él en su mayor parte de forma independiente, aprendiendo sobre gradientes provenientes de la red principal (para más detalles sobre este tema, vea los enlaces: Habr  y Manual ).





En nuestro caso, la tarea es clasificar 99 clases de parabrisas de automóviles, pero primero, comencemos con algo más simple. Para familiarizarnos con este tema, tomaremos la base de datos MNIST a partir de números escritos a mano y crearemos una red de capas neuronales de aprendizaje profundo de MATLAB y una capa de transformación de imágenes afines personalizada (puede ver la lista de todas las capas disponibles y su funcionalidad aquí ).





Para implementar una capa personalizada de transformación, usamos una capa de usuario de plantilla y la posibilidad de MATLAB para diferenciación automática y construir una propagación hacia atrás de la derivada del error, que se realiza a expensas de conjuntos de entrenamiento en profundidad para ciclos de entrenamiento de usuario - dlarray (familiarizado con la plantilla puede estar en el enlace  , para familiarizarse con las estructuras de dlarray puede para enlace ).





Para implementar las capacidades de dlarray, necesitamos registrar manualmente la transformación afín de la imagen, ya que las funciones de MATLAB que implementan esta característica no admiten estructuras de dlarray. A continuación se muestra la función de transformación que hemos escrito, el proyecto completo está disponible aquí .





, , . , . , , - - .  





, . Y, . (, ), . .





Y

































, , STN. MNIST.





Estructura de red.
.
Los resultados del aprendizaje.
.

, , , , , .





, MNIST, .





— , — , — RGB, , , . . , , , , 2, , 0, , , . , , STN  , , , . , . STN - , , dropout  STN.





, , [0;255], [0;1], — . .





Datos de entrada de red con números.
.
Datos a la entrada de la red con gafas.
.

, 255 0.3 0.75, . , .





Capa de normalización dentro y fuera.
.

, , , , [-10;10] [-50; 50]. MATLAB, dlarray . .





.





Estructura de red.
.
Los resultados del aprendizaje.
.

, , , , 90. , , , , , . , , , , .





, STN, . .





Los resultados del aprendizaje.
.

, .





, , STN  .








All Articles