Giriş
Günümüzde teknolojinin gelişmesiyle birlikte yüz tanıma sistemleri, güvenlik ve otomasyon alanlarında yaygın olarak kullanılmaktadır. Yüz tanıma sistemleri, bir bireyin yüzünü tanıyarak kimliğini doğrulama işlevi görmektedir. Bu makalede, düşük maliyetli bir çözüm sunan Raspberry Pi kullanarak Python programlama dili ile yüz tanıma sisteminin nasıl oluşturulacağını adım adım inceleyeceğiz. Raspberry Pi, kompakt yapısı ve esnekliği sayesinde prototip geliştirme için oldukça popüler bir platform haline geldi.
Gerekli Malzemeler ve Kurulum
Yüz tanıma projemizi gerçekleştirmek için aşağıdaki malzemelere ihtiyacınız olacak:
- Raspberry Pi 3 veya 4
- Raspberry Pi kamera modülü veya USB kamera
- MicroSD kart (en az 16GB)
- Güç kaynağı
- İnternet bağlantısı
- Python 3
- OpenCV kütüphanesi
- Dlib kütüphanesi
Kurulum aşamasına geçmeden önce, Raspberry Pi işletim sistemini kurmalıyız. Raspbian OS, Raspberry Pi için önerilen işletim sistemidir. Raspberry Pi’ye Raspbian’ı kurduktan sonra terminali açın ve gereken Python kütüphanelerini yüklemek için aşağıdaki komutları çalıştırın:
sudo apt-get update
sudo apt-get install python3-opencv
pip3 install dlib
Bu kütüphaneler, yüz tanıma işlevlerini gerçekleştirmek için gerekli işlevleri sağlayacaktır. Ayrıca kameranın doğru bir şekilde çalıştığından emin olun ve gerekli izinleri verin.
Yüz Tanıma Algoritmalarının Tanıtımı
Yüz tanıma, genellikle iki ana adım içerir: yüzün tespiti ve yüzün tanınması. Yüz tespiti, görüntüdeki yüzlerin bulunması, yüz tanıması ise tespit edilen yüzlerin tanınmasıdır. Bu süreçlerde kullanılan bazı yaygın algoritmalar bulunmaktadır. Dlib kütüphanesi, yüz tespiti ve tanıma için oldukça başarılı bir yöntem sunar. Dlib’in HOG (Histogram of Oriented Gradients) tabanlı yüz tespit algoritmasını kullanarak bu adımda ilerleyeceğiz.
OpenCV de yüz tespiti için başka bir popüler kütüphanedir. OpenCV, Haar Cascade sınıflandırıcıları kullanarak nesne tespiti yapabilir. Bu iki kütüphane kombinasyonu sayesinde, uygun yüz tespitini gerçekleştirebiliriz. Yüzlerin tespiti yapıldıktan sonra, dlib kütüphanesinin yüz özelliklerini kullanarak yüz tanıma işlemlerimizi gerçekleştireceğiz.
Şimdi operasyonel hale getirmek için kodlamaya geçelim!
Python ile Yüz Tanıma Uygulamasını Geliştirme
Projemiz için oluşturacağımız temel yapı, öncelikle bir kamera görüntüsünü alarak başlar. Ardından, bu görüntü üzerinde yüz tespit işlemi gerçekleştirilecek. Yüz tespit edildikten sonra, yüzün tanınması işlemi uygulanacak. Aşağıda, bu adımları gerçekleştirecek bir Python kod örneği bulunmaktadır:
import cv2
import dlib
# Yüz tespit nesnesini oluştur
detector = dlib.get_frontal_face_detector()
# Yüz özelliklerini çıkarma nesnesini oluştur
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
# Video kaynağını başlat
cap = cv2.VideoCapture(0)
while True:
# Kameradan görüntü al
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Yüzleri tespit et
faces = detector(gray)
for face in faces:
landmarks = predictor(gray, face)
# Yüz etrafında bir dikdörtgen çiz
x, y, w, h = (face.left(), face.top(), face.width(), face.height())
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('Yüz Tanıma', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Bu kod, kameradan görüntü alarak sürekli olarak yüzleri tespit eder ve her tespit edilen yüz etrafına bir dikdörtgen çizer. Yüz özelliklerini tanımaya geçmeden önce, bu temel kod yapısını test etmeniz önemlidir. Kodu çalıştırdığınızda, kameranızın doğru çalışıp çalışmadığını kontrol edin.
Yüz Tanıma Veritabanı Oluşturma
Şimdi, yüz tanıma kısmına geçeceğiz. Bunun için, tanınacak yüzlerin bir veritabanını oluşturmamız gerekiyor. Bu veritabanı, bir klasörde saklanacak ve her yüz için birkaç görüntü içerecektir. Yüz görüntülerinin her biri, yüzün özelliklerini tanımlayan bir vektör ile eşlenmelidir. Aşağıdaki kod, veritabanı oluşturarak yüz tanıma işlemi için gerekli olan bilgileri alacaktır:
import os
import numpy as np
# Yüz veritabanını oluştur
def create_database():
images = []
labels = []
for label in os.listdir('data/'):
for image_name in os.listdir(os.path.join('data/', label)):
img_path = os.path.join('data/', label, image_name)
img = cv2.imread(img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
images.append(img)
labels.append(label)
return images, labels
X_train, y_train = create_database()
Bu fonksiyon, her bir ‘data’ klasörü içerisinde tanınacak yüzler için ayrı dizinler oluşturarak her birinden görselleri okuyup birleştirir. Burada ‘data’ klasörünü uygun şekilde düzenlemeniz önemlidir. Uygun bir veri seti ile projenizi denemeye başlayabilirsiniz.
Sonuç ve Öneriler
Raspberry Pi ile yüz tanıma projesi, Python’un gücünü kullanarak verimli bir şekilde gerçekleştirilebilir. Proje boyunca, yüz tanıma sisteminin temellerini attık ve pratik uygulamaları gerçekleştirdik. Elde ettiğiniz sonuçları görmek, projeniz üzerinde çalışmaya devam etmenizi teşvik edecektir.
Yüz tanıma sisteminizi daha da geliştirmek istiyorsanız, kullanıcı arayüzü ekleyebilir, veritabanınızı büyütebilir ya da API entegrasyonları yapabilirsiniz. Raspberry Pi’nin sunduğu avantajlarla, bu projeyi çeşitlendirerek ilginç uygulamalara dönüştürebilirsiniz.
Unutmayın ki, sürekli güncellemeleri takip ederek ve yeni yöntemler öğrenerek projelerinizi zenginleştirebilirsiniz. Haydi, şimdi siz de bu projeyi kendi ortamınızda deneyin ve yüz tanıma teknolojisinin heyecan verici dünyasına adım atın!