Apa itu pooling di CNN?
Pooling adalah operasi CNN yang memperkecil feature map dengan meringkas setiap window kecil berisi nilai menjadi satu angka, biasanya nilai maksimum (max pooling) atau rata-rata (average pooling). Operasi ini tidak punya weight yang dipelajari. Pool 2×2 dengan stride 2 membagi dua lebar dan tinggi setiap channel dan menyisakan 25% nilainya.
Layer pooling ada di classifier gambar klasik seperti LeNet, AlexNet, dan VGG. Di sana, pooling mengurangi komputasi dan membuat network tahan terhadap pergeseran kecil pada input. Arsitektur modern masih memakai global average pooling untuk mengubah feature map terakhir menjadi vector bagi classifier, dan banyak yang mengganti layer pooling di tengah dengan strided convolution.
Ide utama
- Pooling meringkas setiap window pada feature map menjadi satu angka dan tidak punya weight yang dipelajari.
- Max pooling menyimpan aktivasi terkuat di setiap window, sedangkan average pooling menyimpan rata-ratanya.
- Pool 2×2 dengan stride 2 membagi dua tinggi dan lebar, dan menyisakan 25% nilainya.
- Lebar output adalah ⌊(W − k)/s⌋ + 1 untuk lebar input W, ukuran window k, dan stride s.
- Global average pooling mengubah setiap channel menjadi satu angka, sehingga classifier menerima vector dengan panjang tetap.
- Strided convolution bisa menggantikan pooling dengan downsampling yang dipelajari network.
Pertanyaan umum
Apakah pooling membuat CNN translation invariant?
Hanya sebagian. Feature yang bergeser di dalam satu window pooling menghasilkan maksimum yang sama, jadi pergeseran kecil teredam, tetapi pergeseran yang melewati batas window bisa mengubah output. Zhang (2019) menunjukkan bahwa CNN standar tidak shift invariant, lalu menambahkan blur sebelum downsampling (anti-aliased pooling) untuk mengatasi sebagian besar masalahnya.
Apakah layer pooling punya parameter yang bisa dilatih?
Tidak. Max pooling dan average pooling adalah fungsi tetap dari input-nya, jadi tidak menambah weight ke model. Gradient tetap melewatinya saat backpropagation, sehingga layer pooling bisa berada di antara convolutional layer yang dilatih tanpa menghambat proses belajar.
Apa itu adaptive pooling?
Adaptive pooling menerima ukuran output target, bukan ukuran window, lalu memilih window yang pas. AdaptiveAvgPool2d((1, 1)) di PyTorch adalah global average pooling untuk ukuran input apa pun, dan AdaptiveAvgPool2d((7, 7)) membuat classifier head bisa menerima gambar beresolusi berbeda.
Apa itu RoI pooling pada object detection?
RoI pooling (region of interest), dari Fast R-CNN, memotong feature map sesuai setiap kotak usulan dan menerapkan max pooling ke grid tetap seperti 7×7. Setiap kotak, berapa pun ukurannya, lalu menghasilkan feature vector dengan panjang yang sama untuk head klasifikasi dan box regression. Mask R-CNN menggantinya dengan RoIAlign, yang tidak perlu membulatkan koordinat kotak.
Penjelasan terkait
- Convolutional Neural Network · Cara CNN melihat dan memahami gambar
- Object Detection · Menemukan dan mengklasifikasikan banyak objek dalam gambar dengan bounding box dan skor confidence
- Image Segmentation · Klasifikasikan setiap pixel dalam gambar, dari area semantik sampai tiap objek
- Skip Connection & ResNet · Residual learning dan alasan network yang lebih dalam bisa bekerja
- Feature Extraction · Cara network menemukan pola dalam data mentah
- Data Augmentation · Perbanyak data training secara buatan dengan salinan hasil transformasi untuk mengurangi overfitting
Referensi
- Lin, Chen & Yan (2013), "Network In Network"
- Springenberg et al. (2014), "Striving for Simplicity: The All Convolutional Net"
- Zhou et al. (2016), "Learning Deep Features for Discriminative Localization", CVPR
- Zhang (2019), "Making Convolutional Networks Shift-Invariant Again", ICML
- Stanford CS231n, "Convolutional Neural Networks for Visual Recognition" course notes
Terakhir diperbarui