Campos Receptivos em Visão Computacional

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.
insira a descrição da imagem aqui

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
insira a descrição da imagem aqui
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:
insira a descrição da imagem aqui

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 Feu1 )eu = 1eupassos _ _ _ _ _ _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 .
insira a descrição da imagem aqui
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.
insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/qq_52302919/article/details/131649361
Recomendado
Clasificación