Evreşimli Sinir Ağları ile Bilgisayarlı Görü

Günümüzün hızla değişen teknolojik peyzajında, yapay zeka kavramı önemli bir yer işgal ediyor. Bu teknoloji, geniş bir yelpazedeki insanları, yaş gruplarından, meslek gruplarına kadar herkesi etkiliyor ve hayatlarını derinden değiştiriyor. 

Yapay zeka, bilgisayar sistemlerine insan benzeri düşünme yetenekleri kazandıran bir teknoloji olarak tanımlanabilir. Bu yazı, özellikle görüntü tanıma ve sınıflandırma gibi görsel veriler ile çalışan uygulamalarda büyük başarılar elde etmiş Convolutional Neural Networks (Evrişimli Sinir Ağları) veya kısaca CNN algoritması üzerine olacaktır. 

Convolutional Neural Networks Nedir? 

CNN kavramı, ilk kez 1980’li yıllarda David H. Hubel ve Torsten Wiesel’in nörobilim alanındaki araştırmalarına dayanarak, LeCun, Bottou, Bengio ve Hinton gibi araştırmacılar tarafından 1990’larda geliştirilmeye başlandı. Ancak, CNN’nin günümüzdeki popüler formu, 2010’ların başlarından itibaren yoğun bir şekilde kullanılmaya başlandı.  

Her sinir ağı gibi, evreşimli sinir ağlarının da kendine özgü özellikleri vardır. Bu özellikler sayesinde bilgisayar görsel veriyi işleme becerisi kazanır ve eğitim gerçekleştirilir. Bilgisayar, bu verileri bizim gibi işlemek yerine, daha farklı bir yöntem kullanır.  

Bu noktada evreşimli katmanlar önem kazanır. Evreşimli katmanlar, bu sürecin, insan beyninin görsel bilgiyi işleme şekline benzer şekilde gerçekleşmesini sağlar. Evreşimli katmanlar, görüntünün farklı bölümlerindeki özellikleri tanımlayarak, bilgisayara görsel bilgiyi anlaması için gerekli olan hiyerarşik yapıyı oluşturur.  

Görüntüler, çeşitli evreşimli katmanlardan geçerken, her bir katman farklı özellikler öğrenir ve bu özellikler bir sonraki katmana aktarılır. Bu aşamada, görüntünün boyutu da küçültülür, bu da bilgisayarın daha geniş bir alanı daha hızlı ve verimli bir şekilde işlemesini sağlar. Her evreşimli katmandan geçtikten sonra, öğrenilen özelliklerin matrisi tek boyutlu bir vektöre “düzleştirilir”.  

Düzleştirme işlemi, genellikle bir sonraki tam bağlı katmana giriş olarak kullanılmak üzere yapılır. Bu süreç boyunca, basit kenarlar ve renklerden karmaşık nesnelere kadar geniş bir özellik yelpazesi öğrenilir. 

Bu tür işlemler, günümüzün modern yazılım dilleri ve gelişmiş kütüphaneleri ile çok daha basit hale gelmiştir. Python gibi diller ve TensorFlow, PyTorch gibi kütüphaneler, CNN’nin uygulanmasını ve kullanımını daha kolay ve erişilebilir hale getirir. 

Keras Nedir? 

Keras, Francis Chollet tarafından 2015 yılında derin öğrenme projeleri için uçtan uca bir çözüm oluşturulması hedefiyle geliştirilmeye başlanan bir framework’tür. Python dilini kullanarak yazılan bu yapı, modüler ve esnek yapısı ile öne çıkmaktadır.  

Yapay sinir ağları oluştururken, çeşitli katmanların ve işlevlerin bir araya getirilme esnekliği sunan Keras, bu sayede kullanıcılara geniş bir özelleştirme alanı sağlar. Bu modülerlik, araştırmacılara ve mühendislere, özgün ve karmaşık derin öğrenme modelleri oluşturabilme olanağı verir.  

2017 yılında Google’ın popüler derin öğrenme frameworku TensorFlow ile entegre edilen Keras, bu işbirliği sonucunda daha geniş bir kitleye ulaşmayı başardı. TensorFlow’un güçlü hesaplama altyapısıyla birleşen Keras, hem verimlilik hem de kullanım kolaylığı açısından önemli bir adım attı.  

Bu birleşmenin ardından, Keras’ın kullanımı başta akademik araştırmalar olmak üzere birçok farklı projede yaygınlaştı.  

Kaggle verilerine göre, Keras son dönemlerde en çok kullanılan derin öğrenme aracı olmayı başarmıştır. Keras’ın yüksek seviye API’leri, kullanıcıların karmaşık derin öğrenme modellerini daha hızlı ve daha etkin bir şekilde oluşturmasını sağlar. Bu, özellikle prototip oluşturma ve hızlı iterasyon gerektiren projelerde büyük bir avantajdır.  

Keras, derin öğrenme alanında devrim yaratan bir araç olarak kabul edilmekte ve bu alandaki inovasyonu hızlandırmakta önemli bir rol oynamaktadır. 

Keras’ ın Mevcut Evreşimli Katmanları 

Keras, Conv2D, Conv3D, SeparableConv2D, DepthwiseConv2D gibi temel evrişimli katmanlarına sahiptir. Bu katmanlar, görüntü verilerinin evrişimli işlemesini sağlar ve özellik haritalarının oluşmasını ve öğrenilmesini destekler.  

Havuzlama katmanları olarak bilinen MaxPooling2D ve AveragePooling2D, görüntü boyutunu azaltır ve özellik öğrenimini hızlandırır. Keras’ın esnek yapısı, farklı evrişimli sinir ağı mimarilerinin oluşturulmasını ve test edilmesini sağlar. 

Burada en sık kullanılan Conv2D ve MaxPooling2D katmanlarını ve yardımcı katmanları ele alacağız. 

Conv2D Layer (Evreşim Katmanı)  

Conv2D, Keras kütüphanesinin sağladığı en temel ve yaygın kullanılan evrişimli katmanlardan birisidir. Bu katman, gelen 2 boyutlu giriş verisine bir filtre uygulayarak evrişim işlemi gerçekleştirir.  

Evrişim işlemi, giriş verisinde belirli özellikleri öğrenmek ve çıktıda bu özellikleri temsil etmek amacıyla kullanılır. Conv2D katmanının parametreleri arasında filtre sayısı, filtre boyutu, adım boyutu ve dolgu türü bulunur. Filtre sayısı, çıktıda öğrenilecek ve temsil edilecek özelliklerin sayısını belirler.  

Filtre (veya “kernel”) boyutu, evrişim işlemi sırasında giriş üzerinde kaydırılacak pencerenin boyutunu belirler. Adım boyutu, filtrelerin her iterasyonda kaç piksel kaydırılacağını belirler. Dolgu türü ise, giriş verisine eklenen sıfırlarla girişin boyutunun korunup korunmayacağını belirler. 

MaxPooling2D Layer (Havuzlama Katmanı) 

MaxPooling2D ise Keras kütüphanesinin sağladığı bir alt örnekleme katmanıdır. Bu katman, çıktı boyutunu azaltarak işlemlerin hızlanmasını ve aşırı öğrenmenin önlenmesini sağlar.  

MaxPooling2D, belirli bir pencere boyutuna sahip olan giriş verisinde maksimum değeri seçerek alt örnekleme işlemi gerçekleştirir. Genellikle, bir Conv2D katmanı sonrasında kullanılır. MaxPooling2D katmanının parametreleri arasında havuz boyutu, adım boyutu ve dolgu türü bulunur.  

Havuz boyutu, alt örnekleme işlemi sırasında kaydırılacak pencerenin boyutunu belirler. Adım boyutu, pencerenin her iterasyonda kaç piksel kaydırılacağını belirler. Dolgu türü ise, giriş verisine eklenen sıfırlarla girişin boyutunun korunup korunmayacağını belirler. 

Flatten Layer (Düzleştirme Katmanı) 

Flatten, evrişimli sinir ağı modelinde kullanılan bir düzleştirme katmanıdır. Bu katman, evrişimli ve havuzlama katmanlarının çıktıları olan çok boyutlu matrisleri tam bağlantılı katmanlara girebilmesi için düzleştirir.  

Flatten katmanı, çok boyutlu matrisi tek boyutlu bir vektöre dönüştürür. Bu özelliği sayesinde, modelin çıktıları tam bağlantılı katmanlara doğru bir biçimde işlenebilir. 

Dense Layer (Algılayıcı Katman) 

Dense, Keras kütüphanesinin sunduğu tam bağlantılı bir katmandır. Bu katman, giriş ve çıktı arasındaki tüm düğümlerin birbiriyle bağlantılı olduğu bir katmandır. Dense katmanı, ağırlık matrisi, bias vektörü ve bir aktivasyon fonksiyonu içerir.  

Ağırlık matrisi ve bias vektörü, modelin öğrenme sürecinde güncellenir. Aktivasyon fonksiyonu ise, çıktının ne olacağını belirler. Genellikle, bir Flatten katmanı sonrasında kullanılır. Dense katmanı, modelin öğrenme yeteneğini sağlar ve çıktıları üretir. 

Sonuç 

Bu düzenleme, modelin öğrenme yeteneği için gerekli olan hiyerarşik düzenin kurulmasını sağlar. Evreşimli katmanlardan döndürülen çıktılar, önce Flatten katmanı ile düzleştirilir ve ardından Dense katmanı ile işlenir. Bu sürecin sonunda, model öğrenme yeteneğini kazanır ve çıktıları doğru bir şekilde üretebilir. 

Evreşimli Sinir Ağları ve Keras, bilgisayarlı görüntü işleme ve derin öğrenme disiplinlerinde dikkate değer yenilikler olarak öne çıkmaktadır. Bu teknolojiler, yapay zeka alanındaki ilerlemelerin ve bilgisayar sistemlerinin görsel verileri yorumlama ve işleme kapasitelerinin artmasının önemli bir tezahürüdür. 

Dolayısıyla, Evreşimli Sinir Ağları ve Keras’ın, gelecekteki teknolojik evrimin şekillendirilmesinde hayati bir rol oynadığı öngörülmektedir. İlerleyen bölümlerde, bu teknolojilerin kullanımıyla bir uygulamanın geliştirilmesi ve sonuçlarının incelenmesi üzerine yoğunlaşacağım. Okuduğunuz için teşekkür ederim. 

Exit mobile version