Alguns esclarecimentos sobre redes neurais convolucionais

6

Ao ler sobre a transformação da camada totalmente conectada em camada convolucional, publicada em http://cs231n.github.io/convolutional-networks/#convert .

Apenas me sinto confuso com os dois comentários a seguir:

Acontece que essa conversão nos permite "deslizar" o ConvNet original de maneira muito eficiente em várias posições espaciais em uma imagem maior, em uma única passagem para frente.

Um ConvNet padrão deve funcionar em qualquer imagem de tamanho. O filtro convolucional pode deslizar pela grade da imagem. Por que precisamos deslizar o ConvNet original em qualquer posição espacial em uma imagem maior?

E

A avaliação do ConvNet original (com camadas FC) de forma independente em cortes 224x224 da imagem 384x384 em intervalos de 32 pixels fornece um resultado idêntico ao encaminhamento do ConvNet convertido uma vez.

O que significa "larguras de 32 pixels" aqui? Isso se refere ao tamanho do filtro? Quando falamos de 224 * 224 colheitas da imagem 384 * 384, isso significa que usamos um campo receptivo de 224 * 224?

Marquei esses dois comentários como vermelhos no contexto original.

insira a descrição da imagem aqui

user3269
fonte
3
Você precisa ler no ConvNet. Passada significa tamanho do salto. "Quando a passada é 1, movemos os filtros um pixel de cada vez. Quando a passada é 2 (ou incomumente 3 ou mais, embora isso seja raro na prática), os filtros pulam 2 pixels por vez enquanto os deslizamos. Isso produzirá volumes de saída menores espacialmente. " fonte: cs231n.github.io/convolutional-networks
horaceT

Respostas:

6

Camadas totalmente conectadas podem lidar apenas com entrada de tamanho fixo, porque requer uma certa quantidade de parâmetros para "conectar totalmente" a entrada e a saída. Embora as camadas convolucionais simplesmente "deslizem" os mesmos filtros pela entrada, elas podem lidar basicamente com entradas de tamanho espacial arbitrário.

Na rede de exemplo com camadas totalmente conectadas no final, uma imagem 224 * 224 produzirá um vetor 1000d de pontuações de turma. Se aplicarmos a rede em uma imagem maior, a rede falhará devido à inconsistência entre a entrada e os parâmetros da primeira camada totalmente conectada.

Por outro lado, se usarmos uma rede totalmente convolucional, quando aplicada a uma imagem maior, obteremos 1000 "mapas de calor" de notas de classe.

Como mostra a figura a seguir (do documento de segmentação da FCN ), a rede superior dá uma pontuação por classe e, após a conversão (convolucionalização), podemos obter um mapa de calor por classe para obter uma imagem maior.
insira a descrição da imagem aqui

Sobre "passo", na mesma página, na seção Arranjo espacial:

Quando o passo é 1, movemos os filtros um pixel de cada vez. Quando o passo é 2 (ou incomumente 3 ou mais, embora isso seja raro na prática), os filtros pulam 2 pixels de cada vez enquanto os deslizamos. Isso produzirá volumes de saída menores espacialmente.

dontloo
fonte
11
@ user3269 se a entrada da camada de conexão completa for 7 * 7 * 512, precisaremos de 7 * 7 * 512 * 4096 parâmetros para "conectar totalmente" a entrada e a saída. se o tamanho espacial da entrada aumentar, precisaremos de mais parâmetros. para camadas convolucionais, aplicamos o mesmo filtro a todas as partes da entrada.
dontloo
2
@ user3269 a rede gera um valor por classe para imagens 224 * 224; quando alimentamos uma imagem 384 * 384, ele gera um mapa de calor 12 * 12 para cada classe, cada pixel do mapa de calor é equivalente ao valor obtido aplicar a rede em um patch 224 * 224 em um local específico. como a rede reduz o tamanho espacial da entrada por um fator de 32 (224 * 224-> 7 * 7), deslizando um pixel na camada superior desliza 32 pixels na imagem de entrada.
dontloo
11
e se "deslizarmos" em um tamanho de entrada maior com um fc cnn, ainda poderemos obter um "mapa de calor". Se sim, qual é o sentido de uma rede totalmente conv?
Flankechen
11
@flankechen oi, se eu entendi corretamente, deslizar um cnn inteiro para obter um mapa de calor é menos eficiente, pois haverá grandes sobreposições entre janelas diferentes enviadas para a rede e acabaremos aplicando o mesmo conjunto de filtros nessas regiões sobrepostas repetidamente . Uma opção melhor é salvar essa redundância e aplicar a rede à imagem inteira uma vez, e isso pode ser feito por uma rede totalmente convolucional.
dontloo
11
O @ flankechen para redes totalmente conv envia a imagem inteira para a rede e desliza os filtros de convolução que são mais eficientes do que deslizar toda a rede, além do que acho que uma rede totalmente conectada também funcionaria.
Dontloo 6/12/18