Bilişim dünyasına kaliteli, özgün ve Türkçe içerikler kazandırmayı hedefleyen bir platform..

friends friends friends

Convolutional Neural Networks

CNN (Convolutional neural network- CNN - Evrişimli Sinir Ağı ), görüntü, ses veya metin gibi girdileri sınıflandırmak için kullanılan bir derin öğrenme algoritmasıdır. Türkçeye Evrişimsel Sinir Ağları olarak çevriliyor.

Evrişimsel Sinir Ağları (ESA) gibi derin öğrenme algoritmaları görüntü tanımada çok güçlüdür. CNN'ler özellikle örüntüleri tanımak için donatılmıştır. Doğru bir CNN Sınıflandırma modeli oluşturmak için yeterli eğitim verisi gereklidir.

Derin öğrenmede resim sınıflandırması (image classification) dendiğinde akla ilk gelen Convolutional Neural Networks oluyor. CNN ile resimleri kategorize ederken ilk önce "feature extraction" yani özellik çıkarması yaparız. CNN’leri güçlü kılan şeylerden birisi de budur. Resimlerin özelliklerini hidden layerlarda öğrendikten sonra kategorize etmeye geçebiliriz.

Çeşitli Modeller

  1. AlexNet
  2. LeNet-5
  3. VGG-16
  4. DenseNet161
  5. ZFNet
  6. GoogLeNet
  7. Microsoft RestNet, ResNet50
  8. R-CNN, Fast R-CNN ve Faster R-CNN Modelleri
  9. EfficientNet
  10. Xception
  11. MobileNet

ILSVRC 2015'in şampiyonluğunu kazanan ResNet, AlexNet'ten yaklaşık 20 kat ve VGGNet'ten 8 kat daha derindir

Ayrıca https://keras.io/api/applications/ üzerindeki ImageNet üzerinden eğitilmiş farklı modellerin tam listesini inceleyebilirsiniz.

Alexnet

AlexNet, Alex Krizhevsky tarafından Ilya Sutskever ve Krizhevsky'nin danışmanı olan Geoffrey Hinton ile işbirliği içinde tasarlanan bir evrişimsel sinir ağı mimarisinin adıdır. Eski bir model olarak biliyorum. Zaten VGG'ye dönüştü diyebiliriz.

VGG-16

VGG-16, basit bir ağ modeli olup öncesindeki modellerden en önemli farkı evrişim katmanlarının 2’li ya da 3’li kullanılmasıdır. Tam bağlantı (FC) katmanında 7x7x512=4096 nöronlu bir öznitelik vektörüne dönüştürülür. İki FC katmanı çıkışında 1000 sınıflı softmax başarımı hesaplanır. Yaklaşık 138 milyon parametre hesabı yapılmaktadır. Diğer modellerde olduğu gibi girişten çıkışa doğru matrislerin yükseklik ve genişlik boyutları azalırken derinlik değeri (kanal sayısı) artmaktadır.

Elde ettiği çığır açan performansla tanınan VGG-16, bir görüntü sınıflandırma modelidir ve derin öğrenmenin en popüler mimarilerinden biridir. VGG-16, 16 katmanlı bir evrişimli sinir ağıdır.

VGG-16, evrişimli katmanlarla başlar. Görüntüler, bu katmanlarda konvolüsyon işlemlerine tabi tutulur ve özellik haritaları üretilir. Bu özellik haritaları, ağın daha sonraki katmanlarında kullanılmak üzere diğer evrişimli katmanlara aktarılır.

Bu evrişimli katmanlar, ardından tamamen bağlı katmanlara aktarılan birkaç yoğun katmanla sona erer. Bu yoğun katmanlar, özellik haritalarını sınıflara dönüştürmek için kullanılır. Ayrıca, yoğun katmanların arasında, aşırı öğrenmeyi önlemek için bırakma işlemleri uygulanır.

VGG-16 modelinin büyük bir özelliği, evrişimli katmanların hepsinde 3x3 boyutunda filtreler kullanılmasıdır. Bu filtrelerin küçük boyutu, daha büyük boyutlu filtreler kullanıldığında elde edilen sonuçların neredeyse aynısını sağlar, ancak daha az parametreyle daha hızlı öğrenmeye olanak tanır.

VGG-16, ImageNet veri kümesindeki sınıfları sınıflandırmak için eğitilmiştir ve büyük görüntü veri kümesindeki sınıflandırma görevlerinde de yaygın olarak kullanılmaktadır.

ImageNet ile eğitilen VGG16, VGG19 ve ResNet modelleri 224x224 boyutunda, Inception ise 299x299 boyutunda girdiye ihtiyaç duyar.

Keras üzerindeki tüm modellerin üzerine tıkladığınızda nasıl kullanılacaklarına dair bilgilere erişebilirsiniz. Örneğin VGG16'nın kullanımına bakarsak aşağıdaki gibidir:

tf.keras.applications.VGG16(
    include_top=True,
    weights="imagenet",
    input_tensor=None,
    input_shape=None,
    pooling=None,
    classes=1000,
    classifier_activation="softmax",
)

DenseNet161

DenseNet, tüm katmanları (eşleşen özellik haritası boyutlarıyla) doğrudan birbirine bağladığımız Yoğun Bloklar aracılığıyla katmanlar arasındaki yoğun bağlantıları kullanan bir tür evrişimsel sinir ağıdır. İleri beslemeli doğayı korumak için, her katman önceki tüm katmanlardan ek girdiler alır ve kendi özellik haritalarını sonraki tüm katmanlara iletir.

GoogLeNet

GoogLeNet, doğrusal şekilde dizilmiş 9 adet inception modülüne sahiptir. 22 katman derinliğindedir. Havuz katmanları dahil edildiğinde katman sayısı 27 olur.

ResNet

ResNet, 2015 yılında Kaiming He, Xiangyu Zhang, Shaoqing Ren ve Jian Sun tarafından önemli ölçüde daha derin olan ağların eğitimini kolaylaştırmak için “Deep Residual Learning for Image Recognition” makalesinde tanıtılan belirli bir sinir ağı türüdür.

MobileNet

Google'ın geliştirdiği basit ama hızlı bir algoritmadır. Mobil sistemlerde daha çok kullanılmaktadır.

Derin Öğrenme ilk defa 2012 yılında bilim dünyasında büyük etki oluşturmuştur. Nesne tanımlama alanında en büyük yarışma olan Büyük Ölçekli Görsel Tanıma Yarışması( ImageNet)(Competition 2012) o yıl derin öğrenmede temel mimari kabul edilen Evrişimsel Sinir Ağı(ESA)ile kazanıldı. Derin öğrenme ile ilgili ilk çalışmalar çok geçmişe dayanmasına rağmen son yıllarda başarılı bir şekilde kullanılmasının başlıca sebeplerinden biri yeteri kadar verinin olmasıdır.

ESA’lar görüntü sınıflandırma, nesne tanımlama, görüntü segmentasyon v.b problemlerde başarılı bir şekilde uygulanmaktadır. ESA’lar YSA’ların geliştirilmiş halidir. YSA’lardaki gizli katman sayılarının daha da arttırılması sonucu derinleşen ağ ESA olarak tanımlanabilir. Son olarak, ESA’ların YSA’lardan ayıran temel fark, ESA’ların derinleşen ağ yapısının eğitilmesi aşamasında ezberlemeyi önlemek için kullanmış olduğu DropOut yöntemidir. Bu yöntem, eğitim aşamasında her iterasyonda ağa ait bazı düğümleri gelişi güzel kaldırarak ezberlemeyi önlemeyi amaçlamaktadır.

Bilgisayar bilimlerinde kavramların anlaşılması açısından şöyle bir açıklama yapılabilir; makine öğrenmesi yapay zekânın bir alt dalıdır. YSA’lar ise makine öğrenmesinin içerisinde bir sınıf olarak kabul edilebilir. ESA’lar ise YSA’ların zamanla geliştirilmiş halidir ve aynı zamanda Derin Öğrenme kavramı altında kullanılmaktadır. Derin öğrenme ayrıca temelinde bulunan YSA ve ESA yapılarıyla beraber yapay zekânın bir alanı olarak kabul edilebilir ve makine öğrenmesi alanından ayrılabilir.

Evrişimli Sinir Ağları (Convolutional Neural Networks - CNN), görüntü işlemede sıklıkla kullanılan derin öğrenme modellerinden biridir. CNN'ler, yüksek boyutlu veri setlerinde çok katmanlı öğrenme yeteneği sayesinde başarılı sonuçlar verirler. Görüntü işlemede CNN'ler, genellikle şu şekillerde kullanılır:

  1. Özellik Çıkarma: CNN'ler, verilen bir görüntüdeki çeşitli özellikleri (örneğin, kenarlar, renkler, desenler vb.) algılamak için kullanılabilir. Bu özellikleri çıkarmak için, birkaç evrişim katmanı ve ardından havuzlama katmanları (pooling layers) eklenir. Bu şekilde, verilen bir görüntüdeki önemli özellikler ayrıştırılır ve daha sonra bu özellikler kullanılarak sınıflandırma işlemi yapılabilir.
  2. Sınıflandırma: CNN'ler, sınıflandırma işlemleri için kullanılabilirler. Bu amaçla, son katmanlara doğru, genellikle birkaç tam bağlantılı (fully-connected) katman eklenir. Bu katmanlar, önceki katmanlarda öğrenilen özellikleri kullanarak, verilen bir görüntüdeki nesneleri tanımak için bir olasılık dağılımı oluşturur.
  3. Nesne Tanıma: CNN'ler, nesne tanıma gibi görevlerde de kullanılabilir. Bu amaçla, CNN'lerdeki evrişim katmanları, verilen bir görüntüdeki farklı nesneleri algılamak için kullanılabilir. Bu katmanlar, bir nesnenin farklı özelliklerini belirleyebilir ve ardından daha sonra sınıflandırma işlemleri için kullanılabilir.
  4. Görüntü Düzenleme: CNN'ler, bazı görüntü düzenleme işlemleri için de kullanılabilir. Örneğin, GAN'lar (Generative Adversarial Networks) gibi bazı CNN modelleri, verilen bir girdi görüntüsüne dayalı olarak yeni görüntüler oluşturmak için kullanılabilir.

Sonuç olarak, CNN'ler, görüntü işlemede oldukça başarılı sonuçlar veren önemli bir derin öğrenme modelidir. Bu modelin kullanımı, veri setinin özelliklerine, uygulanacak işlemlere ve hedeflenen sonuçlara bağlı olarak farklı şekillerde olabilir.

CNN Modelleme Nasıl Yapılır?

CNN modellemesi için aşağıdaki adımları izleyebilirsiniz:

  1. Veri hazırlama: Veri setinizdeki görüntüleri okuyun ve ön işlem adımlarını uygulayın. Ön işlem adımları arasında, görüntüleri ölçeklendirme, döndürme, kesme, normalleştirme ve diğerleri bulunabilir.
  2. Modelin oluşturulması: Keras veya TensorFlow gibi derin öğrenme kütüphanelerini kullanarak bir CNN modeli oluşturun. Model oluşturulurken, katmanlar ve filtreler gibi özellikler belirlenir. Convolution (filitreleme), MaxPooling, Dropout ve Dense (Tamamen Bağlı) katmanları gibi farklı katman türlerini kullanarak CNN modelinizi oluşturabilirsiniz.
  3. Modelin eğitimi: Hazırlanan veri seti kullanılarak, modelinizi eğitmeniz gerekiyor. Bu aşamada, modelinizi derin öğrenme algoritmaları kullanarak eğitirsiniz. CNN modeli eğitimi, uzun sürebilir ve genellikle GPU'lar kullanılarak hızlandırılır.
  4. Modelin test edilmesi: Eğitilen modelinizi, test veri setiniz üzerinde test edin ve modelin doğruluğunu ve performansını değerlendirin. Ayrıca, overfitting problemini önlemek için doğruluk ve kayıp değerlerine göre modelinizi ayarlayabilirsiniz.
  5. Modelin kullanımı: Eğitilmiş CNN modelinizi, görüntü sınıflandırma veya nesne tespiti gibi gerçek dünya problemlerine uygulayabilirsiniz. Önceden tahmin edilmemiş verileri modelinize vererek, modelinizin gerçek dünya verilerinde ne kadar iyi performans gösterdiğini test edebilirsiniz.

Bu adımlar, genel olarak bir CNN modelinin oluşturulması için izlenen aşamalardır. Ancak, projenizin özelliklerine göre, modelinizi daha fazla özelleştirebilirsiniz.

Convolutional Neural Networks Makine Öğrenmesi Yapay Zeka Evrişimli Sinir Ağı Evrişimsel Sinir Ağları AlexNet LeNet-5 VGG-16 GoogLeNet Microsoft RestNet R-CNN ZFNet ESA Yapay sinir ağları YSA derin öğrenme Fast R-CNN Faster R-CNN ResNet50 keras applications pre trained models transfer learnings transfer öğrenme
0 Beğeni
Makine Öğrenmesi
Önceki Yazı

Multilayer Perceptrons

01 Ekim 2020 tarihinde yayınlandı.
Sonraki Yazı

Recurrent Neural Networks

01 Ekim 2020 tarihinde yayınlandı.
arrow