Pengantar Pooling Layers Di CNN – Menuju AI

Pengantar Pooling Layers Di CNN – Menuju AI

Pengarang: Rafay Qayyum

Awalnya diterbitkan di Towards AI the World’s Leading AI and Technology News and Media Company. Jika Anda sedang membangun produk atau layanan terkait AI, kami mengundang Anda untuk mempertimbangkan untuk menjadi sponsor AI. Di Towards AI, kami membantu menskalakan AI dan startup teknologi. Biarkan kami membantu Anda melepaskan teknologi Anda kepada massa.

Jaringan saraf convolutional (CNN) adalah jenis khusus Jaringan Syaraf Tiruan yang biasanya digunakan untuk pengenalan dan pemrosesan gambar karena kemampuannya untuk mengenali pola dalam gambar. Ini menghilangkan kebutuhan untuk mengekstrak fitur dari data visual secara manual. Itu mempelajari gambar dengan menggeser filter dari beberapa ukuran pada mereka dan mempelajari tidak hanya fitur dari data tetapi juga menjaga invariansi Terjemahan.

Struktur khas CNN terdiri dari tiga lapisan dasar:

Lapisan konvolusi: Lapisan ini menghasilkan peta fitur dengan menggeser filter di atas gambar input dan mengenali pola dalam gambar. Lapisan penyatuan: Lapisan ini menurunkan sampel peta fitur untuk memperkenalkan invarians Terjemahan, yang mengurangi overfitting model CNN. Fully Connected Dense Layer: Lapisan ini berisi jumlah unit yang sama dengan jumlah kelas dan fungsi aktivasi output seperti “softmax” atau “sigmoid”

Apa itu Pooling layer?

Pooling layer adalah salah satu blok bangunan dari Convolutional Neural Networks. Dimana Convolutional layer mengekstrak fitur dari gambar, Pooling layer mengkonsolidasikan fitur yang dipelajari oleh CNN. Tujuannya adalah untuk secara bertahap mengecilkan dimensi spasial representasi untuk meminimalkan jumlah parameter dan komputasi dalam jaringan.

Mengapa lapisan Pooling dibutuhkan?

Peta fitur yang dihasilkan oleh filter lapisan Convolutional bergantung pada lokasi. Misalnya, jika suatu objek dalam gambar telah bergeser sedikit, itu mungkin tidak dapat dikenali oleh lapisan Convolutional. Jadi, ini berarti peta fitur mencatat posisi yang tepat dari fitur dalam input. Apa yang disediakan lapisan penyatuan adalah “Translational Invariance” yang membuat CNN invarian terhadap terjemahan, yaitu, bahkan jika input dari CNN diterjemahkan, CNN akan tetap dapat mengenali fitur dalam input.

Dalam semua kasus, penyatuan membantu membuat representasi menjadi kurang lebih invarian terhadap terjemahan kecil dari input. Invarian terhadap terjemahan berarti bahwa jika kita menerjemahkan input dalam jumlah kecil, nilai sebagian besar output yang dikumpulkan tidak berubah — Page 342, Deep Learning oleh Ian Goodfellow, 2016.

Bagaimana lapisan Pooling mencapai itu? Lapisan Pooling ditambahkan setelah lapisan Convolutional, seperti yang terlihat pada struktur CNN di atas. Ini mengurangi output dari lapisan Convolutional dengan menggeser filter dari beberapa ukuran dengan beberapa ukuran langkah dan menghitung maksimum atau rata-rata input.

Ada dua jenis pooling yang digunakan:

Max pooling: Ini bekerja dengan memilih nilai maksimum dari setiap pool. Max Pooling mempertahankan fitur yang paling menonjol dari peta fitur, dan gambar yang dikembalikan lebih tajam daripada gambar aslinya. Penyatuan rata-rata: Lapisan penyatuan ini bekerja dengan mendapatkan rata-rata kolam. Penggabungan rata-rata mempertahankan nilai rata-rata fitur peta fitur. Ini menghaluskan gambar sambil menjaga esensi fitur dalam gambar.

Sumber gambar

Mari kita jelajahi cara kerja Pooling Layers menggunakan TensorFlow. Buat array NumPy dan bentuk ulang.

matriks=np.array([[3.,2.,0.,0.],
[0.,7.,1.,3.],
[5.,2.,3.,0.],
[0.,9.,2.,3.]]).membentuk ulang(1,4,4,1)

Penggabungan Maks

Buat layer MaxPool2D dengan pool_size=2 dan strides=2. Terapkan layer MaxPool2D ke matriks, dan Anda akan mendapatkan output MaxPooled dalam bentuk tensor. Dengan menerapkannya pada matriks, lapisan Max pooling akan melewati matriks dengan menghitung maksimal setiap pool 2×2 dengan lompatan 2. Cetak bentuk tensor. Gunakan tf.squeeze untuk menghapus dimensi ukuran 1 dari bentuk tensor.

max_pooling=tf.keras.layers.MaxPool2D(pool_size=2,langkah=2)
max_pooled_matrix=max_pooling(matriks)
cetak(max_pooled_matrix.shape)
cetak(tf.squeeze(max_pooled_matrix))

Penyatuan Rata-Rata

Buat layer AveragePooling2D dengan 2 pool_size dan langkah yang sama. Terapkan lapisan AveragePooling2D ke matriks. Dengan menerapkannya pada matriks, rata-rata pooling layer akan melalui matriks dengan menghitung rata-rata 2×2 untuk setiap pool dengan lompatan 2. Cetak bentuk matriks dan Gunakan tf.squeeze untuk mengubah output menjadi bentuk yang dapat dibaca dengan menghapus semua 1 dimensi ukuran.

average_pooling=tf.keras.layers.AveragePooling2D(pool_size=2,
langkah = 2)
average_pooled_matrix=pengumpulan_rata-rata(matriks)
cetak(averge_pooled_matrix.shape)
print(tf.squeeze(average_pooled_matrix))

GIF di sini menjelaskan bagaimana lapisan penyatuan ini melalui matriks input dan menghitung maksimum atau rata-rata untuk penyatuan maksimum dan penyatuan rata-rata, masing-masing.

Max Pooling dan Average Pooling sedang dilakukan — Sumber

Lapisan Pengumpulan Global

Global Pooling Layers sering menggantikan layer classifier yang terhubung penuh atau Flatten. Model malah berakhir dengan lapisan konvolusi yang menghasilkan peta fitur sebanyak kelas target dan melakukan penyatuan rata-rata global pada setiap peta fitur untuk menggabungkan setiap peta fitur menjadi satu nilai.

Buat array NumPy yang sama tetapi dengan bentuk yang berbeda. Dengan mempertahankan bentuk yang sama seperti di atas, lapisan Global Pooling akan menguranginya menjadi satu nilai.

matriks=np.array([[[3.,2.,0.,0.],
[0.,7.,1.,3.]],
[[5.,2.,3.,0.],
[0.,9.,2.,3.]]]).membentuk ulang(1,2,2,4)

Penggabungan Rata-Rata Global

Mempertimbangkan tensor bentuk h*w*n, output dari lapisan Global Average Pooling adalah nilai tunggal di h*w yang merangkum keberadaan fitur. Alih-alih memperkecil ukuran patch peta fitur input, lapisan Global Average Pooling menurunkan ukuran keseluruhan h*w menjadi 1 nilai dengan mengambil rata-rata.

global_average_pooling=tf.keras.layers.GlobalAveragePooling2D()
global_average_pooled_matrix=global_average_pooling(matriks)
cetak(global_average_pooled_matrix)
Output dari lapisan GlobalAveragePooled

Penggabungan Maks Global

Dengan tensor bentuk h*w*n, output dari lapisan Global Max Pooling adalah nilai tunggal di h*w yang merangkum keberadaan fitur. Alih-alih memperkecil ukuran patch peta fitur input, lapisan Global Max Pooling menurunkan ukuran keseluruhan h*w menjadi 1 nilai dengan mengambil nilai maksimum.

global_max_pooling=tf.keras.layers.GlobalMaxPool2D()
global_max_pooled_matrix=global_max_pooling(matriks)
cetak(global_max_pooled_matrix)
Output dari lapisan GlobalMaxPooled

Kesimpulan

Secara umum, pooling layer berguna ketika Anda ingin mendeteksi sebuah objek dalam sebuah gambar terlepas dari posisinya di dalam gambar. Konsekuensi dari penambahan pooling layer adalah pengurangan overfitting, peningkatan efisiensi, dan waktu pelatihan yang lebih cepat dalam model CNN. Sementara max pooling layer menarik keluar fitur yang paling menonjol dari sebuah gambar, pooling rata-rata menghaluskan gambar dengan mempertahankan esensi fitur-fiturnya. Lapisan penyatuan global sering menggantikan lapisan keluaran Ratakan atau Padat.

Baca API lapisan Keras Pooling dan Bab 5 Pembelajaran Mendalam dengan Python oleh François Chollet untuk informasi terperinci. Juga, periksa CNN Explainer untuk penjelasan intuitif model CNN.

Pengantar Pooling Layers Di CNN awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI

Author: Scott Anderson