Uygulamalarda Face Detection: nedir, yöntemler ve kütüphaneler

Yazar: IT Sectr Yayınlanma: 2026-07-18 Okuma süresi: 10 dk

Face Detection, dijital görüntülerde ve video akışlarında insan yüzlerini bulma ve konumlandırma için kullanılan bir bilgisayarlı görü teknolojisidir. Face Recognition (kişi tanımlama) aksine, Face Detection yalnızca bir yüzün varlığını ve sınırlarını — bounding box ve keypoints (gözler, burun, ağız) belirler. Mobil geliştirmede, Face Detection ML Kit, ARKit, Vision Framework ve OpenCV'de kullanılır. Google ML Kit, 2025'e göre, modern cihazlarda yüz algılama %98 doğrulukla 5–15 ms'de gerçekleştirilir.

Önemli Noktalar

  • Face Detection — görüntüde yüzleri bulma, kişi tanımlama değil
  • Bounding box — yüz çevresinde x, y, w, h koordinatlarıyla dikdörtgen
  • Keypoints — yüzün ana noktaları: gözler, burun, ağız, kulaklar (ML Kit'te 468 nokta)
  • Cihaz üzerinde — algılama sunucu olmadan cihazda yerel olarak çalışır
  • Gerçek zamanlı — HD video için modern akıllı telefonlarda 30+ FPS

Face Detection Nedir: Prensipler ve Algoritmalar

Face Detection, bir görüntüde insan yüzlerinin varlığını ve konumunu algılama bilgisayarlı görü görevidir. Algoritma, bir bounding box (yüz çevresinde dikdörtgen) ve confidence score (yüz olma olasılığı) döndürür. Modern algoritmalar ayrıca facial landmarks — ana noktalar (gözler, kaşlar, burun, ağız, yüz konturu) döndürür. Face Detection, birçok ML görevi için ilk adımdır: kişi tanıma, AR filtreleri, dikkat analizi.

Algoritmaların tarihi Viola-Jones (2001) ile başladı — CPU'da Haar-benzeri özelliklerin kademesi. 2010'larda HOG + SVM (Histogram of Oriented Gradients) hakimdi. 2016'dan beri tüm modern algoritmalar evrişimli sinir ağlarına (CNN) dayanır: MTCNN, RetinaFace, SSH, MobileNet-SSD, YOLO-Face. GPU'da CNN algoritmaları, klasik yöntemlerin %85–90'ına karşı %95–99 doğruluk sağlar. WiderFace benchmarkına (2025) göre RetinaFace, en zor alt kümede %96,3 mAP elde eder.

MTCNN (Multi-Task Cascaded CNN) klasik üç aşamalı bir dedektördür: P-Net (Öneri Ağı) adayları bulur, R-Net (İyileştirme Ağı) filtreler, O-Net (Çıktı Ağı) bounding box'ı hassaslaştırır ve landmarkları çıkarır. MTCNN, 640x480 çözünürlükte CPU'da kare başına 30–50 ms'de çalışır. Mobil cihazlar için MTCNN, GPU olmadan hız ve doğruluk arasında optimum denge sağlar.

AlgoritmaDoğruluk (WiderFace)Hız (640x480)Platform
RetinaFace%96,315 ms (GPU)Android, iOS
MTCNN%91,230–50 ms (CPU)Çapraz platform
ML Kit%98,05–15 ms (GPU/NPU)Android, iOS
OpenCV Haar%82,55–10 ms (CPU)Çapraz platform

Gerçek zamanlı Face Detection video için 30+ FPS gerektirir. Bu, NPU (Sinirsel İşlem Birimi) — Qualcomm Hexagon, Apple Neural Engine, MediaTek APU sayesinde modern akıllı telefonlarda ulaşılabilir. NPU, 50–100 mW güç tüketimiyle 2–5 ms'de algılama yaparken, GPU 500–2000 mW tüketir. Sürekli algılama için (kamera her zaman açık), cihazın aşırı ısınması olmadan NPU tek pratik seçenektir.

Android ve iOS'ta ML Kit Face Detection

ML Kit Face Detection, mobil cihazlarda yüz algılama için en popüler SDK'dır. ML Kit iki mod sunar: kontur modu (hassas maske yerleşimi için 468 yüz kontur noktası) ve sınıflandırma modu (duygu algılama: gülümseme, açık gözler, açık ağız). Modlar FaceDetectorOptions'ta birleştirilir. ML Kit, NNAPI/GPU Delegate ile optimize edilmiş Google'ın MobileNetV2-SSD sinir ağını kullanır.

ML Kit Face Detection Yapılandırması: setPerformanceMode(FACE_DETECTION_FAST / ACCURATE), setLandmarkMode (ana noktalar), setContourMode (kontur noktaları), setClassificationMode (duygular). Maksimum hız için FAST + LANDMARKS_ONLY + kontursuz kullanın. AR filtreleri için — ACCURATE + ALL_CONTOURS. Google'a (2025) göre FAST modu 5 ms'de %98 doğruluk, ACCURATE — 15 ms'de %99 doğruluk sağlar.

kotlin
// ML Kit Face Detection with contours
val options = FaceDetectorOptions.Builder()
    .setContourMode(FaceDetectorOptions.ContourMode.ALL)
    .setClassificationMode(FaceDetectorOptions.ClassificationMode.ALL)
    .setPerformanceMode(FaceDetectorOptions.PerformanceMode.FAST)
    .enableTracking()
    .build()
val detector = FaceDetection.getClient(options)

detector.process(inputImage)
    .addOnSuccessListener { faces ->
        faces.forEach { face ->
            val trackingId = face.trackingId
            val smile = face.smilingProbability
            val leftEyeOpen = face.leftEyeOpenProbability
        }
    }

ML Kit'te Face Tracking — video akışları için benzersiz bir özelliktir. Algılanan her yüze, kareler arasında korunan bir tracking ID (tamsayı) atanır. Bu, yeniden algılama olmadan belirli bir yüze AR nesneleri eklemeye olanak tanır. İzleyici Optical Flow kullanır ve kısmi yüz kapanmasında bile ID'yi korur. Yüz, 1 saniyeden fazla kareden ayrıldığında tracking ID sıfırlanır.

Apple Vision Framework: VNDetectFaceRectanglesRequest

Apple Vision Framework, Apple Neural Engine üzerinde Core ML aracılığıyla çalışan yerel bir iOS Face Detection framework'üdür. Vision, VNDetectFaceRectanglesRequest (yalnızca bounding box) ve VNDetectFaceLandmarksRequest (kontur noktalarıyla) sağlar. Vision Framework, iOS 11'den beri iOS'a entegredir ve ek SDK gerektirmez — Foundation'ın parçasıdır.

Vision Framework'ün Avantajları: üçüncü taraf kütüphanelere sıfır bağımlılık, A12+ yongalarda Apple Neural Engine (ANE) aracılığıyla çalışma, exifOrientation ile otomatik görüntü yönlendirme işleme, hız/doğruluk ayarı için CIDetectorAccuracy desteği. Vision, bounding box (normalleştirilmiş koordinatlar 0..1) ve landmarks (VNFaceLandmarkRegion2D) ile VNFaceObservation döndürür.

iOS'ta Vision vs ML Kit: Vision, yerel Apple sinir motorlarını kullandığı için eski cihazlarda (A12–A15) daha hızlıdır. ML Kit, Google modellerini kullanır ve karmaşık açılarda (profil, güçlü eğim) daha doğru olabilir. Basit algılama için (kamera, fotoğraflar) — Vision'ı kullanın. AR filtreleri ve kontur maskeleri için — ML Kit'i kullanın (Vision'daki 76 noktaya karşı 468 nokta).

swift
import Vision

let request = VNDetectFaceRectanglesRequest { request, error in
    guard let observations = request.results as? [VNFaceObservation] else { return }
    for face in observations {
        let rect = face.boundingBox // normalized 0..1
        let confidence = face.confidence
    }
}

let handler = VNImageRequestHandler(
    cgImage: cgImage, orientation: .up, options: [:]
)
try handler.perform([request])

VNDetectFaceLandmarksRequest, ana noktalar için genişletilmiş sürümdür. Her nokta grubu için VNFaceLandmarkRegion2D döndürür: leftEye, rightEye, nose, faceContour, innerLips, outerLips. Her grup bir CGPoint (normalleştirilmiş) dizisidir. Vision, ML Kit gibi 468 nokta döndürmez — yalnızca 76 ana nokta. Hassas yüz maskeleri için ML Kit tercih edilir; temel algılama için Vision yeterlidir.

OpenCV Haar Cascade: Klasik Yaklaşım

OpenCV Haar Cascade, Haar-benzeri özelliklerin kademesine (Viola-Jones, 2001) dayanan klasik bir Face Detection algoritmasıdır. Yaşına rağmen, Haar Cascade hala kaynak kısıtlı projelerde kullanılır: Raspberry Pi, IoT cihazları, gömülü sistemler. Algoritma GPU veya NPU gerektirmez — VGA çözünürlüğündeki karede herhangi bir CPU'da 5–15 ms'de çalışır.

LBP Cascade (Local Binary Patterns), OpenCV'de Haar Cascade'e bir alternatiftir. LBP daha hızlıdır (2–5 ms) ve aydınlatmaya daha az duyarlıdır, ancak daha fazla yanlış pozitif üretir. Haar daha doğrudur (LBP'nin %80–85'ine karşı %85–90), ancak parlamalara ve gölgelere duyarlıdır. Mobil uygulamalar için OpenCV Face Detection, doğrulukta sinir ağı yöntemlerinden düşüktür, ancak uyumlulukta kazanır — herhangi bir cihazda çalışır.

kotlin
// OpenCV Face Detection via CascadeClassifier
val cascadeFile = File(context.filesDir, "haarcascade_frontalface_default.xml")
val faceDetector = CascadeClassifier(cascadeFile.absolutePath)

val gray = Mat()
Imgproc.cvtColor(colorFrame, gray, Imgproc.COLOR_RGBA2GRAY)
val faces = MatOfRect()
faceDetector.detectMultiScale(gray, faces)

faces.toList().forEach { rect ->
    // rect = face bounding box
}

OpenCV Sınırlamaları: yüksek yanlış pozitif oranı (%15'e kadar), profil açılarında düşük performans (>30° — doğruluk %50'ye düşer), ek model olmadan landmarks yok, kareler arası izleme yok. Modern mobil uygulamalar için OpenCV Face Detection, Google Play Services olmayan cihazlar (Huawei, Amazon Fire) için yedek olarak çalışır. Ana senaryolar için — ML Kit veya Vision'ı kullanın.

Face Detection vs Face Recognition: Fark

Face Detection — görüntüde bir yüzün varlığını ve konumunu belirleme. Sonuç: bounding box ve ana noktalar. Face Recognition — bir kişiyi yüzünden tanımlama: bu yüzün belirli bir bireye ait olduğunu belirleme. Face Recognition, embeddings (bir yüzü temsil eden sayı vektörü) kullanır ve bunları bilinen yüzlerin veritabanıyla karşılaştırır. Face Recognition için Face Detection zorunlu bir ilk adımdır.

Face Recognition Teknolojileri: FaceNet (Google, 2015) — 128–512 float değerli embeddings eğitimi için triplet loss, ArcFace (2019) — additive angular margin loss, en iyi doğruluk (LFW'de %99,83). Mobil uygulamalar için Face Recognition, özel bir TFLite modeli gerektirir — ML Kit, kişi tanımlama için hazır bir API sağlamaz (yalnızca algılama).

Mobil Cihazlarda Gizlilik: Face Detection güvenlidir — kullanıcı verilerini saklamaz. Face Recognition, karşılaştırma için embeddings veya fotoğraf saklamayı gerektirir. Apple, Face Recognition için açık kullanıcı onayı gerektirir ve reklam amaçlı kullanımını yasaklar. Google ML Kit, gizlilik risklerinden kaçınmak için bilinçli olarak Face Recognition'ı dahil etmez. Tanımlama olmadan algılama için — herhangi bir kısıtlama yoktur.

ÖzellikFace DetectionFace Recognition
SonuçFotoğrafta yüz neredeYüz kime ait
AlgoritmalarMTCNN, RetinaFace, ML KitFaceNet, ArcFace, DeepFace
DepolamaGerekmezEmbedding veritabanı
GizlilikDüşük riskGDPR, CCPA kısıtlamaları

Face Liveness Detection — yüzün gerçek olduğunu (fotoğraf/video değil) doğrulamak için ek bir kontrol. Göz hareketi analizi (göz kırpma algılama), mikro ifadeler, derinlik haritası (3D kamera) kullanır. Liveness Detection, bankacılık ve ödeme uygulamaları için zorunludur. ML Kit'te yerleşik liveness yoktur — doğrulama için özel bir model veya Google Play Integrity API kullanın.

Mobil Uygulamalarda Face Detection Kullanımı

AR filtreleri ve maskeler — Face Detection'ın en popüler uygulaması. Yüz kontur noktalarına (468 nokta) dayanarak 3D maskeler, şapkalar, gözlükler, bıyıklar yerleştirilir. ML Kit Face Detection + SceneKit (iOS) veya Filament (Android) gerçek zamanlı AR deneyimi oluşturur. Snapchat ve Instagram, MobileNet + MTCNN tabanlı kendi dedektörlerini kullanır. Özel AR filtreleri için ML Kit ve bir 3D motor yeterlidir.

Fotoğraf düzenleyiciler ve rötuş — Face Detection, otomatik düzeltme için yüz alanını tanımlar: cilt tonu dengesi, kusur giderme, göz ve diş iyileştirme. OpenCV + ML Kit Face Detection, Selective Gaussian Blur (cilt yumuşatma) ve göz kontrastı için koordinatlar sağlar. Gerçek uygulamalar — Facetune, BeautyPlus, YouCam Makeup.

Dikkat izleme — bakış yönünü belirleme (gaze detection). Face Detection, bounding box ve göz landmarklarını döndürür. Göze göre göz bebeğinin konumu, kullanıcının nereye baktığını belirler: ekrana, sola, sağa, yukarı. E-öğrenme (öğrencinin dersi izleyip izlemediğini izleme), reklamcılık (dikkat metrikleri), sürücü asistanları (yorgunluk izleme) içinde kullanılır.

swift
// ARKit + Vision for AR filter
let faceLandmarksRequest = VNDetectFaceLandmarksRequest { req, _ in
    guard let face = req.results?.first as? VNFaceObservation else { return }
    if let leftEye = face.landmarks?.leftEye {
        // AR object overlay on left eye
    }
}

let handler = VNSequenceRequestHandler()
for pixelBuffer in videoStream {
    try handler.perform([faceLandmarksRequest], on: pixelBuffer)
}

Tıp ve sağlıklı yaşam — Face Detection, yüz asimetrisi analizi (nörolojik bozuklukların teşhisi), cilt mikro titreşimlerinden nabız tahmini (kamera aracılığıyla fotopletismografi), cilt nemi belirleme için kullanılır. ML Kit Face Detection + OpenCV, tıbbi sertifika olmadan ön tarama için yeterli doğruluk sağlar. Üretim tıbbı için FDA/CE sertifikası gereklidir.

Sıkça Sorulan Sorular

Face Detection ve Face Recognition arasındaki fark nedir?

Face Detection — görüntüde bir yüz bulur ve sınırlarını (dikdörtgen koordinatları) döndürür. Face Recognition — bilinen yüzlerin veritabanıyla karşılaştırarak yüzün kime ait olduğunu belirler. Algılama, tanıma için ilk adımdır. ML Kit ve Vision Framework yalnızca Face Detection sağlar. Tanıma için cihazda özel bir TFLite modeli (FaceNet, ArcFace) + embedding veritabanı gerekir.

Mobil cihazlarda en hızlı Face Detection SDK hangisidir?

ML Kit Face Detection, NNAPI/GPU Delegate sayesinde modern cihazlarda en hızlıdır (kare başına 5–15 ms). Apple Vision Framework, iOS'ta daha hızlıdır (A12+ ANE aracılığıyla) — 3–10 ms. OpenCV Haar Cascade — CPU'da 5–10 ms, ancak daha düşük doğruluk (ML Kit'in %98'ine karşı %82). NPU'lu cihazlarda (Snapdragon 8 Gen 3, Apple A17 Pro) ML Kit ve Vision, algılamayı 2–5 ms'de gerçekleştirir.

Face Detection koyu renkli gözlük veya maske ile çalışır mı?

ML Kit ve Vision Framework, gözlükler (koyu renkli dahil) ve tıbbi maskelerle doğru şekilde çalışır. Maske ile algılama doğruluğu %98'den %90–92'ye düşer, ancak yüz üst kısımdan (gözler, kaşlar, alın) hala algılanır. Kontur noktaları (yüz konturu) daha az doğru hale gelir — maskeler için kontur olmadan yalnızca sınıflandırma modunu (gülümseme, açık gözler) kullanın.

Face Detection gerçek zamanlı olarak kullanılabilir mi?

Evet, gerçek zamanlı Face Detection tüm modern SDK'lar tarafından desteklenir. ML Kit — CameraX Analyzer ile 480p'de 60 FPS'ye kadar. Apple Vision — AVFoundation ile iOS'ta 30 FPS'ye kadar. Gerçek zamanlı için FAST performans modunu kullanın, çözünürlüğü 480p'ye düşürün ve her kareyi yeniden algılamadan kareler arasında ID'yi korumak için face tracking'i (ML Kit) etkinleştirin.

Cihazda Face Detection için internet gerekli midir?

Hayır, tüm modern mobil Face Detection SDK'lar tamamen cihaz üzerinde çalışır. ML Kit, ilk başlangıçta Google Play Services aracılığıyla modeli indirir (indirme modu seçilmişse), ardından çevrimdışı çalışır. Apple Vision Framework — iOS'a entegredir, internet gerektirmez. OpenCV — tamamen çevrimdışı. Bulut API'leri (Google Cloud Vision, AWS Rekognition) için internet gerekir, ancak gerçek zamanlı algılama için mobil uygulamalarda kullanılmazlar.

Özet

  • Face Detection — görüntüde yüzleri bulma: bounding box ve ana noktalar
  • ML Kit — 5–15 ms, %98 doğruluk, 468 kontur noktası, izleme ID'si
  • Apple Vision — yerel iOS, ANE aracılığıyla, 3–10 ms, 76 landmark
  • OpenCV Haar — klasik yöntem, CPU, %82 doğruluk, eski cihazlar için yedek
  • Face Detection ≠ Face Recognition — algılama kişiyi tanımlamaz
  • Gerçek zamanlı — NPU ile modern cihazlarda 60 FPS'ye kadar
  • Uygulamalar — AR filtreleri, rötuş, dikkat izleme, tıp

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun