El aplanamiento es una técnica que se utiliza para convertir arrays multidimensionales en una array 1-D, generalmente se usa en Deep Learning mientras se alimenta la información de la array 1-D al modelo de clasificación.
¿Cuál es la necesidad de aplanar una imagen?
Las arrays multidimensionales ocupan más cantidad de memoria, mientras que las arrays 1-D requieren menos memoria, que es la razón más importante por la que aplanamos la array de imágenes antes de procesar/alimentar la información a nuestro modelo. En la mayoría de los casos, trataremos con un conjunto de datos que contiene una gran cantidad de imágenes, por lo que el aplanamiento ayuda a disminuir la memoria y reduce el tiempo para entrenar el modelo.
Paso 1: Importación de las bibliotecas necesarias
Python3
import numpy as np import pandas as pd import cv2 as cv from google.colab.patches import cv2_imshow from skimage import io from PIL import Image import matplotlib.pylab as plt from numpy import array from sys import getsizeof
Paso 2: Obtener una imagen aleatoria a través de la web
Python3
#Fetching the url and showing the image using cv2_imshow urls=["https://iiif.lib.ncsu.edu/iiif/0052574/full/800,/0/default.jpg"] for url in urls: image = io.imread(url) cv2_imshow(image) print('\n')
Paso 3: Transformar la imagen en una array multidimensional
Python3
#Getting the multi-dimensional array from the image array1 = array(image) #Memory occupied by the multi-dimensional array size1 = getsizeof(array1) print(array1)
Paso 4: ahora aplanando la array multidimensional usando la función flatten()
Python3
#Using Flatten function on array 1 to convert the multi-dimensional # array to 1-D array array2 = array1.flatten() #Memory occupied by array 2 size2 = getsizeof(array2) #displaying the 1-D array print(array2)
Paso 5: Resultados del aplanamiento
Python3
#Print's the two different size's of the array print(f"Size of Multidimensional Image : {size1}") print(f"Size of Flattened Image : {size2}") difference = size1 - size2 #Print's the difference of memory between the size of Multidimensional & 1-D array print("Size difference in the images: ", difference)
Size of Multidimensional Image : 1324928 Size of Flattened Image : 1324896 Size difference in the images: 32
Paso 6: Código completo
Python3
#importing libraries import numpy as np import pandas as pd import cv2 as cv from google.colab.patches import cv2_imshow from skimage import io from PIL import Image import matplotlib.pylab as plt from numpy import array from sys import getsizeof #Fetching the url and showing the image using cv2_imshow urls=["https://iiif.lib.ncsu.edu/iiif/0052574/full/800,/0/default.jpg"] for url in urls: image = io.imread(url) cv2_imshow(image) print('\n') #Getting the multi-dimensional array from the image array1 = array(image) #Memory occupied by the multi-dimensional array size1 = getsizeof(array1) print(array1) #Using Flatten function on array 1 to convert the multi-dimensional # array to 1-D array array2 = array1.flatten() #Memory occupied by array 2 size2 = getsizeof(array2) #displaying the 1-D array print(array2) #Print's the two different size's of the array print(f"Size of Multidimensional Image : {size1}") print(f"Size of Flattened Image : {size2}") difference = size1 - size2 #Print's the difference of memory between the size of Multidimensional & 1-D array print(difference)
Conclusión:
Después de ejecutar todo el código, vemos que no hay una gran diferencia en la memoria utilizada en la array de imágenes multidimensionales y la array aplanada. Entonces la gente puede preguntar por qué estamos haciendo el aplanamiento cuando el efecto es insignificante. En conjuntos de datos grandes, cuando tratamos con miles de imágenes, la cantidad neta de memoria guardada debido a que todas las imágenes se acumulan es bastante grande.
Publicación traducida automáticamente
Artículo escrito por sagnikmukherjee2 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA