Aylardır uğraştığım yüz tanıma sistemi tezimi nihayet bitirdim.Lafı uzatmadan hemen yaptığım uygulamadan bahsedeyim.
—Yazılımsal Gereklilikler
Yüz Bulma
Kameradan görüntü alındıktan sonra yüz kesitini bulmak için iki farklı yöntem kullandım. Birincisi yüz temsili siyah-beyaz tonda resim kullanımı. Yani elimizde bulunan bir yüz temsili siyah beyaz resim ile görüntünün siyah beyaza çevrilmiş hali karşılaştırılır ve görüntü içinde yüz temsiline uyan noktalar aranır. Aslında sadece bu metot ile belli bir başarım yakalayabildim. Fakat kesin bir başarım olmadı. Çünkü yüz temsiline yakın şekiller kamera görüntüsüne girdiğinde bu şekilleri yüz olarak nitelendirmektedir.Bu yüzden ikinci bir metot ten rengi metodu kullandım.Ten rengi metodunda ise insan ten rengine yakın renkler bulunmaya çalışılmaktadır. Yani kamera görüntüsünde ten rengi yakalamaya çalışılmaktadır. Bu yöntem de ilk zamanlar tek başına kullanılmış fakat görüntüde sadece yüz kısmı olmayacağı, ya da siyahi veya beyaz ten renkleri olması gibi sebeplerden dolayı yine kesin sonuç verememiştir. Sonuç olarak en etkili yöntem olarak bu iki yöntemi bir arada kullandım. Bu sayede çok daha kesin sonuçlar elde ettim.
Yüz Tanıma
Yüz tanıma kısmını Yapay Sinir Ağları(YSA) ile gerçekleştirdim. YSA' yı C# ile uygulayabimek için "neuralnetwork" hazır kütüphanesini kullandım.
C# için neural network kütüphanesine aşağıdaki adresten ulaşabilirsiniz:
http://franck.fleurey.free.fr/NeuralNetwork/
Sistemin Mantıksal Tasarımı
Uygulmanın mantıksal tasarım akışı :
Öncelikle yaptığım yüz tanıma sistemini gerçekleştirmek için donanımsal ve yazılımsal olarak en düşük sistem gereksinimleri şunlar.
—Donanımsal Gereklilikler
İşlemci: Pentium III veya üstü
Bellek: 128 MB
Hard Disk: 4GB veya üstü
Monitör: 14”SVGA
—Yazılımsal Gereklilikler
İşletim Sistemi: Microsoft Windows NT/2000 veya üstü
Paket: Microsoft Visual Studio 2008 veya 2010
Kullanılan Programlama Dili: C#.Net
Proje iki bölümden oluşuyor. Yüz Bulma(Face Detection) ve Yüz Tanıma(Face Recognition).
Yüz Bulma
Kameradan görüntü alındıktan sonra yüz kesitini bulmak için iki farklı yöntem kullandım. Birincisi yüz temsili siyah-beyaz tonda resim kullanımı. Yani elimizde bulunan bir yüz temsili siyah beyaz resim ile görüntünün siyah beyaza çevrilmiş hali karşılaştırılır ve görüntü içinde yüz temsiline uyan noktalar aranır. Aslında sadece bu metot ile belli bir başarım yakalayabildim. Fakat kesin bir başarım olmadı. Çünkü yüz temsiline yakın şekiller kamera görüntüsüne girdiğinde bu şekilleri yüz olarak nitelendirmektedir.Bu yüzden ikinci bir metot ten rengi metodu kullandım.Ten rengi metodunda ise insan ten rengine yakın renkler bulunmaya çalışılmaktadır. Yani kamera görüntüsünde ten rengi yakalamaya çalışılmaktadır. Bu yöntem de ilk zamanlar tek başına kullanılmış fakat görüntüde sadece yüz kısmı olmayacağı, ya da siyahi veya beyaz ten renkleri olması gibi sebeplerden dolayı yine kesin sonuç verememiştir. Sonuç olarak en etkili yöntem olarak bu iki yöntemi bir arada kullandım. Bu sayede çok daha kesin sonuçlar elde ettim.
Yüz Tanıma
Yüz tanıma kısmını Yapay Sinir Ağları(YSA) ile gerçekleştirdim. YSA' yı C# ile uygulayabimek için "neuralnetwork" hazır kütüphanesini kullandım.
C# için neural network kütüphanesine aşağıdaki adresten ulaşabilirsiniz:
http://franck.fleurey.free.fr/NeuralNetwork/
Sistemin Mantıksal Tasarımı
- Giriş resminin sisteme alıması
- Resmin hazır hale getirilmesi
- Resme önişleme uygulanması
- Eğitim ve sinir ağlarına yükleme
- Resim tanıma
Kullanılan YSA' nın Ağ Mimarisi
Bu çalışmada kullanılan ağ mimarisinde, katmanlar ve nöronlar olarak bakıldığında bileşen ve sayıları aşağıda verilmiştir.
Gizli Katman Sayısı: 2
Giriş Katmanı Nöron Sayısı: 25*25=625
Gizli Katman 1’deki Nöron Sayısı: 96
Gizli Katman 2’deki Nöron Sayısı: 144
Çıkış Katmanı Nöron Sayısı: 5
Burada giriş nöron sayısı eğitime girecek resimler için tasarlandığından dolayı ve eğitime girecek resimler 25*25 piksel olduğundan her piksel için bir giriş olarak tasarlanmıştır.
C# Programlama Dili ile Arayüz Tasarımı
Programın arayüzü Visual Studio 2010 paketi ile hazır araçlar kullanılarak yapılmıştır. Program arayüzü dört bölümden oluşmaktadır. Birinci bölümde kamera görüntüsü ve yüz kesiti bulma işlemi gerçekleştirilmektedir. İkinci bölümde veritabanından resim yüklemesi yapılmaktadır. Üçüncü bölümde resimler eğitime girdirilmektedir. Son bölümde ise yüz tanıma işlemi gerçekleştirilmektedir. Ayrıca program akışını izleyebilmek için bir akış listesi en alt bölümde bulunmaktadır.
Yapay Sinir Ağları ile ilgili bilgi almak isterseniz türkçe kaynak olarak özellikle başlangıç olarak muhakkak Ahmet Kakıcı' nın kişisel sitesini ziyaret etmelisiniz. YSA' yı anladıktan sonra neuralnetork kütüphanesinin bulunduğu sitede uygulanması içeriği hakkında yeterli bilgi mevcut.Ben ışık değişimleri için herhangi filtreler kullanmadım bu yüzden ışıktan çok etkileniyor ve başarım oranı düşüyor. Fakat aynı kütüphane kullanılarak ve ışık değişimleri için fitreler kullanılarak başarım oranı çok daha yüksek bir sistem gerçekleştirilebilir....
Proje çalıştırılabilir dosyası indirmek için : İNDİRMEK İÇİN TIKLAYIN