Apa perbedaan antara Convolutional1D, Convolutional2D, dan Convolutional3D?

10

Saya telah belajar tentang Neural Networks Konvolusional. Ketika melihat Kerascontoh-contoh, saya menemukan tiga metode konvolusi yang berbeda. Yaitu, 1D, 2D & 3D. Apa perbedaan antara ketiga lapisan ini? Apa kasus penggunaannya? Apakah ada beberapa tautan atau referensi untuk menunjukkan kasus penggunaannya?

Saurabh
sumber

Jawaban:

5

Satu-satunya perbedaan adalah dimensi ruang input. Input untuk lapisan konvolusional memiliki bentuk berikut:

input_shape = (batch_size, input_dims, saluran)

  • Bentuk input untuk conv1D : (batch_size, W, saluran)

    Contoh: 1 detik sinyal suara stereo sampel pada 44100 Hz, bentuk: (batch_size, 44100,2)

  • Bentuk input untuk conv2D : (batch_size, (H, W), saluran)

    Contoh: Gambar 32x32 RGB, bentuk: (batch_size, 32,32,3)

  • Bentuk input untuk conv3D : (batch_size, (H, w, D), saluran)

    Contoh (lebih rumit): 1 detik video 32x32 gambar RGB pada 24 fps, bentuk: (batch_size, 32,32,3,24)

Apa itu saluran?

Kuncinya adalah memikirkan apa arti saluran untuk data input kami. Lapisan konvolusional menerapkan filter yang berbeda untuk setiap saluran, dengan demikian, bobot lapisan konv memiliki bentuk berikut:

(kernel_size,num_channels,num_filter_per_channels)

Contoh:

Lapisan konvolusional dengan 12 filter dan matriks kernel kuadrat ukuran 3. Lapisan ini akan menerapkan 12 filter berbeda untuk setiap saluran. Dalam contoh yang diberikan sebelumnya:

  • Sinyal suara stereo 1 detik disampel pada 44100 Hz, kernel_size = 3

    12 x 2 = 24 filter satu dimensi, 12 filter untuk setiap saluran

     Weigths shape: (3, 2, 12)
  • Gambar RGB 32x32, kernel_size = (3,3)

    12 x 3 = 36 filter dua dimensi, 12 filter untuk setiap saluran

    Weights shape: (3, 3, 3, 12)
  • Video 1 detik dari gambar 32x32 RGB pada 24 fps, kernel_size = (3,3,3)

    24 x 12 = 288 filter tiga dimensi, 12 filter untuk setiap saluran

    Weights shape: (3, 3, 3, 24, 12)

Jadi memutuskan apa arti saluran sangat penting, karena setiap saluran memiliki set filternya sendiri. Untuk contoh pertama, tampaknya mudah untuk memutuskan bahwa sinyal stereo dan gambar RGB adalah saluran yang berbeda ... mereka umumnya dinamai seperti itu (saluran stereo, saluran RGB) memang. Dalam contoh video, ini lebih ambigu ... Mengatur video sebagai input 3D dengan dimensi temporal sebagai saluran mungkin bukan pilihan terbaik karena dengan cara itu, urutan bingkai temporal datang tidak masalah (output untuk filter dari setiap saluran diringkas) yang mengakibatkan hilangnya dinamika temporal intrinsik dari data input. Satu pendekatan yang lebih baik (tergantung pada aplikasi) adalah untuk memproses gambar RGB dengan konvolusi 2D dalam jaringan saraf berulang. Hal yang sama terjadi dengan sinyal suara,

Penting untuk dicatat bahwa sinyal dengan dimensi input D dapat dianggap sebagai sinyal dimensi D + 1 dengan satu saluran, tetapi ruang fitur yang dihasilkan mungkin kurang representatif / berguna :

 (44100,2) --> expand_dimension(axis=-1)--> ((44100,2),1)

Kode keras mendukung contoh-contoh

from keras import Input, Conv1D, Conv2D, Conv3D
#1D
in_ = Input(shape=(44100,2))
layer = Conv1D(filters=12,kernel_size=3)
out_ = layer(in_)
print("Weights shape: {}".format(layer.get_weights()[0].shape))

#2D
in_ = Input(shape=(32,32,3))
layer = Conv2D(filters=12,kernel_size=3)
out_ = layer(in_)
print("Weights shape: {}".format(layer.get_weights()[0].shape))

#3D
in_ = Input(shape=(32,32,3,24))
layer = Conv3D(filters=12,kernel_size=3)
out_ = layer(in_)
print("Weights shape: {}".format(layer.get_weights()[0].shape))
ignatius
sumber
8

Conv1D digunakan untuk sinyal input yang mirip dengan suara. Dengan menggunakan mereka, Anda dapat menemukan pola di seluruh sinyal. Misalnya, Anda memiliki sinyal suara dan Anda memiliki lapisan konvolusional. Setiap belokan melintasi suara untuk menemukan pola yang bermakna dengan menggunakan fungsi biaya.

Conv2D digunakan untuk gambar. Kasus penggunaan ini sangat populer. Metode konvolusi yang digunakan untuk lapisan ini disebut konvolusi over volume . Ini berarti Anda memiliki gambar dua dimensi yang berisi banyak saluran, RGB sebagai contoh. Dalam hal ini, setiap filter konvolusional harus merupakan filter tiga dimensi yang akan dikonvolusikan, sebenarnya berkorelasi silang, dengan gambar untuk menemukan pola yang sesuai di seluruh gambar.

Conv3D biasanya digunakan untuk video di mana Anda memiliki bingkai untuk setiap rentang waktu. Lapisan-lapisan ini biasanya memiliki lebih banyak parameter untuk dipelajari daripada lapisan sebelumnya. Alasan kami menyebutnya adalah bahwa selain gambar untuk setiap frame, ada sumbu lain yang disebut waktu yang mengandung nilai-nilai diskrit, dan masing-masing sesuai dengan bingkai tertentu.3D

Media
sumber