Face Detection v aplikacích: co to je, metody a knihovny

Autor: IT Sectr Publikováno: 2026-07-18 Doba čtení: 10 min

Face Detection — je technologie počítačového vidění pro nalezení a lokalizaci lidských obličejů na digitálních obrázcích a videostreamu. Na rozdíl od Face Recognition (identifikace osoby) Face Detection pouze určuje přítomnost obličeje a jeho hranice — bounding box a keypoints (oči, nos, ústa). V mobilním vývoji se Face Detection používá v ML Kit, ARKit, Vision Framework a OpenCV. Podle údajů Google ML Kit, 2025 se detekce obličeje provádí za 5–15 ms na moderních zařízeních s přesností 98%.

Hlavní

  • Face Detection — nalezení obličejů na obrázku, ne identifikace osoby
  • Bounding box — obdélník kolem obličeje se souřadnicemi x, y, w, h
  • Keypoints — klíčové body obličeje: oči, nos, ústa, uši (468 bodů v ML Kit)
  • On-device — detekce probíhá lokálně na zařízení bez serveru
  • Real-time — 30+ FPS na moderních smartphonech pro HD video

Co je Face Detection: principy a algoritmy

Face Detection — úloha počítačového vidění pro určení přítomnosti a umístění lidských obličejů na obrázku. Algoritmus vrací bounding box (obdélník kolem obličeje) a confidence score (pravděpodobnost, že se jedná o obličej). Moderní algoritmy také vracejí facial landmarks — klíčové body (oči, obočí, nos, ústa, kontura obličeje). Face Detection je první fází pro mnoho ML úloh: rozpoznávání osoby, AR filtry, analýza pozornosti.

Historie algoritmů začala s Viola-Jones (2001) — kaskáda Haar-like příznaků na CPU. V roce 2010 dominovaly HOG + SVM (Histogram of Oriented Gradients). Od roku 2016 jsou všechny moderní algoritmy založeny na konvolučních neuronových sítích (CNN): MTCNN, RetinaFace, SSH, MobileNet-SSD, YOLO-Face. CNN algoritmy na GPU poskytují 95–99% přesnost oproti 85–90% u klasických metod. Podle benchmarku WiderFace (2025) dosahuje RetinaFace mAP 96.3% na nejtěžší podmnožině.

MTCNN (Multi-Task Cascaded CNN) — klasický třístupňový detektor: P-Net (Proposal Network) najde kandidáty, R-Net (Refine Network) filtruje, O-Net (Output Network) zpřesní bounding box a vydá landmarks. MTCNN pracuje na CPU rychlostí 30–50 ms na snímek při rozlišení 640x480. Pro mobilní zařízení představuje MTCNN optimální rovnováhu rychlosti a přesnosti bez GPU.

AlgoritmusPřesnost (WiderFace)Rychlost (640x480)Platforma
RetinaFace96.3%15 ms (GPU)Android, iOS
MTCNN91.2%30–50 ms (CPU)Multiplatformní
ML Kit98.0%5–15 ms (GPU/NPU)Android, iOS
OpenCV Haar82.5%5–10 ms (CPU)Multiplatformní

Real-time Face Detection vyžaduje 30+ FPS pro video. Toho lze dosáhnout na moderních smartphonech díky NPU (Neural Processing Unit) — Qualcomm Hexagon, Apple Neural Engine, MediaTek APU. NPU provádí detekci za 2–5 ms s příkonem 50–100 mW, zatímco GPU spotřebovává 500–2000 mW. Pro nepřetržitou detekci (kamera stále zapnutá) je NPU jedinou praktickou možností bez přehřívání zařízení.

ML Kit Face Detection na Android a iOS

ML Kit Face Detection — nejoblíbenější SDK pro detekci obličejů na mobilních zařízeních. ML Kit nabízí dva režimy: contour mode (468 konturních bodů obličeje pro přesné nanášení masek) a classification mode (určení emocí: úsměv, otevřené oči, otevřená ústa). Režimy se kombinují v FaceDetectorOptions. ML Kit používá neuronovou síť Google MobileNetV2-SSD s optimalizací přes NNAPI/GPU Delegate.

Nastavení ML Kit Face Detection: setPerformanceMode(FACE_DETECTION_FAST / ACCURATE), setLandmarkMode (klíčové body), setContourMode (konturní body), setClassificationMode (emoce). Pro maximální rychlost použijte FAST + LANDMARKS_ONLY + bez kontury. Pro AR filtry — ACCURATE + ALL_CONTOURS. Podle Google (2025) poskytuje režim FAST 98% přesnost při 5 ms, ACCURATE — 99% při 15 ms.

kotlin
// ML Kit Face Detection s konturami
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
        }
    }

Face Tracking v ML Kit — unikátní funkce pro videostream. Každému detekovanému obličeji je přiřazeno tracking ID (celé číslo), které přetrvává mezi snímky. To umožňuje připojit AR objekty ke konkrétnímu obličeji bez opětovné detekce. Sledovač používá Optical Flow a udržuje ID i při částečném zakrytí obličeje. Tracking ID se resetuje, když obličej opustí snímek na více než 1 sekundu.

Apple Vision Framework: VNDetectFaceRectanglesRequest

Apple Vision Framework — nativní iOS framework pro Face Detection, pracující přes Core ML na Apple Neural Engine. Vision poskytuje VNDetectFaceRectanglesRequest (pouze bounding box) a VNDetectFaceLandmarksRequest (s konturními body). Vision Framework je součástí iOS od iOS 11 a nevyžaduje další SDK — je součástí Foundation.

Výhody Vision Framework: nulová závislost na knihovnách třetích stran, práce přes Apple Neural Engine (ANE) na čipech A12+, automatické zpracování orientace obrázku přes exifOrientation, podpora CIDetectorAccuracy pro nastavení rychlosti/přesnosti. Vision vrací VNFaceObservation s bounding box (normalizované souřadnice 0..1) a landmarks (VNFaceLandmarkRegion2D).

Vision vs ML Kit na iOS: Vision je rychlejší na starších zařízeních (A12–A15), protože používá nativní neurální enginy Apple. ML Kit používá modely Google a může být přesnější při obtížných úhlech (profil, silný náklon). Pro jednoduchou detekci (kamera, foto) — Vision. Pro AR filtry a konturní masky — ML Kit (468 bodů vs 76 bodů u Vision).

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 // normalizováno 0..1
        let confidence = face.confidence
    }
}

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

VNDetectFaceLandmarksRequest — rozšířená verze pro klíčové body. Vrací VNFaceLandmarkRegion2D pro každou skupinu bodů: leftEye, rightEye, nose, faceContour, innerLips, outerLips. Každá skupina je pole CGPoint (normalizované). Vision nevrací 468 bodů jako ML Kit — pouze 76 klíčových bodů. Pro přesnou masku obličeje je preferován ML Kit; pro základní — Vision.

OpenCV Haar Cascade: klasický přístup

OpenCV Haar Cascade — klasický algoritmus Face Detection založený na kaskádě Haar-like příznaků (Viola-Jones, 2001). Navzdory svému stáří se Haar Cascade stále používá v projektech s omezenými zdroji: Raspberry Pi, IoT zařízení, vestavěné systémy. Algoritmus nevyžaduje GPU ani NPU — pracuje na jakémkoli CPU rychlostí 5–15 ms na snímek při rozlišení VGA.

LBP Cascade (Local Binary Patterns) — alternativa k Haar Cascade v OpenCV. LBP je rychlejší (2–5 ms) a méně citlivý na osvětlení, ale dává více falešně pozitivních výsledků. Haar je přesnější (85–90% vs 80–85% pro LBP), ale citlivý na odlesky a stíny. Pro mobilní aplikace je OpenCV Face Detection v přesnosti horší než metody neuronových sítí, ale vítězí v kompatibilitě — funguje na jakémkoli zařízení.

kotlin
// OpenCV Face Detection přes 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 = bounding box obličeje
}

Nevýhody OpenCV: vysoká míra falešně pozitivních výsledků (až 15%), špatný výkon při profilových úhlech (>30° — pokles přesnosti na 50%), chybějící landmarks bez dalšího modelu, chybějící sledování mezi snímky. Pro moderní mobilní aplikace je OpenCV Face Detection záložním řešením pro zařízení bez Google Play Services (Huawei, Amazon Fire). Pro hlavní scénáře — ML Kit nebo Vision.

Face Detection vs Face Recognition: rozdíl

Face Detection — určení přítomnosti a polohy obličeje na obrázku. Výsledek: bounding box a klíčové body. Face Recognition — identifikace osoby podle obličeje: určení, komu obličej patří. Face Recognition používá embeddingy (vektor čísel reprezentující obličej) a porovnává je s databází známých obličejů. Face Detection je povinnou první fází pro Face Recognition.

Technologie Face Recognition: FaceNet (Google, 2015) — triplet loss pro učení embeddingů o velikosti 128–512 float hodnot, ArcFace (2019) — additive angular margin loss, nejlepší přesnost (99.83% na LFW). Pro mobilní aplikace vyžaduje Face Recognition vlastní model TFLite — ML Kit neposkytuje hotové API pro identifikaci osoby (pouze detekci).

Soukromí na mobilních zařízeních: Face Detection je bezpečný — neukládá data o uživateli. Face Recognition vyžaduje ukládání embeddingů nebo fotografií pro porovnání. Apple vyžaduje výslovný souhlas uživatele pro Face Recognition a zakazuje jeho použití pro reklamu. Google ML Kit záměrně nezahrnuje Face Recognition, aby se vyhnul rizikům pro soukromí. Pro detekci bez identifikace — žádná omezení.

VlastnostFace DetectionFace Recognition
VýsledekKde je obličej na fotografiiKomu obličej patří
AlgoritmyMTCNN, RetinaFace, ML KitFaceNet, ArcFace, DeepFace
UkládáníNení vyžadovánoDatabáze embeddingů
SoukromíNízké rizikoOmezení GDPR, CCPA

Face Liveness Detection — dodatečná kontrola, že obličej je skutečný (ne fotografie/video). Používá analýzu pohybu očí (blink detection), mikro-mimiku, hloubkovou mapu (3D kamera). Liveness Detection je povinná pro bankovní a platební aplikace. ML Kit nemá vestavěnou funkci liveness — použijte vlastní model nebo Google Play Integrity API pro ověření.

Použití Face Detection v mobilních aplikacích

AR filtry a masky — nejoblíbenější použití Face Detection. Na základě konturních bodů obličeje (468 bodů) se aplikují 3D masky, klobouky, brýle, kníry. ML Kit Face Detection + SceneKit (iOS) nebo Filament (Android) vytváří real-time AR zážitek. Snapchat a Instagram používají vlastní detektory založené na MobileNet + MTCNN. Pro vlastní AR filtry stačí ML Kit a 3D engine.

Fotografické editory a retuš — Face Detection určuje oblast obličeje pro automatickou korekci: vyrovnání barvy pleti, odstranění vad, zlepšení očí a zubů. OpenCV + ML Kit Face Detection poskytují souřadnice pro Selective Gaussian Blur (vyhlazení pleti) a kontrast očí. Reálné použití — aplikace Facetune, BeautyPlus, YouCam Makeup.

Kontrola pozornosti — určení směru pohledu (gaze detection). Face Detection vrací bounding box a landmarks očí. Na základě polohy zornice vůči oku se určuje, kam se uživatel dívá: na obrazovku, doleva, doprava, nahoru. Používá se v e-learningu (kontrola, že student sleduje přednášku), reklamě (metriky pozornosti), asistentech řidiče (kontrola únavy).

swift
// ARKit + Vision pro AR filtr
let faceLandmarksRequest = VNDetectFaceLandmarksRequest { req, _ in
    guard let face = req.results?.first as? VNFaceObservation else { return }
    if let leftEye = face.landmarks?.leftEye {
        // Překrytí AR objektu na levém oku
    }
}

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

Medicína a wellness — Face Detection se používá pro analýzu asymetrie obličeje (diagnostika neurologických poruch), hodnocení pulsu prostřednictvím mikrovibrací kůže (fotopletysmografie kamerou), určení vlhkosti kůže. ML Kit Face Detection + OpenCV poskytují dostatečnou přesnost pro předběžný screening bez lékařské certifikace. Pro produkční medicínu je vyžadována certifikace FDA/CE.

Často kladené otázky

Jaký je rozdíl mezi Face Detection a Face Recognition?

Face Detection — najde obličej na obrázku a vrátí jeho hranice (souřadnice obdélníku). Face Recognition — určuje, čí je to obličej, porovnáním s databází známých obličejů. Detekce je prvním krokem k rozpoznávání. ML Kit a Vision Framework poskytují pouze Face Detection. Pro rozpoznávání je potřeba vlastní model TFLite (FaceNet, ArcFace) + databáze embeddingů na zařízení.

Které Face Detection SDK je nejrychlejší na mobilních zařízeních?

ML Kit Face Detection — nejrychlejší na moderních zařízeních (5–15 ms na snímek) díky NNAPI/GPU Delegate. Apple Vision Framework — rychlejší na iOS (A12+ přes ANE) — 3–10 ms. OpenCV Haar Cascade — 5–10 ms na CPU, ale nižší přesnost (82% vs 98% u ML Kit). Na zařízeních s NPU (Snapdragon 8 Gen 3, Apple A17 Pro) provádějí ML Kit a Vision detekci za 2–5 ms.

Funguje Face Detection s tmavými brýlemi nebo maskou?

ML Kit a Vision Framework fungují správně s brýlemi (včetně tmavých) a lékařskými maskami. Přesnost detekce s maskou klesá z 98% na 90–92%, ale obličej je stále detekován podle horní části (oči, obočí, čelo). Konturní body (kontura obličeje) jsou méně přesné — pro masky používejte pouze classification mode (úsměv, otevřené oči) bez kontury.

Lze Face Detection použít v reálném čase?

Ano, Face Detection v reálném čase je podporován všemi moderními SDK. ML Kit — až 60 FPS na snímku 480p přes CameraX Analyzer. Apple Vision — až 30 FPS na iOS přes AVFoundation. Pro real-time použijte režim FAST performance, snižte rozlišení na 480p a zapněte face tracking (ML Kit) pro zachování ID mezi snímky bez opětovné detekce každého snímku.

Je pro Face Detection na zařízení potřeba internet?

Ne, všechna moderní mobilní SDK Face Detection pracují zcela na zařízení. ML Kit stahuje model přes Google Play Services při prvním spuštění (pokud je zvolen režim stahování), poté pracuje offline. Apple Vision Framework — vestavěný v iOS, nevyžaduje internet. OpenCV — zcela offline. Pro cloudová API (Google Cloud Vision, AWS Rekognition) je internet potřeba, ale ta se v mobilních aplikacích pro real-time nepoužívají.

Shrnutí

  • Face Detection — hledání obličejů na obrázku: bounding box a klíčové body
  • ML Kit — 5–15 ms, 98% přesnost, 468 konturních bodů, tracking ID
  • Apple Vision — nativní iOS, přes ANE, 3–10 ms, 76 landmarks
  • OpenCV Haar — klasická metoda, CPU, 82% přesnost, fallback pro stará zařízení
  • Face Detection ≠ Face Recognition — detekce neidentifikuje osobu
  • Real-time — až 60 FPS na moderních zařízeních přes NPU
  • Použití — AR filtry, retuš, kontrola pozornosti, medicína

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také