10 Haziran 2017 Cumartesi

Algoritma Analizi: Emgu Cv - Anlık Yüz Tanıma

Algoritmalar neden analiz edilir?


Bir algoritmanın çalıştırılmadan ne kadar süre çalışacağını ve diğer alternatiflere(daha hızlı, daha az yer kaplama gibi) göre nasıl davranacağını tahmin edebilmek için algoritma analizi yapılır.

Matematik bilimindeki karmaşıklık teoreminin bir uygulama alanı olan algoritma analizi matematiksel yöntemlerle bir algoritma performansı hakkında bilgi almamızı sağlar.

Algoritma analizi kriterleri


  • Kod uzunluğu
  • Gereksiz kısımlar
  • Bellek gereksinimi
  • Çalışma zamanı

Emgu Cv - Anlık Yüz Tanıma Uygulaması


Uygulama anlık olarak kameradaki yüzleri tespit ediyor.



İnput Formatı - Makine Öğrenmesi 

Uygulama başlatıldığında kameradaki görüntüyü alır. Bu görüntü framlerden oluşuyor bunu Image<Bgr, byte> tipine dönüştürür. böylece frameleri byte dizisi şekline getirilir.

Daha sonra dönüştürülen bu görüntü işlenebilmek için grayscale'e dönüştürülür. 

Bu tarz yüz tespiti, obje tespiti gibi uygulamalar için kullanılan xml tabanlı haar cascade dosyaları kullanılır. Bunlar bu tarz yapay zeka makine öğrenimleri için oluşturulmuş eğitim verileri bulunduran dosyalardır. Bunları internette bulmak mümkündür. 

Haar dosyasından Image byteları aranarak bulunan yüzler döndürülür. Ve başlangıçta yakaladığımız binary görüntü üzerine yazılır.


Karmaşıklık Analizi


Emgu Cv kütüphanesini incelersek detectMultiScale methodu makine öğrenmesinin yapıldığı methoddur.


Bu methoda gelen greyscale görüntü diziye koyularak haar dosyasında karşılaştırma yapılır.

Makine öğrenmesinin karmaşıklığını dll dosyalarının içinde ne olduğunu göremediğimiz için dizi boyutu kadar diye biliriz buda worst case de O(n) dir.


 Test aşamasının karmaşıklığı ise foreach döngüsü tespit edilen her yüz için 1 kez dönecektir. Bu yüzden worst case de karmaşıklık O(n) dir.