Redes de transformadores espaciais em MATLAB

Este artigo levantará os tópicos de construção de camadas customizadas de redes neurais, usando diferenciação automática e trabalhando com camadas de aprendizagem profunda padrão de redes neurais no MATLAB com base em um classificador usando uma rede de transformação espacial.





A Spatial Transformer Network (STN) é um exemplo de módulos LEGO diferenciáveis ​​que você pode usar para construir e melhorar sua rede neural. STN, aplicando uma transformada afim treinável com subsequente interpolação, priva as imagens de invariância espacial. A grosso modo, a tarefa do STN é girar ou reduzir / ampliar a imagem original para que a rede classificadora principal possa identificar mais facilmente o objeto desejado. Um bloco STN pode ser colocado em uma rede neural convolucional (CNN), atuando nela em sua maior parte de forma independente, aprendendo sobre os gradientes vindos da rede principal (para mais detalhes sobre este tópico, consulte os links: Habr  e Manual ).





No nosso caso, a tarefa é classificar 99 classes de para-brisas de automóveis, mas, primeiro, vamos começar com algo mais simples. Para nos familiarizarmos com este tópico, pegaremos o banco de dados MNIST de números manuscritos e construiremos uma rede de camadas neurais de aprendizado profundo do MATLAB e uma camada de transformação de imagem afim personalizada (você pode ver a lista de todas as camadas disponíveis e suas funcionalidades pelo link ).





Para implementar uma camada de transformação personalizada, usaremos um modelo de camada personalizado e a capacidade do MATLAB de diferenciar automaticamente e construir retropropagação da derivada de um erro, que é implementado usando matrizes de aprendizagem profunda para ciclos de treinamento personalizados - dlarray (você pode se familiarizar com o modelo pelo link  , você pode se familiarizar com as estruturas dlarray para link ).





Para implementar os recursos do dlarray, precisamos registrar manualmente a transformação afim da imagem, uma vez que as funções do MATLAB que implementam esse recurso não suportam estruturas dlarray. Abaixo está a função de transformação que escrevemos, todo o projeto está disponível aqui .





, , . , . , , - - .  





, . Y, . (, ), . .





Y

































, , STN. MNIST.





Estrutura da rede.
.
Resultados de aprendizagem.
.

, , , , , .





, MNIST, .





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





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





Dados de entrada de rede com números.
.
Dados na entrada da rede com óculos.
.

, 255 0.3 0.75, . , .





Camada de normalização dentro e fora.
.

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





.





Estrutura da rede.
.
Resultados de aprendizagem.
.

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





, STN, . .





Resultados de aprendizagem.
.

, .





, , STN  .








All Articles