1. Definição de campo receptivo
Campo receptivo ( Receptivo ReceptivoCampo Receptivo Campo _ _ _ _Field d ) é definido como a saída do mapa de características por cada camada da rede neural convolucional ( feature featuremapa de características mapa _ _ _O tamanho da área mapeada na imagem de entrada original pelos pixels no mapa p ). A explicação mais popular é que um ponto no mapa de recursos corresponde à área na imagem de entrada original, conforme mostrado na figura abaixo.
2. Exemplos de campos receptivos
Aqui estão dois exemplos para ilustrar brevemente o campo receptivo. Primeiro, uma imagem de entrada 5*5 passa por um kernel de convolução de duas camadas com uma operação de convolução 3*3 para obter um campo receptivo de 5*5, onde o kernel de convolução (filtro de filtrof i ltro ) tamanho do passo (passo passos tr i d e )为1,padding paddingp a dd in g é 0, conforme mostrado na figura abaixo:Out 1 Out1
na figura acimaO primeiro valor no canto superior esquerdo de Out 1 é determinado por Input InputO valor da área 3 * 3 no canto superior esquerdo de In p u t é calculado por convolução, ou seja, Out 1 Out1O campo receptivo do valor do canto superior esquerdo em Out 1 é Input InputA área 3*3 no canto superior esquerdo de I n p u t ;
Saída 2 Saída 2O valor em Out 2 é determinado por Out 1 Out1A área correspondente a 3 * 3 em Out 1 é calculada por convolução, ou seja,Out 2 Out2O campo receptivo em Out 2 é Out 1 Out1Toda a área 3*3 em Out 1 ;
A partir disso, podemos ver que Out 2 Out2O valor de Out 2 é determinado por Input InputTodas as áreas em In p u t são calculadas por duas camadas de convolução, ou seja, Out 2 Out2O campo receptivo de Out 2 éInput InputTodas as regiões 5*5 em I n p u t .
Para dar outro exemplo, a imagem de entrada de 7 * 7 é obtida após a operação de convolução de três camadas com um kernel de convolução de 3 * 3 para obterOut 3 Out3O campo receptivo de Out 3 é 7 * 7, que é Out 3 Out3O valor em Out 3 é determinado por Input InputOs valores de todas as áreas de I n p u t são calculados por convolução, onde o tamanho do kernel da convolução, tamanho do passo epadding paddingOs valores de p a dd em g são os mesmos do exemplo acima, conforme a figura abaixo:
3. Cálculo do campo receptivo
Os seguintes pontos precisam ser explicados ao calcular o campo receptivo:
(1) O tamanho do campo receptivo dos pixels do mapa de recursos de saída da primeira camada de convolução é igual ao tamanho do kernel de convolução.
(2) O tamanho do campo receptivo da camada convolucional profunda está relacionado ao tamanho do filtro e ao tamanho do passo de todas as camadas anteriores a ela.
(3) Ao calcular o tamanho do campo receptivo, a influência da borda da imagem é ignorada, ou seja, o tamanho do preenchimento não é considerado.
A fórmula para calcular o tamanho do campo receptivo é dada abaixo:
RF l + 1 = ( RF l − 1 ) ∗ ∏ i = 1 lspassosi + fl + 1 RF_{l+1} = (RF_{l}-1)*\prod_{i=1}^{l}passos_i + f_{l+1}R Feu + 1=( R Feu−1 )∗eu = 1∏eupassos _ _ _ _ _ _eu+feu + 1
onde RF l + 1 RF_{l+1}R Feu + 1é o tamanho do campo receptivo correspondente ao mapa de recursos atual, ou seja, o campo receptivo alvo a ser calculado, RF l RF_{l}R Feué o tamanho do campo receptivo correspondente ao mapa de recursos da camada anterior, f_{l+1} é o tamanho do núcleo de convolução da camada convolucional atual e os passos cumulativos dos passosstri d es representa o produto do tamanho do passo de todas as camadas convolucionais antes da camada convolucional atual .
Pegue a segunda amostra mencionada acimas mple como exemplo :
Fora 1 Fora1Out Layer 1 é a saída da primeira camada de convolução, ou seja, seu campo receptivo é igual ao tamanho de seu kernel de convolução, ou seja, o campo receptivo do mapa de características de saída da primeira camada da camada convolucional é 3,RF 1 RF1RF 1 =3;
Saída 2 Saída 2O campo receptivoRF 2 RF2 da camada externa 2RF 2 = 3 + (3 - 1) * 1 = 5, ou seja, o campo receptivo da saída do mapa de recursos pela segunda camada convolucional é 5;
Fora 3 Fora3O campo receptivoRF 3 RF3 da camada externa 3RF 3 = 3 + (5 - 1) * 1 = 7, ou seja, o campo receptivo da saída do mapa de recursos pela terceira camada convolucional é 7;
O A lexnet Alexnet calculado pelo método acima é dado abaixoA l e x n e t eVGG 16 VGG16píton píton _ __código python : _ _ _ _
net_struct = {
'alexnet': {
'net': [[11, 4, 0], [3, 2, 0], [5, 1, 2], [3, 2, 0], [3, 1, 1], [3, 1, 1], [3, 1, 1], [3, 2, 0]],
'name': ['conv1', 'pool1', 'conv2', 'pool2', 'conv3', 'conv4', 'conv5', 'pool5']},
'vgg16': {
'net': [[3, 1, 1], [3, 1, 1], [2, 2, 0], [3, 1, 1], [3, 1, 1], [2, 2, 0], [3, 1, 1], [3, 1, 1], [3, 1, 1],
[2, 2, 0], [3, 1, 1], [3, 1, 1], [3, 1, 1], [2, 2, 0], [3, 1, 1], [3, 1, 1], [3, 1, 1],
[2, 2, 0]],
'name': ['conv1_1', 'conv1_2', 'pool1', 'conv2_1', 'conv2_2', 'pool2', 'conv3_1', 'conv3_2',
'conv3_3', 'pool3', 'conv4_1', 'conv4_2', 'conv4_3', 'pool4', 'conv5_1', 'conv5_2', 'conv5_3',
'pool5']}}
# 输入图片size
imsize = 224
def outFromIn(isz, net, layernum):
totstride = 1
insize = isz
for layer in range(layernum):
fsize, stride, pad = net[layer]
# outsize为每一层的输出size
outsize = (insize - fsize + 2 * pad) / stride + 1
insize = outsize
totstride = totstride * stride
return outsize, totstride
def inFromOut(net, layernum):
RF = 1
for layer in reversed(range(layernum)):
fsize, stride, pad = net[layer]
# 感受野计算公式
RF = ((RF - 1) * stride) + fsize
return RF
if __name__ == '__main__':
print("layer output sizes given image = %dx%d" % (imsize, imsize))
for net in net_struct.keys():
print('************net structrue name is %s**************' % net)
for i in range(len(net_struct[net]['net'])):
p = outFromIn(imsize, net_struct[net]['net'], i + 1)
rf = inFromOut(net_struct[net]['net'], i + 1)
print("Layer Name = %s, Output size = %3d, Stride = % 3d, RF size = %3d" % (net_struct[net]['name'][i], p[0], p[1], rf))
4. O papel do campo receptivo
(1) tarefa de tarefa geralA tarefa exige que quanto maior for o campo receptivo, melhor. Por exemplo, o campo receptivo da última camada convolucional na classificação da imagem deve ser maior do que a imagem de entrada. Quanto mais profunda a profundidade da rede, maior o campo receptivo , melhor o desempenho;
(2) Tarefa de tarefa de previsão densaA tarefa exige que o campo receptivo dos pixels de saída seja grande o suficiente para garantir que informações importantes não sejam ignoradas ao tomar decisões e, geralmente, quanto mais profundo , melhor ;
(3) Tarefa de tarefa de detecção de alvoDefinirâncora âncora em t a s kan c h ou deve corresponder estritamente ao campo receptivo,âncora âncoraUma corrente muito grande ou que se desvie do campo receptivo afetará seriamente o desempenho da detecção.
5. Campo receptivo efetivo
Compreensão CompreensãoCompreendendo o _ _ _ _ _ _ _ _o Efetivo Efetivo _Receptivo Efetivo Receptivo _ _ _ _ _Campo Receptivo Campo _ _ _ _Campo em _ _ _ _em Deep DeepDee p C onvolucional ConvolucionalNeural Convolutivo Neural _ _ _ _ _ _ _ _ _ _ Redes N e u r a l RedesNo artigo N e tw or k s, o campo receptivo efetivo (Effective EffectiveReceptivo Efetivo Receptivo _ _ _ _ _Campo Receptivo Campo _ _ _ _Campo , ERF ERF _ _ _ERF ), o artigo conclui que nem todos os pixels no campo receptivo contribuem igualmente para o vetor de saída. Em muitos casos, a distribuição de influência dos pixels na área do campo receptivo é gaussiana e o campo receptivo efetivo é responsável apenas por uma parte o campo receptivo teórico, e a distribuição Gaussiana começa do centro Atenuação rápida até a borda, a segunda foto abaixo éCNN CNNCampos receptivos efetivos típicos de CNNs .
Voltando a esta foto, olhamos para a área verde, o amarelo é a imagem, quando a caixa verde é digitalizada, a primeira coluna é digitalizada apenas uma vez, ou seja, participa de uma operação e as colunas subsequentes estão envolvidas em operações múltiplas, cálculos. Portanto, o campo receptivo real final apresenta uma distribuição gaussiana.