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.