AlexNet, VGGNet, Inception: Nesne Sınıflandırma Ağlarının Gelişimi ve Çıkardığımız Dersler

irfan bilaloğlu
6 min readJul 9, 2020

--

Bu yazıda aşağıdaki nesne sınıflandırma ağlarını ve bu ağların getirdiği yenilikleri inceleyeceğiz:

  • AlexNet (2012)
  • VGGNet (2014)
  • GoogLeNet (Inception V1) (2014)

Ayrıca getirilen yenilikler olarak aşağıdaki kavramları inceleyeceğiz:

  • ReLu
  • Local response normalization (LRN)
  • Dropout
  • 1x1 Konvulüsyon
  • Global Avarage Pooling

Önbilgi:

Bu yazıda CNN (Convulution Neural Network) lerin nasıl çalıştığını bildiğinizi varsayayıyorum.

Eğer

  • Kernel
  • Loss Fonksiyonu
  • Backpropogation
  • Konvülsiyon
  • Pooling
  • Softmax

gibi kavramlar size tanıdık gelmiyorsa, CNN ile derin öğrenmeye giriş yazılarına bakmanızı tavsiye ediyorum.

Popüler CNN sınıflandırma ağları:

Popüler Sınıflandırma ağlarının hata payı karşılaştırmaları

AlexNet (2012):

AlexNet, nesne sınıflandırma alanında derin öğrenme ağlarının populerliğini başlatan ve derin öğrenmeye ilginin tekrar artmasını sağlayan bir mihenk taşıdır.

İçerisinde 20 binden fazla kategoride 14 milyondan fazla resim bulunduran bir veri seti olan ImageNet’in 2010’dan 2017’ye kadar düzenlediği ImageNet Large Scale Visual Recognition Challenge (ILSVRC)
yarışmasında, 2012 yılında en yakın rakibine göre hata payını %10.8 düşürerek büyük bir farkla birinci olmuştur.

AlexNet Mimarisi

AlexNet, 5 CNN ve sonda 3 tam bağşı katmanlardan oluşmaktadır. En son ise softmax ile 1000 kategoride değer verir.

Mimariye dikkat ettiğimizde dikey olarak iki ayrı yapıdan oluştuğunu görebiliriz. Bu 2 GPU üzerinde eğitilecek şekilde tasarlanmış olmasındandır.

AlexNet’in getirdikleri:

Aktivasyon Fonksiyonu:

Aktivasyon fonksyonu olarak standart f(x)=tanh(x) yerine hesaplaması çok daha basit lineer f(x)=max(0,x) kullanmıştır. Yapılan deneylerde iki aktivasyon fonksiyonu arasında çok fark olmadığı görülmüştür.

Local response normalization (LRN):

AlexNet sınırları (-1, 1) olan sin veya tanh aktivasyon fonksiyonları yerine sınırı (0,+∞) olan ReLu kullandığı için değerler sonsuza uzanabilir. Bunun önüne geçmek için AlexNet Local response normalization kullanmıştır.

LRN Formülü

Burada i filtrenin çıkış değeri, a(x,y), b(x,y) normalizasyondan önce ve sonraki pixel değerlerini, N kanal sayısını ifade etmektedir. Hiperparametrelerdeb (k,α,β,n) k sıfıra bölünmeyi engellemek için, α normalizasyon sabiti, β konstrast sabiti n ise kaç komşu pikselin göz önünde bulundurulacağını belirtmektedir.

Üst: Normalizasyon Öncesi Alt: Normalizasyon Sonrası

Dropout:

Toplamda 60 milyon parametre ve 650,000 nöron içeren AlexNet’in ezberlemesini önlemek içinse sondaki tam bağlı katmanlarına %50 oranında dropout uygulanmıştır. Yani her eğitimde tam bağlı katmanlarda kurulan bağlantıların yarısı silinmektedir. Böylece nöronlar bazı bağlantılara çok güvenemeden hepsini genelleştirmek zorunda kalır.

VGGNET (2014):

ILSVRC 2014'te GoogleLeNet in ardından 2. olmuştur. VGG (Visual Geometry Group) yarışmasına 3 farklı ağ ile katılmıştır. Sırasıyla 11,16 ve 19 katmandan oluşan VGG-11, VGG-16 ve VGG-19.

Mimarisinde 3x3 konvolüsyon katmanlarından sonra max pooling katmanı, sonunda ise 3 adet Fully Connected (tam bağlı) katman barındırmaktadır.

VGG’nin en büyük katkısı derinliğin sınıflandırmada önemini göstermesidir.

3x3 Filtrelerin kullanımı:

VGG, 11x11 ve 7x7 gibi büyük konvolüsyon filtreleri yerine daha az işlem gerektiren 3x3 konvolüsyon filtresi kullanarak derinliğe odaklanmıştır.

Arka arkaya 2 adet 3x3 filtre kullanımı 1 adet 5x5 filtreye denk gelmektedir

Aslında arka arkaya 2 adet 3x3 filtre kullanmak 1 adet 5x5 filtre kullanmaya denk gelmektedir. Ancak anlamsal değeri daha fazladır.

Mimariden çıkarılan dersler:

VGG Mimarileri

Tek farkları fazladan LRN katmanı olan VGG-11 (%10.4) ve VGG-11 LRN (%10.5) incelendiğinde AlexNet’in getirdiği local response normalization katmanının sonucu kötüleştirdiği görülmektedir. Artık normalizasyon katmanı olarak LRN değil Batch Normalization (BN) kullanılmaktadır.

VGG-13'e baktığımızda hata oranının daha da azaldığını görüyoruz. Yani fazladan konvolüsyon katmanları sistemin daha iyi cevap vermesini sağlıyor.

VGG-13 (%9.9)’ten tek farkı fazladan 3 adet 1x1 konvolüsyon katmanı içeren VGG-16(Conv1) (%9.4) da ise daha da iyi bir sonuç elde edilmiş. Demek ki 1x1 katmanlar çözünürlüğü değiştirmeden lineerliği azaltarak sınıflandırmanın başarısına yardım ediyorlar. Ayrıca 1x1 conv katmanları GoogLeNet, ResNet ve MobileNet ağlarında da kullanılmıştır.

VGG-16(%8.8) ile VGG-19 (%9.0) u karşılaştırdığımızda ise fazla katmanların artık başarıyı düşürdüğünü gözlemliyoruz. Ayrıca fazla katman, parametre sayısını arttırmakta ve Loss fonksiyonunun minimize edilmesinin daha uzun sürmesine neden olmaktadır.

GoogLeNet (2014), (Inception v1):

ILSVRC 2014 yarışmasının birincisidir. 22 katmandan oluşmaktadır. Inception ismi derinliği göz önünde bulundurduklarından direk filmden gelmektedir.

Bakacağımız yenilikler:

  1. 1x1 Konvulüsyon
  2. Inception Modülü
  3. Global Avarage Pooling

1x1 Filtre:

GoogLeNet’te 1x1 konvulüsyon filtresi boyut ve işlem yükünü azaltmak için kullanılmaktadır. Bu sayede filtrelerin genişliği ve derinliği arttırılabilir.

Örneğin bir 5x5 filtreyi ele alırsak

Burada işlem sayısı: (14×14×48)×(5×5×480) = 112.9M

Eğer araya boyut azaltacak 1x1 filtre eklersek:

İlk işlem sayısı: (14×14×16)×(1×1×480) = 1.5M

İkinci işlem sayısı: (14×14×48)×(5×5×16) = 3.8M

Toplam işlem sayısı: 1.5M + 3.8M = 5.3M

Görüldüğü gibi çok daha az işlemle benzer sonuçlar elde edebiliyoruz. Inception kısmı burada devreye giriyor. 1x1 yardımı sayesinde düşürdüğümüz işlem yüküne farklı filtreler ekleyebiliriz.

Inception Module:

Inception Modülü içerisinde farklı boyutlarda filtreler barındırıyor

Önceki incelediğimiz ağlarda filtre boyutları sabitti ancak GoogLeNet farklı filtre boyutları içeren katmanlardan modüller oluşturmuş ve aynı anda farklı boyutlardan anlamsal değer çıkarmayı hedeflemiştir. 3x3 filtre küçük alanlara odaklanırken 5x5 filtre daha büyük alanlara odaklanmış ve modülün sonunda birleştirilmişlerdir. Bu sayede her modül farklı tiple anlamlar çıkarmıştır.

Global Avarage Pooling:

Tam bağlı katman ve Global Avarage Pooling katmanı

Önceki incelediğimiz ağlarda sonlarda tam bağlı katmanlar bulunur. 7x7 boyutundaki bir katmanın işlem yükünü incelersek 7×7×1024×1024 = 51.3M elde ederiz. GoogLeNet ise sonda tam bağlı katman kullanmak yerine, derinliği 1024 olan 7x7 katmanındaki her derinliğin ortalamasını alıp sonuç olarak bu ortalamayı kullanmıştır. Eğitilirken değiştirilen parametre sayısı sıfır (0)’a düşmüştür.

Mimari:

Modülleri öğrendikten sonra tüm mimari artık o kadar karmaşık gelmeyecektir.

GoogLeNet Mimarisi

Fark ettiyseniz aralarda 2 adet daha softmax katmanı var. Bu katmanlar yalnızca eğitim sırasında kullanılmış ve derin yapısından dolayı vanishing gradient problemini önlemek için yapılmıştır

Özet:

Bu yazımızda CNN gelişimine öncülük eden en popüler 3 ağı inceledik.

  • AlexNet aktivasyon fonksiyonu olarak ReLu kullanan ilk ağ oldu.
  • VGGNet daha küçük filtrelerle derinliğin önemini gösterdi.
  • GoogLeNet ise 1x1 kovulüsyonları getirerek işlem sayısını azaltıp modüller içerisinde farklı boyutlarda filtreler kullandı.

Aşağıda hızlarını ve parametre sayılarını bulabilirsiniz. GoogLeNet( Inception)’in parametre sayısı AlexNet’ten çok daha az olmasına rağmen daha yavaş olduğunu fark ettiyseniz bunun sebebi yapması gereken noktalı sayı (FLOPS = Floating Point Operations Per Second) işlemlerinin daha fazla olmasıdır.

Parametre ve işlem sayısı karşılaştırmaları
GTX 1080 üzerinde hız karşılaştırmaları

Bir sonraki yazımızda Vanishing/Exploding Gradient problemine bakıp ResNet ve MobileNet ağlarını inceleyeceğiz.

Kaynaklar:

--

--