Duygu analizi birçok alanda önemlidir. Örneğin firmalar müşterileri ile iletişimde onların isteklerini başarılı bir şekilde gerçekleştirebilmek için müşterisinin gerçek duygularının ne olduğunu veyahut sorgu odasında bulunan şahsın doğruları söyleyip söylemediği bilinmek istenir. Bu gibi durumlarda kolaylaştırıcı olması açısıdan duygu analizi tercih edilebilir bir yöntem olabilir. Projenin amacı da duygu analizi için başlangıç seviyesinde de olsa bir adım atmaktır. Projenin çalışma prensibi yüklenen resimdeki yüzü algılayıp, algınan yüzün sahip olduğu duygu ifadesini analiz edecek şekildedir. Bu analiz için Kaggle’da bulunan hazır bir data seti olan Facial Expression Recognition Challenge’dan yararlanıldı. Çalışmada Tensorflow Keras, Seaborn, Matplotlib, Pandas kütüphaneleri kullanıldı. Bu data seti programa entegre edildi, data setinin içerisindeki 7 tip duygu ifadesi Evrişimli sinir ağı ile modellendi. Bu modelleme ile elde edilen sonuçlar ile örnek resimler üzerinde testler yapıldı.
Numpy kütüphanesi ile datasetinin içerisinde bulunan eğitim verileri pixellerine göre arraylere dizildi. Pandas kütüphanesi ile gerekli veri seti çalışmaya aktarıldı. Matplotlib ve Seaborn kütüphaneleri ile analiz işlemlerinin detaylıca görülebilmesi için grafikler çizildi. Tensorflow, Keras kütüphanesi ile Evrişimli Sinir Ağı Modellemesi kuruldu.
Kaggle’da bulunan Facial Expression Recognition Challenge adlı veri setinden yararlanıldı. Bu veri seti Pandas kütüphanesi ile çalışmaya eklendi. Bu veri setinin içerisinde 7 adet duygu durumuna sahip 35887 örnek resim mevcuttur. Bu eğitim setindeki örnek resimler ile yapay bir sinir ağı oluşturuldu ve ortaya bir modelleme çıkarıldı. Bu modelleme ile de kullanıcının programa yüklediği resimlerdeki yüz ve duygular algılanıp analiz edildi.
Veri setindeki emotion sayılarını gösteren bir grafik.
Veri setinde bulunan örneklerin bir kısmı.
İlk olarak veri setinin içindeki bulunan eğitim(train) ve test örnekleri modellemeye uygun hale getirildi.
Veri seti örnek değerleri.
Daha sonra 6 katmanlı bir evrişimli yapay sinir ağı modeli kuruldu. Katmanlarda ReLu aktivasyon fonksiyonundan yararlanıldı. Çalışmada kullanılan verisetinde çok fazla veri vardır. Bu yüzden çok katmanlı bir sinir ağı kullanıldı. ReLu aynı anda tüm nöronları aktive etmediğinden dolayı daha verimli sonuç vereceği için tercih edildi. Çıkış katmanımızda 7 adet duygu ifadesi olduğu için her duygu sınıfına ait bir olasık döndürmelidir. Bu istekleri karşılayacağı için çıkıl katmanında softmax aktivasyon fonksiyonundan yararlanıldı. Eğitim performansının artması için katmanlarda Dropout kullanılarak ağ modellemesinde sadeleştirmeye gidildi. Modelleme kurulmuş oldu.
Evrişimli sinir ağı modeli kurulması.
Kurulan modellemenin çalıştırılma işlemlerine geçildi. Epochs değeri 10, batchSize değeri ise 128 verildi. Olası bir Overfitting’i engellemek için Kerasa ailt EarlyStopping ve ReduceLROnPlateau kütüphanelerinden yararlanıldı. Eğitim sonucu model.h5 adlı dosyaya kaydedildi. Evrişimli sinir ağı modeli çalıştırılmış oldu.
Evrişimli Sinir Ağı modeli çalıştırılması.
Kurulan modellemenin sonucu olarak kayıp ve doğruluk değerleri grafikleştirildi. Grafikte görüldüğü gibi eğitim ve test verilerine göre loss ve acc değerlerinin sonuçları birbirine yakındır. Bunun sonucu olarak başarılı bir modelleme gerçekleşmiştir.
Kayıp ve doğruluk grafikleri.
Elbette modellemedeki epochs, batchsize gibi değerleri değiştirerek daha başarılı sonuçlar elde edilebilir. Hiçbir zaman %100 bir başarı sağlanamaz ama her zaman daha fazla başarılı sonuç çıkarmak için bir şans vardır.
Kayıp ve doğruluk değerlerinin sayısal gösterimi.
Modellemenin kayıp ve doğruluk değerlerinin sayısal karşılığı resim22.5’da mevcuttur. Train loss ve Test Loss değerleri ile Train Acc ve Test Acc değerleri arasındaki fark ve oran daha net görülmektedir.
Modelleme sonucu test aşamasında ilk olarak yüklenecek görselde bulunan yüzün konumu face_recognition kütüphanesi kullanılarak algılandı.
Daha sonra algılanan yüz kurulan modelleme ağırlıklarına göre analiz edildi ve grafiksel sonuçları ekrana yazdırılması için keras image kütüphanesinden yararlanılarak gerekli kodlar yazıldı.
Test sonuçlarını görülmesi için birkaç örnek aşağıdaki gibidir.