Impacto del aplanamiento de imágenes

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

Deja una respuesta

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