Face Detection у додатках: що це, методи та бібліотеки

Автор: IT Sectr Опубліковано: 2026-07-18 Час читання: 10 хв

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 — прямокутник навколо обличчя з координатами x, y, w, h
  • Keypoints — ключові точки обличчя: очі, ніс, рот, вуха (468 точок у ML Kit)
  • На пристрої — виявлення виконується локально на пристрої без сервера
  • Реальний час — 30+ FPS на сучасних смартфонах для HD-відео

Що таке Face Detection: принципи та алгоритми

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)Платформа
RetinaFace96.3%15 мс (GPU)Android, iOS
MTCNN91.2%30–50 мс (CPU)Крос-платформа
ML Kit98.0%5–15 мс (GPU/NPU)Android, iOS
OpenCV Haar82.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 на Android та iOS

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 мс.

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
        }
    }

Face Tracking у ML Kit — унікальна функція для відеопотоку. Кожному виявленому обличчю присвоюється tracking ID (ціле число), яке зберігається між кадрами. Це дозволяє прив'язувати AR-об'єкти до конкретного обличчя без повторного виявлення. Трекер використовує Optical Flow та утримує ID навіть при частковому закритті обличчя. Tracking ID скидається, коли обличчя залишає кадр більш ніж на 1 секунду.

Apple Vision Framework: VNDetectFaceRectanglesRequest

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).

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 — розширена версія для ключових точок. Повертає VNFaceLandmarkRegion2D для кожної групи точок: leftEye, rightEye, nose, faceContour, innerLips, outerLips. Кожна група — масив CGPoint (нормалізовані). Vision не повертає 468 точок як ML Kit — тільки 76 ключових. Для точної маски обличчя ML Kit кращий, для базового — Vision достатньо.

OpenCV Haar Cascade: класичний підхід

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 поступається нейромережевим методам за точністю, але виграє за сумісністю — працює на будь-якому пристрої.

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: високий рівень хибних спрацьовувань (до 15%), погана робота з профільними ракурсами (>30° — падіння точності до 50%), відсутність landmarks без додаткової моделі, немає відстеження між кадрами. Для сучасних мобільних додатків OpenCV Face Detection — запасний варіант для пристроїв без Google Play Services (Huawei, Amazon Fire). Для основних сценаріїв — ML Kit або Vision.

Face Detection vs Face Recognition: різниця

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 DetectionFace Recognition
РезультатДе обличчя на фотоКому належить обличчя
АлгоритмиMTCNN, RetinaFace, ML KitFaceNet, ArcFace, DeepFace
ЗберіганняНе потрібноБаза ембендингів
ПриватністьНизький ризикОбмеження GDPR, CCPA

Face Liveness Detection — додаткова перевірка, що обличчя реальне (не фото/відео). Використовує аналіз руху очей (blink detection), мікро-міміку, depth map (3D-камера). Liveness Detection обов'язкова для банківських та платіжних додатків. У ML Kit немає вбудованої liveness — використовуйте кастомну модель або Google Play Integrity API для перевірки.

Застосування Face Detection у мобільних додатках

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 (контроль, чи студент дивиться лекцію), рекламі (метрики уваги), водійських асистентах (контроль втоми).

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)
}

Медицина та wellness — Face Detection використовується для аналізу асиметрії обличчя (діагностика неврологічних порушень), оцінки пульсу за мікровібраціями шкіри (фотоплетизмографія через камеру), визначення зволоженості шкіри. ML Kit Face Detection + OpenCV дають достатню точність для попереднього скринінгу без медичної сертифікації. Для production-медицини потрібна сертифікація FDA/CE.

Часті запитання

У чому різниця між Face Detection та Face Recognition?

Face Detection — знаходить обличчя на зображенні та повертає його межі (координати прямокутника). Face Recognition — визначає, чиє це обличчя, порівнюючи з базою відомих облич. Виявлення — перший крок для розпізнавання. ML Kit та Vision Framework надають лише Face Detection. Для розпізнавання потрібна кастомна TFLite-модель (FaceNet, ArcFace) + база ембендингів на пристрої.

Який Face Detection SDK найшвидший на мобільних пристроях?

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 мс.

Чи працює Face Detection із затемненими окулярами або маскою?

ML Kit та Vision Framework коректно працюють з окулярами (включаючи затемнені) та медичними масками. Точність виявлення при масці падає з 98% до 90–92%, але обличчя все одно виявляється по верхній частині (очі, брови, лоб). Контурні точки (контур обличчя) стають менш точними — для масок використовуйте тільки classification mode (посмішка, відкриті очі) без контуру.

Чи можна використовувати Face Detection у реальному часі?

Так, 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 на пристрої?

Ні, всі сучасні мобільні Face Detection SDK працюють повністю на пристрої. ML Kit завантажує модель через Google Play Services при першому запуску (якщо вибрано завантажуваний режим), після чого працює офлайн. Apple Vision Framework — вбудований в iOS, не потребує інтернету. OpenCV — повністю офлайн. Для хмарних API (Google Cloud Vision, AWS Rekognition) інтернет потрібен, але вони не використовуються в мобільних додатках для real-time.

Підсумки

  • Face Detection — пошук облич на зображенні: bounding box та ключові точки
  • ML Kit — 5–15 мс, 98% точність, 468 контурних точок, відстеження ID
  • Apple Vision — нативний iOS, через ANE, 3–10 мс, 76 landmarks
  • OpenCV Haar — класичний метод, CPU, 82% точності, запасний варіант для старих пристроїв
  • Face Detection ≠ Face Recognition — виявлення не ідентифікує особу
  • Real-time — до 60 FPS на сучасних пристроях через NPU
  • Застосування — AR-фільтри, ретуш, контроль уваги, медицина

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також