Реализация AI-виртуальной примерки макияжа в мобильном приложении
Sephora Virtual Artist, Perfect Corp YouCam Makeup, MAC Virtual Try-On — это конкуренты. Пользователь наводит фронтальную камеру, система накладывает тени, помаду, консилер в реальном времени с точностью до анатомии конкретного лица. Технически за этим стоит face mesh, сегментация губ/глаз/кожи и корректный AR-рендер с учётом освещения и текстуры кожи.
Face Mesh как основа
iOS ARKit. ARFaceTrackingConfiguration — TrueDepth-камера (iPhone X+) строит face mesh из 1220 вершин. Возвращает ARFaceAnchor с geometry (ARFaceGeometry), blend shapes (52 коэффициента) и трансформой лица. Depth camera обеспечивает точную геометрию даже при движении. Для примерки макияжа используем face geometry как «холст»: UV-маппим текстуры макияжа на меш.
Android ML Kit Face Mesh. 468 точек (MediaPipe FaceMesh под капотом), RGB-камера без depth. Точность ниже при боковом ракурсе или быстром движении. Для макияжа достаточно — губы, глаза, скулы покрыты landmark-ами с нужным разрешением.
MediaPipe Face Landmarker (кроссплатформа). Используем напрямую через C++ native (Android NDK / iOS framework). 478 точек включая ирис — для eye makeup и линз. Хорошее решение для кроссплатформенных проектов.
Рендер макияжа поверх лица
Главная техническая сложность — не найти контуры губ, а сделать так, чтобы помада выглядела как настоящая, а не как цветной прямоугольник поверх лица.
UV-маппинг текстур. Face mesh имеет UV-координаты (для ARKit — задокументировано в Apple Developer). Текстура макияжа (нарисованная художником на нейтральной UV-развёртке лица) накладывается как MTLTexture с alpha blending. Цвет продукта изменяем через HSV-трансформацию текстуры в fragment shader.
Физически-корректный рендер. Помада глянцевая — нужна specular составляющая. Тени матовые — diffuse. Параметры metallic, roughness в PBR материале меняем в зависимости от типа продукта. Освещение оцениваем через ARLightEstimate.ambientIntensity и ARDirectionalLightEstimate — адаптируем specular под реальное освещение в кадре.
Сегментация для точного нанесения. Помада только на губах, тени только на веках — нельзя полагаться только на face mesh vertices, нужна пиксельная сегментация. Используем CoreML-модель (конвертируем MediaPipe Selfie Segmentation или тренируем кастомную на DeepLab/U-Net) для сегментации зон лица. Inference на каждом кадре: A15 Bionic справляется за 8–15 мс, старые устройства — каждые 3 кадра с интерполяцией маски.
Цветовая точность
Ключевое требование бьюти-брендов: цвет в приложении должен соответствовать реальному цвету продукта. Проблема: камера смартфона применяет auto white balance, ISO-нормализацию — цвета на экране не точные. Решение:
- Colour calibration через
AVCaptureDevice.whiteBalanceGains— лочим white balance при примерке - ColorChecker-based калибровка (опционально, для профессиональных кейсов)
- Цвета продуктов в базе данных задаём в Lab color space (перцептуально равномерный), конвертируем в sRGB для отображения с учётом профиля дисплея (
UIScreen.traitCollection.displayGamut)
Запись и шеринг результата
Пользователь хочет записать видео с примеркой. ReplayKit (iOS) или MediaProjection (Android) — для записи экрана. Или реализуем кастомную запись: каждый кадр пишем в AVAssetWriter (iOS) / MediaCodec (Android). Файл — MP4 H.264, 1080p@30fps достаточно.
Производительность и поддерживаемые устройства
| Сценарий | Минимальное устройство |
|---|---|
| Базовый face mesh + помада | iPhone 8 / Android 2018 mid-range |
| ARKit depth + полный макияж | iPhone X+ |
| Realtime PBR + сегментация | iPhone 12+ / Snapdragon 888+ |
Для устройств без TrueDepth используем RGB-only pipeline с MediaPipe — визуально чуть хуже при резких движениях, но допустимо для majority пользователей.
Сроки: MVP с губной помадой + тенями на iOS через ARKit — 6–9 недель. Кроссплатформенная система с полным каталогом продуктов, PBR-рендером, colour accuracy и шерингом — 4–7 месяцев. Стоимость рассчитывается индивидуально.







