Uma rede neural convolucional pode ter como entrada imagens de tamanhos diferentes?

10

Estou trabalhando em uma rede de convolução para reconhecimento de imagens e estava pensando se poderia inserir imagens de tamanhos diferentes (embora não muito diferentes).

Neste projeto: https://github.com/harvardnlp/im2markup

Eles dizem:

and group images of similar sizes to facilitate batching

Portanto, mesmo após o pré-processamento, as imagens ainda têm tamanhos diferentes, o que faz sentido, pois não cortam parte da fórmula.

Existem problemas no uso de tamanhos diferentes? Se houver, como devo abordar esse problema (já que todas as fórmulas não cabem no mesmo tamanho de imagem)?

Qualquer contribuição será muito apreciada

Graham Slick
fonte

Respostas:

2

Existem problemas no uso de tamanhos diferentes? Se houver, como devo abordar esse problema (já que todas as fórmulas não cabem no mesmo tamanho de imagem)?

Depende da arquitetura da rede neural. Algumas arquiteturas assumem que todas as imagens têm a mesma dimensão, outras (como im2markup) não fazem essa suposição. O fato de o im2markup permitir imagens de diferentes larguras não traz nenhum problema, pois eles usam um RNN que varre a saída da camada de convolução.

insira a descrição da imagem aqui

agrupe imagens de tamanhos semelhantes para facilitar o lote

Isso geralmente acelera as coisas, evitando adicionar muito preenchimento.

Franck Dernoncourt
fonte
2

Você já pensou em simplesmente dimensionar as imagens no estágio de pré-processamento? Intuitivamente, um ser humano que enfrenta uma imagem em escala ainda será capaz de reconhecer os mesmos recursos e objetos, e não há razão óbvia para que uma CNN não consiga fazer a mesma coisa em uma imagem em escala.

Penso que escalar as imagens com o mesmo tamanho pode ser mais fácil do que tentar fazer uma rede convolucional lidar com imagens de tamanhos diferentes, o que acho que estaria lá em cima na terra da 'pesquisa original'. Você certamente pode fazer com que as camadas de conv. De uma convnet manipulem imagens de qualquer tamanho, sem precisar treinar novamente. No entanto, a saída de uma convnet normalmente será algum tipo de classificador, e isso provavelmente funcionará menos bem, se você alimentar entradas de tamanho diferente, eu imagino.

Outra abordagem seria apenas preencher as imagens com zeros. Mas imagine intuitivamente que você está olhando para uma foto pequena, preenchida com bordas pretas, ou pode ampliar, para que ela subtenda um arco razoável no seu campo visual. O que você faria? Qual é mais fácil de ver?

Hugh Perkins
fonte
o redimensionamento não reduz a qualidade da imagem, introduzindo recursos de deformação e erro, se a imagem já tiver baixa resolução, o redimensionamento diminuirá a qualidade da imagem a um ponto em que mesmo os humanos não possam reconhecer com facilidade, mas a imagem não dimensionada poderá ser reconhecida.
Vikram Bhat
11
você tem um exemplo de imagem reconhecível para humanos, a menos que aplique a escala e se torne irreconhecível?
Hugh Perkins
Também estou pensando nisso. Ao tentar usar um modelo treinado existente da keras, acho que poderia escalar a imagem para caber na interface InceptionV3 (299x299 de 32x32 -> CIFAR10). Eu acho que o dimensionamento perde qualidade. Mas acho que a maneira apropriada de fazê-lo seria excluir a saída FC e especificar o formato de entrada para 32x32. Eu acho que isso exigiria reciclagem, pois os pesos da camada de entrada seriam aleatórios.
Joey Carson
O dimensionamento reduz a qualidade, mas ajuda na generalização: existem muitos trabalhos que notaram um ganho notável no reconhecimento quando o desfoque de Gauss foi aplicado antes do treinamento. Intuitivamente, você tem mais amostras de entrada diferentes que se assemelham a uma única imagem "borrada", tornando a classificação mais robusta.
Matthieu