🕸️CNN'lerin Popüler Uygulamaları
Uygulama | Açıklama |
🧒👧 Yüz Doğrulama | Verilen görüntünün ve ID'nin aynı kişiye ait olup olmadığını bilmek |
👸 Yüz Tanıma | Giriş yüzü görüntüsüne ID atama |
🌠 Sinirsel Stil Aktarımı | Belirli bir görüntünün stilini öğrenerek bir görüntüyü diğerine dönüştürme |
🧒👧 Face Verification
🙌 Karşılaştırma
Terim | Soru | Giriş | Çıkış | Problem Türü |
🧒👧 Yüz Doğrulama | Bu aranan kişi mi? 🕵️♂️ | Face image / ID | True / False | 1:1 |
👸 Yüz Tanıma | Bu kişi kimdir? 🧐 | Face image |
| 1:K |
🤸♀️ Çözüm Yaklaşımı
🤳 One Shot Learning
Bir örnekten (veritabanında sahip olduğumuz) kişiyi tekrar tanımayı öğrenmek
🖇 Süreç
Giriş resmini al
DB'deki yüzlere ait olup olmadığını kontrol et
(Söyelemesi kolay 🤭)
👓 Nasıl Kontrol Edeyim?
Giriş görüntüsü ile veritabanındaki görüntü arasındaki benzerliği hesaplamamız gerekir, bu nedenle:
⭕ Öyle bir fonksiyon kullan ki;
similarity(img_in, img_db) = some_val
👷♀️ Eşik değeri belirle
🕵️♀️ Eşik değerini kontrol et ve çıkışı belirle
🤔 Benzerlik fonksiyonu ne olabilir?
🔷 Siamese Ağı
Yüz Doğrulama bağlamında kullanılan bir CNN, iki görüntüyü girdi olarak alır, konvolüsyonlar uyguladıktan sonra her görüntüden bir özellik vektörü hesaplar, aralarındaki farkı hesaplar ve daha sonra çıkışı verir.
Başka bir deyişle: verilen resmi kodluyor
👀 Görselleştirme
Mimarisi:
👩🏫 Nasıl Eğitebilirim?
Ağı bir çapa (anchor) (baz) resim A alarak ve hem pozitif bir P hem de negatif bir N örneği ile karşılaştırarak eğitebiliriz. Böylece:
🚧 Çapa resmi ile pozitif resim arasındaki benzeşmezlik (dissimilarity) düşük olmalıdır
🚧 Çapa resmi ile negatif resim arasındaki benzeşmezlik (dissimilarity) yüksek olmalıdır
Yani:
Kayıp denklemine başka bir hiper-parametre olan kenar payı margin adlı değişken eklenir. Kenar payı, benzeşmezliğin ne kadar olması gerektiğini, yani eğer margin = 0.2 ve d(a, p) = 0.5 ise, d (a, n) en az 0.7'ye eşit olmalıdır. Kenar payı, iki görüntüyü daha iyi ayırt etmemize yardımcı oluyor 🤸♀️
Bu nedenle, bu kayıp fonksiyonunu kullanarak:
👩🏫 Gradyanları hesaplayabiliriz ve gradyanların yardımıyla,
👩🔧 Siamese ağının ağırlıklarını ve yanlılıklarını güncelleyebiliriz.
Ağı eğitmek için de:
👩🏫 Çapa görüntüsü alıyoruz ve pozitif ve negatif görüntüleri rastgele örnekleriz ve kayıp fonksiyonunu hesaplarız
🤹♂️ Gradyanları güncelliyoruz
🌠 Sinirsel Stil Aktarımı (Neural Style Transfer)
Bir içerik görüntüsü C (content) ve stil görüntüsü S (style) vererek bir G görüntüsü oluşturma
👀 Göreslleştirme
Bu nedenle G'yi üretmek için NN'miz S'nin özelliklerini öğrenmeli ve C'ye uygun filtreler uygulamalı.
👩🎓 Metodoloji
Genellikle istenen performansı elde etmek için NN'nin parametrelerini -ağırlıklarını ve yanlılıkların- optimize ediyoruz, burada Sinirsel Stil Aktarımı'nda rastgele piksel değerlerinden oluşan boş bir görüntüden başlıyoruz ve görüntünün piksel değerlerini değiştirerek bir maliyet maliyet fonksiyonunu optimize ediyoruz 🧐
Başka bir deyişle, biz:
⭕ Rastgele piksellerden oluşan bir resimle başlıyoruz
👩🏫 Bir maliyet J fonksiyonunu tanımlıyoruz
👩🔧 Maliyet fonksiyonunu azaltmak için iteratif bir şekilde pikselleri güncelliyoruz
Uzun lafın kısası: NN'leri eğitirken ağırlıkları ve bias'ları güncelleriz, ancak stil aktarımında ağırlıkları ve bias'ları sabit tutarız ve bunun yerine imajımızı güncelleriz 🙌
⌚ Maliyet Fonksiyonu
J'yi aşağıdaki şekilde tanımlayabiliriz:
Açıklama:
G ie C arasındaki benzerliği ifade eder
G ile S arasındaki benzerliği ifade eder
α ve β hiper-parametrelerdir
🌞 Yazının Aslı
Last updated