Bir önceki yazımızda basit bir örnek program vermiştik, Daha gelişkin bir Yüz tanıma sistemi oluşturmak istersek neler yapmamız lazım
Yüz Tespiti :
Birinci aşama Yüzün Görüntü içindeki yerini tespit etmek lazım, Bu iş için OpenCv nin Haarcascad metodlarını kullanıyoruz. Yalnız şöyle problemler ortaya çıkıyor.
Görüntüdeki bütün yüzleri tespit edilemiyor. Yüz olmadığı olduğu halde yüz olduğu sanılan yerler bulunuyor. ilk problem için yapılacak şey, ya metodu değiştirmek, yada yeni daha iyi bir xml dosyası oluşturmak lazım. ikinci problemi tespit edilen alandaki renk yoğunluklarıyla uğraşarak halledilir gibi geliyor bana.
Yüz Standartlaştırma :
İkinci aşama bulduğumuz yüz görüntüsünü standartlaştırmak. Yüz Tanıma projelerininde genelde yüz veritabanlarının kullanıldığını görürüz. Bu Veri tabanlarındaki Yüzler nispeten sabit bir ışık, sabit bir konum ve ebattaki yüzlerle çalışırsınız. Gerçek hayatta ise bunların hiçbirini bulamıyacağınızdan, kendiniz yapmanız lazım. Bu işin önemi ise şuradan geliyor bir sonraki aşama olan tanıma işinin sağlıklı ve başarılı olabilmesi buna bağlı.
* Işık-Aydınlık etkisini minimuma indirgeme :
Aynı yerde aynı insanın farklı zamanlardaki fotoğrafları bile bu etki yüzünden farklı görünebilir. Bu etkiyi bir nebze düzenleyebilmek için bizim programımızda histogram eşitlemesi yaptık. Aslında RGB renk uzayından HSV renk uzayına geçip oralardan ayaralamak daha bir sağlıklı olabilir. Biz kolayına geçtik siz öyle yaparsınız artık.
* Konumlandırma hatalarını minimuma indigeme :
Haarcascade ile yüz yerini bize bir dikdörtgen içinde verir. Fakat bu dikdörtgenin içinde yüzün kounumu aynı olmaz. Bu durumda yüzün öğelerinin konumlarınıda tespit edip, gerekiyorsa büyüterek yada küçülterek yada çevirerek, başlangıç değerleri düzeltilir. Bu işlem için bizim programda hiç bir işlem yapılmamaktadır.
* İstenen ebatlarda getirme :
Basitçe bir ebat değişimi ile bizim seçeceğimiz bir büyüklüğe çeviriyoruz.
Yüz Tanıma :
İlk iki aşama bu aşama için bir ön hazırlıktan başka bir şey değildi. Bu aşamada artık elimizde standart bir yüz var ve Daha önceden öğrenmiş olduğumuz. yüzlere yakınlığına göre yüzü tanımaya çalışıyoruz. Bizim Programımızda bu iş için Eigenface metodu kullanıldı. Fakat Pek çok ML algorithması kullanılabilir hatta birden fazla ML metodu paralel olarakta kullanılabilir. ML deyip geçmeyeleim Mesela YSA HMM SVM vs ... . OpenCv nin de ML kütüphanesi bulunuyor, fakat pekde başarılı olduğu söylenemez. Değişik kütüphaneler tek yapı altında toplanmaya çalışılmış, inşallah yeni versiyonu daha kararlı olur.
Böylece bu serinin de sonuna geldik. Bütün bunları yazıyorumda yapacak vaktim takatim yok. Zaten tek başına hemencecik yapılacak bir şey de değil. Bir vakit Volkan böyle bir işe girişmişti, sonra o da boşladı. Ama benim bu konuda yapacağımı söylediğim bir şey vardı, sözümüzden dönmedik ve ufak tefek bir şeyler hazırladık bekleyiniz...
Hiç yorum yok:
Yorum Gönder