Proje Konusu:

Engelli bireyler için gözlerden yukarı, aşağı ve enter komutlarının algılanması, menü üzerinde sol göz kapalı ise yukarı, sağ göz kapalı ise aşağı, ikisi de kapalı ise enter komutları algılanacaktır.

Projede Kullanılan Teknolojiler:

• Tensorflow • Keras • Matplotlib • Numpy • Sklearn • OpenCV2

Proje aşamaları:

1. Veri setinin oluşturulması
2. Verilerin düzenlenmesi
3. Gerekli kütüphanelerin yüklenmesi
4. Verilerin train, validation ve test olarak ayrılması
5. Verilerin normalize edilmesi
6. Veri arttırım işlemlerinin gerçekleştirilmesi
7. CNN katmanlarının oluşturulması
8. Eğitim işleminin gerçekleştirilmesi
9. Webcam üzerinden görüntülerin alınması
10. Görüntülerin sınıflandırılması
11. Sınıflama üzerinden operasyonların gerçekleştirilmesi

Veri Setinden Örnek Görüntüler

CNN Katmanları

Convolution Katmanı:

  • Bu katman resmin özelliklerini algılamaktan sorumludur. Görüntülerdeki özellikleri algılamak için bazı filtreler uygular. Belirlenen filtre görüntü üzerinde gezdirilir. Gezdirilme işlemi belirlenen stride (adım) değerine göre gerçekleşir. Burada, resim ve filtre matrisi arasındaki indisler birbiri ile çarpılır ve tüm sonuçlar toplanır daha sonra sonuç çıktı matrisinde depolanır. Oluşan çıktı matrisi görüntünün özelliklerini taşır.
  • Yukarıdaki görselde görüldüğü gibi projemizde 4 adet Convolution katmanı bulunmaktadır filtre sayıları 16,32,64,128’dir ve bu katmanlardaki filtre boyutları 5x5 ve 3x3 lüktür.

Pooling Katmanı:

  • Genellikle oluşturulan öznitelik matrislerine uygulanır. Şekilde görüldüğü gibi 4x4 lük öznitelik matrisine 2x2 lik bir max pooling uygulanırsa aşağıdaki gibi çıktı alınır. Genellikle kullanılan yöntem max pooling yöntemidir. Fakat average pooling ve min pooling gibi yöntemler de mevcuttur. Bu katmanın görevi görüntünün boyutunu küçültüp işlem hacmini azaltmaktır.
  • Projede 3 adet MaxPooling katmanı bulunmakta ve bu katmanlardaki filtre boyutları 2x2’dir.

Dropout:

  • Bu işlem eğitim sırasında aşırı öğrenmeyi (overfitting) engellemek için bazı nöronları unutmakta kullanılır. Projede %20 lik dropout uygulanmıştır.

Flatten:

  • Bu katmanın görevi fully connected katmanı için giriş verilerini hazırlamaktır. Sinir ağları, girişlerini vektörel olarak aldığı için görüntü matrislerini vektörel formata çevirerek bu işlemi gerçekleştirir.

Fully Connected Katmanı:

  • Bu katman verileri flatten katmanından alır ve oluşturulan sinir ağı ile öğrenme işlemini gerçekleştirir. Öğrenme işlemi, nöronlardaki ağırlıkların güncellenmesiyle gerçekleşir.
  • Projede 4 adet gizli katman bulunmaktadır. Sırasıyla bu katmanlarda 64,32,32,16 adet nöron bulunmaktadır. Aktivasyon fonksiyonu olarak ReLU kullanılmıştır.
  • Çıktı katmanında ise sınıf sayısı kadar nöron bulunmaktadır. Aktivasyon fonksiyonu olarak Softmax kullanılmıştır.

Kullanılan Aktivasyon Fonksiyonları:

  • ReLU : [0,+ ∞) arasında değer alır. Bu aktivasyon fonksiyonunun avantajı aynı anda tüm nöronları aktive etmemesidir. Yani bir nöron negatif değer üretirse, aktive edilmeyeceği anlamına gelir. Bu da diğer aktivasyon fonksiyonlarından daha verimli ve hızlı çalışmasını sağlar bu nedenle ReLU çok katmanlı sinir ağlarında daha çok tercih edilir.

  • Softmax : Çoğu zaman çoklu Sigmoid olarak bilinen bu fonksiyon, çok sınıflı hedef değişken içeren sınıflandırma problemleri için uygun bir aktivasyon fonksiyonudur. Softmax çıktı olarak her sınıfa ait olasılık sonucu döndürür. Örneğin 3 sınıflı bir tahmin yapıyorsak 3 adet olasılık sonucu döndürür.

Proje Eğitim Analizi

  • Dalgalanmalardaki sebeplerden biri batch size’in küçük tutulmasından kaynaklanmaktadır.

- Eğitim sonucunda elde ettiğimiz accuracy ve loss değerleri görüldüğü gibidir.

Projeden Görüntüler

  • Gözler Açık : Gözler açıkken menü üzerinde herhangi bir işlem gerçekleşmiyor.

  • İki Göz Kapalı: İki göz kapalı iken menü üzerinde enter işlemi gerçekleşiyor.

  • Sağ Göz Kapalı: Sağ göz kapalı iken menü üzerinde aşağı hareket sağlanıyor.

  • Sol Göz Kapalı: Sol göz kapalı iken menü üzerinde yukarı hareket sağlanıyor.

FAYDALANMIŞ OLDUĞUM KAYNAKLAR