Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh memangkas tompok imej rawak dengan cekap menggunakan penghirisan NumPy?

Bagaimanakah saya boleh memangkas tompok imej rawak dengan cekap menggunakan penghirisan NumPy?

Susan Sarandon
Susan Sarandonasal
2024-11-03 05:12:30970semak imbas

How can I efficiently crop random image patches using NumPy slicing?

Dengan Cekap Menggunakan Pelbagai Kepingan Numpy untuk Pemotongan Imej Rawak

Pengenalan:
Dalam pembelajaran mesin dan penglihatan komputer aplikasi, pemangkasan imej ialah tugas penting untuk pra-memproses imej sebelum latihan model atau inferens. Pemotongan membantu mengekstrak kawasan menarik yang berkaitan dan mengurangkan kerumitan pengiraan memproses imej besar.

Pendekatan Pemotongan Cekap:
Kaedah pemangkasan berasaskan gelung, seperti yang ditunjukkan dalam soalan, boleh tidak cekap secara pengiraan untuk set data yang besar. Untuk menangani perkara ini, kami boleh menggunakan pengindeksan lanjutan dan kaedah berasaskan strided numpy.

Memanfaatkan Kaedah Berjalur:
fungsi np.lib.stride_tricks.as_strided Numpy membenarkan untuk mengekstrak strided pandangan tatasusunan tanpa menyalin data. Teknik ini boleh digabungkan dengan fungsi view_as_windows scikit-image untuk mencipta tetingkap gelongsor pada tatasusunan imej input.

Penjelasan Tingkap Gelongsor:
view_as_windows mencipta tatasusunan paparan ke dalam input tatasusunan, di mana setiap paparan mewakili tetingkap gelongsor. Argumen window_shape menentukan bentuk tingkap gelongsor. Dengan melepasi 1 untuk paksi yang kita tidak mahu tergelincir, kita boleh mencipta dimensi tunggal, yang kemudiannya boleh diindeks untuk mendapatkan tetingkap terpotong yang dikehendaki.

Pelaksanaan Kod:
Kod berikut menunjukkan pendekatan pemangkasan yang cekap menggunakan tingkap gelongsor:

<code class="python">from skimage.util.shape import view_as_windows

# Get sliding windows
w = view_as_windows(X, (1, 16, 16, 1))[..., 0, :, :, 0]

# Index and retrieve specific windows
out = w[np.arange(X.shape[0]), x, y]

# Rearrange format
out = out.transpose(0, 2, 3, 1)</code>

Kod ini dengan cekap menjana pasangan rawak (x_offset, y_offset) untuk setiap imej dan mengekstrak tanaman 16x16 yang sepadan ke dalam tatasusunan bentuk (4, 16, 16, 3) tanpa menanggung overhed memori yang tidak perlu.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memangkas tompok imej rawak dengan cekap menggunakan penghirisan NumPy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn