Мобильное приложение, в которое пользователь может загрузить свою одежду и получить рекомендации образов, а также примерить их на свое фото.
- Автоматически определяется категории и типы одежды, происходит обрезка
- Генерируй новые образы с помощью AI на основе вещей в своем гардеробе
- Лента с рекомендациями образов других пользователей
- Примеряй образы других пользователей на фото человека
- Скачать файл TryOn Wardrobe.apk из репозитория и установить как приложение из сторонних источников.
- Требует IOS developer для публикаций в app store, для установки требуется локально собирать проект.
Первая версия полноценного продукта.
Проет состоит из 4 основных компонентов:
- клиент на React-native
- основной бэкенд на Go
- вспомогательный бэкенд на Python (далее - ML-сервер)
- набор моделей машинного обучения (модель примерки, модели удаления фона, модель классификации, модель автогенерации комплектов одежды, рекомендательная система)
Кроме этого, в проекте используются следующие СУБД и другие вспомогательные компоненты:
- PostgreSQL - основная СУБД
- Redis - используется для кеширования ответов рекомендательной системы
- Centrifugo - сервер сообщений, используется для асинхронной передачи клиенту результатов работы моделей машинного обучения по протоколу Websocket
- S3 - используется для хранения изображений
- nginx - прокси-сервер, проксирует запросы от клиента на Go-бэкенд, Centrifugo и S3
- RabbitMQ - используется для асинхронного обмена сообщениями между Go-бэкендом и моделями машинного обучения
- WeatherAPI - опционально используется в препроцессинге входных моделей для модели автогенерации комплектов одежды
Написан на React-native и UI-фреймворке gluestack-ui. Также используются вспомогательные Open-Source библиотеки. Тестировался под Android, корректная работа на iOS возможна при небольших изменениях кода
- принимает запросы от клиента
- отправляет запросы на обработку моделям в очереди RabbitMQ
- возвращает ответы от моделей в Centrifugo через gRPC (дальше клиент читает через Websocket-соединение, поддерживаемое Centrifugo)
- получает информацию о статусах моделей от ML-сервера
- загружает изображения в S3 через ML-сервер
- кеширует ответы от рекомендательной системы в Redis (чтобы уменьшить кол-во походов через RabbitMQ и при этом не отправлять клиенту все сразу)
- загружает изображения в S3
- отдает информацию о статусах моделей
- Модель примерки - IDM-Vton (open-source, основана на Stable Diffusion)
- Модели удаления фона (SegFormer + SAM) и классификации (Clip) (open-source, в одном сервисе)
- Модель генерации комплектов одежды (самописная)
- Рекомендательная система - рекомендует посты пользователей (самописная)
Все модели - сервисы на Python, которые обрабатывают сообщения из очередей RabbitMQ
Изображения они читают и загружают напрямую из S3