Convolutional1D, Convolutional2D ve Convolutional3D arasındaki farklar nelerdir?


10

Evrişimli Sinir Ağları hakkında bilgi edindim. KerasÖrneklere bakarken üç farklı evrişim yöntemiyle karşılaştım. Yani, 1D, 2D ve 3D. Bu üç katman arasındaki farklar nelerdir? Kullanım durumları nelerdir? Kullanım durumlarını göstermek için bazı bağlantılar veya referanslar var mı?

Yanıtlar:


5

Tek fark girdi alanının boyutluluğudur. Bir evrişimsel katmanın girdisi aşağıdaki şekle sahiptir:

input_shape = (batch_size, input_dims, kanallar)

  • Conv1D için giriş şekli : (batch_size, W, kanallar)

    Örnek: 44100 Hz'de örneklenmiş 1 saniye stereo ses sinyali, şekil: (batch_size, 44100,2)

  • Conv2D için giriş şekli : (batch_size, (H, W), kanallar)

    Örnek: 32x32 RGB görüntü, şekil: (batch_size, 32,32,3)

  • Conv3D için giriş şekli : (batch_size, (H, w, D), kanallar)

    Örnek (daha zor): 24 fps'de 32x32 RGB görüntülerin 1 saniyelik videosu, şekil: (batch_size, 32,32,3,24)

Kanal nedir?

Önemli olan, kanalın giriş verilerimiz için ne anlama geldiğini düşünmektir. Evrişimsel katman her kanal için farklı filtreler uygulamaktadır, bu nedenle evrişim tabakasının ağırlıkları aşağıdaki şekle sahiptir:

(kernel_size,num_channels,num_filter_per_channels)

Misal:

12 filtreli konvolüsyon tabakası ve 3 boyutlu kare çekirdek matrisi. Bu katman her kanal için 12 farklı filtre uygulayacaktır. Daha önce verilen örneklerde:

  • 44100 Hz'de örneklenmiş 1 saniye stereo ses sinyali, kernel_size = 3

    12 x 2 = 24 tek boyutlu filtre, her kanal için 12 filtre

     Weigths shape: (3, 2, 12)
  • 32x32 RGB görüntü, kernel_size = (3,3)

    12 x 3 = 36 iki boyutlu filtre, her kanal için 12 filtre

    Weights shape: (3, 3, 3, 12)
  • 24 fps'de 32x32 RGB görüntülerin 1 saniyelik videosu, kernel_size = (3,3,3)

    24 x 12 = 288 üç boyutlu filtre, her kanal için 12 filtre

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

Bu nedenle, bir kanalın ne anlama geldiğine karar vermek çok önemlidir, çünkü her kanalın kendi filtre seti vardır. İlk örnekler için, stereo sinyallerin ve RGB görüntülerin farklı kanallar olduğuna karar vermek basit görünüyor ... bunlar genellikle (stereo kanallar, RGB kanalları) olarak adlandırılıyor. Video örneğinde, daha belirsiz ... Videoyu geçici boyutla kanal olarak 3D giriş olarak ayarlamak en iyi seçenek olmayabilir, çünkü bu şekilde geçici karelerin gelme sırası önemli değildir ( her kanalın filtreleri toplanır) giriş verisinin içsel zamansal dinamiklerini kaybetmeye neden olur. Daha iyi bir yaklaşım (uygulamaya bağlı olarak), RGB görüntülerini tekrarlayan bir sinir ağında 2D kıvrımlarla işlemektir. Aynı şey sesli sinyal için de geçerlidir,

Giriş boyutu D olan bir sinyalin bir kanalla D + 1 boyutu sinyali olarak kabul edilebileceğini, ancak sonuçta ortaya çıkan özellik alanının daha az temsil edici / yararlı olabileceğini belirtmek önemlidir :

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

Örnekleri destekleyen Keras kodu

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))

8

Konv1D , sese benzer giriş sinyalleri için kullanılır. Bunları kullanarak, sinyal boyunca desenler bulabilirsiniz. Örneğin, bir ses sinyaliniz var ve evrişimsel bir katmanınız var. Her evrişim, bir maliyet fonksiyonu kullanarak anlamlı kalıplar bulmak için sesi hareket ettirir.

Conv2D görüntüler için kullanılır. Bu kullanım durumu çok popüler. Bu katman için kullanılan evrişim yöntemine hacim üzerinde evrişim denir . Bu, örnek olarak RGB olan birden fazla kanal içeren iki boyutlu bir görüntünüz olduğu anlamına gelir. Bu durumda, her evrişimsel filtre, görüntü boyunca uygun desenleri bulmak için görüntü ile kıvrık, çapraz korelasyonlu üç boyutlu bir filtre olmalıdır.

Conv3D genellikle her zaman aralığı için bir çerçeveye sahip olduğunuz videolar için kullanılır. Bu katmanların öğrenilmesi gereken parametreler genellikle önceki katmanlardan daha fazladır. Onlara deme sebebimiz3Dher kare için görüntülerden başka , ayrık değerleri içeren zaman adı verilen başka bir eksenin olması ve her birinin belirli bir kareye karşılık gelmesidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.