Heim > Artikel > Backend-Entwicklung > Können Numpy Slices zum effizienten zufälligen Zuschneiden von Bildern verwendet werden?
Effizientes Bildzuschneiden mit Numpy-Slices
Auf der Suche nach einem optimierten Ansatz zum Zuschneiden von Bildern mit Numpy-Slices stellte ein Benutzer die Machbarkeit eines Schrittes in Frage. basierte Methode zum Generieren zufälliger Zuschnitte in einem einzigen Durchgang.
Stride-basierte Patch-Extraktion
Die Antwort schlägt die Nutzung von np.lib.stride_tricks.as_strided oder scikit-image's view_as_windows vor zum Erstellen einer Schiebefensteransicht des Eingabearrays. Diese Methode behält die Speichereffizienz bei, ohne dass zusätzlicher Overhead entsteht.
View_as_Windows Erklärung
view_as_windows ermöglicht Benutzern die Angabe eines window_shape-Arguments, das die Größe des Schiebefensters entlang jeder Dimension des darstellt Eingabearray. Achsen, die nicht für das Slicing vorgesehen sind, erhalten den Wert 1. Nach dem Slicing enthält das resultierende Array Ansichten mit Singleton-Dimensionen (Länge 1), die diesen 1-Werten entsprechen.
Lösung
Die vorgeschlagene Lösung beinhaltet die Verwendung von view_as_windows zum Extrahieren von Schiebefenstern und die anschließende Indizierung in diese Fenster basierend auf zufällig generierten Offsets:
<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>
Dieser Ansatz ermöglicht das effiziente Zuschneiden von Bildern mit eindeutigen zufälligen Offsets für jedes Bild, wodurch die Notwendigkeit entfällt eine for-Schleife.
Das obige ist der detaillierte Inhalt vonKönnen Numpy Slices zum effizienten zufälligen Zuschneiden von Bildern verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!