Face Detection alkalmazásokban: mi ez, módszerek és könyvtárak

Szerző: IT Sectr Megjelenés: 2026-07-18 Olvasási idő: 10 perc

Face Detection — egy számítógépes látás technológia emberi arcok megtalálására és lokalizálására digitális képeken és videófolyamban. Ellentétben a Face Recognition (személyazonosítás) szolgáltatással, a Face Detection csak az arc jelenlétét és határait határozza meg — bounding box és keypoints (szemek, orr, száj). A mobil fejlesztésben a Face Detection az ML Kit, ARKit, Vision Framework és OpenCV keretrendszerekben használatos. A Google ML Kit, 2025 adatai szerint az arc észlelése 5–15 ms alatt történik modern eszközökön 98%-os pontossággal.

Főbb pontok

  • Face Detection — arcok keresése a képen, nem személyazonosítás
  • Bounding box — téglalap az arc körül x, y, w, h koordinátákkal
  • Keypoints — az arc kulcspontjai: szemek, orr, száj, fülek (468 pont az ML Kit-ben)
  • On-device — az észlelés helyben, az eszközön történik szerver nélkül
  • Real-time — 30+ FPS modern okostelefonokon HD-videóhoz

Mi az a Face Detection: elvek és algoritmusok

Face Detection — számítógépes látás feladat az emberi arcok jelenlétének és helyének meghatározására egy képen. Az algoritmus visszaad egy bounding box-ot (téglalap az arc körül) és egy confidence score-t (annak valószínűsége, hogy ez egy arc). A modern algoritmusok emellett facial landmarks-okat is visszaadnak — kulcspontokat (szemek, szemöldök, orr, száj, arc kontúr). A Face Detection az első szakasz számos ML-feladathoz: személyfelismerés, AR szűrők, figyelem analitika.

Az algoritmusok története a Viola-Jones (2001) algoritmussal kezdődött — Haar-szerű jellemzők kaszkádja CPU-n. A 2010-es években a HOG + SVM (Histogram of Oriented Gradients) dominált. 2016 óta minden modern algoritmus konvolúciós neurális hálózatokon (CNN) alapul: MTCNN, RetinaFace, SSH, MobileNet-SSD, YOLO-Face. A CNN algoritmusok GPU-n 95–99%-os pontosságot adnak a klasszikus módszerek 85–90%-ával szemben. A WiderFace benchmark (2025) szerint a RetinaFace 96.3%-os mAP-t mutat a legnehezebb részhalmazon.

MTCNN (Multi-Task Cascaded CNN) — egy klasszikus háromlépcsős detektor: a P-Net (Proposal Network) jelölteket talál, az R-Net (Refine Network) szűr, az O-Net (Output Network) pontosítja a bounding box-ot és kiadja a landmark-okat. Az MTCNN CPU-n 30–50 ms sebességgel dolgozik frame-enként 640x480 felbontáson. Mobil eszközökhöz az MTCNN optimális egyensúlyt nyújt a sebesség és pontosság között GPU nélkül.

AlgoritmusPontosság (WiderFace)Sebesség (640x480)Platform
RetinaFace96.3%15 ms (GPU)Android, iOS
MTCNN91.2%30–50 ms (CPU)Többplatformos
ML Kit98.0%5–15 ms (GPU/NPU)Android, iOS
OpenCV Haar82.5%5–10 ms (CPU)Többplatformos

Real-time Face Detection 30+ FPS sebességet igényel videóhoz. Ez modern okostelefonokon az NPU (Neural Processing Unit) — Qualcomm Hexagon, Apple Neural Engine, MediaTek APU segítségével érhető el. Az NPU 2–5 ms alatt végzi el az észlelést 50–100 mW energiafogyasztással, míg a GPU 500–2000 mW-ot fogyaszt. Folyamatos észleléshez (kamera mindig bekapcsolva) az NPU az egyetlen praktikus lehetőség az eszköz túlmelegedése nélkül.

ML Kit Face Detection Android és iOS rendszeren

ML Kit Face Detection — a legnépszerűbb SDK arcok észlelésére mobil eszközökön. Az ML Kit két módot kínál: contour mode (468 kontúrpont az arcról maszkok pontos felhelyezéséhez) és classification mode (érzelmek meghatározása: mosoly, nyitott szemek, nyitott száj). A módok a FaceDetectorOptions-ban kombinálhatók. Az ML Kit a Google MobileNetV2-SSD neurális hálózatát használja NNAPI/GPU Delegate optimalizálással.

ML Kit Face Detection beállítása: setPerformanceMode(FACE_DETECTION_FAST / ACCURATE), setLandmarkMode (kulcspontok), setContourMode (kontúrpontok), setClassificationMode (érzelmek). Maximális sebességhez használja a FAST + LANDMARKS_ONLY + kontúr nélkül beállítást. AR szűrőkhöz — ACCURATE + ALL_CONTOURS. A Google (2025) szerint a FAST mód 98%-os pontosságot ad 5 ms alatt, az ACCURATE — 99%-ot 15 ms alatt.

kotlin
// ML Kit Face Detection kontúrokkal
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 az ML Kit-ben — egyedi funkció videófolyamhoz. Minden észlelt archoz hozzárendel egy tracking ID-t (egész szám), amely megmarad a képkockák között. Ez lehetővé teszi AR objektumok hozzákapcsolását egy adott archoz újbóli észlelés nélkül. A követő Optical Flow-t használ, és megtartja az ID-t akkor is, ha az arc részben takarva van. A tracking ID visszaáll, ha az arc több mint 1 másodpercre elhagyja a képkockát.

Apple Vision Framework: VNDetectFaceRectanglesRequest

Apple Vision Framework — a natív iOS keretrendszer Face Detectionhoz, amely a Core ML-en keresztül működik az Apple Neural Engine-en. A Vision biztosítja a VNDetectFaceRectanglesRequest (csak bounding box) és a VNDetectFaceLandmarksRequest (kontúrpontokkal) szolgáltatásokat. A Vision Framework az iOS 11 óta része az iOS-nek, és nem igényel további SDK-kat — a Foundation része.

A Vision Framework előnyei: nulla függőség harmadik féltől származó könyvtáraktól, működés az Apple Neural Engine (ANE) segítségével A12+ chipeken, automatikus kép orientáció feldolgozás az exifOrientation segítségével, CIDetectorAccuracy támogatás a sebesség/pontosság beállításához. A Vision visszaad egy VNFaceObservation objektumot bounding box-szal (normalizált koordináták 0..1) és landmark-okkal (VNFaceLandmarkRegion2D).

Vision vs ML Kit iOS rendszeren: a Vision gyorsabb régebbi eszközökön (A12–A15), mert az Apple natív neurális motorjait használja. Az ML Kit Google modelleket használ, és pontosabb lehet nehéz szögeknél (profil, erős dőlés). Egyszerű észleléshez (kamera, fotó) — Vision. AR szűrőkhöz és kontúr maszkokhoz — ML Kit (468 pont vs 76 pont a Vision-ben).

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

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

VNDetectFaceLandmarksRequest — a kiterjesztett verzió kulcspontokhoz. Visszaad VNFaceLandmarkRegion2D-t minden pontcsoporthoz: leftEye, rightEye, nose, faceContour, innerLips, outerLips. Minden csoport egy CGPoint tömb (normalizált). A Vision nem ad vissza 468 pontot, mint az ML Kit — csak 76 kulcspontot. Pontos arcmaszkhoz az ML Kit előnyösebb; alapvetőhöz — a Vision.

OpenCV Haar Cascade: klasszikus megközelítés

OpenCV Haar Cascade — a klasszikus Face Detection algoritmus Haar-szerű jellemzők kaszkádján alapul (Viola-Jones, 2001). Korától függetlenül a Haar Cascade-t még mindig használják korlátozott erőforrású projektekben: Raspberry Pi, IoT eszközök, beágyazott rendszerek. Az algoritmus nem igényel GPU-t vagy NPU-t — bármely CPU-n működik 5–15 ms sebességgel frame-enként VGA felbontáson.

LBP Cascade (Local Binary Patterns) — a Haar Cascade alternatívája az OpenCV-ben. Az LBP gyorsabb (2–5 ms) és kevésbé érzékeny a megvilágításra, de több hamis pozitív eredményt ad. A Haar pontosabb (85–90% vs 80–85% az LBP esetében), de érzékeny a tükröződésekre és árnyékokra. Mobil alkalmazásokhoz az OpenCV Face Detection pontosságban elmarad a neurális hálózati módszerektől, de kompatibilitásban győz — bármely eszközön működik.

kotlin
// OpenCV Face Detection CascadeClassifier-en keresztül
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 = arc bounding box
}

Az OpenCV hiányosságai: magas hamis pozitív arány (akár 15%), gyenge teljesítmény profil szögeknél (>30° — pontosság csökkenése 50%-ra), nincs landmark további modell nélkül, nincs követés a képkockák között. Modern mobil alkalmazásokhoz az OpenCV Face Detection fallback azon eszközökhöz, amelyeken nincs Google Play Services (Huawei, Amazon Fire). Fő forgatókönyvekhez — ML Kit vagy Vision.

Face Detection vs Face Recognition: különbség

Face Detection — az arc jelenlétének és pozíciójának meghatározása a képen. Eredmény: bounding box és kulcspontok. Face Recognition — egy személy azonosítása az arc alapján: annak meghatározása, hogy kié az arc. A Face Recognition embeddingeket (az arcot reprezentáló számvektor) használ, és összehasonlítja azokat ismert arcok adatbázisával. A Face Detection kötelező első lépés a Face Recognition számára.

Face Recognition technológiák: FaceNet (Google, 2015) — triplet loss 128–512 float érték méretű embeddingek tanulásához, ArcFace (2019) — additive angular margin loss, legjobb pontosság (99.83% az LFW-n). Mobil alkalmazásokhoz a Face Recognition egyedi TFLite modellt igényel — az ML Kit nem biztosít kész API-t személyazonosításhoz (csak észlelést).

Adatvédelem mobil eszközökön: a Face Detection biztonságos — nem tárol adatokat a felhasználóról. A Face Recognition embeddingek vagy fényképek tárolását igényli az összehasonlításhoz. Az Apple kifejezett felhasználói hozzájárulást kér a Face Recognition használatához, és tiltja annak reklámcélú használatát. A Google ML Kit szándékosan nem tartalmazza a Face Recognition funkciót az adatvédelmi kockázatok elkerülése érdekében. Azonosítás nélküli észleléshez — nincsenek korlátozások.

JellemzőFace DetectionFace Recognition
EredményHol van az arc a fotónKié az arc
AlgoritmusokMTCNN, RetinaFace, ML KitFaceNet, ArcFace, DeepFace
TárolásNem szükségesEmbedding adatbázis
AdatvédelemAlacsony kockázatGDPR, CCPA korlátozások

Face Liveness Detection — kiegészítő ellenőrzés, hogy az arc valódi (nem fénykép/videó). Szemmozgás elemzést (blink detection), mikro-mimikát, mélységtérképet (3D kamera) használ. A Liveness Detection kötelező banki és fizetési alkalmazásokhoz. Az ML Kit nem rendelkezik beépített liveness funkcióval – használjon egyéni modellt vagy Google Play Integrity API-t az ellenőrzéshez.

Face Detection alkalmazása mobil appokban

AR szűrők és maszkok — a Face Detection legnépszerűbb alkalmazása. Az arc kontúrpontjai (468 pont) alapján 3D maszkok, kalapok, szemüvegek, bajuszok kerülnek felhelyezésre. Az ML Kit Face Detection + SceneKit (iOS) vagy Filament (Android) valós idejű AR élményt teremt. A Snapchat és Instagram saját detektorokat használ MobileNet + MTCNN alapokon. Egyedi AR szűrökhöz az ML Kit és egy 3D motor elegendő.

Fotószerkesztők és retusálás — a Face Detection meghatározza az arc területét automatikus korrekcióhoz: bőrszín kiegyenlítése, hibák eltávolítása, szemek és fogak javítása. Az OpenCV + ML Kit Face Detection koordinátákat ad a Selective Gaussian Blur (bőr simítása) és szem kontraszt számára. Valós alkalmazás — Facetune, BeautyPlus, YouCam Makeup.

Figyelemkontroll — a tekintet irányának meghatározása (gaze detection). A Face Detection visszaadja a bounding box-ot és a szemek landmark-jait. A pupilla szemhez viszonyított helyzete alapján meghatározható, hová néz a felhasználó: a képernyőre, balra, jobbra, felfelé. Alkalmazzák e-learningben (annak ellenőrzése, hogy a diák az előadást nézi), reklámban (figyelem metrikák), vezetéstámogató rendszerekben (fáradtság ellenőrzés).

swift
// ARKit + Vision AR szűrőhöz
let faceLandmarksRequest = VNDetectFaceLandmarksRequest { req, _ in
    guard let face = req.results?.first as? VNFaceObservation else { return }
    if let leftEye = face.landmarks?.leftEye {
        // AR objektum ráhelyezés a bal szemen
    }
}

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

Orvostudomány és wellness — a Face Detection-ot használják arc aszimmetria elemzésére (neurológiai rendellenességek diagnosztizálása), pulzus felmérésére a bőr mikro-rezgésein keresztül (fotopletizmográfia kamerán keresztül), bőr nedvességtartalmának meghatározására. Az ML Kit Face Detection + OpenCV elegendő pontosságot biztosít előzetes szűréshez orvosi tanúsítvány nélkül. Produkciós orvostudományhoz FDA/CE tanúsítvány szükséges.

Gyakran Ismételt Kérdések

Mi a különbség a Face Detection és a Face Recognition között?

Face Detection — megtalálja az arcot a képen és visszaadja annak határait (téglalap koordináták). Face Recognition — meghatározza, hogy kié az arc, összehasonlítva ismert arcok adatbázisával. Az észlelés az első lépés a felismeréshez. Az ML Kit és a Vision Framework csak Face Detection-t biztosít. A felismeréshez egyedi TFLite modell (FaceNet, ArcFace) + embedding adatbázis szükséges az eszközön.

Melyik Face Detection SDK a leggyorsabb mobil eszközökön?

ML Kit Face Detection — a leggyorsabb modern eszközökön (5–15 ms frame-enként) a NNAPI/GPU Delegate-nek köszönhetően. Apple Vision Framework — gyorsabb iOS-en (A12+ az ANE-n keresztül) — 3–10 ms. OpenCV Haar Cascade — 5–10 ms CPU-n, de alacsonyabb pontosság (82% vs 98% az ML Kit-ben). NPU-val rendelkező eszközökön (Snapdragon 8 Gen 3, Apple A17 Pro) az ML Kit és a Vision 2–5 ms alatt végzi el az észlelést.

Működik a Face Detection sötét szemüveggel vagy maszkkal?

Az ML Kit és a Vision Framework helyesen működik szemüveggel (beleértve a sötétet) és orvosi maszkkal. Az észlelés pontossága maszkkal 98%-ról 90–92%-ra csökken, de az arc továbbra is észlelhető a felső rész alapján (szemek, szemöldök, homlok). A kontúrpontok (arc kontúr) kevésbé pontosak — maszkokhoz csak a classification mode-ot használja (mosoly, nyitott szemek) kontúr nélkül.

Használható a Face Detection valós időben?

Igen, a valós idejű Face Detection-t az összes modern SDK támogatja. ML Kit — akár 60 FPS 480p frame-en a CameraX Analyzer segítségével. Apple Vision — akár 30 FPS iOS-en az AVFoundation segítségével. Valós idejű használathoz válassza a FAST performance módot, csökkentse a felbontást 480p-re, és kapcsolja be a face tracking funkciót (ML Kit) az ID megtartásához a képkockák között az egyes képkockák újbóli észlelése nélkül.

Szükséges internet a Face Detection használatához az eszközön?

Nem, minden modern mobil Face Detection SDK teljes mértékben az eszközön működik. Az ML Kit letölti a modellt a Google Play Services segítségével az első indításkor (ha a letöltött mód van kiválasztva), majd offline működik. Az Apple Vision Framework — beépítve az iOS-be, nem igényel internetet. Az OpenCV — teljesen offline. A felhő API-khoz (Google Cloud Vision, AWS Rekognition) internet szükséges, de ezeket nem használják mobil alkalmazásokban valós idejű működéshez.

Összefoglalás

  • Face Detection — arcok keresése a képen: bounding box és kulcspontok
  • ML Kit — 5–15 ms, 98% pontosság, 468 kontúrpont, tracking ID
  • Apple Vision — natív iOS, ANE-n keresztül, 3–10 ms, 76 landmark
  • OpenCV Haar — klasszikus módszer, CPU, 82% pontosság, fallback régi eszközökhöz
  • Face Detection ≠ Face Recognition — az észlelés nem azonosítja a személyt
  • Real-time — akár 60 FPS modern eszközökön NPU-n keresztül
  • Alkalmazás — AR szűrők, retusálás, figyelemkontroll, orvostudomány

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is