- Дата публикации
Как собрать виртуальную примерочную и умный поиск на AWS: подробный разбор решения
Что нового
AWS показала готовое референсное решение для e‑commerce на базе генеративного ИИ. Это не отдельный сервис, а комплект архитектуры, кода и инструкций, который можно развернуть у себя в аккаунте.
Конкретно, что вы получаете из коробки:
-
Виртуальная примерочная на Amazon Nova Canvas + Amazon Rekognition:
- Генерация фотореалистичных изображений покупателя в выбранной одежде.
- Тип задачи в payload:
taskType: "VIRTUAL_TRY_ON". - Маскирование по одежде:
maskType: "GARMENT", автоматический поиск и замена областей с одеждой. - Поддерживаемые форматы фото: JPEG, PNG, JPG.
- Максимальный размер файла: 6 МБ.
- Время генерации — до ~15 секунд на один try‑on.
-
Персональные рекомендации на Amazon Titan Multimodal Embeddings + Amazon OpenSearch Serverless:
- Векторные представления картинок и текста размером 1024 измерения.
- k‑NN поиск по векторам в OpenSearch Serverless.
- Учитываются цвет, паттерн, категория одежды, пол пользователя и история взаимодействий.
-
Умный поиск по товарам:
- Поиск по естественному языку с распознаванием намерений.
- Поддерживаемые сценарии: подбор образа, поиск по цене, исследование стиля.
- Примеры запросов:
- «Покажи синие платья до $100»;
- «Покажи casual t‑shirt»;
- «Недорогие джинсы для женщин».
- Есть автокоррекция опечаток, фильтры по цвету, цене, категории и полу, нечеткий поиск по синонимам.
-
Аналитика по поведению покупателей на Amazon DynamoDB:
- Счётчик сессий примерки и уникальных пользователей.
- Популярные категории и товары.
- Разделение по полу, типу одежды и источнику (свои фото vs датасет).
- Скрипт быстрой аналитики:
python quick_analytics.py.
-
Полностью серверная архитектура:
- 5 отдельных AWS Lambda‑функций: фронтенд‑чатбот, виртуальная примерочная, рекомендации, загрузка датасета, текстовый поиск.
- Хранилище в Amazon S3, поиск в Amazon OpenSearch Serverless, аналитика в DynamoDB.
- Деплой одним командой через AWS SAM.
-
Оценка стоимости при типовой нагрузке (1 месяц, ~60 товаров, демо‑нагрузка):
- Amazon Bedrock Nova Canvas: $60/мес за ~1500 изображений виртуальной примерки (по $0.04 за изображение).
- Amazon Bedrock Titan Embeddings: $0.50–$1.00/мес (60 позиций каталога + ~100 поисковых запросов в день).
- Amazon OpenSearch Serverless: $7–$12/мес (минимум 2 OCU для индексации и поиска).
- NAT Gateway: $3.50–$5/мес (~5 ГБ трафика для Lambda).
- AWS KMS: $3/мес за 3 ключа с авто‑ротацией.
- AWS Lambda: укладывается в free tier при ~50 000 вызовов.
- Amazon S3: $0.02–$0.05/мес за ~600 МБ (оригиналы + результаты).
- DynamoDB: $0.50–$1.00/мес за ~5000 операций чтения/записи.
- API Gateway + CloudWatch + SQS: $1.00–$1.50/мес.
Все цены — ориентировочные, зависят от региона и реальной нагрузки.
Как это работает
Архитектура
Решение построено как набор микросервисов на AWS Lambda, связанных через API Gateway и использующих управляемые сервисы хранения и поиска.
Основные компоненты:
-
Lambda‑функции:
- WebFrontendFunction — фронтенд‑слой с интерфейсом чатбота и drag‑and‑drop загрузкой фото.
- VirtualTryOnFunction — обработка виртуальной примерки.
- RecommendFunction — генерация рекомендаций.
- DataIngestionFunction — загрузка и индексация датасета векторов.
- TextSearchFunction — умный текстовый поиск.
-
Хранилища:
- Amazon S3 — хранение исходных фото пользователей, изображений товаров и сгенерированных try‑on.
- Amazon DynamoDB — события и метрики аналитики.
-
Поиск и векторы:
- Amazon Titan Multimodal Embeddings (через Amazon Bedrock) — генерация 1024‑мерных векторов для изображений и текста.
- Amazon OpenSearch Serverless — k‑NN поиск по векторам (similarity search) и фильтрация по метаданным.
-
Генерация изображений:
- Amazon Nova Canvas (через Amazon Bedrock) — генерация фотореалистичных изображений виртуальной примерки.
- Amazon Rekognition — анализ исходных фото и изображений одежды: поиск типа одежды, частей тела, пола пользователя и модерация контента.
-
Инфраструктура и оркестрация:
- AWS Serverless Application Model (SAM) — декларативное описание инфраструктуры в
template.yamlи деплой одной командой. - Amazon API Gateway — публичный API для фронтенда, кэширование ответов, presigned URL для загрузки в S3.
- AWS CloudFormation — управление стеком ресурсов.
- AWS Serverless Application Model (SAM) — декларативное описание инфраструктуры в
Поток виртуальной примерки
-
Пользователь открывает WebApp по URL вида:
https://{api-id}.execute-api.{region}.amazonaws.com/dev/ -
Загружает фото (JPEG/PNG/JPG, до 6 МБ) через drag‑and‑drop.
-
Сервис проверяет формат, размер и отправляет изображение в S3.
-
Amazon Rekognition анализирует фото:
- находит одежду и части тела;
- определяет тип одежды;
- определяет пол пользователя.
-
Пользователь выбирает товар:
- либо загружает своё изображение одежды;
- либо выбирает из датасета из 60+ товаров (профессиональные фото).
-
VirtualTryOnFunction формирует запрос к Amazon Nova Canvas:
taskType: "VIRTUAL_TRY_ON";source image— фото пользователя;reference image— фото одежды;maskType: "GARMENT"— замена областей с одеждой.
-
Nova Canvas генерирует новое изображение, где выбранная одежда наложена на пользователя.
-
Сервис сохраняет результат в S3 и возвращает ссылку пользователю.
-
Пользователь может:
- скачать изображение;
- запросить похожие вещи;
- добавить в избранное.
Рекомендации и поиск
Рекомендации:
- DataIngestionFunction проходит по датасету одежды, хранящемуся в S3.
- Для каждого товара Amazon Titan Multimodal Embeddings строит вектор размерности 1024.
- Lambda отправляет векторы и метаданные в Amazon OpenSearch Serverless.
- Когда пользователь делает try‑on или просматривает товар, RecommendFunction:
- строит вектор для текущего товара;
- ищет ближайшие векторы (k‑NN) в OpenSearch;
- учитывает категорию (верх/низ/total look/обувь), пол, историю поиска и примерок.
Умный поиск:
- Пользователь вводит запрос на естественном языке.
- TextSearchFunction классифицирует намерение:
- подбор комплекта;
- поиск по бюджету;
- поиск по стилю.
- Сервис разбирает запрос на фильтры: цвет, категория, диапазон цены, пол.
- Выполняет поиск по индексу в OpenSearch с учётом:
- текстовых полей;
- векторного сходства (цвет, стиль);
- нечеткого совпадения и синонимов.
- Результаты ранжируются по цели запроса (например, бюджет — выше при ограничении по цене).
Аналитика
Каждое действие пользователя (загрузка фото, запуск try‑on, клик по рекомендации, поиск) отправляется в DynamoDB.
Скрипт:
python quick_analytics.py
показывает:
- количество сессий примерки и уникальных пользователей;
- самые популярные категории и товары;
- распределение по источнику (свои фото vs датасет);
- активность по дням;
- базовые метрики вовлеченности.
Безопасность и модерация
По умолчанию в демо‑конфигурации на API Gateway нет аутентификации. AWS прямо рекомендует не использовать такую конфигурацию в продакшене.
Рекомендации по защите:
- добавить авторизацию через Amazon Cognito или авторизаторы API Gateway;
- валидировать все загруженные изображения по типу, размеру и разрешению на уровне API Gateway или Lambda;
- использовать Amazon Rekognition Content Moderation для фильтрации неприемлемого контента до загрузки в S3;
- отклонять изображения, которые не проходят модерацию, до попадания в хранилище и пайплайн Nova Canvas.
Что это значит для вас
Для кого это решение
- Онлайн‑ритейл и маркетплейсы одежды. Можно быстро собрать прототип виртуальной примерочной и умных рекомендаций без написания бэкенда с нуля.
- Партнёры AWS и интеграторы. Готовая архитектура, которую можно адаптировать под клиентов: от моды до аксессуаров и, частично, бьюти.
- Команды R&D и продуктовые команды в e‑commerce. Удобная песочница, чтобы проверить гипотезы по влиянию виртуальной примерки на конверсию и возвраты.
Какие задачи решает
-
Снижение возвратов и рост уверенности в покупке:
- пользователь видит, как вещь будет выглядеть на нём, а не на модельном фото;
- можно быстро сравнивать несколько вариантов и сохранять избранное.
-
Персональные рекомендации без ручной разметки стиля:
- Amazon Titan Multimodal Embeddings «понимает» стиль через изображение;
- не нужно вручную размечать цвета и паттерны — достаточно базовых метаданных.
-
Поиск, похожий на общение с продавцом:
- пользователи пишут запросы обычным языком;
- система разбирает намерение и подстраивает ранжирование.
-
Быстрый старт с серверной архитектурой:
- не нужно управлять серверами и кластером поиска;
- масштабирование происходит автоматически через Lambda и OpenSearch Serverless.
Где это удобно использовать
- Веб‑и мобильные магазины одежды и обуви.
- Поп‑ап‑проекты и спецпроекты брендов, где важен wow‑эффект примерочной.
- Внутренние инструменты байеров и мерчандайзеров для оценки ассортимента.
Где использовать осторожно или не использовать
- Россия и другие регионы с ограниченным доступом к AWS. Для работы нужен аккаунт AWS и доступ к Amazon Bedrock (Nova Canvas и Titan), Amazon Rekognition, Amazon OpenSearch Serverless и другим сервисам. В ряде стран доступ к AWS ограничен или требует VPN и юридических проверок. Перед внедрением нужно проверить юридические риски и условия использования.
- Массовый high‑load без оптимизации. Nova Canvas — основной драйвер стоимости ($0.04 за изображение). При миллионах примерок в месяц счёт будет заметным. Нужны кэширование, лимиты и продуманная UX‑логика.
- Контент 18+ и UGC без модерации. Без Rekognition Content Moderation и ограничений на тип контента есть риск хранить и обрабатывать нежелательные изображения.
Практические советы по внедрению
- Начните с MVP на ограниченной категории (например, верхняя одежда или платья) и небольшом датасете.
- Включите кэширование результатов: не генерируйте повторно примерку для одинаковой пары «пользовательское фото + товар».
- Ограничьте количество примерок и размер изображений на пользователя, чтобы контролировать стоимость.
- Подумайте о UX‑подсказках: показывайте примеры «правильных» фото (фронтальный ракурс, хорошее освещение).
- Используйте встроенную аналитику в DynamoDB, чтобы быстро увидеть, какие категории и запросы работают лучше всего.
Место на рынке
Решение AWS конкурирует не с отдельной моделью вроде GPT‑4o, а с готовыми SaaS‑примерочными и кастомными пайплайнами на open‑source.
Сравнивать можно по нескольким осям:
-
Тип продукта:
- AWS даёт конструктор: архитектуру, код, SAM‑шаблон. Вы сами разворачиваете у себя.
- Многие конкуренты предлагают SaaS‑платформу, где вы только шлёте API‑запросы.
-
Контроль над данными:
- Все данные хранятся в вашем AWS‑аккаунте: S3, DynamoDB, OpenSearch.
- Это плюс для брендов, которые не хотят отправлять пользовательские фото третьим сторонам.
-
Стоимость:
- Ядро затрат — Nova Canvas: $0.04 за изображение. При 1500 try‑on в месяц — около $60 только за генерацию.
- Плюс инфраструктура: OpenSearch Serverless, NAT, KMS, API Gateway и прочее — ещё примерно $15–$20 в месяц при демо‑нагрузке.
- На фоне типичных SaaS‑решений «за сессию» итоговая цена зависит от объёма и архитектуры, но здесь вы платите по факту использования облачных сервисов.
-
Глубина интеграции с AWS:
- Нативная работа с Bedrock, Rekognition, OpenSearch, DynamoDB, IAM, CloudFormation.
- Для команд, которые уже живут в AWS, входной порог ниже, чем при подключении стороннего SaaS.
-
Генеративные модели:
- В решении используются Amazon Nova Canvas и Amazon Titan Multimodal Embeddings.
- Это закрытая экосистема Amazon Bedrock. Если вы хотите использовать, например, GPT‑4o или Claude 3.5 для текстовой логики, придётся строить гибридную архитектуру.
Если вы уже используете AWS и готовы управлять инфраструктурой сами, это решение даёт быстрый старт без vendor lock‑in на сторонний SaaS‑сервис виртуальной примерки.
Установка
Ниже — пошаговый сценарий развёртывания, который AWS предлагает для этого решения. Все команды приведены полностью.
Предварительные требования
-
AWS‑аккаунт:
- Активный аккаунт с административными правами.
- AWS CLI установлен и настроен с нужными credentials.
-
Сервисы и регион:
- В одном регионе должны быть доступны:
- Amazon Nova Canvas;
- Amazon Titan Multimodal Embeddings;
- Amazon Rekognition;
- Amazon OpenSearch Serverless.
- Рекомендуемый регион: us‑east‑1 (US East, N. Virginia).
Перед развёртыванием в другом регионе нужно проверить:
- страницу поддержки моделей Amazon Bedrock по регионам;
- список региональных сервисов AWS.
- В одном регионе должны быть доступны:
-
Доступ к Amazon Bedrock:
- Foundation‑модели в Bedrock теперь автоматически включаются при первом вызове.
- Nova Canvas и Titan Embeddings активируются при первом обращении из вашего аккаунта.
- Первый вызов может занять несколько лишних секунд.
-
Права IAM для деплоя SAM‑шаблона: Роль, под которой вы запускаете деплой, должна уметь:
- создавать и управлять Lambda‑функциями;
- создавать S3‑бакеты и управлять объектами;
- создавать коллекции Amazon OpenSearch Serverless;
- создавать таблицы DynamoDB и работать с данными;
- вызывать модели Amazon Bedrock (Nova Canvas и Titan);
- вызывать Amazon Rekognition;
- управлять стеками AWS CloudFormation;
- создавать и настраивать API Gateway.
-
Локальное окружение:
- AWS SAM CLI версии 1.50.0 и выше;
- Python 3.9+ и
pip; - Git;
- любой редактор или IDE для правки конфигов.
Как запустить
Шаг 1. Клонирование репозитория
git clone https://github.com/aws-samples/sample-genai-virtual-tryon.git
cd VirtualTryOne-GenAI
Структура проекта:
template.yaml— SAM‑шаблон со всеми ресурсами AWS;requirements.txt— зависимости Python для Lambda‑функций;- исходники Lambda (
*.py); - датасет одежды и примеры изображений.
Шаг 2. Установка зависимостей
pip install -r requirements.txt
Здесь устанавливаются библиотеки для обработки изображений, работы с AWS SDK, подключения к OpenSearch и другие базовые зависимости.
Шаг 3. Сборка SAM‑приложения
sam build
Во время сборки SAM:
- пакует каждую Lambda‑функцию;
- собирает зависимости и формирует слои;
- валидирует синтаксис шаблона SAM;
- готовит CloudFormation‑шаблоны для деплоя.
Шаг 4. Первый деплой (guided)
sam deploy --guided
Во время guided‑деплоя SAM спросит:
- имя стека (Stack name);
- регион деплоя;
- значения параметров шаблона;
- подтверждение создания ресурсов;
- разрешения на создание IAM‑ролей.
После первого деплоя SAM создаст файл samconfig.toml с настройками, чтобы в будущем не задавать параметры вручную.
Важное предупреждение по безопасности: базовая конфигурация не добавляет аутентификацию на endpoint’ы API Gateway. Для продакшена обязательно нужно добавить авторизацию (например, Amazon Cognito или authorizer’ы API Gateway).
Шаг 5. Повторные деплои
sam deploy
Команда использует настройки из samconfig.toml и обновляет стек без дополнительных вопросов.
Шаг 6. Поиск имени стека и ID функции
После sam deploy вам понадобится имя стека и полное имя Lambda‑функции DataIngestionFunction.
Метод 1. Посмотреть вывод sam deploy
В конце вывода будет строка вида:
DataIngestionFunctionName: my-fashion-stack-DataIngestionFunction-abc123xyz
Метод 2. Через CloudFormation (CLI)
# Замените ‘my-fashion-stack’ на имя вашего стека
aws cloudformation describe-stacks \
--stack-name my-fashion-stack \
--query 'Stacks[0].Outputs[?OutputKey==`DataIngestionFunctionName`].OutputValue' \
--output text
Метод 3. Через samconfig.toml
cat samconfig.toml | grep stack_name
# Вывод: stack_name = "my-fashion-stack"
Метод 4. Через AWS Management Console
- Откройте CloudFormation.
- Выберите свой стек (например,
my-fashion-stack). - Перейдите на вкладку Outputs.
- Найдите
DataIngestionFunctionName— это полное имя Lambda‑функции.
Шаг 7. Загрузка fashion‑датасета
Запустите скрипт загрузки датасета в S3:
python mini_dataset_uploader.py
Скрипт загрузит 60+ элементов одежды с метаданными в нужный S3‑бакет.
Шаг 8. Создание векторного индекса
Вызовите функцию загрузки данных, чтобы построить векторный индекс в OpenSearch:
aws lambda invoke \
--function-name <YourStackName>-DataIngestionFunction-<ID> \
--payload '{}' \
response.json
Замените <YourStackName> и <ID> на значения из вывода SAM.
Функция:
- обрабатывает изображения одежды через Titan Embeddings;
- строит 1024‑мерные векторы;
- индексирует данные в Amazon OpenSearch Serverless;
- включает функциональность рекомендаций и поиска.
Шаг 9. Доступ к приложению
URL веб‑приложения можно взять из вывода sam deploy:
WebAppUrl: https://{api-id}.execute-api.{region}.amazonaws.com/dev/
Перейдите по ссылке — откроется интерфейс виртуальной примерочной и поиска.
Как пользоваться
Виртуальная примерочная
- Загрузите своё фото через drag‑and‑drop (JPEG/PNG/JPG, до 6 МБ).
- Сервис проверит формат, размер и при необходимости отклонит файл.
- Выберите одежду:
- загрузите своё изображение вещи;
- или выберите из встроенного каталога (60+ предметов).
- Система:
- анализирует фото через Rekognition;
- формирует запрос к Nova Canvas с
taskType: "VIRTUAL_TRY_ON"иmaskType: "GARMENT"; - генерирует try‑on изображение за ~15 секунд.
- После генерации можно:
- скачать изображение;
- запросить похожие товары;
- сохранить результат.
Лучший результат дают фронтальные, хорошо освещённые фото с чётко видимой фигурой.
Персональные рекомендации
Рекомендательная система использует Titan Multimodal Embeddings и OpenSearch Serverless.
Факторы, влияющие на рекомендации:
- визуальное сходство по цвету, паттерну и стилю;
- пол пользователя, определённый по фото и истории;
- соответствие категории (верх/низ/total look/обувь);
- история поиска и примерок.
После виртуальной примерки или просмотра товара можно запросить похожие вещи и получить список рекомендаций из каталога.
Умный поиск по каталогу
Поддерживаются естественные запросы, например:
- «Покажи синие платья до $100»;
- «Покажи casual tshirt»;
- «Недорогие джинсы для женщин».
Сервис:
- определяет тип запроса (подбор образа, поиск по цене, поиск стиля);
- исправляет опечатки;
- применяет фильтры по цвету, цене, полу, категории;
- использует нечеткий поиск и синонимы.
Результаты ранжируются с учётом цели запроса: при запросе «до $100» вещи дороже $100 будут ниже.
Аналитика
Запустите:
python quick_analytics.py
Вы увидите:
- общее число сессий примерки и уникальных пользователей;
- топовые категории и товары;
- долю загрузок собственных фото против использования датасета;
- дневную активность и базовые метрики вовлечённости.
Тестирование без личных фото
В репозитории есть папка sample-images/:
- фото людей с хорошим освещением — для теста примерочной;
- изображения одежды — для проверки рекомендаций.
Можно протестировать функциональность без загрузки личных изображений.
Мониторинг и отладка
Логи в CloudWatch
Lambda‑функции пишут логи в CloudWatch в группы вида:
/aws/lambda/{stack-name}-WebFrontendFunction-{id}/aws/lambda/{stack-name}-VirtualTryOnFunction-{id}/aws/lambda/{stack-name}-RecommendFunction-{id}/aws/lambda/{stack-name}-DataIngestionFunction-{id}/aws/lambda/{stack-name}-TextSearchFunction-{id}
Типовые проблемы и решения
Ошибки доступа к моделям Bedrock:
- проверьте, что модели включены в консоли Amazon Bedrock;
- убедитесь, что IAM‑роль имеет права
bedrock:InvokeModelдля Nova Canvas и Titan; - проверьте идентификаторы моделей в коде Lambda.
Проблемы с подключением к OpenSearch Serverless:
- удостоверьтесь, что коллекция активна;
- проверьте сетевые политики и права доступа;
- убедитесь, что индекс создан, а данные загружены через DataIngestionFunction.
Сбои при обработке изображений:
- проверьте, что формат и размер файла соответствуют требованиям;
- проверьте права доступа к S3‑бакетам и CORS;
- убедитесь, что не превышены лимиты Amazon Rekognition.
Оптимизация производительности:
- мониторьте время выполнения и память Lambda в CloudWatch;
- кэшируйте часто запрашиваемые данные и результаты;
- для пиковых нагрузок рассмотрите provisioned concurrency для ключевых функций.
Очистка ресурсов и контроль затрат
Шаг 1. Удаление стека CloudFormation
sam delete --stack-name <your-stack-name>
Команда удалит:
- Lambda‑функции;
- API Gateway;
- таблицы DynamoDB;
- IAM‑роли и политики, созданные шаблоном.
Шаг 2. Ручная очистка S3 и OpenSearch
S3‑бакеты нужно почистить и удалить вручную:
# Очистка и удаление S3-бакетов
aws s3 rm s3://<upload-bucket-name> --recursive
aws s3 rm s3://<processed-bucket-name> --recursive
aws s3 rm s3://<dataset-bucket-name> --recursive
aws s3 rb s3://<upload-bucket-name>
aws s3 rb s3://<processed-bucket-name>
aws s3 rb s3://<dataset-bucket-name>
Удаление коллекции OpenSearch Serverless:
# Удаление коллекции OpenSearch
aws opensearchserverless delete-collection --id <collection-id>
Шаг 3. Проверка
- Убедитесь в консоли CloudFormation, что стек удалён.
- Проверьте, что S3‑бакеты и коллекции OpenSearch действительно исчезли.
- Посмотрите в billing‑дашборде, не осталось ли активных ресурсов.
Шаг 4. Очистка локального окружения
# Удаление артефактов SAM
rm -rf .aws-sam/
rm samconfig.toml
rm response.json
Советы по оптимизации стоимости
- Подберите минимально достаточный объём памяти для Lambda.
- Включите кэширование запросов, чтобы не дергать Nova Canvas и Titan лишний раз.
- Настройте CloudWatch‑алерты по бюджету и использованию.
- Добавьте политики S3 Lifecycle для автоматического архивирования старых изображений.
- Мониторьте использование Amazon Bedrock и при необходимости ограничивайте частоту запросов.
- Для предсказуемых больших нагрузок рассмотрите зарезервированную ёмкость там, где это доступно.