Zephyrnet Logosu

Bilgisayarla Görmeyi Kullanarak Yüz Algılamayı Öğrenelim

Tarih:

Bu makale, Veri Bilimi Blogathon.

Genel Bakış

Bu yazıda, görüntüdeki tek bir yüzü algılayacak ve aynı anda (eğer bulunursa) birden fazla yüzü algılayacak bir yüz algılama uygulaması yapacağız, bu nedenle tüm makale bilgisayarla görme kullanarak Yüz algılamaya odaklanacaktır. Burada algılama için HAAR kademeli sınıflandırıcılarını kullanacağız; algılama amaçlı görüntüdeki yüzleri tespit etmek için gerekli tüm teknikleri ve süreçleri öğreneceğiz.

Yüz Algılama Uygulaması

  1. Yüz tanıma: Yüz tanıma bir ileri taşıma adımı gibidir, yani yüz algılamadan sonra yüz tanıma işlemini gerçekleştirirdik.
  2. Filtreler: Günümüzde sosyal medya dünyasında yaşıyoruz ve küresel pazarda çeşitli filtreler ve eğlenceli uygulamalar olduğunu görebiliyoruz; Bu tür uygulamaları yapabilmek için de önce yüzleri tespit edip ardından filtreyi uygulamamız gerekiyor.
  3. Yüz kilidi açma uygulaması: Bu özelliği telefonlarımızda sıklıkla kullandık, ancak yapı taşının önce yüzü algılamak olduğunu biliyor muyuz?

Hadi başlayalım!

Gerekli Kitaplıkları Yükleme

# Gerekli kütüphaneleri içe aktarın numpy'yi np olarak içe aktarın cv2'yi içe aktarın matplotlib.pyplot'u plt olarak %matplotlib satır içi olarak içe aktarın

Görüntüler yükleniyor

# Test edilecek görüntünün yüklenmesi
test_image = cv2.imread('data/baby1.png')
# Burada renkli görüntüyü gri görüntüye dönüştürüyoruz
if(test_image is not Yok): test_image_gray = cv2.cvtColor(test_image, cv2.COLOR_BGR2GRAY) test_image_gray
# Gri tonlamalı görüntü gösteriliyor
plt.imshow(test_image_gray, cmap='gri')

Çıktı:

Bilgisayarla görme kullanarak yüz algılama

OpenCV'nin dedektör işlevinin varsayılan olarak mevcut görüntüyü okuduğunun farkındayız. BGR formatı, ancak BGR formatı genellikle son kullanıcı için düşünülmez; bu nedenle BGR formatındaki görüntüyü RGB formatına dönüştürmemiz gerekiyor yani tüm özelliklere sahip renkli görüntü Renkli bir görüntü oluşturmaktan sorumlu 3 kanal (R-Red, G-Green, B-Blue).

Bu nedenle, gelecek BGR görüntülerini RGB görüntülerine dönüştürmek için net bir işlev oluşturacağız.

def convertToRGB(image): dönüş cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

HAAR Kademeli Dosyalar

HAAR kaskadı, bilgisayarla görme dünyasında iyi bilinen bir terimdir; HAAR kademeli sınıflandırıcılar hakkında konuştuğumuzda, sadece yüz önceden eğitilmiş sınıflandırıcılarla ilgili değil, eğitilmiş sınıflandırıcıları da alabiliriz. gülümsemeleri, arabaları, otobüsleri algılamak için ve bu basamaklı dosyalar her zaman XML dosyaları biçimindedir genellikle mevcut basamaklı dosyaları kullanırız, ancak aslında basitlik için onları burada da oluşturabiliriz, görüntüdeki yüzün yazı tipi konumunu tespit etmek için HAAR kademeli ön yüz sınıflandırıcısını kullanacağız.

Ön Yüz için Sınıflandırıcıyı Yükleme

haar_cascade_face = cv2.CascadeClassifier('data/haarcascades/haarcascade_frontalface_alt2.xml')

Yüz Algılama

Yüz tanıma için koordinatlardan yüzlerin koordinatlarını almamız gerekiyor. X, Y koordinatını ve ayrıca yüzün yüksekliğini ve genişliğini kastediyorum. o zaman sadece elimizdeki verilen koordinatları takip ederek görüntünün üzerine bir dikdörtgen çizebilir veya çizebiliriz. algılamaMultiScale işlevi bu bize dikdörtgeni planlamak için gerekli tüm koordinatları sağlayacaktır.

face_coordinat = haar_cascade_face.detectMultiScale(test_image_gray, ScaleFactor = 1.2, minNeighbors = 5);
# Hayır'ı yazdıralım. bulunan yüzlerin
print('Bulunan yüzler: ', len(yüz_koordinat))

Çıktı:

Bulunan yüzler: 1

Yani daha önce, kullanırken DetectMultiScale işlevi, görüntünün x koordinatını ve y koordinatını elde ettik yükseklik ve genişlikle birlikte, şimdi bu noktaları görüntünün her noktasından geçin ve dikdörtgeni yüzün üzerine 2 piksel kalınlığında çizin.

yüz koordinatındaki (x_face,y_face,w_face,h_face) için: cv2.rectangle(test_image, (x_face, y_face), (x_face+w_face, y_face+h_face), (0, 255, 0), 2)

Şimdi tüm süreç tamamlandığından, şu ana kadar gerçekleştirdiğimiz tüm adımların buna değip değmediğini kontrol etmenin zamanı geldi, bu nedenle Matplotlib'in işlevini göster, işlenmiş görüntüyü göreceğiz ve görüntüdeki yüzü algılayıp algılayamayacağını göreceğiz.

#resmi RGB'ye çevir ve görüntüyü göster
plt.imshow(convertToRGB(test_image))

Çıktı:

Bilgisayarla görme kullanarak yüz algılama

Yüz Algılama İşlemini Otomatikleştirme İşlevi

def algılama_yüzleri(kademeli, test_image, scaleFactor = 1.1): # Burada copy() fonksiyonu yardımıyla orijinal görüntünün kopyasını tutacağız image_copy = test_image.copy() # Burada cvtColor fonksiyonu yardımıyla görüntüyü BGR formatından gri görüntüye dönüştürüyoruz. grey_image = cv2.cvtColor(image_copy, cv2.COLOR_BGR2GRAY) # Son olarak, verilen görüntüdeki yüzlerin koordinatlarını elde etmek için detectMultiscale ile haar cascade işlevini kullanıyoruz. face_rect içinde (x_face, y_face, w_face, h_face) için yüzler_rect = cascade.detectMultiScale(gray_image, scaleFactor=scaleFactor, minNeighbors=1): cv2.rectangle(image_copy, (x_face, y_face), (x_face+w_face, y_y) , (0, 255, 0), 2) image_copy döndür

Kod dökümü: Burada, yüzleri algılamak için bir fonksiyon oluşturuyoruz; bakalım burada neler oluyor:

  1. öncelikle biz orijinal görüntüyü saklamak için kopyalama işlevini kullanma böylece orijinalinde istenmeyen değişiklikler olmamalı
  2. Sonra dönüştürüyoruz Cv2, görüntüyü yalnızca daha iyi okunabilirlik için gri biçimde okuduğundan, BGR biçimindeki görüntüyü gri bir görüntüye dönüştürür.
  3. Daha sonra, yardımı ile algılamaMultiScale işlevi, bu yorumlarda zaten belirtilmiş.
  4. Sonunda, Dikdörtgeni yüzün çevresine 2 piksel kalınlığında ve yeşil renkte çizeceğiz detectMultiScale işlevinden aldığımız koordinatların yardımıyla

İşlevi Yeni Bir Görüntü Üzerinde Test Etme

#resim yükleniyor
test_image2 = cv2.imread('data/baby2.png')
#yüzleri algılama işlevini çağırın
yüzler = algılama_yüzler(haar_cascade_face, test_image2)
#RGB'ye dönüştür ve görüntüyü göster
plt.imshow(convertToRGB(yüzler))

Çıktı:

Çıktı

Birden Fazla Yüzü Algılamak İçin Bir Grupta İşlevi Test Etme

#resim yükleniyor
test_image2 = cv2.imread('data/group.png')
#yüzleri algılama işlevini çağırın
yüzler = algılama_yüzler(haar_cascade_face, test_image2)
#RGB'ye dönüştür ve görüntüyü göster
plt.imshow(convertToRGB(yüzler))

Çıktı:

Çıktı

Görüntüyü Kaydetme

cv2.imwrite('image1.png',yüzler)

Çıktı:

Gerçek

Sonuç

  1. Bu yüzden ilk olarak bilgisayarla görü kullanarak Yüz algılama üzerinde çalışırken, gerekli kitaplıkları içe aktararak ve yüz algılama gerçekleştirmemiz gereken görüntüleri yüklemeye başladık.
  2. Sonra HAAR kademeli dosyaları ve ön yüz sınıflandırıcılarını öğrendik. Bununla birlikte,DetectMultiScale işlevinin kullanımını öğrendi.
  3. Tüm algılama sürecinin zaman alıcı olduğunu anladığımızdan, bu süreci otomatikleştirecek bir fonksiyon oluşturmaya çalıştık.
  4. Daha sonra fonksiyon kullanımı ile sadece grup görüntüleri için değil yüzleri tespit ettik.
  5. Sonunda, algılanan yüzleri içeren görüntüyü kaydettik.

Bu nedenle, bilgisayarla görme kullanarak Yüz algılama için bir uygulama hazırlarken izlenmesi gereken adımlar yukarıdaki gibidir.

Son Notlar

işte repo Link bu makaleye. ML kullanarak Kalp hastalığı tespiti hakkındaki makalemi umarım beğenmişsinizdir. Herhangi bir fikriniz veya sorunuz varsa, aşağıya yorum yapın.

Bizimle ilgili daha fazla makale okuyun blog Bilgisayarla Görme hakkında.

Yazar Hakkında

Herkese selamlar şu anda çalışıyorum in TCS ve daha önce Veri Bilimi Analisti olarak çalıştım in Zorba Danışmanlık Hindistan. Tam zamanlı çalışmanın yanı sıra, aynı alana, yani Bilgisayarla Görme, Makine Öğrenimi ve Derin öğrenme gibi Yapay Zekanın diğer alt kümeleriyle birlikte Veri Bilimine büyük bir ilgim var; yukarıda belirtilen alanlardaki herhangi bir projede benimle işbirliği yapmaktan çekinmeyin ( LinkedIn).

Bu makalede gösterilen medya Analytics Vidhya'ya ait değildir ve Yazarın takdirine bağlı olarak kullanılır.

spot_img

En Son İstihbarat

spot_img