Реализация AI-виртуальной примерки причёски в мобильном приложении
Виртуальная примерка причёски сложнее, чем примерка макияжа — волосы не плоская текстура на лице, а трёхмерный объект с тысячами прядей, который должен двигаться при повороте головы, правильно перекрывать плечи и реагировать на освещение. Реализации, которые наклеивают 2D-картинку причёски на голову, сразу видно — это не работает. Нужен либо 3D hair mesh, либо нейросетевой синтез.
Два принципиально разных подхода
3D Hair Mesh + Face Tracking
Работает в реальном времени. Face tracking (ARKit ARFaceAnchor или MediaPipe) определяет положение и ориентацию головы. 3D-модель причёски — меш с skeleton, anchored к head transform. При повороте головы меш поворачивается вместе.
Технические сложности:
-
Hair physics. Статичный меш выглядит пластиком — нужна симуляция движения прядей.
SCNPhysicsBodyдля каждой пряди — катастрофа для производительности. Решение: vertex shader simulation через Metal — каждая прядь — сплайн с несколькими control points, симулируем spring dynamics на GPU -
Hair-to-face occlusion. Чёлка должна перекрывать лоб. Создаём маску из depth face geometry — пиксели за плоскостью лица отсекаем. На ARKit с TrueDepth: используем
ARFaceGeometryкак occluder geometry сSCNMaterial.colorBufferWriteMask = [] - Подбор размера. Причёска должна сидеть на голове конкретного пользователя. Используем межзрачковое расстояние как baseline для масштабирования модели
Neural Image Synthesis (нейросетевой подход)
Не реальное время — для статичного фото или «примерки по фото». Модель типа image-to-image: входное фото + выбранная причёска → синтезированное фото с новой причёской. Качество значительно выше, чем 3D mesh, но latency 1–5 секунд.
Реализация: Core ML (iOS) или TFLite (Android) с конвертированной моделью. Модели: SAM (Segment Anything Model) для сегментации головы + Stable Diffusion Inpainting для генерации новой причёски в сегментированной зоне. Или специализированные модели — HairCLIP, HairstyleGAN.
Серверный inference: модели 500 MB–2 GB не подходят для on-device. Отправляем фото на GPU-сервер (A100 / H100), получаем результат за 1–3 секунды. Стриминг результата по частям не применим (изображение целиком), но прогресс-индикатор обязателен.
Сегментация волос
Для обоих подходов нужна точная сегментация волос на входном кадре — отделить волосы от фона и лица. Модели: MediaPipe Hair Segmentation, DeepLabV3+ файнтюненный на hair dataset, BiSeNet. Метрика качества — mIoU на тестовом датасете, приемлемо от 85%+.
На iOS — конвертация в CoreML через coremltools, inference через VNCoreMLRequest. Важно: сегментационная маска должна обновляться каждый кадр для real-time режима — нужна модель с inference < 20 мс на A15. U-Net lite или MobileNetV3-based сегментатор справляется.
UX и каталог причёсок
Каталог причёсок — 3D-модели (для mesh-подхода) или reference images (для neural подхода). Фильтры: длина, цвет, тип (прямые/кудрявые/волнистые). Выбор цвета причёски: меняем vertex color / albedo texture модели через HSV-трансформацию. Один и тот же меш — разные цвета — без отдельных моделей для каждого варианта.
Покраска волос в нестандартный цвет (ombre, highlights) — отдельная задача: gradient vertex color по длине пряди, специальная UV-раскладка для gradient map.
Сроки
Real-time 3D hair mesh примерка с face tracking для iOS: 8–12 недель. Neural synthesis с серверным inference для статичных фото + on-device сегментация: 6–10 недель. Комбинированный продукт (real-time 3D + neural для финального результата) с кроссплатформой: 4–7 месяцев. Стоимость рассчитывается индивидуально.







