Maison > Article > développement back-end > Comment recadrer efficacement des patchs d'images aléatoires à partir d'un tableau Numpy 4D à l'aide du découpage basé sur Strided ?
Découpage Numpy efficace pour un recadrage d'images aléatoire
Pour un recadrage efficace de patchs aléatoires 16x16 à partir d'un tableau Numpy 4D représentant plusieurs images couleur (où le la première dimension est le nombre d'images, et les deuxième et troisième sont la largeur et la hauteur égales), une approche basée sur les foulées peut être utilisée.
En utilisant np.lib.stride_tricks.as_strided ou scikit- image's view_as_windows
Ces méthodes créent des fenêtres coulissantes sous forme de vues dans le tableau d'entrée, réduisant ainsi la surcharge de mémoire. view_as_windows de Scikit-image simplifie la configuration en spécifiant la forme de la fenêtre sous la forme d'un tuple dont les éléments correspondent aux dimensions du tableau d'entrée. Les axes de glissement se voient attribuer des longueurs de fenêtre et les autres axes sont définis sur 1.
Exemple de code
<code class="python"># 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)</code>
Ce code génère quatre paires aléatoires (x_offset, y_offset). et extrait 4 patchs 16x16 aléatoires dans les paramètres donnés, avec une surcharge de mémoire minimale.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!