29 Mayıs 2010 Cumartesi

C# ile Yüz Bulma ve Tanıma

Aylardır uğraştığım yüz tanıma sistemi tezimi nihayet bitirdim.Lafı uzatmadan hemen yaptığım uygulamadan bahsedeyim.


Ö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ı


Uygulmanın mantıksal tasarım akışı :
  • 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

8 Mayıs 2010 Cumartesi

Metinler İşaret Diline Dönüşüyor


GANAS Projesi kapsamında metinleri anında işaret diline dönüştüren bir görsel çevirmen geliştiriliyor.

Proje, işitme engellilerin halka açık olan yerlerde paylaşılan bilgileri anlayarak hayatlarını kolaylaştımak üzere tasarlandı. Proje ile hava alanları, okullar, sinemalar, televizyon ve internet sitelerinde çeviri servisleri sağlanmaya başlanabilecek. 


NDRA,  Castilla-La Mancha Üniversitesi ve Adecco Vakfı ile ortaklaşa yürüttüğü GANAS Projesi (İşaret Dili için Otomatik Animasyon Üretimi Projesi) kapsamında işitme engelliler için metinleri işaret diline dönüştüren bir çevirmen geliştiriyor. Proje ile işitme engellilerin sosyal yaşama dahil olması ve çevrelerindeki bilgilere erişebilmeleri hedefleniyor. Sonuç olarak metinler bir bilgisayar yardımı ile üç boyutlu karakterler kullanılarak işaret diline dönüştürülüyor.

Proje 3 modülden oluşuyor.

Gerçek çevirmenin videosu yol gösterici olarak kabul edildiğinde, düzenleme modülü üç boyutlu karakterin vücut hareketlerini ve yüz mimiklerini yeniden üretebilmek için çevirmenin tüm kemiklerinin pozisyonunu ve rotasyonunu hesaplamak zorundadır.
Bu hareketler ve mimikler işaret dilinde bir cümle yaratmak için sonradan birleştiriliyor ve bu şekilde farklı görsel karakterler yoluyla diğer cümlelerde yeniden kullanılabiliyorlar.

Projenin bir diğer avantajlarından biri de; hava alanları, istasyonlar, okullar, iş ve işçi bulma ofislerinde veya turizm alanında kullanılan bilgi ekranlarından paylaşılanların işitme engelliler tarafından da anlaşılır olmasına yardımcı olmasıdır. Ayrıca televizyon kanalları, sinemalar ve internet siteleri için de çeviri hizmetleri sunmaktadır. Bu hizmetler  sayesinde işaret dilini de öğrenmek mümkündür.



DNSSEC


İlk uyarı için birkaç gün geç kaldım fakat haberin içeriği önemli paylaşmak istedim...


5 Mayıs'ta internet bağlantınızla ilgili büyük problemler yaşaya bilirsiniz..

Bütün internet kullanıcılarını etkilemesi beklenen DNSSEC sisteminin ilk aşamasına 5 Mayıs'taICAN, ABD Hükümeti ve Verisgn yönetiminde geçilecek. İnternet kullanıcıların güvenli sitelere kavuşturmayı amaçlayan bu proje kapsamında Çarşamba günü Dünya genelinde internet ulaşımında çeşitli sorunlar yaşanabilir. İşte ayrıntılar...

Domain Name System Security Extensions yani DNSSEC
; birçok internet kullanıcısının yakından ilğilendiği Domain Name System (DNS) ve Internet Protocol (IP) sistemleri tarafından sunulan bilgilerin daha güvenli hale getirilmesini amaçlayan ve bu yönde yenilenen sistem için kullanılan bir terim.

DNSSEC'i biraz daha açarsak ne demek istediğimiz çok daha net anlaşılacaktır. Bu yeni sistemle DNSSEC tüm DNS sunucularından gelen yanıtlara dijital bir imza ekleyecek ve böylece internet kullanıcıları ziyaret etmekte oldukları sitenin alan adının herhangi bir aldatmaca için kullanılmadığını ve güvenli olduğunu kolaylıkla tespit edebilecekler. 

DNSSEC'in güvenlik açısından sağladığı faydalarDNSSEC'i yeni bir IP sistemi olarak algılamamak gerekiyor. Çünkü DNSSEC'in amacı DNS'ye birden fazla yeni özellik katarak geliştirmek. Bu yeni özelliklerin amacı ne derseniz? Hemen açıklayalım; internet kullanıcıları ve wep siteleri arasındaki haberleşmeyi hedef alan "man in the middle" saldırısına karşı sıkı tedbirler almak.

Güvenli SSL sertifikası kullanılmadığı durumlarda tehlike yaratabilen bu saldırı tanımlamak gerekirse ise;
İstemci yani internet kullanıcısı ve sunucu birnevi ulaşılmak istenen wep sitesi ile haberleşirken araya giren hacker'lar iletişime sızarak, istemci ve sunucuya kendi istedikleri bilgileri gönderiyor ve iletişimin kendi istedikleri şekilde yönlendiriyorlar. İşte bu yeni IP sistemiyle bu durumun önüne geçilecek.

Peki, DNSSEC bu sızmaları nasıl mı engelleyecek? İşte bu sorunun cevabı; İstemci ve sunucu arasında dijital imza transferi ile sorunu çözmeyi hedefleyen DNSSEC bu yöntem ile araya girebilecek art niyetli kişilerin iletişimi kendi istedikleri gibi değiştirmesini engelleyecek.

İşte bu dijital imzalar sorun yaratabilir. Nasıl mı?
Güvenliği hat safaya çıkaracak bu sistemin getirisi kadar götürüsüde olabilir. Hacker'ları iletişime sızmasını engelleyen dijital imza istemci ve sunucu arasında küçük bir dosya transferiyle gerçekleşecek. Bazı durumlarda 2 KB'a kadar bir büyüklüğe ulaşabilmesi beklenen bu transfer dünya genelinde yaşancağı için internette genel anlamda bir yavaşlamaya neden olabilir..
Diğer bir sorun ise tüm büyük internet servis sağlayıcılarının (İSS) hazır bulundukları bu değişim için küçük İSS'lerin ne derece hazır olduğunun bilinmemesi. Bu bağlamda da uzmanlar bu yüzden5 Mayıs'ta bazı ciddi bağlantı sorunları yaşanabileceğini belirtiyorlar.

Yine küçük bir ayrınıtıyı bilmekte fayda var. Her bilgisayarın ayarları ve özellikleri farklı olduğu için yan yana duran iki makineden biri sağlıklı bir şekilde çalışırken, diğerinin sorun yaşayabileceği gibi anlaşılması zor bir durumunla karşı karşıya kalabilirsiniz.

Bu noktada da kullanıcılar yeterince bilgilendirilmediği için genel bir karmaşıklığın çıkması mümkün. 5 Mayıs'ta buna benzer bir sorun yaşarsanız ve bir çözüm yolu bulamassanız tavsiyemiz internet servis sağlayıcınızı arıyarak konuyla ilgili bilgi alıp ona göre hareket etmeniz.