Deep Learning ve Computer Vision
  1. Anasayfa
  2. Yazılım

Deep Learning ve Computer Vision

1

Computer Vision (CV), bilgisayarların fotoğraf ve video gibi dijital görüntülerin içeriğini “görmesine”, görüntüde neyin olduğunu (Image Classification) ve nerede olduğunu  (Object Detection) anlamasını sağlayacak teknikler geliştirmeye çalışan bir bilgisayar bilimleri alanıdır. CV alanı son 8 yılda çok ilerlemiş ve aşağıdaki şekilde göreceğimiz gibi artık insanlardan bile daha doğru sonuçlar vermeye başlamış.

Resim-1 ImageNet Large Scale Visual Recognition yarışması sonuçları – Top 5 hatası

ImageNet yarışmasında araştırmacılar geliştirdikleri CV modelleri 21 milyon resim (Dataset) üzerinde test edilip bu resimlerin ne olduğunu (21 bin Classes) tahmin etmeleri gerekiyor (Prediction). Deep Learning, 2012 yılından itibaren kullanılmaya başlanmış. Bu yazıda bir Deep Learning modeli neyden oluştuğunu göreceğiz.

Resim-2 : Bir yapay sinir ağı örneği

Deep Learning, insan sinir ağlarından esinlenen yapay zekanın bir alt dalıdır. Modeldeki (yapay sinir ağı) her Neuron bir dizi Input alır, onu kendi Weight’leri ile işler ve dizi Output çıktı olarak verir. Diğer yapay zeka tekniklerinden farkı, bu model Input’lerin önemini (Weight) kendisi öğrenmesi gerekir. CV’de kullanılan Deep Learning tipi Convolutional Neural Network (CNN) ve tipik bir CNN Convolutional Layer, Activation, Pooling Layer, ve Fully Connected Layer katmanlarından oluşur.

Resim-3: Genel bir CNN mimarisi

Convolutional Layer

Bu katman görüntüdeki Feature’ları (özellikleri) ayıklar. Baştaki Convolutional Layer’lar çizgi gibi özellikleri bulurken daha derin olanlar burun, göz, vs.. bulur. Her Convolutional Layer da Filter / Kernel’lardan oluşur. Kernel’lar Weight matrisidir. Convolution işlemi aşağıdaki gibidir.

Resim-4

W: Weights, X:Input, ve B: bias

 

Resim-5 : Convolution işlemi

 

Resim-6 : Kernel / Filter örnekleri

Activation

Activation Function, Convolutional Layer’dan aldığı lineer Input’a nonlineerlik katıyor. Bu, modelin Training sürecinde Weight’leri öğrenirken takılmadan minimaya ulaşmasını sağlar. En sık kullanılan Activation Function ReLu’dur (Rectified Linear Unit). Bu Activation Function genelde Convolutional işlemi ile birleştiriliyor.

 

Resim-7

Pooling Layer

Convolutional Layer ve Activation’dan sonra genelde bu katman gelir. Pooling Layer aldığı Input’un boyutunu küçültür, Training ve Prediction süresini de kısaltır. Bu katman diğer katmanların aksine, Weight’i yoktur. En yaygın Pooling türü olan Max Pooling, Pooling penceresindeki maksimum değerini alır.

Resim-8 Max Pooling

Fully Connected Layer

Fully Connected Layer’lar modelin sonunda gelir ve önceki katmanlardan aldığı 3D Input’u 1D’ye dönüştürür. Bu işleme Flattening denir. Son sonuçlar bu 1D Output’tan gelir.

CNN örneği: VGG-19

VGG-19 CNN modelini inceleyelim:

 

Resim-9

ImageNet Dataset üzerinde eğitilmiş olan bu model 224 x 224 x 3 formatında bir görüntü alıyor ve 24 katman sonra onu 1000 Class’a sınıflandırıyor. İkinci sütün bu görüntünün boyutu her katmandan sonra nasıl değiştiğini gösteriyor, üçüncü sütün ise her katmanın Weight sayısıdır. Her CNN bu mantıkla çalışıyor ve mimari farklılıkların çoğu katman türlerinde ve aralarındaki bağlantılarda oluyor.

Bir Prediction yapalım şimdi:

Resim-10

ImageNet üzerinde eğitilmiş olan VGG-19’un Top-1 Accuracy (doğrululuğu) %71,5’tur, ve yukarıda yaptığımız Prediction’da köpekleri tanıyamadı. Bu nedenle gerçek bir uygulama yapıyor olsaydık ya sıfırdan kendi modelimizi eğitirdik ya da Transfer Learning tekniği kullanırdık. Yaptığımız deneyi kendi resimleriniz ile yapabilirsiniz. Kod bu link üzerinden erişilebilir.

Bu yazıda Deep Learning ve CV’nın ne olduğunu, CNN’in neyden oluştuğunu gördük. Bir sonraki makalemde Training işlemini göreceğiz, sıfırdan bir CNN modelini oluşturup eğiteceğiz.

 

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar        

www.mshowto.org

https://semiengineering.com/new-vision-technologies-for-real-world-applications/

https://towardsdatascience.com/machine-learning-fundamentals-ii-neural-networks-f1e7b2cb3eef

https://www.mathworks.com/videos/introduction-to-deep-learning-what-are-convolutional-neural-networks–1489512765771.html

http://deeplearning.stanford.edu/wiki/index.php/Feature_extraction_using_convolution

https://medium.com/@RaghavPrabhu/understanding-of-convolutional-neural-network-cnn-deep-learning-99760835f148

https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2I

https://keras.io/api/applications/

TAGs:Deep Learning ve Computer Vision, Fully Connected Layer, Pooling Layer

Bu İçeriğe Tepkin Ne Oldu?
  • 9
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Trakya Üniversitesi – Bilgisayar Mühendisliği mezunuyum. Lisansım boyunca daha çok ASP.NET, ReactJS, Android Dev gibi web ve mobil teknolojileriyle çalıştım. Ayrıca OpenZeka 2018 mini otonom araç yarışmasını kazanan takımında yer aldım. Şimdi TU Berlin ve KTH Stockholm’da Gömülü Sistemler üzerinde yüksek lisansımı yapmaktayım ve tezim için araştırmacı olarak SICK Sensor Intelligence A.G.’de çalışmaktayım. Genelde Embedded C/C++, Python, VHDL dilleriyle çalışıyorum. Adaptif sistemlerine ilgiliyim ve kariyerime bu alanda devam etmeyi planlıyorum.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorumlar (1)

  1. Kısa ve öz, harika paylaşım olmuş! Ellerine sağlık, devamını diliyorum! Özellikle CNN ve alt türleri hakkında :) Başarılar!

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir