Face Detection — це технологія комп'ютерного зору для знаходження та локалізації людських облич на цифрових зображеннях та відеопотоці. На відміну від Face Recognition (розпізнавання особистості), Face Detection лише визначає наявність обличчя та його межі — bounding box та keypoints (очі, ніс, рот). У мобільній розробці Face Detection використовується в ML Kit, ARKit, Vision Framework та OpenCV. За даними Google ML Kit, 2025, виявлення облич виконується за 5–15 мс на сучасних пристроях з точністю 98%.
Головне
Face Detection — задача комп'ютерного зору з визначення наявності та місцезнаходження людських облич на зображенні. Алгоритм повертає bounding box (прямокутник навколо обличчя) та confidence score (ймовірність, що це обличчя). Сучасні алгоритми також повертають facial landmarks — ключові точки (очі, брови, ніс, рот, контур обличчя). Face Detection — перший етап для багатьох ML-задач: розпізнавання особи, AR-фільтри, аналітика уваги.
Історія алгоритмів почалася з Viola-Jones (2001) — каскад Haar-подібних ознак на CPU. У 2010-х домінували HOG + SVM (Histogram of Oriented Gradients). З 2016 року всі сучасні алгоритми — на згорткових нейромережах (CNN): MTCNN, RetinaFace, SSH, MobileNet-SSD, YOLO-Face. CNN-алгоритми на GPU дають 95–99% точності проти 85–90% у класичних методів. За даними бенчмарку WiderFace (2025), RetinaFace показує mAP 96.3% на найскладнішому підмножині.
MTCNN (Multi-Task Cascaded CNN) — класичний триступеневий детектор: P-Net (Proposal Network) знаходить кандидатів, R-Net (Refine Network) фільтрує, O-Net (Output Network) уточнює bounding box та виводить landmarks. MTCNN працює на CPU зі швидкістю 30–50 мс на кадр при роздільній здатності 640x480. Для мобільних пристроїв MTCNN — оптимальний баланс швидкості та точності без GPU.
| Алгоритм | Точність (WiderFace) | Швидкість (640x480) | Платформа |
|---|---|---|---|
| RetinaFace | 96.3% | 15 мс (GPU) | Android, iOS |
| MTCNN | 91.2% | 30–50 мс (CPU) | Крос-платформа |
| ML Kit | 98.0% | 5–15 мс (GPU/NPU) | Android, iOS |
| OpenCV Haar | 82.5% | 5–10 мс (CPU) | Крос-платформа |
Face Detection у реальному часі потребує 30+ FPS для відео. Це досяжно на сучасних смартфонах завдяки NPU (Neural Processing Unit) — Qualcomm Hexagon, Apple Neural Engine, MediaTek APU. NPU виконує виявлення за 2–5 мс при енергоспоживанні 50–100 мВт, тоді як GPU споживає 500–2000 мВт. Для постійного виявлення (камера завжди увімкнена) NPU — єдиний практичний варіант без перегріву пристрою.
ML Kit Face Detection — найпопулярніший SDK для виявлення облич на мобільних пристроях. ML Kit пропонує два режими: contour mode (468 точок контуру обличчя для точного накладання масок) та classification mode (визначення емоцій: посмішка, відкриті очі, відкритий рот). Режими комбінуються у FaceDetectorOptions. ML Kit використовує нейромережу Google MobileNetV2-SSD з оптимізацією через NNAPI/GPU Delegate.
Налаштування ML Kit Face Detection: setPerformanceMode(FACE_DETECTION_FAST / ACCURATE), setLandmarkMode (ключові точки), setContourMode (контурні точки), setClassificationMode (емоції). Для максимальної швидкості використовуйте FAST + LANDMARKS_ONLY + без контуру. Для AR-фільтрів — ACCURATE + ALL_CONTOURS. За даними Google (2025), режим FAST дає 98% точності при 5 мс, ACCURATE — 99% при 15 мс.
// 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
}
}
Face Tracking у ML Kit — унікальна функція для відеопотоку. Кожному виявленому обличчю присвоюється tracking ID (ціле число), яке зберігається між кадрами. Це дозволяє прив'язувати AR-об'єкти до конкретного обличчя без повторного виявлення. Трекер використовує Optical Flow та утримує ID навіть при частковому закритті обличчя. Tracking ID скидається, коли обличчя залишає кадр більш ніж на 1 секунду.
Apple Vision Framework — нативний iOS-фреймворк для Face Detection, що працює через Core ML на Apple Neural Engine. Vision надає VNDetectFaceRectanglesRequest (тільки bounding box) та VNDetectFaceLandmarksRequest (з контурними точками). Vision Framework вбудований в iOS починаючи з iOS 11 і не потребує додаткових SDK — це частина Foundation.
Переваги Vision Framework: нульова залежність від сторонніх бібліотек, робота через Apple Neural Engine (ANE) на чипах A12+, автоматична обробка орієнтації зображення через exifOrientation, підтримка CIDetectorAccuracy для налаштування швидкості/точності. Vision повертає VNFaceObservation з bounding box (нормалізовані координати 0..1) та landmarks (VNFaceLandmarkRegion2D).
Vision vs ML Kit на iOS: Vision швидший на старих пристроях (A12–A15), оскільки використовує нативні нейронні двигуни Apple. ML Kit використовує моделі Google і може бути точнішим на складних ракурсах (профіль, сильний нахил). Для простого виявлення (камера, фото) — Vision. Для AR-фільтрів та контурних масок — ML Kit (468 точок vs 76 точок у Vision).
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 — розширена версія для ключових точок. Повертає VNFaceLandmarkRegion2D для кожної групи точок: leftEye, rightEye, nose, faceContour, innerLips, outerLips. Кожна група — масив CGPoint (нормалізовані). Vision не повертає 468 точок як ML Kit — тільки 76 ключових. Для точної маски обличчя ML Kit кращий, для базового — Vision достатньо.
OpenCV Haar Cascade — класичний алгоритм Face Detection на основі каскаду Haar-подібних ознак (Viola-Jones, 2001). Незважаючи на вік, Haar Cascade досі використовується в проектах з обмеженими ресурсами: Raspberry Pi, IoT-пристрої, вбудовані системи. Алгоритм не потребує GPU або NPU — працює на будь-якому CPU зі швидкістю 5–15 мс на кадр VGA-роздільної здатності.
LBP Cascade (Local Binary Patterns) — альтернатива Haar Cascade в OpenCV. LBP швидший (2–5 мс) і менш чутливий до освітлення, але дає більше хибних спрацьовувань. Haar точніший (85–90% проти 80–85% у LBP), але чутливий до відблисків та тіней. Для мобільних додатків OpenCV Face Detection поступається нейромережевим методам за точністю, але виграє за сумісністю — працює на будь-якому пристрої.
// 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: високий рівень хибних спрацьовувань (до 15%), погана робота з профільними ракурсами (>30° — падіння точності до 50%), відсутність landmarks без додаткової моделі, немає відстеження між кадрами. Для сучасних мобільних додатків OpenCV Face Detection — запасний варіант для пристроїв без Google Play Services (Huawei, Amazon Fire). Для основних сценаріїв — ML Kit або Vision.
Face Detection — визначення наявності та положення обличчя на зображенні. Результат: bounding box та ключові точки. Face Recognition — ідентифікація особи за обличчям: визначення, чиє це обличчя. Face Recognition використовує ембендинги (вектор чисел, що представляє обличчя) та порівнює їх з базою відомих облич. Face Detection — обов'язковий перший етап для Face Recognition.
Технології Face Recognition: FaceNet (Google, 2015) — triplet loss для навчання ембендингів розміром 128–512 float-значень, ArcFace (2019) — additive angular margin loss, найкраща точність (99.83% на LFW). Для мобільних додатків Face Recognition потребує кастомної TFLite-моделі — ML Kit не надає готового API для ідентифікації особи (тільки виявлення).
Приватність на мобільних пристроях: Face Detection безпечний — не зберігає дані про користувача. Face Recognition потребує зберігання ембендингів або фотографій для порівняння. Apple вимагає явної згоди користувача на Face Recognition та забороняє використання для реклами. Google ML Kit навмисно не включає Face Recognition, щоб уникнути ризиків для приватності. Для виявлення без ідентифікації — обмежень немає.
| Характеристика | Face Detection | Face Recognition |
|---|---|---|
| Результат | Де обличчя на фото | Кому належить обличчя |
| Алгоритми | MTCNN, RetinaFace, ML Kit | FaceNet, ArcFace, DeepFace |
| Зберігання | Не потрібно | База ембендингів |
| Приватність | Низький ризик | Обмеження GDPR, CCPA |
Face Liveness Detection — додаткова перевірка, що обличчя реальне (не фото/відео). Використовує аналіз руху очей (blink detection), мікро-міміку, depth map (3D-камера). Liveness Detection обов'язкова для банківських та платіжних додатків. У ML Kit немає вбудованої liveness — використовуйте кастомну модель або Google Play Integrity API для перевірки.
AR-фільтри та маски — найпопулярніше застосування Face Detection. На основі контурних точок обличчя (468 точок) накладаються 3D-маски, капелюхи, окуляри, вуса. ML Kit Face Detection + SceneKit (iOS) або Filament (Android) створює AR-досвід у реальному часі. Snapchat та Instagram використовують власні детектори на базі MobileNet + MTCNN. Для кастомних AR-фільтрів достатньо ML Kit та 3D-двигуна.
Фото-редактори та ретуш — Face Detection визначає область обличчя для автоматичної корекції: вирівнювання кольору шкіри, видалення дефектів, покращення очей та зубів. OpenCV + ML Kit Face Detection дає координати для Selective Gaussian Blur (згладжування шкіри) та контрастності очей. Реальне застосування — додатки Facetune, BeautyPlus, YouCam Makeup.
Контроль уваги — визначення напрямку погляду (gaze detection). Face Detection повертає bounding box та landmarks очей. За положенням зіниці відносно ока визначається, куди дивиться користувач: в екран, вліво, вправо, вгору. Застосовується в e-learning (контроль, чи студент дивиться лекцію), рекламі (метрики уваги), водійських асистентах (контроль втоми).
// 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)
}
Медицина та wellness — Face Detection використовується для аналізу асиметрії обличчя (діагностика неврологічних порушень), оцінки пульсу за мікровібраціями шкіри (фотоплетизмографія через камеру), визначення зволоженості шкіри. ML Kit Face Detection + OpenCV дають достатню точність для попереднього скринінгу без медичної сертифікації. Для production-медицини потрібна сертифікація FDA/CE.
Часті запитання
Face Detection — знаходить обличчя на зображенні та повертає його межі (координати прямокутника). Face Recognition — визначає, чиє це обличчя, порівнюючи з базою відомих облич. Виявлення — перший крок для розпізнавання. ML Kit та Vision Framework надають лише Face Detection. Для розпізнавання потрібна кастомна TFLite-модель (FaceNet, ArcFace) + база ембендингів на пристрої.
ML Kit Face Detection — найшвидший на сучасних пристроях (5–15 мс на кадр) завдяки NNAPI/GPU Delegate. Apple Vision Framework — швидший на iOS (A12+ через ANE) — 3–10 мс. OpenCV Haar Cascade — 5–10 мс на CPU, але нижча точність (82% проти 98% у ML Kit). На пристроях з NPU (Snapdragon 8 Gen 3, Apple A17 Pro) ML Kit та Vision виконують виявлення за 2–5 мс.
ML Kit та Vision Framework коректно працюють з окулярами (включаючи затемнені) та медичними масками. Точність виявлення при масці падає з 98% до 90–92%, але обличчя все одно виявляється по верхній частині (очі, брови, лоб). Контурні точки (контур обличчя) стають менш точними — для масок використовуйте тільки classification mode (посмішка, відкриті очі) без контуру.
Так, Face Detection у реальному часі підтримується всіма сучасними SDK. ML Kit — до 60 FPS на кадр 480p через CameraX Analyzer. Apple Vision — до 30 FPS на iOS через AVFoundation. Для real-time використовуйте FAST performance mode, зменште роздільну здатність до 480p та увімкніть face tracking (ML Kit) для збереження ID між кадрами без повторного виявлення кожного кадру.
Ні, всі сучасні мобільні Face Detection SDK працюють повністю на пристрої. ML Kit завантажує модель через Google Play Services при першому запуску (якщо вибрано завантажуваний режим), після чого працює офлайн. Apple Vision Framework — вбудований в iOS, не потребує інтернету. OpenCV — повністю офлайн. Для хмарних API (Google Cloud Vision, AWS Rekognition) інтернет потрібен, але вони не використовуються в мобільних додатках для real-time.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.