Face tracking в AR: точність, анімація та продуктивність
Чому face tracking — вузьке місце в AR?
Користувач відкриває AR-фільтр, а маска не збігається з мімікою — типова проблема, коли face tracking налаштовано неправильно. Ми стикаємося з цим у кожному другому проекті. Face tracking — зріла технологія, але її реалізація вимагає точного калібрування та вибору стеку під задачу. Помилка на етапі вибору платформи перетворює додаток на лагаючий «сир». Наш досвід (більше 5 років, 15+ проектів з face tracking) дозволяє гарантувати затримку міміки не більше 50 мс. Правильний вибір стеку скорочує бюджет на доопрацювання вдвічі.
Як ми усуваємо проблеми face tracking
Три основні складності: затримка міміки, втрата трекінгу при повороті голови та відсутність реакції на вираз обличчя. Ми вирішуємо їх через правильний вибір технології та налаштування параметрів. У кожному проекті проводимо навантажувальне тестування на 5+ пристроях.
Стек і точність: ARKit vs ARCore vs MediaPipe
Згідно з ARKit documentation від Apple, точність TrueDepth камери досягає субміліметрових значень. ARKit з TrueDepth камерою дає depth map обличчя з точністю до міліметра. ARCore AugmentedFace та MediaPipe працюють на RGB-камері, але гірше на русі. У таблиці — порівняння ключових параметрів:
| Технологія | Камера | Точок | Depth Map | FPS (iPhone 12) |
|---|---|---|---|---|
| ARKit (TrueDepth) | Фронтальна TrueDepth | 1220 вершин | Є | 60 |
| ARCore AugmentedFace | RGB (будь-яка) | 468 точок | Нема | 30 |
| MediaPipe Face Landmark | RGB (будь-яка) | 478 точок | Нема | 30-45 (з NE) |
ARKit швидший в 1.5 рази по FPS на флагманах, а MediaPipe — універсальне крос-платформне рішення. Depth map з ARKit критично важливий для реалістичних масок — він дозволяє точно накладати текстури навіть на рухоме обличчя.
Продуктивність на різних пристроях
| Пристрій | ARKit (TrueDepth) | ARCore | MediaPipe |
|---|---|---|---|
| iPhone 14 Pro | 60 FPS, стабільно | — | 45 FPS |
| Google Pixel 7 | — | 30 FPS | 30 FPS |
| Samsung Galaxy S23 | — | 30 FPS | 30 FPS |
Що конкретно дає ARKit Face Tracking
ARFaceTrackingConfiguration — вимагає iPhone X або новіший (TrueDepth фронтальна камера). Повертає ARFaceAnchor:
- geometry — ARFaceGeometry з 1220 вершинами та 2304 трикутниками. Меш обличчя в реальному масштабі (в метрах). Оновлюється ~30 разів на секунду.
- blendShapes — словник з 52 AR face blend shape коефіцієнтів. Кожен — Float від 0 до 1. Основа для face-driven анімації та розпізнавання виразів.
- leftEyeTransform, rightEyeTransform — позиція та орієнтація кожного ока.
func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
guard let faceAnchor = anchors.first as? ARFaceAnchor else { return }
let blinkLeft = faceAnchor.blendShapes[.eyeBlinkLeft]?.floatValue ?? 0
let jawOpen = faceAnchor.blendShapes[.jawOpen]?.floatValue ?? 0
// Керування інтерфейсом моргання/рот
if blinkLeft > 0.7 { triggerAction() }
}
Як забезпечити стабільне розпізнавання облич на Android?
Для Android використовуємо комбінацію ARCore та ML Kit. ARCore AugmentedFace дає 468 точок і базові емоції. ML Kit Face Detection — детектування контурів. Для анімації аватара застосовуємо користувацький класифікатор на TensorFlow Lite. Тестування на 10+ пристроях гарантує стабільність. Проблема з поворотом голови вирішується через стеження за орієнтацією: якщо face tracking втрачає обличчя, ми перемикаємося на передбачення останніх відомих координат.
Етапи розробки face tracking
- Аналітика — визначення сценаріїв використання, вибір платформи.
- Проектування — створення прототипу обробки blend shapes.
- Реалізація — інтеграція SDK, налаштування конфігурації, code signing.
- Тестування — перевірка на 5+ пристроях, включаючи різні моделі iPhone та Android.
- Деплой — публікація в App Store / Google Play з дотриманням гайдлайнів.
Типові помилки при реалізації
- Використання ARKit на пристроях без TrueDepth — падіння FPS.
- Відсутність перевірки isSupported — краш на старих моделях.
- Ігнорування дозволу камери — затримки через невідповідність формату.
- Неоптимізовані blend shape обробники — зниження FPS до 20.
Щоб уникнути цих проблем, ми проводимо рев'ю коду та навантажувальне тестування на кожному етапі.
Терміни та вартість
Базова інтеграція face tracking з тригерами — 1-2 тижні. Додавання 3D-маски та запису відео — 2-4 тижні. ML-класифікатор виразів — ще 2-3 тижні. Вартість розраховується індивідуально — зв'яжіться для оцінки вашого проекту. Ми гарантуємо прозоре ціноутворення без прихованих витрат.
Що входить в результат
- Вихідний код з коментарями та документацією.
- Тестове додаток для демонстрації.
- Доступ до логів та моніторингу в реальному часі.
- Підтримка протягом 30 днів після здачі.
Ми гарантуємо стабільну роботу face tracking у вашому AR-додатку. Замовте консультацію з вибору стеку — наші інженери допоможуть з перших кроків. Оптимізація blend shapes на старті економить до 40% часу розробки. Зв'яжіться з нами для аудиту вашого проекту. Детальніше про MediaPipe Face Landmark.







