"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment recadrer efficacement des patchs d'image aléatoires à partir d'un tableau Numpy 4D à l'aide du découpage basé sur Strided ?

Comment recadrer efficacement des patchs d'image aléatoires à partir d'un tableau Numpy 4D à l'aide du découpage basé sur Strided ?

Publié le 2024-11-08
Parcourir:896

How to Efficiently Crop Random Image Patches from a 4D Numpy Array using Strided-Based Slicing?

Découpage Numpy efficace pour un recadrage aléatoire d'images

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 de largeur et de hauteur égales), une approche basée sur les étapes peut être utilisé.

Utilisant np.lib.stride_tricks.as_strided ou view_as_windows de scikit-image

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

# 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)

Ce code génère quatre paires aléatoires (x_offset, y_offset) et extrait 4 correctifs aléatoires 16x16 dans les paramètres donnés, avec une surcharge de mémoire minimale.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3