¿Puede una red neuronal convolucional tomar como imágenes de entrada de diferentes tamaños?

10

Estoy trabajando en una red de convolución para el reconocimiento de imágenes, y me preguntaba si podría ingresar imágenes de diferentes tamaños (aunque no muy diferentes).

En este proyecto: https://github.com/harvardnlp/im2markup

Ellos dicen:

and group images of similar sizes to facilitate batching

Entonces, incluso después del preprocesamiento, las imágenes siguen siendo de diferentes tamaños, lo que tiene sentido ya que no recortarán parte de la fórmula.

¿Hay algún problema al usar diferentes tamaños? Si es así, ¿cómo debería abordar este problema (dado que las fórmulas no encajan todas en el mismo tamaño de imagen)?

Cualquier aportación será muy apreciada

Graham Slick
fuente

Respuestas:

2

¿Hay algún problema al usar diferentes tamaños? Si es así, ¿cómo debería abordar este problema (dado que las fórmulas no encajan todas en el mismo tamaño de imagen)?

Depende de la arquitectura de la red neuronal. Algunas arquitecturas suponen que todas las imágenes tienen la misma dimensión, otras (como im2markup) no hacen tal suposición. El hecho de que im2markup permita imágenes de diferentes anchos no plantea ningún problema, creo, ya que usan un RNN que escanea a través de la salida de la capa de convolución.

ingrese la descripción de la imagen aquí

agrupe imágenes de tamaños similares para facilitar el procesamiento por lotes

Eso suele acelerar las cosas evitando agregar demasiado relleno.

Franck Dernoncourt
fuente
2

¿Ha considerado simplemente escalar las imágenes en la etapa de preprocesamiento? Intuitivamente, un humano que se enfrenta a una imagen a escala aún podrá reconocer las mismas características y objetos, y no hay una razón obvia por la cual una CNN no pueda hacer lo mismo en una imagen a escala.

Creo que escalar las imágenes para que tengan el mismo tamaño podría ser más fácil que tratar de hacer que una red convolucional maneje imágenes de diferentes tamaños, lo que creo que estaría allí en la tierra de 'investigación original'. Sin duda, puede hacer que las capas conv de un convnet manejen imágenes de cualquier tamaño, sin necesidad de volver a entrenar. Sin embargo, la salida de un convnet normalmente será algún tipo de clasificador, y esto probablemente funcionará menos bien, si imagino entradas de diferente tamaño, me imagino.

Otro enfoque sería simplemente rellenar las imágenes con ceros. Pero imagínese intuitivamente que está viendo una foto pequeña, rellena con bordes negros, o puede hacer un acercamiento, por lo que subtiende un arco razonable en su campo visual. ¿Qué harías? ¿Cuál es más fácil de ver?

Hugh Perkins
fuente
el escalado no reduce la calidad de la imagen al introducir errores y deforma las características, si la imagen ya es de baja resolución, entonces el escalado disminuirá la calidad de la imagen hasta un punto donde incluso los humanos no pueden reconocer con facilidad, pero la imagen sin escalar podría ser reconocible.
Vikram Bhat
1
¿Tiene un ejemplo de una imagen que sea reconocible para los humanos, a menos que aplique la escala y luego se vuelva irreconocible?
Hugh Perkins
Me pregunto esto también. Cuando intento usar un modelo entrenado existente de keras, creo que podría escalar la imagen para que se ajuste a la interfaz InceptionV3 (299x299 de 32x32 -> CIFAR10). Creo que el escalado pierde calidad. Pero creo que la forma adecuada de hacerlo sería excluir el FC de salida y especificar la forma de entrada a 32x32. Sin embargo, creo que esto requeriría una nueva capacitación, ya que los pesos de la capa de entrada serían aleatorios.
Joey Carson
El escalado reduce la calidad pero ayuda a la generalización: hay muchos documentos que notaron un aumento notable en el reconocimiento cuando se aplicó Gauss blur antes del entrenamiento. Intuitivamente, tiene más muestras de entrada diferentes que se asemejan a una sola imagen "borrosa", lo que hace que la clasificación sea más sólida.
Matthieu