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 — 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.
| Algoritmus | Pontosság (WiderFace) | Sebesség (640x480) | Platform |
|---|---|---|---|
| RetinaFace | 96.3% | 15 ms (GPU) | Android, iOS |
| MTCNN | 91.2% | 30–50 ms (CPU) | Többplatformos |
| ML Kit | 98.0% | 5–15 ms (GPU/NPU) | Android, iOS |
| OpenCV Haar | 82.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 — 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.
// 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 — 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).
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 — 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.
// 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 — 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 Detection | Face Recognition |
|---|---|---|
| Eredmény | Hol van az arc a fotón | Kié az arc |
| Algoritmusok | MTCNN, RetinaFace, ML Kit | FaceNet, ArcFace, DeepFace |
| Tárolás | Nem szükséges | Embedding adatbázis |
| Adatvédelem | Alacsony kockázat | GDPR, 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.
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).
// 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
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.
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.
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.
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.
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
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.
Olvassa el is