Procesamiento de imágenes con Keras en Python

En este artículo, estamos haciendo procesamiento de imágenes con Keras en Python. Keras API es una biblioteca de aprendizaje profundo que proporciona métodos para cargar, preparar y procesar imágenes. 

Cubriremos los siguientes puntos en este artículo:

  • Cargar una imagen
  • Procesar una imagen
  • Convierta la imagen en una array y viceversa
  • Cambiar el color de la imagen
  • Conjunto de datos de imagen de proceso

Cargar la imagen

En Keras, la función load_img() se usa para cargar la imagen. La imagen cargada usando el método load_img() es un objeto PIL. Se puede acceder a cierta información desde las imágenes cargadas, como el tipo de imagen que es un objeto PIL, el formato es JPEG, el tamaño es (6000,4000), el modo es RGB, etc. Usamos imágenes de perros en todo el artículo.

Python3

import keras
from keras.preprocessing.image import load_img
  
# load the image
img = load_img('dog.jpg')
  
# find more about the image
print(type(img))
print(img.format)
print(img.mode)
print(img.size)
  
# show the image
img.show()

Producción: 

Cambiar el tamaño de una imagen

Podemos realizar ciertas funciones en la imagen, como cambiar su tamaño, cambiar su color, convertirla en una array, etc. antes de entrenar cualquier modelo. Para cambiar el tamaño de la forma de la imagen, se invoca el método resize() en la imagen. El tamaño en el que queremos convertir la imagen debe ser iterable. 

Python3

img = load_img('dog.jpg')
  
# change image size
image = img.resize([30, 30])
  
# print new image size
print(image.size)

Producción: 

(30, 30)

Podemos ver en la salida, 30 x 30 es el nuevo tamaño de la imagen.

Convertir imagen en una array

Hay un método img_to_array() para convertir imágenes en una array y un método array_to_img() para convertir una array de imágenes nuevamente en una imagen. En el siguiente ejemplo, solo estamos accediendo al índice 0 de la array de imágenes. Podemos obtener información como la forma de la array de imágenes, el tipo, etc. Cuando la array de imágenes se convierte en una imagen, nuevamente es un objeto PIL.

Python3

# convert image into array
from keras.preprocessing.image import img_to_array
from keras.preprocessing.image import array_to_img
  
# convert to numpy array
img_array = img_to_array(img)
print(img_array[0])
print(img_array.dtype)
print(img_array.shape)
  
# convert back to image
img = array_to_img(img_array)
print(type(img))

Producción:

Cambiar el color de la Imagen

Para convertir las imágenes coloridas en escala de grises, simplemente configure escala de grises = Verdadero en el método load_img(). Para guardar las imágenes convertidas, necesitamos convertir la imagen en una array; de lo contrario, el método save_img() generará un error. Después de convertir la imagen en una imagen en escala de grises, vemos que todavía muestra el modo RGB y el tamaño es el mismo.

Python3

from keras.preprocessing.image import save_img
from keras.preprocessing.image import img_to_array
  
# load image as as grayscale
img = load_img('dog.jpg', grayscale=True)
  
# convert image to a numpy array
img_array = img_to_array(img)
  
# save the image with a new filename
save_img('dog_grayscale.jpg', img_array)
  
# load the image to confirm it was saved
# correctly
img = load_img('dog_grayscale.jpg')
print(type(img))
print(img.format)
print(img.mode)
print(img.size)
img.show()

Producción:

Procesar un conjunto de datos de imagen

Para cargar las imágenes del conjunto de datos de imágenes, el método simple es usar load_data() en el conjunto de datos de imágenes. Estamos utilizando el conjunto de datos mnist que ya está disponible en Keras. Dará a cambio x_train, y_train, x_test y y_test. X_train y y_train se utilizarán para entrenar el modelo y x_test y y_test se utilizarán para fines de prueba. Podemos remodelar todas las imágenes dentro del conjunto de datos usando el método remodelar() y definir qué tipo de imágenes deberían ser como ‘float64’ o ‘float32’. 

Python3

from keras.datasets import mnist
  
(X_train, Y_train), (X_test, Y_test) = mnist.load_data()
  
# reshape the image
images = X_train.reshape(-1, 28, 28, 1).astype('float64')
  
print(images.shape)
print(type(images))
print(images.size)

Producción:

Vemos en la salida anterior, 60000 imágenes en mnist han sido reformadas en tamaño 28 x 28 y las imágenes son del tipo array numpy n-dimensional.

Publicación traducida automáticamente

Artículo escrito por rn540 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *