Как мы сделали AI-виджет виртуальной примерки одежды для интернет-магазинов
Привет! Расскажу как мы создали KLOAI — виджет виртуальной примерки одежды для интернет-магазинов. Под капотом — Gemini от Google, на выходе — реалистичное изображение человека в выбранной одежде за 10-15 секунд.
Идея и задача
Задача звучит просто: взять фото человека, взять фото одежды с сайта магазина, совместить так, чтобы выглядело реалистично. На практике — куча нюансов.
Нужно сохранить лицо, причёску, цвет кожи, позу. Нужно "снять" одежду с модели на товарном фото и корректно натянуть на другого человека с другими пропорциями. Нужно учесть освещение, тени, драпировку ткани. И всё это — за секунды, не за минуты.
Классические подходы с 3D-моделированием слишком медленные и требуют специальных фото. AR-решения работают только с простыми объектами типа очков или часов. Нам нужен был другой путь.
Почему Gemini
Перепробовали несколько моделей. Stable Diffusion с ControlNet давал неплохие результаты, но требовал тонкой настройки под каждый тип одежды и часто терял детали лица. Midjourney не подходит для API-интеграции. DALL-E 3 — хорош для генерации с нуля, но плохо справляется с сохранением исходного изображения.
Остановились на Gemini. Мультимодальная модель от Google, которая умеет работать с изображениями на входе и выходе. Ключевое преимущество — хорошо понимает контекст и сохраняет идентичность человека на фото.
Отправляем два изображения (фото человека + фото товара) и текстовый промпт с инструкциями. Получаем сгенерированное изображение. Время генерации — 10-15 секунд в зависимости от нагрузки.
Промпт-инжиниринг
Самая интересная часть — заставить модель делать именно то, что нужно. Промпт прошёл десятки итераций.
Ключевые моменты, которые пришлось явно прописать:
— Сохранять лицо, выражение, цвет кожи на 100% — Извлекать только одежду с товарного фото, игнорируя модель — Полностью заменять одежду на человеке, а не накладывать поверх — Сохранять позу и пропорции тела — Сохранять фон и освещение с оригинального фото
Без явных инструкций модель часто "креативила" — меняла причёску, добавляла аксессуары, меняла фон на студийный. Пришлось жёстко ограничить.
Обработка изображений
На входе принимаем base64. Автоматически определяем MIME-тип по первым байтам (JPEG, PNG, WebP). Ресайзим если нужно — Gemini имеет ограничения на размер.
На выходе получаем PNG, сохраняем в S3, отдаём публичный URL. Для каждой генерации создаём уникальный task_id, по которому можно отследить статус и получить результат.
Сделали защиту от абьюза: лимиты на пользователя (по fingerprint и IP), rate limiting на API, проверка размера файлов.
Личный кабинет
Для магазинов сделали админку.
Там:
— Статистика генераций (по дням, неделям, месяцам)
— Топ примеряемых товаров — какие URL чаще всего отправляют на примерку
— Настройки виджета — цвета, тексты, режим отображения
— Управление балансом — пополнение, история
Что было сложно
Главная боль — нестабильность генерации. Одна и та же пара изображений может дать отличный результат или полную ерунду. Gemini иногда игнорирует часть инструкций, иногда галлюцинирует.
Решаем это на уровне UX: если результат не устроил — можно перегенерировать. В большинстве случаев вторая попытка лучше первой.
Вторая проблема — скорость. 10-15 секунд это много для современного веба. Пользователь должен понимать, что происходит. Сделали анимированный прогресс-бар и текстовые статусы ("Анализируем фото...", "Генерируем образ...").
Третья — разнообразие входных данных. Люди загружают что угодно: селфи в зеркале, фото в тёмной комнате, скриншоты из Instagram. Модель справляется не со всем. Добавили рекомендации по качеству фото в интерфейс виджета.
Что дальше
Сейчас работаем над:
— Рекомендации размеров — анализ пропорций тела на фото и сопоставление с размерной сеткой магазина
— Кэширование — если товар уже примеряли на похожую фигуру, можно показать результат быстрее
— Batch-генерация — примерить сразу несколько вещей за один запрос
— Fine-tuning — обучение модели на датасете удачных примерок для повышения качества
Итого
Генеративный AI дошёл до уровня, когда можно делать практически полезные продукты, а не просто демки. Виртуальная примерка — одно из таких применений. Технология работает, пользователи понимают ценность, бизнес готов платить.
Если интересно посмотреть как это работает — на сайте есть демо, можно загрузить своё фото и попробовать: kloai.ru