Menggunakan Advanced Striding untuk Penapis Purata Pergerakan yang Lebih Cekap
Pengenalan:
Pengkomputeran bergerak penapis purata pada set data yang besar boleh menjadi mahal dari segi pengiraan. Walaupun pelaksanaan standard menggunakan penapis lilitan boleh menjadi perlahan, teknik langkah lanjutan menawarkan penyelesaian yang lebih cekap.
Teknik Cadangan:
Teknik yang dicadangkan melibatkan penggunaan stride_tricks NumPy.as_strided( ) berfungsi untuk mencipta tatasusunan yang sepadan dengan tetingkap bergerak di atas tatasusunan asal. Dengan melancarkan tatasusunan ini secara menegak dan mendatar, nilai kernel boleh dijumlahkan dengan cekap untuk mengira purata bagi setiap piksel.
Pelaksanaan:
Kod berikut menunjukkan pelaksanaan teknik ini:
<code class="python">import numpy as np filtsize = 3 a = numpy.arange(100).reshape((10,10)) b = np.lib.stride_tricks.as_strided(a, shape=(a.size,filtsize), strides=(a.itemsize, a.itemsize)) for i in range(0, filtsize-1): if i > 0: b += numpy.roll(b, -(pow(filtsize,2)+1)*i, 0) filtered = (numpy.sum(b, 1) / pow(filtsize,2)).reshape((a.shape[0],a.shape[1]))</code>
Kelebihan:
Teknik ini menawarkan beberapa kelebihan berbanding penapis konvolusi tradisional:
Penghadan:
Pendekatan Alternatif:
Atas ialah kandungan terperinci Bagaimanakah Langkah Lanjutan Boleh Meningkatkan Kecekapan Penapis Purata Pergerakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!