Реалізація розпізнавання облич у мобільному додатку
Додаток для верифікації клієнтів потребує точної біометрії, але неправильний антиспуфінг перетворює систему на фільтр для фото з екрану. Юридичні ризики не менші: невраховані вимоги GDPR або 152-ФЗ — прямий шлях до блокування додатку в сторах. Ми вирішуємо обидва рівні завдання — від детекції до compliance — під ключ.
Типова картина: розробник інтегрує ML Kit для детекції, вилучає face embedding через FaceNet і на цьому зупиняється. Перший же security review показує, що система пропускає роздруковану фотографію. А App Store Review відхиляє білд через відсутність явної згоди на збір біометрії. Щоб уникнути таких проблем, пайплайн потрібно будувати з урахуванням трьох обов'язкових кроків: детекція + alignment, embedding, антиспуфінг — і compliance-аудиту.
Наш досвід показує: без розділення пайплайну на незалежні кроки неможливо отримати стабільний результат на різних пристроях та освітленні. Нижче — як ми це робимо.
Як влаштований пайплайн розпізнавання облич?
Пайплайн складається з трьох послідовних кроків:
- Детекція — знайти обличчя в кадрі, отримати bounding box та ключові точки (landmarks).
- Верифікація/ідентифікація — отримати face embedding (128- або 512-мірний вектор) та порівняти з базою еталонів.
- Антиспуфінг — переконатися, що перед камерою жива людина, а не фото/відео/маска.
Пропустити третій крок — означає створити систему, яку обходить будь-яка роздрукована фотографія. Навіть базовий пасивний антиспуфінг відсіює 70–80% простих атак.
Детекція та landmarks
Вибір бібліотеки залежить від платформи та вимог до точності. Порівняємо два основні підходи:
| Фреймворк | Платформа | Точність landmarks | Час інференсу | Особливості |
|---|---|---|---|---|
| Vision Framework | iOS | 76 ключових точок | 8–15 ms на iPhone 12 | Вбудований, не потребує мережі, працює як з ML-моделями |
| ML Kit Face Detection | Android | до 468 точок (contour detection) | 15–30 ms на Pixel 6 | Необхідний Google Play Services; детекція доступна в режимі ACCURATE |
На iOS: VNDetectFaceLandmarksRequest з Vision framework. Повертає VNFaceObservation з landmarks (76 точок: контур обличчя, брови, ніс, губи, очі) та boundingBox. Працює on-device, без мережі, ~8–15 ms на iPhone 12.
На Android: ML Kit Face Detection з FaceDetectorOptions.ACCURATE. Повертає FirebaseFace з 468 точками при увімкненому setContourDetectionEnabled(true) — це повний face mesh. Важчий, але потрібний для точного вирівнювання обличчя перед embedding.
Face alignment перед інференсом embedding-моделі критичний. Без вирівнювання по очах точність face recognition падає на 15–25%. Геометрично: знаходимо центри очей, обчислюємо кут повороту, афінна трансформація до стандартного положення (очі на висоті 1/3 від верху, симетрично).
Embedding та порівняння
Стандарт — FaceNet (128D) або ArcFace (512D). FaceNet з коробки доступний як TFLite-модель. ArcFace — точніший, але важчий. Для мобілу: FaceNet INT8 — 12 MB, інференс ~35 ms на Pixel 6.
Косинусна відстань між векторами — основна метрика. Threshold для «одне обличчя»: зазвичай cosine similarity > 0.75. Поріг підбирається під конкретний датасет — це не універсальна константа.
Зберігання еталонних embeddings: в зашифрованому Keychain (iOS) або EncryptedSharedPreferences / Android Keystore (Android). Ніколи — вихідні фотографії. Embedding необоротний (теоретично), фотографія — ні.
Як працює антиспуфінг?
Два підходи:
| Тип | Принцип | Продуктивність | Захист від 3D-масок |
|---|---|---|---|
| Пасивний | Аналіз текстури шкіри, оптичні артефакти | <10 ms, без участі користувача | Слабкий (30-40% false accept) |
| Активний | Challenge-response: моргнути, повернути голову | 50-200 ms, потребує UX | Сильний (до 98% детекції атак) |
Пасивний антиспуфінг швидший, але активний надійніший в 2 рази проти 3D-масок. Для банківських та фінтех-додатків рекомендуємо комбінацію: пасивний + активний challenge. Для корпоративного доступу пасивний достатній. Отримайте консультацію, щоб підібрати оптимальний метод під ваш сценарій.
Що потрібно для compliance?
Біометричні дані (face embedding — це біометрія згідно GDPR ст. 9 та 152-ФЗ ст. 11) потребують явної згоди користувача, окремої від загального Terms of Service. Зберігати embeddings в хмарі можна лише з шифруванням в транзиті та at rest та за наявності DPA з провайдером. Якщо додаток працює в РФ з російськими користувачами — вимоги 152-ФЗ про локалізацію даних.
В App Store Review Guidelines п. 5.1.1 прямо забороняє збирати біометрію без явного дозволу. Відмова в рев'ю за цим пунктом — не рідкість. Замовте аудит compliance на старті — це зекономить тижні доопрацювань.
Що входить в роботу
Реалізація включає:
- Інтеграцію детектора (Vision / ML Kit) та вибір моделі embedding (FaceNet / ArcFace)
- Розробку активного або пасивного антиспуфінгу
- Налаштування зашифрованого сховища еталонів
- Підготовку compliance-документації (згоди, DPA)
- Тестування на 100+ зразків атак (фото, відео, маска)
- Деплой в App Store / Google Play з супроводом рев'ю
- Вихідний код, документацію та навчання команди
Терміни та гарантії
Детекція + ідентифікація on-device без антиспуфінгу — 1–2 тижні. Повний пайплайн з антиспуфінгом, зашифрованим сховищем та compliance-аудитом — 3–4 тижні. Вартість розраховується індивідуально.
Ми гарантуємо точність не менше 95% FAR при 0.1% FRR на референсному датасеті (уточнюється під завдання). У нас 5+ років та 20+ проєктів з біометрією в банках та фіскальних системах. Зв'яжіться, щоб отримати консультацію та оцінити план інтеграції під ваш продукт.







