Cai Caixue Paddle Parte 5: Análise aprofundada do conceito de rede neural convolucional

Prefácio: 

A visão computacional é uma disciplina que permite que as máquinas aprendam a "ver". Especificamente, é permitir que as máquinas reconheçam objetos em fotos ou vídeos feitos por câmeras, detectem a localização de objetos e rastreiem objetos-alvo, de modo que entendam e descrevam as cenas e histórias em fotos ou vídeos para simular o sistema visual do cérebro humano. Portanto, a visão computacional também é comumente chamada de visão de máquina, e seu objetivo é construir um sistema artificial que possa “perceber” informações de imagens ou vídeos.

É muito fácil para os humanos reconhecer cães e gatos. Então, para computadores, como os computadores podem entender o mundo ao seu redor como humanos?

Definição de Rede Neural Convolucional:

1. Definição matemática:

"As Redes Neurais Convolucionais (CNN) são um tipo de Redes Neurais Feedforward (Feedforward Neural Networks) que inclui cálculos de convolução e possui uma estrutura profunda, sendo um dos algoritmos representativos para aprendizado profundo." Você será enganado? O que é cálculo de convolução? Vamos deixar isso de lado.

2. Definição biológica:

A rede neural convolucional é a estrutura de modelo mais clássica da tecnologia de visão computacional. Ela é modelada no mecanismo de percepção visual biológica (percepção visual). Ela extrai os principais recursos dos dados de entrada por meio do kernel de convolução e, após várias conversões de rede, obtemos o que queremos.saída. Semelhante à nossa observação humana e ao reconhecimento de um objeto, sempre extraímos suas principais características.

Kernel de convolução:

O kernel de convolução (kernel) é geralmente bidimensional. Assumindo que a altura e a largura do kernel de convolução são H​ e W​ respectivamente, é chamado de convolução H*W, como a convolução 3*5, que se refere ao volume O a altura do núcleo de acumulação é 3 e a largura é 5. Em alguns lugares, também é chamado de filtro (filtro). Na verdade, há uma diferença entre os dois. Para entrada de canal único, os dois são equivalentes. Para entrada multicanal, o filtro é multidimensional e o a dimensão está relacionada ao número de canais.O mesmo, e o kernel da convolução ainda é bidimensional. Para ser mais direto: filtro = número de canais * kernel de convolução, quando o número de canais for igual a 1, os dois são equivalentes.

Cálculo de convolução:

A convolução é um método de transformação integral em análise matemática e, em redes neurais convolucionais, a implementação de camadas convolucionais é na verdade uma operação de correlação cruzada definida em matemática:

Como você pode ver na figura, a fonte de entrada é um array de 3*3, e o tamanho do kernel de convolução é 2*2. Após a convolução horizontal e a convolução vertical, o resultado de saída de 2*2 é finalmente obtido. cálculo da convolução O processo é muito simples, multiplicam-se os bits correspondentes e depois somam-se.

preenchimento

A partir da figura acima do cálculo da convolução, podemos ver que a imagem 3 * 3 se torna uma imagem 2 * 2 depois de ser convoluída pelo kernel da convolução 2 * 2. Vamos pensar dessa maneira, pois é uma rede multicamadas , Depois de várias convoluções, nossos dados de saída ficarão cada vez menores. Existe alguma maneira de resolver isso? É aqui que entra o preenchimento.

 Após o preenchimento, o tamanho da imagem original é alterado, para que nossa saída não fique cada vez menor.

passo largo

Simplificando, o passo é mover o kernel da convolução para a direita ou para baixo alguns pixels de cada vez.É claro que se o passo for grande, a magnitude do cálculo será muito menor.

Campo Receptivo

O valor de cada ponto no mapa de recursos de saída é obtido multiplicando e somando os elementos da área de tamanho H*W​ na imagem de entrada e cada elemento do kernel de convolução, de modo que cada uma das áreas H*W na a imagem de entrada Uma mudança no valor de cada elemento afetará o valor do pixel do ponto de saída. Chamamos essa região de campo receptivo do ponto correspondente no mapa de recursos de saída.

Um entendimento popular é que os pixels de saída são afetados pela área que é afetada pela entrada. A imagem acima é um campo receptivo 3*3.

 

Vários canais de entrada

Em muitos casos, os dados que processamos são multicanal. Para imagens em preto e branco, nossos dados de entrada são de canal único, mas as imagens coloridas têm três canais de RGB.

Vários canais de saída

Por que existem vários canais de saída? Se quisermos extrair recursos multidimensionais de uma imagem, como extrair animais e plantas, precisamos de 2 filtros, às vezes também chamamos de 2 kernels de convolução e, na saída, existem dois corredores. Normalmente nos referimos ao número de canais de saída após a convolução como o número de filtros (kernels de convolução).

operação em lote

No cálculo da rede neural convolucional, várias amostras geralmente são colocadas juntas para formar um mini-lote para operação em lote

Agrupamento

O pooling é usar as características estatísticas gerais da saída adjacente em uma determinada posição para substituir a saída da rede naquela posição. A vantagem é que, quando os dados de entrada são ligeiramente deslocados, a maior parte da saída após a função de pooling permanece inalterada . Comumente usados ​​são pooling máximo, pooling mínimo e pooling médio:

 


Normalização em lote

Para a rede neural profunda, como os parâmetros são atualizados constantemente, mesmo que os dados de entrada tenham sido padronizados, a entrada recebida pelas camadas posteriores ainda muda drasticamente, o que geralmente leva à instabilidade numérica.O modelo é difícil de convergir. Normalmente, padronizamos os dados da rede neural e o conjunto de dados de amostra processados ​​satisfaz uma distribuição estatística com uma média de 0 e uma variância de 1, de modo que quando a distribuição dos dados de entrada é relativamente fixa, é propício para a estabilidade e convergência do algoritmo. O BatchNorm pode tornar a saída da camada intermediária da rede neural mais estável e tem as três vantagens a seguir:

  • Torne o aprendizado rápido (capaz de usar grandes taxas de aprendizado)
  • Reduzir a sensibilidade do modelo aos valores iniciais
  • Para suprimir o overfitting até certo ponto


Cair fora

Dropout é um método comumente utilizado para suprimir o overfitting em deep learning, ou seja, deletar aleatoriamente alguns neurônios durante o processo de aprendizado da rede neural. Durante o treinamento, alguns neurônios são selecionados aleatoriamente e sua saída é definida como 0, e esses neurônios não transmitem sinais para o exterior.

 

Acho que você gosta

Origin blog.csdn.net/duzm200542901104/article/details/127966872
Recomendado
Clasificación