OpenCV ile Yüz tanıma, Structural similarity (SSIM), MSE

Resul S.
Resul S.
Nov 2 · 3 min read

Tanımlamalar

OpenCV nedir

OpenCV, esas olarak gerçek zamanlı bilgisayar vizyonunu amaçlayan bir programlama fonksiyon kütüphanesidir. Başlangıçta Intel tarafından geliştirilen, daha sonra Willow Garage, sonra Itseez tarafından desteklenmiştir. Kütüphane çapraz platformdur ve açık kaynaklı BSD lisansı altında kullanım için ücretsizdir.

Face detection (Yüz algılama)

Yüz algılama, dijital görüntülerde insan yüzlerini tanımlayan çeşitli uygulamalarda kullanılan bir bilgisayar teknolojisidir.

Structural similarity (Yapısal benzerlik)

Dijital görüntüler ve videolar diğer tür algılanan kalitesini tahmin etmek için bir yöntemdir.

SSIM Formül

MSE (Ortalama Hata Karesi)

İstatistiklerde, bir kestiricinin ortalama kare hatası ya da ortalama kare sapması, hataların karelerinin ortalamasını ölçer — yani, tahmini değerler ile gerçek değer arasındaki ortalama kare farkı. MSE, kare hata kaybının beklenen değerine karşılık gelen bir risk işlevidir.

MSE Formül

Başlayalım

OpenCV kütüphanesi kullanarak resim içerisindeki yüzleri tespit edilerek hedef resim ile karşılaştırılmasını SSIM ve MSE formülleri ile gerçekleştirelim. Bu örnekte yapılacak olanlar;

  • resmi griye çevir
  • “haarcascade” sınıflandırıcısı ile yüz tespiti
  • tespit edilen yüzleri kırp
  • resimleri boyutlandır (resize)
  • hedef resim ile karşılaştır (SSIM, MSE, ̶P̶S̶N̶R̶)

SSIM ve MSE formüllerini metot olarak tanımlayalım.

Cascade Sınıflandırıcı Çalışma Prensibi

Haarcascade sınıflandırıcısı resimlerden çıkarılan özellikler (feature) ile eğitilmiş modelleri (haarcascade_frontalface_default.xml gibi) kullanarak nesne tespiti yapmakta.

Çalışma Teorisi

Haar özellik tabanlı kaskad sınıflayıcıları kullanarak Nesne Tespiti, Paul Viola ve Michael Jones tarafından 2001 yılında “Basit Özellikler Kaskadını Kullanarak Hızlı Nesne Tespiti” başlıklı makalesinde önerilen etkili bir nesne algılama yöntemidir. Kaskad işlevi, birçok olumlu ve olumsuz görüntüden eğitilmiştir. Daha sonra diğer resimlerdeki nesneleri tespit etmek için kullanılır.

Burada yüz tanıma ile çalışacağız. Başlangıçta, algoritmanın sınıflandırıcıyı eğitmek için birçok pozitif görüntüye (yüz görüntüleri) ve negatif görüntülere (yüzsüz görüntüler) ihtiyacı var. O zaman ondan özellik çıkarmamız gerekiyor. Bunun için, aşağıdaki resimde gösterilen Haar özellikleri kullanılmıştır. Her özellik, beyaz dikdörtgenin altındaki piksellerin toplamının siyah dikdörtgenin altındaki piksellerin toplamından çıkarılmasıyla elde edilen tek bir değerdir.

Bu video ile resim üzerinde nasıl arama yaptığını daha iyi anlayabilirsiniz.


Yüzleri tespit etmek için haarcascade sınıfılandırmasın da kullandığımız dosya (haarcascade_frontalface_default.xml), sadece yüz algılama için kullanılmıştır. Sizler göz, ağız, … tespiti için haarcascade eye, alt, … gibi diğer dosyaları tanımlayabilirsiniz.

Resim üzerinde (x,y), boyut (weight,height) olarak tespit edilen yüzler ön işlemlerden geçirilerek kayıt edebilir, daha sonra klasör içerisindeki resimleri karşılaştırılmasını istediğiniz resim ile karşılaştırabilirsiniz.

veya doğrudan tespit edilen resmi karşılaştırabilirsiniz.

Sonuçlar

SSIM, MSE ve PSNR gibi resim benzerliklerinin karşılaştırılması gibi alanlarda kullanılabilen formüllerin daha iyi sonuçlar verebilmesi için çeşitli ön işlemlerden geçirmenizde fayda olacaktır. Histogram Eşitleme, … gibi.

SSIM, MSE Sonuçlar

Bilgisayarınızda openCV kütüphanesi, anaconda yoksa colab sizi mutlu edecektir. Yüklediğiniz dosyaların bir zaman sonra colab üzerinden silindiğini unutmayın!

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade