Effizientes Numpy-Slicing für zufälliges Zuschneiden von Bildern
Für effizientes Zuschneiden von zufälligen 16x16-Patches aus einem 4D-Numpy-Array, das mehrere Farbbilder darstellt (wobei die (Die erste Dimension ist die Anzahl der Bilder und die zweite und dritte sind die gleiche Breite und Höhe.) kann ein schrittbasierter Ansatz sein genutzt.
Verwendung von np.lib.stride_tricks.as_strided oder scikit-images view_as_windows
Diese Methoden erstellen Schiebefenster als Ansichten im Eingabearray und reduzieren so den Speicheraufwand. view_as_windows von Scikit-image vereinfacht die Einrichtung, indem es die Fensterform als Tupel angibt, dessen Elemente den Abmessungen des Eingabearrays entsprechen. Achsen zum Schieben werden Fensterlängen zugewiesen und andere Achsen werden auf 1 gesetzt.
Codebeispiel
# 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)
Dieser Code generiert vier zufällige (x_offset, y_offset) Paare und extrahiert 4 zufällige 16x16-Patches innerhalb der angegebenen Parameter mit minimalem Speicheraufwand.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3