Maison > Article > développement back-end > Les tranches Numpy peuvent-elles être utilisées pour un recadrage aléatoire efficace d'images ?
Recadrage d'images efficace avec des tranches Numpy
À la recherche d'une approche optimisée pour recadrer des images à l'aide de tranches Numpy, un utilisateur a remis en question la faisabilité d'une méthode stride- méthode basée sur la génération de cultures aléatoires en un seul passage.
Extraction de patch basée sur la foulée
La réponse propose d'exploiter np.lib.stride_tricks.as_strided ou view_as_windows de scikit-image pour créer une vue par fenêtre coulissante du tableau d'entrée. Cette méthode maintient l'efficacité de la mémoire sans entraîner de surcharge supplémentaire.
Explication View_as_Windows
view_as_windows permet aux utilisateurs de spécifier un argument window_shape, représentant la taille de la fenêtre coulissante le long de chaque dimension du tableau d’entrée. Les axes non destinés au découpage reçoivent des valeurs de 1. Après le découpage, le tableau résultant contient des vues avec des dimensions singleton (longueur 1) correspondant à ces 1 valeurs.
Solution
La solution suggérée consiste à utiliser view_as_windows pour extraire des fenêtres coulissantes, puis à les indexer dans ces fenêtres en fonction de décalages générés aléatoirement :
<code class="python"># Get sliding windows w = view_as_windows(X, (1, 16, 16, 1))[..., 0, :, :, 0] # Index and get specific windows out = w[np.arange(X.shape[0]), x, y] # Reshape to match loopy code format (optional) out = out.transpose(0, 2, 3, 1)</code>
Cette approche permet un recadrage efficace des images avec des décalages aléatoires distincts pour chaque image, éliminant ainsi le besoin de une boucle for.
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!