es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Adaptando el modelo de array en Keras para ajustarse al tamaño mínimo del modelo preentrenado

Estoy tratando de hacer una clasificación de imágenes usando transfer learning en el algoritmo InceptionV3. Tengo imágenes en escala de grises de 48×48, pero el modelo Inception V3 requiere un tamaño mínimo de entrada de 75×75 (ver abajo).

pre_trained_model = InceptionV3(input_shape = (48,48,3),
                           include_top  = False,
                           weights      = 'imagenet')

ValueError: El tamaño de entrada debe ser al menos 75x75; Recibido: input_shape=(48, 48, 3)

Si intento cambiar la forma de mi matriz a algo mayor que 75×75, obtengo el siguiente error, lo cual tiene sentido.

train_images = train_image_array.reshape((train_image_array.shape[0], 76, 76, 1))
ValueError: no se puede cambiar la forma de una matriz de tamaño 66145536 a la forma (28709,76,76,1)

¿Cómo puedo poblar mi matriz con algo mayor que 75×75? Siento que debería ser fácil, pero no puedo encontrar una solución. Mi código para poblar mi matriz es el siguiente:

image_array = np.zeros(shape=(len(data), 48, 48))
image_label = np.array(list(map(int, data['emotion'])))

for i, row in enumerate(data.index):
    image = np.fromstring(data.loc[row, 'pixels'], dtype=int, sep=' ')
    image = np.reshape(image, (48, 48))
    image_array[i] = image

return image_array, image_label
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una solución sería redimensionar las imágenes antes de pasarlas al modelo. La biblioteca PIL se puede utilizar para esto. Aquí tienes un ejemplo:

    from PIL import Image
    
    size = (75, 75)
    
    # Recorre cada imagen y redimensionarla
    for i in range(len(image_array)):
        img = Image.fromarray(image_array[i])
        img = img.resize(size)
        image_array[i] = np.array(img)
    

    Este código redimensionará cada imagen en image_array a un tamaño de 75×75 utilizando el método resize de la biblioteca PIL. Una vez hecho esto, puedes pasar el image_array al modelo InceptionV3 sin ningún problema.

Comments are closed.