Herkese merhabalar hayırlı sabahlar. Bildiğiniz üzere geçmişte kamera içerisinde hareket algılama & yüzü tespit etme konuları yapmıştık. Bugün değerli arkadaşımız @ScriptKid önerisi üzerine kamera üzerinde eğitilen nesnenin ne olduğunu göreceğiz. Aslında bu konu için @ScriptKid YOLO kütüphanesini önermişti ancak gerek entegrasyonu gerekse Nuget desteğinin kesilmesi sebebiyle ONNX formatına çevrilse dahi görüntüyü tanımıyor yada ben beceremedim bilmiyorum. Bu olumsuz gelişmelerden dolayı araştırma yaptım & en uygun konunun şu adreste EmguCV – Multiple Face Recognition(Çoklu Yüz Tanıma) – Yazılım Mimarileri ve Tasarım Desenleri Üzerine yer aldığına kanaat getirdim. Yüz tanıma işlemi yapılırken EmguCV ’de(OpenCV ’de de) Eigenfaces, Fisherfaces ve LBPH gibi algoritmalar kullanılır. Bunlardan kısaca bahsedecek olursak;
Eigenfaces ;
Hafızadaki tüm resimlerin ortalamasını alarak ortaya çıkan görüntünün ortalamadan farkını alır. Böylece her görüntü aslında bir diferansiyel görüntü gibi değerlendirilir.
Fisherfaces ;
Yukarıdakine kıyasla daha gelişmiş bir yüz tanıma algoritmasıdır. Bir kişiye ait birden fazla fotoğrafı bir sınıfın üyeleri olarak kabul edip sınıflar arası tanıma işlemi yapmaya dayanır.
LBPH ;
Bir noktanın etrafındaki piksellerin yoğunluk değerlerine göre oluşan ikili(binary) örüntülerden yaratılır ve bu örüntüler üzerinde işlemler gerçekleştirerek nesneyi arar.
Makale sahibi yüz tanıma çalışmaları neticesinde Classifier Train & Business Recognition olmak üzere iki sınıf yani class kodlamış. Bunlardan Classifier Train isimli olan sınıfımız yüz eğitiminden ve yüz tanıma algoritmasını barındırıyor diğeri ise Classifiew Train sınıfını refere etmekte ve eğitim süreciyle birlikte diğer tüm durumları kontrol ediyor. Projeyi en son kaynak olarak incelemeniz için paylaşacağım. 3 adımda gerçekleşen olaylara şöyle bir göz atalım;
Yüzlere Yazılımın Eğitilmesi --> Business Recognition sınıfındaki SaveTrainingData metodunu çağırmış. Bu metot tanımlanan yüzleri belirtilen kaynağa aktarma ve bunların yanında gerekli XML formatındaki veri setine ekleme görevinden sorumludur. Tanımlanan yüzler formda bulunan PictureBox2 nesnesine atanmaktadır. Neticede yakalanan bu yüz resimleri SaveTrainingData metoduna gönderilmekte ve program yüzlere özel eğitilmektedirler.
Eğitilen Yüzlerle Tanımlanan Yüzü Kıyaslama --> Bu adımda devreye Classifier_Train sınıfının Recognise metodu çağrılıyor. Bu metot, gönderilen image nesnesini hafızadakilerle kıyaslayarak eşleşen kaydın bilgilerini döndürüyor.
Tanımlanan ve Tanınan Yüzün Vurgulanıp İsminin Yazılması --> İşlem burada Form Load olayında gerçekleşiyor yani uygulama başlar başlamaz. Kısaca kamera görüntüsü alma, yüz tanımlama ve vurgulama işlemlerinin yanında yüz tanıma algoritmalarını başlatan kodlamanın gerçekleştiği yer.
[ SONUÇ ]
Görüldüğü üzere Messi & Ronaldinho 'yu tanıdı.
Görüldüğü üzere Messi & Ronaldinho 'yu tanıdı.


