Arquitetura de rede neural convolucional | Arquitectura CNN

Conteúdo

Este artigo foi publicado como parte do Data Science Blogathon.

Introdução

Você está trabalhando em um projeto de reconhecimento de imagem ou detecção de objetos, mas não tinha o básico para construir uma arquitetura??

Neste artigo, veremos quais são as arquiteturas de rede neural convolucional a partir do básico e usaremos uma arquitetura básica como um estudo de caso para aplicar nossos aprendizados. O único pré-requisito é que você só precisa saber como funciona a convolução. se preocupe é muito simples !!

Vamos pegar uma rede neural convolucional simples,

90650dnn2-5115625

Iremos em camadas para obter informações detalhadas sobre esta CNN.

Primeiro, há algumas coisas para aprender com a capa 1 o que é passos largos e acolchoamento, veremos cada um deles em breve com exemplos

Suponha que isso na matriz de entrada de 5 × 5 e um filtro de matriz 3X3, para quem não sabe o que O filtro é um conjunto de pesos em uma matriz que é aplicado em uma imagem ou matriz para obter as características requeridas., procure por convolução se for a primeira vez.

Observação: Sempre pegamos a soma ou média de todos os valores ao fazer uma convolução.

Um filtro pode ser de qualquer profundidade, se um filtro tem uma profundidade d, pode ir a uma profundidade de camadas d e convolver, quer dizer, adicionar tudo (pesos x ingressos) de d camadas

69676dnn3-4639825

Aqui a entrada é grande 5 × 5 depois de aplicar um kernel ou filtros 3 × 3, um mapa das características de saída de 3 × 3, então vamos tentar formular isso

65111screenshot20166-5880710

Então, a altura de saída é formulada e a mesma com a largura de ou / p também …

O preenchimento

Ao aplicar as convoluções, não obteremos as mesmas dimensões de saída que as dimensões de entrada, vamos perder dados nas bordas, então adicionamos uma borda de zeros e recalculamos a convolução que cobre todos os valores de entrada.

99433dnn4-3579501

Tentaremos formular isso,

65969screenshot20175-9136898

Aqui 2 é para duas colunas de zeros junto com a altura e a largura, e formular o mesmo para a largura também

Strides

Às vezes não queremos capturar todos os dados ou informações disponíveis, então pulamos algumas células vizinhas para visualizá-lo,

92373dnn5-6792110

Aqui, a matriz de entrada ou imagem tem dimensões 5 × 5 com um filtro 3 × 3 e um passo de 2 então, toda vez que pulamos duas colunas e convolvemos, vamos formular isso

21732screenshot20167-1634218

Se as dimensões estiverem em flutuação, pode tomar teto () na saída, quer dizer (próximo próximo ao inteiro)

Aqui, H se refere à altura, então a altura de saída é formulada e a mesma com a largura de ou / p também e aqui 2 é o valor do passo para que você possa torná-lo igual a S nas fórmulas.

Agrupamento

Em termos gerais, agrupamento refere-se a uma pequena parte, então aqui pegamos uma pequena parte da entrada e tentamos pegar o valor médio chamado pool médio ou pegar um valor máximo chamado pool máximo, então, ao agrupar em uma imagem, não estamos obtendo todos os valores, estamos considerando um valor resumido de todos os valores presentes !!!

54575dnn6-1331138

aqui, este é um exemplo de agrupamento máximo, então aqui, dando um passo de dois, estamos pegando o valor máximo presente na matriz

Função de gatilho

A função de ativação é um nó que é colocado no final ou entre as redes neurais. Eles ajudam a decidir se o neurônio vai disparar ou não.. Temos diferentes tipos de funções de gatilho, como na figura acima, mas para este post, meu foco estará em Unidade linear retificada (retomar)

54331dnn7-8546250

Não deixe cair o queixo, isso não é tão complexo esta função simplesmente retorna 0 se seu valor for negativo, pelo contrário, retorna o mesmo valor que você deu, nada mais do que elimina saídas negativas e mantém valores entre 0 e + Infinidade

Agora que aprendemos todos os fundamentos necessários, Vamos estudar uma rede neural básica chamada LeNet.

LeNet-5

Antes de começar, veremos quais são as arquiteturas projetadas até hoje. Esses modelos foram testados em dados ImageNet, onde temos mais de um milhão de imagens e 1000 classes para prever

88265dnn8-8570398

LeNet-5 é uma arquitetura muito básica, então qualquer pessoa pode começar com arquiteturas avançadas

59467dnn9-1012443

Quais são as entradas e saídas (Capa 0 e camada N):

Aqui estamos prevendo dígitos com base na imagem de entrada fornecida, note que aqui a imagem tem as dimensões de altura = 32 píxeis, largura = 32 pixels e uma profundidade de 1, então podemos assumir que é uma imagem em tons de cinza ou preto e branco, tendo em conta que a saída é um softmax do 10 valores, aqui softmax dá probabilidades ou razões para todos 10 dígitos, podemos tomar o número como a saída com a maior probabilidade ou razão.

Convolución 1 (Capa 1):

28844screenshot20168-6310615

Aqui estamos pegando a entrada e convolvendo com filtros de tamanho 5 x 5, produzindo assim uma saída de tamanho 28 x 28 Verifique a fórmula acima para calcular as dimensões de saída, o que aqui é que nós pegamos 6 filtros deste tipo e, portanto, a profundidade de conv1 é 6, portanto, suas dimensões eram 28 x 28 x 6 agora passe isso para a camada de agrupamento

Agrupamento 1 (Capa 2):

59702screenshot20170-3922840

Aqui estamos pegando 28 x 28 x 6 como entrada e aplicando a combinação média de uma matriz de 2 × 2 e um passo de 2, quer dizer, colocando uma matriz de 2 x 2 na entrada e pegando a média de todos esses quatro pixels e pulando com um salto de 2 colunas todas as vezes, o que da 14 x 14 x 6 como uma saída, estamos calculando o agrupamento para cada camada, então aqui a profundidade de saída é 6

Convolución 2 (Capa 3):

59083dnn10-2418903

Aqui estamos pegando o 14 x 14 x 6, quer dizer, o o / convolvendo py com um filtro de tamanho 5 x5, com um passo de 1, quer dizer (sem saltos), e com zero recheios, então obtemos uma saída de 10 x 10, agora aqui nós pegamos 16 filtros deste tipo de profundidade 6 e nós convolvemos, obtendo assim uma saída de 10 x 10 x 16

Agrupamento 2 (Capa 4):

98064dnn11-1381778

Aqui estamos pegando a saída da camada anterior e realizando um agrupamento médio com uma etapa de 2, quer dizer (pule duas colunas) e com um filtro de tamanho 2 x 2, aqui nós sobrepomos este filtro nas camadas de 10 x 10 x 16 então para cada 10 x 10 nós obtemos resultados de 5 x 5, portanto, obtendo 5 x 5 x 16

Capa (N-2) e cabo (N-1):

90366dnn12-6023324

Finalmente, nós nivelamos todos os valores de 5 x 5 x 16 para uma única camada de tamanho 400 e os inserimos em uma rede neural de alimentação direta de 120 neurônios que têm uma matriz de peso de tamanho. [400,120] e uma camada oculta de 84 neurônios conectados por 120 neurônios com uma matriz de peso de [120,84] e está 84 neurônios estão de fato conectados a 10 neurônios de saída

64119dnn13-6134443

Esses neurônios o / p finalizar o número previsto por softmaxing.

Como uma rede neural convolucional realmente funciona??

Funciona por meio de compartilhamento de peso e conectividade deficiente,

69373screenshot20172-6445235

Então aqui, como pode ver a convolução tem alguns pesos, esses pesos são compartilhados por todos os neurônios de entrada, nem cada entrada tem um peso separado chamado peso compartilhado, e nem todos os neurônios de entrada estão conectados ao neurônio de saída e apenas alguns que são convolutos são ativados, o que é conhecido como conectividade fraca, CNN não é diferente de redes neurais feedforward, Essas duas propriedades os tornam especiais!

Pontos para olhar

1. Após cada convolução, a saída é enviada para uma função de gatilho para melhores características e para manter a positividade, por exemplo: retomar

2. Má conectividade e peso compartilhado são os principais motivos para o funcionamento de uma rede neural convolucional.

3. O conceito de escolha de uma série de filtros entre as camadas e o enchimento e as dimensões da passada e do filtro é obtido por meio da realização de uma série de experimentos., Não se preocupe com isso, foco na construção da base, algum dia você fará esses experimentos e construirá um ambiente mais produtivo !!!

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.