Web geliştiricilerinin çoğu, yüz tanıma sistemlerini Python veya JavaScript’in özel kütüphaneleriyle ilişkilendirir. Ancak modern araçlarla, PHP’nin de bu alanda etkili bir şekilde kullanılabileceğini unutmamak gerekir. Php-dlib gibi araçlar sayesinde, sunucu tarafında çalışan PHP uygulamalarına yüz tespiti, nokta haritalama ve kimlik eşleştirmesi gibi ileri düzey özellikleri kolayca entegre edebilirsiniz. Bu yaklaşım, kullanıcı doğrulama, katılım takibi veya kimlik doğrulama sistemleri için ideal bir çözüm sunar.
Neden PHP ile Yüz Tanıma?
PHP, dünya genelindeki web sitelerinin %75’inden fazlasında kullanılan en yaygın sunucu tarafı dillerinden biridir. Geleneksel olarak yüz tanıma sistemleri Python veya özel bulut hizmetleriyle ilişkilendirilse de, PHP tabanlı çözümler birçok avantaj sağlar:
- WordPress veya e-ticaret platformları gibi popüler CMS sistemlerine sorunsuz entegrasyon
- Üçüncü taraf API’lere bağımlı olmadan kullanıcı girişi ve kimlik doğrulamasının gerçekleştirilmesi
- Bulut maliyetlerinden kaçınarak maliyet etkin, kendi sunucunuzda çalışan çözümler
- Küçük ve orta ölçekli projelerde hızlı dağıtım (örneğin, personel giriş çıkış sistemleri veya etkinlik kayıtları)
Php-dlib eklentisi ve önceden eğitilmiş modellerle, PHP uygulamalarında gerçek zamanlı yüz tanıma sistemleri kurabilirsiniz. Bu sistemler, ekstra altyapı gereksinimi olmadan sadece birkaç basit adımla hayata geçirilebilir.
PHP Yüz Tanıma Ortamını Hazırlama
Bu projeye başlamak için php-dlib eklentisi ve Dlib kütüphanesinin üç temel modeline ihtiyacınız olacak. Bu modeller, yüz tespiti, nokta haritalama ve kimlik eşleştirmesi gibi farklı aşamalarda kritik rol oynar.
İlk adım olarak, php-dlib eklentisini resmi depodan indirip php.ini dosyanızda etkinleştirmelisiniz. Eklentinin bulunduğu dizini PHP’nin genişletme dizinine yerleştirin ve yapılandırmayı güncelleyin:
extension=/usr/local/lib/php/extensions/php-dlib.soArdından, uygulamaya özel bir veri dizini oluşturun ve gerekli Dlib model dosyalarını indirin:
mmod_human_face_detector.dat– resimlerdeki insan yüzlerini tespit etmek içinshape_predictor_5_face_landmarks.dat– göz, burun gibi önemli yüz noktalarını belirlemek içindlib_face_recognition_resnet_model_v1.dat– 128 boyutlu benzersiz yüz kodlamaları oluşturmak için
Model dosyalarının yollarını uygulamanızda şu şekilde tanımlayın:
detectionModel = "data/mmod_human_face_detector.dat";
landmarkModel = "data/shape_predictor_5_face_landmarks.dat";
recognitionModel = "data/dlib_face_recognition_resnet_model_v1.dat";PHP ile Yüz Tanıma: Adım Adım Uygulama
Ortam hazır olduğunda, yüz tanıma süreci dört ana adımdan oluşur: tespit, hizalama, kodlama ve depolama. Her adım, sistemin doğruluğunu artırmak için kritik öneme sahiptir.
1. AI Modellerini Yükleme
Php-dlib sınıflarını kullanarak model nesnelerini başlatın:
$fd = new CnnFaceDetection($detectionModel);
$fld = new FaceLandmarkDetection($landmarkModel);
$fr = new FaceRecognition($recognitionModel);Bu nesneler, önceden eğitilmiş AI modellerini belleğe yükerek PHP üzerinden resim analizi yapılmasını sağlar.
2. Bilinen Yüzler Veri Setini Oluşturma
Her bir kişinin adını ve referans fotoğraf yolunu içeren basit bir ilişkisel dizin tanımlayın. Bu, eğitim veri setinizi oluşturur:
$people = [
"Arshid" => "uploads/arshid-2024.jpg",
"Jhon" => "uploads/jhon-2024.png"
];Tanınma doğruluğunu artırmak için fotoğrafların net ve önden çekilmiş olmasına dikkat edin.
3. Her Yüzü İşleme: Tespit, Hizalama, Kodlama
Veri setindeki her giriş için aşağıdaki adımları uygulayın:
- CNN tabanlı tespitçi ile yüzleri belirleyin
- Yüzü tespit edilemeyen resimleri atlayın
- İlk tespit edilen yüzü seçin (her resimde bir yüz olduğunu varsayarak)
- Nokta haritalandırma ile göz, burun ve ağız gibi önemli noktaları hizalayın
- 128 boyutlu benzersiz bir yüz kodlaması oluşturun
foreach ($people as $name => $img) {
echo "İşleniyor: $name\n";
$faces = $fd->detect($img);
if (count($faces) == 0) {
echo "$img dosyasında yüz bulunamadı\n";
continue;
}
$face = $faces[0];
$landmarks = $fld->detect($img, $face);
$descriptor = $fr->computeDescriptor($img, $landmarks);
$database[$name] = $descriptor;
echo "Kaydedildi: $name\n";
}İşlem tamamlandıktan sonra, veritabanını seri hale getirip bir dosyaya kaydedin:
file_put_contents("faces.db", serialize($database));4. Öklid Mesafesi ile Yeni Yüzleri Tanımlama
Yeni bir resimdeki kişiyi tanımak için, yüzü tespit edip kodlamasını oluşturun ve bu kodlamayı daha önce kaydettiğiniz veritabanıyla karşılaştırın. Öklid mesafesi veya kosinüs benzerliği gibi yöntemler kullanılabilir.
$database = unserialize(file_get_contents("faces.db"));
$image = "uploads/test-2024.jpeg";
$faces = $fd->detect($image);
foreach ($faces as $face) {
$landmarks = $fld->detect($image, $face);
$descriptor = $fr->computeDescriptor($image, $landmarks);
$bestName = "Bilinmiyor";
$bestDist = 999;
foreach ($database as $name => $dbDescriptor) {
$dist = 0;
for ($i = 0; $i < 128; $i++) {
$diff = $descriptor[$i] - $dbDescriptor[$i];
$dist += $diff * $diff;
}
$dist = sqrt($dist);
if ($dist < $bestDist) {
$bestDist = $dist;
$bestName = $name;
}
}
if ($bestDist < 0.6) {
echo "EŞLEŞME: $bestName (mesafe $bestDist)\n";
} else {
echo "Bilinmeyen yüz\n";
}
}0.6 eşik değeri, sadece güvenilir eşleşmelerin kabul edilmesini sağlayarak yanlış pozitifleri azaltır.
Sisteminizi Ölçeklendirme ve Geliştirme Önerileri
Bu PHP tabanlı sistem, küçük ölçekli projeler için etkili olsa da, daha geniş kullanımlar için bazı iyileştirmeler düşünebilirsiniz:
- Yüz veritabanını SQL veya NoSQL veri tabanına taşıyarak ölçeklendirme
- Resim ön işleme (yeniden boyutlandırma, normalizasyon) ekleyerek tutarlılığı artırma
- Laravel için servis sağlayıcılar veya WordPress için eklenti olarak entegrasyon
- PHP 8.3 gibi yüksek performanslı çalışma zamanlarında OPcache ile dağıtım
- Laravel Horizon gibi arka plan kuyruklarını kullanarak toplu işlemler gerçekleştirme
İlerideki projelerinizde yüz tanıma sistemlerini daha da geliştirmek için bu adımları özelleştirebilir ve ihtiyaçlarınıza göre optimize edebilirsiniz. Unutmayın, doğru altyapı ve algoritmalar sayesinde PHP’nin de bu alanda oldukça yetenekli olduğunu göreceksiniz.
Yapay zeka özeti
PHP ile yüz tanıma sistemi kurmanın püf noktalarını öğrenin. Php-dlib eklentisiyle web uygulamalarınıza kolayca entegre edebileceğiniz pratik bir rehber sunuyoruz.
Etiketler