16

Giriş katmanında birden fazla kanal olduğunda konvolusyon işlemi nasıl yapılır? (ör. RGB)Konvolüsyonel Yapay Sinir Ağları - Çok Kanallı

Bir CNN'nin mimarisi/uygulamasında biraz okuma yaptıktan sonra, bir özellik haritasındaki her bir nöronun, çekirdek boyutunda tanımlandığı gibi bir görüntünün NxM piksellerini referans aldığı anlaşılır. Daha sonra her piksel, öğrenilen NxM ağırlık seti (çekirdek/filtre), özetlenen ve aktivasyon fonksiyonuna giren özellik haritaları tarafından belirlenir. Basit bir gri görüntü için, ben operasyon şey şu sözde kod bağlı olacağını hayal:

for i in range(0, image_width-kernel_width+1): 
    for j in range(0, image_height-kernel_height+1): 
     for x in range(0, kernel_width): 
      for y in range(0, kernel_height): 
       sum += kernel[x,y] * image[i+x,j+y] 

     feature_map[i,j] = act_func(sum) 
     sum = 0.0 

Ancak birden fazla kanalı işlemek için bu modeli nasıl genişletileceğini anlamıyorum. Her bir renk arasında paylaşılan özellik haritası başına üç ayrı ağırlık seti mi gerekiyor?

Bu eğiticinin 'Paylaşılan Ağırlıkları' bölümüne başvurma: http://deeplearning.net/tutorial/lenet.html Özellik haritadaki her bir nöron, m-1 katmanını farklı nöronlardan referans alınan renklerle referanslar. Burada ifade ettikleri ilişkiyi anlamıyorum. Nöronlar çekirdekler veya pikseller ve neden görüntünün ayrı kısımlarına referans veriyorlar?

Örneğime dayanarak, tek bir nöron çekirdeğinin bir görüntüdeki belirli bir bölgeye özel olduğu anlaşılıyor. Neden RGB bileşenini çeşitli bölgelere ayırdılar?

+0

Bu soruyu off-topic olarak kapatmayı seçiyorum çünkü bu istatistik stats.stackexchange'e aittir – jopasserat

cevap

27

Giriş katmanında birden fazla kanal varsa, evrişim işlemi nasıl yapılır? Böyle bir durumda (örneğin, RGB)

Eğer (düzlemin bilinir) giriş kanalı başına bir 2D çekirdeği vardır.

Bu nedenle, her bir evrişim (2B Giriş, 2B çekirdek) ayrı ayrı ve gerçekleştirdiğinizde, son çıktı özellik haritasını veren katkılarını toplarsınız.

Marc'Aurelio Ranzato tarafından slayt bu CVPR 2014 tutorial 64 bakınız:

enter image description here

Her rengin arasında paylaşılan özellik harita başına gerekli üç ayrı ağırlık setleri, musunuz?

belirli bir çıkış özelliği harita düşünüyorsanız, 3 x 2D tanelerini (giriş kanalı başına yani bir çekirdek) var. Her 2B çekirdeği, tüm giriş kanalı boyunca aynı ağırlıkları paylaşır (burada R, G veya B).

Bu yüzden bütün kıvrımlı katman 4D tensördür (nb. Giriş düzlemleri x nb. Çıkış düzlemleri x kernel genişlik x kernel yüksekliği).

Neden RGB bileşenini çeşitli bölgelere ayırıyorlar?

kendi özel 2D çekirdeği ile bir ayrı giriş düzlemi olarak her bir R, G düşünün ve oda kanalı, yukarıda ayrıntılı olarak

.

+0

2D conv çekirdeği üç kanal arasında paylaşılmaz mı?Düşünce konv tabakası 1 * conv_kernel_num * kernel_width * kernel_height tensörüdür. Eğer çekirdek çekirdeği kanallar arasında paylaşılmazsa, konv çekirdeğini kernel_width * kernel_height * channel_num (bu durumda 3) tensörü olarak yorumlayabilir miyim? – user2696499

İlgili konular