Mengapa konvolusi selalu menggunakan angka ganjil sebagai filter_size

13

Jika kita melihat 90-99% dari makalah yang diterbitkan menggunakan CNN (ConvNet). Sebagian besar dari mereka menggunakan ukuran filter angka ganjil : {1, 3, 5, 7} untuk yang paling banyak digunakan.

Situasi ini dapat menyebabkan beberapa masalah: Dengan ukuran filter ini, biasanya operasi konvolusi tidak sempurna dengan padding 2 (padding umum) dan beberapa tepi input_field tersesat dalam proses ...

Pertanyaan1: Mengapa menggunakan hanya odd_number untuk ukuran filter konvolusi?

Pertanyaan2: Apakah sebenarnya masalah untuk menghilangkan sebagian kecil dari input_field selama konvolusi? Kenapa begitu / tidak?

Jonathan DEKHTIAR
sumber

Jawaban:

14

Operasi konvolusi, sederhananya, adalah kombinasi produk elemen-bijaksana dari dua matriks. Selama kedua matriks ini sepakat dalam dimensi, seharusnya tidak ada masalah, dan saya dapat memahami motivasi di balik pertanyaan Anda.

A.1. Namun, tujuan konvolusi adalah untuk menyandikan matriks data sumber (seluruh gambar) dalam hal filter atau kernel. Lebih khusus, kami mencoba untuk menyandikan piksel di lingkungan piksel jangkar / sumber. Lihat gambar di bawah ini: masukkan deskripsi gambar di sini Biasanya, kami menganggap setiap piksel dari gambar sumber sebagai piksel jangkar / sumber, tetapi kami tidak dibatasi untuk melakukan ini. Bahkan, tidak jarang untuk memasukkan langkah, di mana kita jangkar / sumber piksel dipisahkan oleh jumlah piksel tertentu.

Oke, jadi apa pixel sumbernya? Ini adalah titik jangkar di mana kernel dipusatkan dan kami menyandikan semua piksel tetangga, termasuk piksel jangkar / sumber. Karena, kernel berbentuk simetris (tidak simetris dalam nilai-nilai kernel), ada jumlah yang sama (n) piksel di semua sisi (4- konektivitas) dari piksel jangkar. Oleh karena itu, berapapun jumlah piksel ini, panjang setiap sisi kernel berbentuk simetris kami adalah 2 * n + 1 (setiap sisi jangkar + piksel jangkar), dan karenanya filter / kernel selalu berukuran aneh.

Bagaimana jika kita memutuskan untuk putus dengan 'tradisi' dan menggunakan kernel asimetris? Anda menderita kesalahan alias, jadi kami tidak melakukannya. Kami menganggap piksel sebagai entitas terkecil, yaitu tidak ada konsep sub-piksel di sini.

A.2 Masalah batas ditangani dengan menggunakan pendekatan yang berbeda: beberapa mengabaikannya, beberapa nol padanya, beberapa cermin memantulkannya. Jika Anda tidak akan menghitung operasi terbalik, yaitu dekonvolusi, dan tidak tertarik dengan rekonstruksi sempurna gambar asli, maka Anda tidak peduli kehilangan informasi atau injeksi suara karena masalah batas. Biasanya, operasi pooling (pooling rata-rata atau max pooling) akan menghilangkan artefak batas Anda. Jadi, silakan abaikan bagian dari 'bidang masukan' Anda, operasi pengumpulan Anda akan melakukannya untuk Anda.

-

Zen konvolusi:

Dalam domain pemrosesan sinyal old-school, ketika sinyal input berbelit-belit atau melewati filter, tidak ada cara menilai a-sebelum komponen respons yang berbelit-belit / disaring yang relevan / informatif dan yang tidak. Akibatnya, tujuannya adalah untuk mempertahankan komponen sinyal (semuanya) dalam transformasi ini.

Komponen sinyal ini adalah informasi. Beberapa komponen lebih informatif daripada yang lain. Satu-satunya alasan untuk ini adalah bahwa kami tertarik untuk mengekstraksi informasi tingkat yang lebih tinggi; Informasi berkaitan dengan beberapa kelas semantik. Karenanya, komponen sinyal yang tidak memberikan informasi yang secara khusus kami minati dapat dipangkas. Oleh karena itu, tidak seperti dogma-dogma lama tentang konvolusi / penyaringan, kita bebas untuk mengumpulkan / memangkas respons konvolusi seperti yang kita inginkan. Cara yang kami rasa ingin lakukan adalah menghapus semua komponen data yang tidak berkontribusi terhadap peningkatan model statistik kami.

Stardust dinamis
sumber
Terima kasih atas penjelasan Anda, tetapi bukankah lebih mudah untuk memahami ini dengan melihat definisi konvolusi dalam istilah matematika? en.wikipedia.org/wiki/Convolution#Discrete_convolution Karena di sini kita melihat bahwa kita akan selalu memiliki istilah m ke kiri dan kanan asal ... maka ini akan selalu menghasilkan jumlah yang tidak merata.
zwep
@ zwep Setuju! T&J forum tidak menggantikan ensiklopedi; tetapi hanya melengkapi mereka. Namun, perspektif yang lebih luas untuk komentar Anda: Definisi biasanya hanya peer-review pilihan terbaik di antara opsi yang tersedia; itu bukan kebenaran Injil. Namun demikian, peraturan harus dipelajari terlebih dahulu sebelum dilanggar, sehingga dapat dikomunikasikan dengan jelas kepada masyarakat bagaimana dan mengapa Anda melakukannya secara berbeda. Alasan dan pilihan alternatif di balik definisi tertentu ada dalam makalah penelitian dan biasanya tidak dalam ensiklopedia.
Dynamic Stardust
5

1) Misalkan input_fieldsemuanya nol kecuali untuk satu entri pada indeks idx. Ukuran filter ganjil akan mengembalikan data dengan puncak terpusat di sekitar idx, ukuran filter genap tidak akan - pertimbangkan kasus filter seragam dengan ukuran 2. Sebagian besar orang ingin mempertahankan lokasi puncak ketika mereka menyaring.

2) Semua input_fieldrelevan untuk konvolusi, tetapi ujung-ujungnya output_fieldtidak dapat dihitung secara akurat karena data yang diperlukan tidak terkandung di dalamnya input_field. Jika saya ingin menghitung jawaban untuk elemen pertama output_field, filter harus dipusatkan pada elemen pertama input_field. Tetapi kemudian ada elemen filter yang tidak sesuai dengan elemen yang tersedia input_field. Ada berbagai trik untuk mendapatkan tebakan untuk tepi output_field.

Dave Kielpinski
sumber
2

Untuk filter berukuran ganjil, semua piksel lapisan sebelumnya akan simetris di sekitar piksel keluaran. Tanpa simetri ini, kita harus memperhitungkan distorsi di seluruh lapisan yang terjadi ketika menggunakan kernel berukuran rata. Oleh karena itu, filter kernel berukuran rata-rata sebagian besar dilewati untuk meningkatkan kesederhanaan implementasi. Jika Anda menganggap konvolusi sebagai interpolasi dari piksel yang diberikan ke piksel tengah, kami tidak dapat melakukan interpolasi ke piksel tengah menggunakan filter berukuran rata.

Mengapa filter berukuran sedang tidak bekerja

sumber: https://towardsdatascience.com/deciding-optimal-filter-size-for-cnns-d6f7b56f9363

Sushanth
sumber