ИИ-примерка макияжа в реальном времени
Конверсия в интернет-магазине косметики растёт на 25–35% при наличии AR-примерки — пользователь видит, как помада или тени выглядят на его лице, и принимает решение быстрее. Технически это задача face landmark detection + texture rendering + real-time compositing. Мы реализуем такие системы под ключ — от прототипа до деплоя в вебе и мобильных приложениях. Опыт в AI компьютерном зрении — 5+ лет, 50+ реализованных проектов по AR/VR. Свяжитесь с нами для оценки вашего проекта.
Как работает пайплайн виртуальной примерки?
Face mesh через MediaPipe. Первый этап — детекция 468 ключевых точек лица в реальном времени. На CPU это занимает ~12ms, на GPU ~3ms. Точки покрывают все зоны: губы (32 точки), веки (60), брови (20), щёки. На мобильных устройствах используем TFLite — ~5ms на A15 Bionic. MediaPipe — открытая библиотека, мы адаптируем её под high-res вывод.
3D реконструкция лица. Из 2D landmark строим 3D-форму через 3D Morphable Model. Это необходимо для коррекции перспективы — макияж не съезжает при повороте головы на 45 градусов.
Наложение текстуры. Для каждого продукта — свой blending-режим:
- Помада: alpha blending 0.7–0.9, заполнение полигонов губ
- Тени: мягкий gradient на веках, multiply/overlay
- Румяна: gaussian softblend на зоны щёк
- Карандаш: thin stroke по контуру
Адаптация к освещению. Оцениваем ambient light из кадра (средний тон лба и носа) и корректируем цвет через color temperature correction matrix. Без этого макияж выглядит неестественно при жёлтом или холодном свете.
# MediaPipe face mesh + makeup overlay
import mediapipe as mp
import cv2
import numpy as np
mp_face_mesh = mp.solutions.face_mesh
face_mesh = mp_face_mesh.FaceMesh(
static_image_mode=False,
max_num_faces=1,
refine_landmarks=True,
min_detection_confidence=0.7
)
def apply_lipstick(frame, landmarks, color_bgr, alpha=0.75):
h, w = frame.shape[:2]
UPPER_LIP = [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291]
LOWER_LIP = [61, 146, 91, 181, 84, 17, 314, 405, 321, 375, 291]
lip_pts = [(int(landmarks[i].x * w), int(landmarks[i].y * h))
for i in UPPER_LIP + LOWER_LIP[::-1]]
mask = np.zeros(frame.shape[:2], dtype=np.uint8)
cv2.fillPoly(mask, [np.array(lip_pts)], 255)
colored = np.zeros_like(frame)
colored[:] = color_bgr
return cv2.addWeighted(frame, 1-alpha, colored, alpha, 0,
dst=np.where(mask[..., None] > 0,
cv2.addWeighted(frame, 1-alpha,
colored, alpha, 0),
frame))
Как добиться фотореалистичности виртуального макияжа?
Зубы и отражения. При открытом рте помада не должна закрашивать зубы. Рефайнд контур MediaPipe + дополнительная mask на основе детекции зубов (tooth detection).
Текстура кожи. Простой flat-color overlay выглядит неестественно. Используем LAB color space transfer — меняем только A/B каналы (цвет), сохраняя L (яркость/текстуру). Так макияж вписывается в структуру кожи.
Temporal smoothing. При резких движениях facial landmark может «прыгать» на 2–4 пикселя. Kalman filter на координатах landmark устраняет дрожание без потери отзывчивости.
Какие типы продуктов поддерживаются и как они рендерятся?
| Тип продукта | Blending-режим | Особенности рендеринга |
|---|---|---|
| Помада | Alpha blend 0.7–0.9 | Заполнение полигонов губ с учётом зубов |
| Тени | Multiply / Overlay | Градиент на веки, мягкий переход |
| Румяна | Gaussian softblend | Овальная область щёк, размытие |
| Подводка | Thin stroke | Линия вдоль контура глаз |
| Тональный крем | Morph texture transfer | LAB color transfer, сохранение пор |
Почему виртуальная примерка увеличивает конверсию?
Пользователь получает мгновенную обратную связь: видит, как тон сочетается с цветом кожи, а помада — с формой губ. Это снижает количество возвратов и сомнений при покупке. Наши клиенты отмечают рост среднего чека на 15-20% — за счёт того, что покупатели примеряют не один, а несколько продуктов за сессию.
Что входит в работу
- SDK для веба (React/Vue) и мобильных платформ (iOS/Android)
- Модель face mesh, обученную на мультиэтнических данных
- API для backend-обработки фото (ONNX Runtime)
- Документация по интеграции и кастомизации эффектов
- Обучение команды до двух дней
- Техническая поддержка на этапе запуска
Варианты развёртывания
| Режим | Платформа | Задержка | FPS |
|---|---|---|---|
| Веб on-device | MediaPipe + WebGL | 30-50ms | 20-30 |
| Мобайл on-device | TFLite + Metal/Vulkan | 10-20ms | 60 |
| Сервер фото | ONNX + OpenCV | 200-500ms | - |
| Сервер real-time | Triton + Kafka | 50-100ms | 10-20 |
Технические детали: Temporal smoothing и Kalman filter
Для фильтрации дрожания landmark используем Kalman filter с состоянием [x, y, dx, dy]. Время предсказания — 16ms (60fps). Это даёт плавное движение даже при потере трека на 1-2 кадра.
Сроки
Базовая примерка помады + теней (real-time, веб + мобайл): 6–10 недель. Полный модуль (все продукты + AR-эффекты): 12–18 недель. Стоимость рассчитывается индивидуально — свяжитесь для оценки вашего проекта. Certificated инженеры гарантируют стабильную работу при нагрузке до 10 000 сессий в день.
Закажите демо — покажем работу на вашем лице и косметике.







