Microsoft Cognitive Services Emotion
Microsoft Cognitive Services Emotion
Herkese merhabalar;
Bu makalemde sizlere Microsoft'un servislerinden olan Microsoft Cognitive Services Api kullanımına yönelik bir UWP uygulaması yapacağız.
Örnek çıktımız aşağıdaki gibi olacaktır.
Şimdi asıl konumuza gelelim;
Öncelikle bu Api'yi kullanabilmemiz için buraya tıklayıp aşağıdaki sayfayı açıyoruz.
Buradanda Görüntü İşleme API'si yazan yere tıklayıp gelen sayfada "Deneyin Görüntüleme API'si" sekmesine tıklayıp açılan sayfada Duygu Tanıma Api'sininden API Anahtarı edinin kısmına tıklayıp gelen açılır pencereden sözleşmeyi kabul edip var olan hesabınızla (Microsoft ,Facebook,Github,Linkedin) giriş yapıyorsunuz.
Sonra karşınıza aşağıdaki sayfa geliyor....
Size yukarıdaki gibi Anahtar 1 ve Anahtar 2 veriyor.İstediğiniz birini kopyalayabilirsiniz.
Bu sayfa açık kalsın veya kopyalayıp bir yerde bekletiyoruz Anahtar değerlerimizi...
Şimdi gelelim en güzel kısma yani kod yazma kısmına :)
İlk olarak projemiz oluştuktan sonra Projemize (Solution Explorer) sağ tıklayıp Manage Nuget
diyerek projemizde gerekli Nuget paketlerini ekliyoruz.Bunlardan bir tanesi "Newtonsoft.Json",
diğeri ise "Microsoft.ProjectOxford.Emotion" ekleyip projemizi Rebuild ediyoruz ki projemiz eklediğimiz Nuget paketlerini görsün.
Visual Studioda bir UWP(Universal Windows Platform) proje oluşturuyoruz.
Sonra MainPage.xaml sayfasını açıp sayfamıza 1 adet Image nesnesi,2 adet Button nesnesi, 1 adet TexBox nesnesi ekliyoruz.
Kod kısmınıda yukarıdaki gibi ayarladıktan sonra üstteki resimde gösterdiğim gibi bir ekran çıkacak.
Sonra backende geçip using kısmına aşağıdaki kütüphanelerimizi ekliyoruz...
using Windows.Media.Capture;
using Windows.Storage;
using Windows.Storage.Stream;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media.Imaging;
Bunları ekledikten sonra global olarak ;
CameraCaptureUI captureUI = new CameraCaptureUI();
StorageFile photo;
IRandomAccessStream imageStream;
const string APIKEY = "f52cc107e53646caba2565a35252141d";
EmotionServiceClient emotionServiceClient = new EmotionServiceClient(APIKEY);
Emotion[] emotionResult;
CameraCaptureUI sınıfımız kameradan gelen ses,video ve fotoğrafları yakalamak için kullanılan sınıftır.
StorageFile sınıfımız ise dosyayı temsil eder.Yani burada yakaladığımız resmi temsil etmektedir ve photo adlı değişken tanımladık.
IRandomAccessStream : Giriş ve çıkışlardaaki verilerin rastgele erişilmesini sağlar.
Giriş ve çıkış akışlarındaki verilerin rasgele erişilmesini destekler.
Sonra sabit(const türünde) APIKEY değişkenini tanımlıyoruz ve bunu EmotionServiceClient'e veriyoruz.
Global olarak en son Emotion tanımlıyoruz buda duyularımızı bir dizi halinde tutacak olan tipdir.
Sonra Resim Çek butonuna çift tıklayıp aşağıdaki kodları yazıyoruz.
Buradaki yaptığımız işlemi kısaca özetlemek gerekirse ;
Kamera çek butonuna bastığımızda kameramız açılmasını sağlayıp kameradan alınan fotoğrafın okunmasını ve image adlı Image nesnemize kaydedilmesini sağlıyor.Şayet resim olmadan duyu algılanma isteniyorsada hata mesajı verecektir.
Burayıda kısaca özetlemek gerekirse , koddan da anlaşılacağı üzere image nesnesi üzerine aldığımız resmi(yüzü otomatik algılaayacaktır.) Cognitive Service Api'sini kullanarak duyularımızın algılatılması ve buna göre çıkış textimize(output.Text) Api'den gelen sonuçları yazıdırıyoruz.
Burada şunu belirtmede fayda var bu API 0-1 arası değer almaktadır ve 1'e en yakın değer bizim gerçek sonucumuz yani sizin kameradaki duygunuzdur.
Sonuç :
Burada mutluluk değerinin 0.99 gibi bir değer aldığını yani 1 değerine çok yakın olduğunu görüyoruz.Hakeza aynı şekilde kamerada üzgün,korku veya iğrenme gibi bir ifade bulunmadığından bu değerler çok çok düşük çıktı.Şöyle ki iğrenmeyi ele alırsak 3.09 x 10^ -7 gibi bir değere sahip buda takdir edersiniz ki çok çok küçük bir değerdir.(0,000000309)
Bu yazımında sonuna gelmiş bulunmaktayız umarım faydası olmuştur.... :)
Proje kaynak kodlarına buradan ulaşabilirsiniz...Takip etmeyi unutmayın :)



Yorumlar
Yorum Gönder