Por que as convoluções sempre usam números ímpares como tamanho do filtro


13

Se examinarmos 90-99% dos artigos publicados usando uma CNN (ConvNet). A grande maioria deles usa tamanho de filtro de números ímpares : {1, 3, 5, 7} para os mais usados.

Essa situação pode levar a algum problema: com esses tamanhos de filtro, geralmente a operação de convolução não é perfeita com um preenchimento de 2 (preenchimento comum) e algumas bordas do campo de entrada são perdidas no processo ...

Pergunta1: Por que usar apenas números ímpares para tamanhos de filtro de convoluções?

Question2: É realmente um problema omitir uma pequena parte do input_field durante a convolução? Por que sim / não?

Respostas:


14

A operação de convolução, simplificando, é a combinação do produto elemento-elemento de duas matrizes. Contanto que essas duas matrizes concordem em dimensões, não deve haver um problema, e assim eu posso entender a motivação por trás da sua consulta.

A.1 No entanto, a intenção da convolução é codificar a matriz de dados de origem (imagem inteira) em termos de um filtro ou kernel. Mais especificamente, estamos tentando codificar os pixels na vizinhança dos pixels âncora / fonte. Dê uma olhada na figura abaixo: insira a descrição da imagem aqui Normalmente, consideramos cada pixel da imagem de origem como âncora / pixel de origem, mas não somos obrigados a fazer isso. De fato, não é incomum incluir um passo, onde os pixels âncora / fonte são separados por um número específico de pixels.

Ok, então qual é o pixel de origem? É o ponto de ancoragem no qual o kernel está centralizado e estamos codificando todos os pixels vizinhos, incluindo o pixel de ancoragem / origem. Como o kernel é simétrico (não simétrico nos valores do kernel), há um número igual (n) de pixels em todos os lados (4- conectividade) do pixel âncora. Portanto, qualquer que seja esse número de pixels, o comprimento de cada lado do nosso núcleo simétrico é 2 * n + 1 (cada lado da âncora + o pixel da âncora) e, portanto, os filtros / núcleos são sempre de tamanho ímpar.

E se decidíssemos romper com a 'tradição' e usarmos núcleos assimétricos? Você sofreria erros de alias e, portanto, não fazemos isso. Consideramos o pixel a menor entidade, ou seja, não existe um conceito de sub-pixel aqui.

A.2 O problema dos limites é tratado com diferentes abordagens: alguns o ignoram, outros zero, outros refletem o espelho. Se você não deseja calcular uma operação inversa, ou seja, deconvolução, e não está interessado na reconstrução perfeita da imagem original, não se preocupa com a perda de informações ou a injeção de ruído devido ao problema de contorno. Normalmente, a operação de conjunto (conjunto médio ou conjunto máximo) removerá os artefatos de limite de qualquer maneira. Portanto, fique à vontade para ignorar parte do seu 'campo de entrada', sua operação de pool fará isso por você.

-

Zen de convolução:

No domínio de processamento de sinais da velha escola, quando um sinal de entrada era convolvido ou passado através de um filtro, não havia como julgar a priori quais componentes da resposta convolvida / filtrada eram relevantes / informativos e quais não eram. Conseqüentemente, o objetivo era preservar os componentes do sinal (todos) nessas transformações.

Esses componentes de sinal são informações. Alguns componentes são mais informativos que outros. A única razão para isso é que estamos interessados ​​em extrair informações de nível superior; Informação pertinente para algumas classes semânticas. Portanto, os componentes de sinal que não fornecem as informações em que estamos especificamente interessados ​​podem ser removidos. Portanto, diferentemente dos dogmas da velha escola sobre convolução / filtragem, somos livres para agrupar / podar a resposta de convolução como quisermos. A nossa maneira de fazer isso é remover rigorosamente todos os componentes de dados que não estão contribuindo para melhorar nosso modelo estatístico.


Obrigado por sua explicação, mas não é mais fácil entender isso olhando para a definição de convolução em termos matemáticos? pt.wikipedia.org/wiki/Convolution#Discrete_convolution Porque aqui vemos que sempre teremos m termos à esquerda e à direita da origem ... portanto, isso sempre resultará em uma quantidade desigual.
zwep

@zwep Concordou! Os fóruns de perguntas e respostas não substituem enciclopédias; mas apenas complementá-los. No entanto, uma perspectiva mais ampla do seu comentário: a definição geralmente é apenas a melhor escolha entre as opções disponíveis; não é verdade do evangelho. No entanto, é necessário primeiro aprender as regras antes de quebrá-las, para que possa ser claramente comunicado à comunidade exatamente como e por que você está fazendo de maneira diferente. As razões e escolhas alternativas por trás de uma determinada definição estão em trabalhos de pesquisa e normalmente não em uma enciclopédia.
Dynamic Stardust

5

1) Suponha que input_fieldseja tudo zero, exceto por uma entrada no índice idx. Um tamanho de filtro ímpar retornará dados com um pico centralizado idx, um tamanho de filtro uniforme não - considere o caso de um filtro uniforme com tamanho 2. A maioria das pessoas deseja preservar a localização dos picos ao filtrar.

2) Tudo isso input_fieldé relevante para a convolução, mas as bordas de output_fieldnão podem ser calculadas com precisão, pois os dados necessários não estão contidos input_field. Se eu quiser calcular uma resposta para o primeiro elemento de output_field, o filtro deve estar centrado no primeiro elemento de input_field. Mas existem elementos de filtro que não correspondem a nenhum elemento disponível de input_field. Existem vários truques para adivinhar as bordas do output_field.


2

Para um filtro de tamanho ímpar, todos os pixels da camada anterior seriam simétricos ao redor do pixel de saída. Sem essa simetria, teremos que levar em conta distorções nas camadas, o que ocorre quando se usa um kernel de tamanho uniforme. Portanto, filtros de kernel de tamanho uniforme são ignorados principalmente para promover a simplicidade da implementação. Se você pensa em convolução como uma interpolação dos pixels fornecidos para um pixel central, não podemos interpolar para um pixel central usando um filtro de tamanho uniforme.

Por que filtros de tamanho uniforme não funcionam

fonte: https://towardsdatascience.com/deciding-optimal-filter-size-for-cnns-d6f7b56f9363

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.