You are on page 1of 26

OpenCV ile Yüz Tanıma

ÇELEBI AKSOY 200251077

GÖRÜNTÜ IŞLEME
PROJENIN AMACI VE HEDEFI

HAAR CASCADE NEDIR?

İçerik PROJE

KAYNAKÇA

02 GÖRÜNTÜ IŞLEME
Projenin Amacı ve Hedefi
Projemin temel amacı, OpenCV
kütüphanesinin Haar Cascade sınıflandırıcısını
kullanarak istenilen resimler üzerinde yüz
tespiti yapmaktır. Farklı resimler için farklı
ayarlar kullanılması gerekmektedir. Aksi
taktirde istenilen performans alınamamaktadır.

GÖRÜNTÜ IŞLEME 03
Haar Cascade
Haar Cascade, yüz tanıma ve nesne algılama gibi
görevlerde kullanılan bir öğrenme algoritmasıdır. Bu
algoritma, özellikle OpenCV kütüphanesinde yaygın
olarak kullanılmaktadır. Haar Cascade, Viola ve Jones
tarafından geliştirilmiştir ve hızlı ve etkili nesne
algılama için tasarlanmıştır.

Algoritmanın temel prensibi, nesne algılama için


öğrenilmiş özelliklere dayanır. Haar Cascade, önceden
eğitilmiş bir modeli kullanarak nesne algılama yapar. Bu
model, pozitif ve negatif örnekler üzerinde eğitilir.
Pozitif örnekler, aranan nesnenin örnekleri iken negatif
örnekler ise bu nesnenin olmadığı alanlardan elde edilen
örneklerdir.
GÖRÜNTÜ IŞLEME 04
Haar Cascade
Haar Cascade yöntemi, öğrenilen özelliklerin (haar özellikleri olarak adlandırılır) nesne tespitinde kullanılmasına
dayanır. Haar özellikleri, görüntüde bir nesnenin özelliklerini temsil eden basit dikdörtgen alanlardır. Öğrenilmiş
bir Haar Cascade modeli, bu özellikleri kullanarak bir nesnenin varlığını tespit edebilir.

Haar Cascade'nin avantajlarından biri, gerçek zamanlı uygulamalarda yüksek performans gösterme yeteneğidir.
Bu nedenle, yüz tanıma gibi uygulamalarda sıklıkla tercih edilir. OpenCV kütüphanesinde bulunan önceden
eğitilmiş Haar Cascade modelleri, yüzler, gözler, gülücükler gibi birçok nesneyi algılamak için kullanılabilir.

GÖRÜNTÜ IŞLEME 05
Haar Cascade
Haar Cascade Haar özellikleri, nesne belirlemede kullanılan sayısal görüntü özellikleridir. Bu özellikler ilk olarak
real-time yüz tespiti için kullanılmıştır.

Temelde herhangi bir objenin alt parçacıklarının farklı renk dağılımına ve yoğunluğuna sahip olduğu bilgisi
kullanılarak obje farklı alt parçalara ayrılır. Bu ayrılan parçalara ait özellikler farklı özellik setleri ile ifade
edilerek objenin tamamı tanımlanır.

Örneğin, insan yüzünde yanak gözler bölgesinden daha açıktır.


Yanak ve göz bölgesinin her birine birbirine komşu iki dikdörtgen koyarak, dikdörtgenlerin altındaki bölgelerin
piksellerin yoğunlukları farkı yüz belirlenmesinde kullanılır. Yüz üzerinde buna benzer başka özellikler de
kullanılarak insan yüzünü diğer objelerden ayıracak özellik grubu inşa edilir. Elde edilen özellik grubu farklı
eğitim setleri kullanılarak bir sınıflayıcı ile son nesne tanımlayıcıyı elde etmek üzere eğitilir. Nihai olarak eğitilen
obje tanımlayıcı aynı tip objeleri, örneğin yaya ya da insan yüzü bulunması için kullanılır.

GÖRÜNTÜ IŞLEME 06
Haar Cascade
Nesne tespiti, dijital görüntülerde ve videolarda belirli bir sınıftaki (insanlar, binalar veya arabalar gibi) anlamsal nesnelerin örneklerini
algılamakla ilgilenen, bilgisayarla görme ve görüntü işleme ile ilgili bir bilgisayar teknolojisidir.

Sınıflandırıcı yüze ait kısımlardan alınmış, aynı boyuttaki resimlerle(pozitif resimler) ve yüz içermeyen diğer kısımlardan alınmış aynı boyuttaki
(örn: 20x20) resimler (negatif resimler) kullanılarak eğitilir. Eğitilmiş sınıflandırıcıya yüz içeren bir resim parametre olarak verildiğinde yüzün
bulunduğu alan için sınıflandırıcı “1” çıkışını diğer bölgeler için “0” çıkışını üretmektedir. Kullanılacak Haar benzeri öznitelik vektörleri
aşağıdaki tabloda verilmiştir.

GÖRÜNTÜ IŞLEME 07
Haar Cascade
Parametre olarak gelen resimdeki yüze ait alanların bulunması işlemi tüm resim taranarak gerçekleştirilmektedir. Sınıflandırıcı farklı
boyutlardaki yüz özelliklerini bulacak şekilde planlanabilmektedir. Bunun avantajı ise görüntünün boyutlarını değiştirmeden işlem yaparak daha
etkin bir yöntem olarak karşımıza çıkmaktadır. Bu nedenle parametre olarak gelen resim içerisindeki değişik ölçeklerdeki yüz özelliklerini
bulabilmek için sınıflandırıcı aynı arama sürecini farklı ölçek parametreleri için tekrar eder.

GÖRÜNTÜ IŞLEME 08
Haar Cascade
“Cascade” kelimesi, meydana gelen sınıflandırıcının basit yapılı birden fazla sınıflandırıcının bir araya
gelerek komplex yapılı bir yapı meydana getirdiğini göstermek amacıyla adlandırılmıştır. Basit yapılı bu
sınıflandırıcılar, herhangi bir sınıflayıcı katman geri çevirmediği sürece tüm katmanlar geçilene kadar
parametre olarak verilen resme art arda uygulanır.

Haar sınıflandırıcı yardımıyla öncelikle yüz alanı belirlenmiştir. Akabinde tespit edilen yüz alanı içerisinde
tekrar Haar-Cascade sınıflandırıcı çalıştırılmıştır. Haar-Cascade sınıflandırıcı bu şekilde peş peşe
kullanılması yanlış tespitlerin önüne geçerek sistemin farklı ortam şartlarında çıktılarını doğru sonuç
vermesini sağlamıştır.

GÖRÜNTÜ IŞLEME 09
iNTEGRAL İMAJ
Algoritmanın verimliliğini arttırmak için farklı boyutta resim ve resmin her alanına yüzlerce Haar
özelliklerinin varlık ve yokluğunu tanımlamak amacıyla ilk olarak integral imaj üretilmektedir. Genel olarak
“integral” kelimesinin anlamı, küçük birimleri birbiriyle toplamaktır. Bu durumda küçük birimler piksel
değerlerimiz olmaktadır. Her bir piksel için integral değeri üst ve sol piksel toplamıdır. Parametre olarak
verilen görüntüde sol üstten başlayarak sağa ve aşağıya tarama yapılarak her bir piksel birkaç tamsayı işlemi
ile toplanmaktadır. İntegral imaj ίί(x,y) ile gösterilmektedir. Burada (x,y) imajın konumlandığı noktayı ifade
eder. İntegral imaj denklem aşağıda verilmiştir.
Haar Cascade
Denklemdeki ί(x,y), girdi olarak verilen imajdır. İntegral imaj,(x,y) koordinatının üstündeki ve sol tarafına doğru olan piksel değerlerinin
toplamını içermektedir

Yukarıdaki pencere için yanakların parlaklık oranının burun bölgesindeki parlaklık oranından daha düşük olması ile burun kısmı seçilebilir.

GÖRÜNTÜ IŞLEME 11
Haar Cascade
Aynı zamanda göz bölgesinin beyaz ile gösterilen alt bölgeden daha karanlık olması da bu özelliklerden bir tanesidir.
Haar-Cascade Sınıflandırıcısında, buna benzer birçok özellikler içinde nesnenin bulunduğu resimler üzerinden geçirilerek değerler oluşturulur.
Örneğin yüz taramasında ağız, burun, alın, saç gibi bölgelerde birçok karanlık aydınlık özellikleri oluşturulacaktır. Bunların her birinden hedef
değerler oluşturulmaktadır ve bu işlem pencere büyüklükleri değiştirilerek diğer aşamalarda tekrar edilmektedir. Bu pencereler(zayıf
sınıflandırıcılar) her resim boyutu için düşünüldüğünde yüz binlerce çekirdek oluşacaktır. Negatif resimler üzerinde tarama yapılarak içinde
nesne bulunmadığı için kullanılmayacak olan pencerelerin büyük çoğunluğu elenecektir. Pozitif resimlerde nesne seçilerek nesnedeki
kullanılacak pencereler belirlenecektir. Bunun için eğitim sırasında pozitif resimlerde nesnenin hassas seçimine dikkat edilmelidir. Pozitif ve
negatif resim örneklerinin çok olması istenilen nesnede daha iyi sonuçlar almak için önemlidir.

Haarcascade algoritması misal videolarda bir el,yüz ya da belirlenen bir bölgenin takibini yapmak için kullanabiliriz.

GÖRÜNTÜ IŞLEME 12
Haar Cascade
Genel olarak
Haar Cascade, nesne tanıma süreçlerini hızlandırmak ve gerçek zamanlı uygulamalarda kullanım için etkili bir yöntem. Bu nedenle genellikle
yüz algılama, nesne algılama ve benzeri uygulamalarda kullanılır.

GÖRÜNTÜ IŞLEME 13
PROJEYE BAŞLAYALIM
Kütüphaneler Hakkında
• NumPy (np): Sayısal hesaplamalar, çok boyutlu diziler ve matris operasyonları için güçlü bir
kütüphanedir.
• Pandas (pd): Veri manipülasyonu ve analizi için kullanılır. Veri çerçeveleri (dataframes) üzerinde
çalışma yetenekleri sunar.
• Matplotlib.pyplot (plt): Veri görselleştirmesi yapmak için kullanılır. Grafikler, histogramlar, çizimler ve
diğer görsel temsilleri oluşturmak için kullanılır.
• OpenCV (cv2): Bilgisayarlı görü (computer vision) ve görüntü işleme uygulamaları için bir
kütüphanedir. Nesne algılama, yüz tanıma, resim işleme gibi birçok konuda kullanılır.
• Tarfile: Arşiv dosyalarını (örneğin, .tar ve .zip dosyaları) açmak ve içeriklerine erişmek için kullanılır.
• OS: İşletim sistemi ile etkileşimde bulunmak için kullanılır. Dosya ve klasör manipülasyonu, dosya
listeleme gibi işlemler için kullanılır.

GÖRÜNTÜ IŞLEME 15
Kütüphane Kurulumu
Pycharm uygulamamızda terminali
açıp aşağıdaki komutları tek tek
girerek gerekli kütüphaneleri
projemize yükleyebiliriz.

pip install numpy


pip install pandas
pip install matplotlib
pip install opencv-python

GÖRÜNTÜ IŞLEME 16
Algoritamnın Yüklenmesi
İlk olarak önceden eğitilmiş ve yüz tanıma algoritması olan haarcascade_frontalface_default.xml
dosyamızı entegre etmemiz gerekiyor. Bu dosyayı github sayfasından bulup projede belirtilen konuma
indirmemiz gerekiyor.

GÖRÜNTÜ IŞLEME 17
Yüz Tespit Sınıfı Oluşturma
Bu blok, yüz tespiti yapmak için bir FaceDetector sınıfını tanımlar. Bu sınıf, OpenCV kütüphanesinin Haar Cascade
sınıflandırıcısını kullanarak yüz tespiti yapmak için bir arayüz sağlar.

Bu sınıf, yüz tespiti işlemini bir sınıf arayüzü içinde sarmalayarak daha düzenli ve tekrar kullanılabilir bir yapı sağlar.
Örneğin, bu sınıfı kullanarak farklı görüntüler üzerinde yüz tespiti yapabilir ve tespit edilen yüzlerin koordinatlarını elde
edebilirsiniz.

GÖRÜNTÜ IŞLEME 18
Yüz Tespiti İşlemi İçin Hazırlık
Bu kod, yüz tespiti yapmak için Haar Cascade sınıflandırıcısını kullanacak bir
FaceDetector nesnesi oluşturur ve ardından belirlenen resim üzerinde yüz tespiti yapmaya
hazırlık yapar.

GÖRÜNTÜ IŞLEME 19
Yüz Tespiti İşlemi İçin Hazırlık
Bu blok, bir resmi yükleme ve
görselleştirme işlemlerini
gerçekleştirir.

GÖRÜNTÜ IŞLEME 20
Yüz Tespiti İşlemi İçin Hazırlık - Çıktı
Kodumuz daha sonra bize
seçtiğimiz resimi gösterecek.

GÖRÜNTÜ IŞLEME 21
Yüz Tespiti
Bu blok, yüz tespiti yapmak için
daha önce tanımlanan fonksiyonları
kullanarak bir görüntü üzerinde
yüzleri tespit eder ve tespit edilen
yüzleri dikdörtgenle çerçeve içine
alarak görselleştirir.

GÖRÜNTÜ IŞLEME 22
Yüz Tespiti - Çıktı
Projemiz başarılı bir şekilde bütün
yüzleri buldu.

GÖRÜNTÜ IŞLEME 23
Yüz Tespiti - Çıktı
Resimleri ve aşağıdaki ayaları
değiştirerek istediğimiz şekilde
kullanabiliriz.

GÖRÜNTÜ IŞLEME 24
KAYNAKÇA
https://www.kaggle.com/code/serkanpeldek/
face-detection-with-opencv

https://github.com/opencv/opencv/tree/master/
data/haarcascades

GÖRÜNTÜ IŞLEME 25
DİNLEDİĞİNİZ İÇİN
TEŞEKKÜR EDERİM

You might also like