Deep Learning: Convolutional Neural Networks

Deep Learning: Convolutional Neural Networks

2. MAX POOLING

Apa itu max pooling? Apa kegunaannya? Apa kaitannya dengan CNN?

Untuk bisa memahaminya, mari kita lihat iustrasi berikut:

Satu gambar beda posisi

Melalui gambar di atas kita bisa melihat ada 3 gambar kucing dengan posisi yang berbeda-beda. Kita tahu semua gambar sebenarnya adalah gambar kucing yang sama, hanya saja gambar tengah posisinya miring, dan yang paling kanan posisinya dipersempit (dipipihkan).

Kita manusia bisa dengan mudah mengetahui bahwa 3 gambar di atas sebenarnya adalah sama. Namun, apakah komputer bisa melakukannya? Jika bisa bagaimana caranya?

Sekarang coba kita lihat lagi ilustrasi gambar kucing berikut ini:

Gambar banyak kucing

Semua gambar di atas adalah gambar kucing dengan posisi yang berbeda-beda. Ada gambar yang melihat ke arah kamera, ke arah depan, kanan, kiri, dan lain-lain. Masing-masing gambar memiliki pencahayaan yang berbeda, dan yang jelas posisi kucingnya berbeda (ada yang berdiri, duduk dan berjalan). Bagaimana mesin mengerti bahwa semua gambar ini adalah kucing? Bagaimana caranya menyimpulkan, padahal posisinya, teksturnya, pencahayaannya berbeda-beda.

Untuk itulah tujuan dari teknik max pooling. Teknik ini melakukan proses pencarian fitur yang sudah didapat di tahap sebelumnya, yaitu convolution. Dari hasil convolutional layer ini, teknik max pooling mencari fitur dengan tetap mempertahankan fleksibilitas yang tinggi. Ia tidak peduli apakah gambarnya miring ke kiri, kanan, diputar, dikecilkan, dibesarkan, berbeda teksturnya, warnanya dan lain sebagainya. Ia hanya peduli dengan fitur yang ia cari.

Untuk memperjelas pemahaman teknik max pooling, mari kita lihat ilustrasi berikut:

Proses max pooling dari feature map

Mirip dengan tahapan convolutional, di tahapan pooling kita membuat layer baru. Kali ini kita ambil pixel berukuran 2×2 di posisi paling kanan dari sebuah feature map (sebelah kiri pada gambar). Ukuran 2×2 tidaklah sebuah keharusan, pembaca bisa menggunakan 3×3, 4×4, bahkan 5×5. Namun yang umum dipakai di literatur adalah 2×2.

Dari pixel 2×2 ini kita memiliki 4 angka yaitu 0, 0, 1, dan 1. Kita cukup ambil nilai maksimumnya (karena itulah disebut max pooling). Sehingga kita masukkan angka 1, dan singkirkan 3 angka lainnya.

Sekarang kita bergeser sebanyak 2 kolom ke kanan. Ilustrasinya seperti ini:

Proses max pooling (tahap 2)

Mengapa harus bergeser sebanyak 2 kolom ke kanan? Mengapa tidak 1 saja? Bergeser dua kolom ke kanan bukanlah keharusan, walaupun ini yang umum dilakukan di beberapa literatur. Pembaca bisa saja hanya bergeser 1 kolom ke kanan, bahkan langsung 3 kolom. Tujuan pergeseran kolom ini agar data yang sudah dicari nilai maksimumnya tidak redundan (tidak dicek untuk kesekian kalinya).

Kita bisa melihat ada 4 nilai (1, 0, 2, dan 0). Kita ambil nilai maksimumnya yaitu 2.

Sekarang kita bergeser lagi 2 kolom ke kanan. Ilustrasinya seperti berikut:

Proses max pooling (tahap 3)

Walaupun setelah bergeser 2 kolom ke kanan kita terkesan seperti keluar dari batas feature map kita, namun ini bukan masalah. Sekarang kita memiliki 2 nilai (1, dan 0). Kita ambil nilai maksimumnya yaitu 1.

Sekarang dari posisi awal tadi, kita turun ke bawah sebanyak 2 baris. Ilustrasinya sebagai berikut:

Proses max pooling (tahap 4)

Begitu seterusnya sampai selesai. Ilustrasi akhirnya seperti ini:

Proses akhir max pooling

Lalu apa kegunaan max pooling? Seperti kita lihat di ilustrasi awal (gambar banyak kucing), maka max pooling akan bisa menangkan fitur yang paling menonjol. Apa fitur yang paling menonjol itu? Adalah nilai maksimum pixel yang ia iterasi, dengan tetap memiliki fleksibilitas yang tinggi.

Misal jika kita ingin mendeteksi gambar kucing, selama fitur-fitur utama kucing (nilai maksimumnya) bisa kita tangkap (dideteksi), maka seperti apapun komposisi gambarnya (gambar miring, berbeda warna, diperkecil, dan lain-lain), fitur dasar kucing tetaplah ada dan disimpan.

Analogi mudah proses pooling adalah seperti masak dengan menggunakan garam. Ibaratnya mau diapa-apakan masakan yang kita buat (ditambah kecap, gula, dan lain-lain), jika kita gunakan garam, maka rasa asinnya tetaplah terasa. Rasa asin yang kita deteksi itulah yang ditangkap oleh proses pooling, sehingga kita bisa mengatakan di masakan itu ada garamnya.

Selain itu melalui proses pooling ukuran gambarnya menjadi lebih kecil (75% lebih kecil). Dengan demikian, proses komputasi CNN juga akan berlangsung semakin cepat.

Untukinformasi tambahan bagi pembaca, jenis-jenis metode pooling ada banyak. Ada max pooling yang kita gunakan dalam pembahasan ini, yaitu kita mencari nilai maksimumnya. Ada juga average pooling (menghitung nilai rataan), dan jenis-jenis lainnya.

Dari proses pooling ini akan dihasilkan pooling layer (pooled feature maps). Tentunya dalam CNN kita melakukan beberapa kali proses pooling sehingga ada banyak pooling layer yang dihasilkan. Tampilannya adalah sebagai berikut.

Proses dari gambar awal, menjadi convolutional layer kemudian menjadi pooling layer

Untuk melanjutkan membaca, silakan klik tombol ke halaman selanjutnya di bawah ini.

Bagikan artikel ini:

Pages: 1 2 3 4 5 6 7

Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Sukir
Sukir
4 months ago

Assalamu’alaikum pak saya ingin bertanya, pada pembahasan di halaman ini kan feature detector / filter berukuran 3 x 3 dan nilainya 0,1,0,1 karena hanya sebagai contoh agar lebih mempermudah, bagaimana pak cara menentukan ataupun mengetahui nilai2 piksel dari suatu feature detektor (misal 3×3 atau 5×5) jika gambar kita grayscale maupun RGB?