Corte Numpy eficiente para el recorte aleatorio de imágenes
Para el recorte eficiente de parches aleatorios de 16x16 de una matriz Numpy 4D que representa múltiples imágenes en color (donde el La primera dimensión es el número de imágenes, y la segunda y la tercera tienen el mismo ancho y alto), se puede aplicar un enfoque basado en pasos. utilizado.
Utilizando np.lib.stride_tricks.as_strided o view_as_windows de scikit-image
Estos métodos crean ventanas deslizantes como vistas en la matriz de entrada, lo que reduce la sobrecarga de memoria. view_as_windows de Scikit-image simplifica la configuración al especificar la forma de la ventana como una tupla cuyos elementos corresponden a las dimensiones de la matriz de entrada. A los ejes para deslizamiento se les asignan longitudes de ventana y otros ejes se configuran en 1.
Ejemplo de código
# Import scikit-image for view_as_windows
from skimage.util.shape import view_as_windows
# Get sliding windows
w = view_as_windows(X, (1,16,16,1))[...,0,:,:,0]
# Generate random per-image offsets
x = np.random.randint(0,12,X.shape[0])
y = np.random.randint(0,12,X.shape[0])
# Index and extract specific windows
out = w[np.arange(X.shape[0]),x,y]
# Reformat if necessary
out = out.transpose(0,2,3,1)
Este código genera cuatro pares aleatorios (x_offset, y_offset) y extrae 4 parches aleatorios de 16x16 dentro de los parámetros dados, con una sobrecarga de memoria mínima.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3