Bir Görüntü İşleme Projesi Geliştirelim #3, Bilgisayarlar Nasıl Görür?
Yapay zeka ve Derin öğrenmenin ne olduğuna güzel ve yüzeysel bir bakış attıktan sonra biraz da bilgisayarlar bizi nasıl görüyor ondan bahsetmemiz gerekiyor.
Bilgisayarlar için her şey ama her şey yalnızca sayılardan ibarettir. Şuan okuduğunuz yazılar bile aslında bilgisayar için sayıdır.
Renkler birer sayıdır, şekiller birer sayı tablosudur.
Bilgisayar eşittir sayılar demek aslında pek yanlış sayılmaz. “Tamam iyi hoş da nasıl” dediğinizi duyar gibiyim.
Hadi bir örnekle inceleyelim
Üstte gördüğünüz görsel el yazısı ile yazılmış bir “8” rakamını bilgisayarın nasıl gördüğünü göstermektedir.
Bilgisayarda renkler kırmızı yoğunluğu, mavi yoğunluğu, yeşil yoğunluğu ve siyah yoğunluğu olmak üzere 4 parametre ile açıklanır.
Bu parametreler 0-255 aralığında değerler alır.
Üstte gördüğümüz görsel yalnızca siyah ve beyaz renk barındırdığından siyah yoğunluğuna göre 0 ila 255 aralığında değerleri değişim göstermektedir. Yani aslında bizim bugün çektiğimiz 4k resimler bilgisayar için 3840 * 2160 * 4 sayı demek.
Merak eden arkadaşlar için 33.177.600 tane 0 ile 255 arası rakamdan bahsediyoruz.
Bilgisayarlar bizi bu şekilde görüyor,
Peki ama bunu nasıl işliyor biraz da bununla ilgilenelim.
Convolutional Neural Network (CNN) Nedir?
Convolutional Neural Network (CNN), birbirinden farklı amaçlar taşıyan bir dizi nöral networkün birleşmesi sonucu oluşmuştur.
Bunlar sırasıyla;
- Convolutional Layer
- Non-Linearity Layer
- Pooling (Downsampling) Layer
- Flattening Layer
- Fully-Connected Layer
Convolutional Layer:
Özellikleri saptamak için kullanılan katmandır. Bu katmanda nesnenin dış hatları gibi karakteristik ayrıntılar bilgisayarca farklı filtreler kullanılarak tespit edilir.
Non-Linearity Layer:
Sisteme doğrusal olmayanlığın tanıtıldığı katmandır. Sonuçların tek bir doğrultuda ilerlemesini önlemek için kullanılır. Bu katmanda farklı aktivasyonlar kullanılsa da bizim de ileride kullanacağımız sistemde de kullanıldığı üzere ReLu fonksiyonu en sık başvurulan fonksiyondur. İşlev olarak sıfırdan küçük değerlerin hepsini sıfır yapar. (Basit bir işlem gibi görünüyor ama hayat kurtarır)
Pooling Layer:
Havuzlama katmanıdır. Bir çok pooling fonksiyonu olmasına rağmen yine ileride kullanacağımız sistemde de göreceğimiz gibi Max Pooling en yaygın algoritmalardandır. Amacı sistemi hızlandırmak adına resmi belirli boyutlara bölerek böldüğü parçadaki en büyük değer ile yeni parçayı oluşturmaktır
Max Pooling Layer
Flattening Layer :
Bir sonraki katmana verilerin hazırlandığı yerdir. Diziyi tek boyutlu hale getirmek için kullanlılır
Fully-Connected Layer:
En önemli katmandır. Verileri önceki katmandan alarak öğrenme işlemini gerçekleştirir.
Artık bilgisayarların nasıl gördüğünü ve gördüğünde elde ettiği verileri nasıl işlediğini öğrendik.
Bir sonraki yazımda proje geliştirme süreçlerinden bahsedeceğim.
Seriyi takipte kalın 😊