Как мы создали GlamAR, платформу дополненной реальности для беспроблемного тестирования.

Вы когда-нибудь задумывались, что ведет к разработке продукта?

Это идея и правильное сочетание таланта и страсти? Что ж, все это важные составляющие, но наиболее важным является постановка проблемы. В продукте должна быть реальная потребность.

В Fynd мы разрабатываем инновационные технологии для розничной торговли. Изучив потребности индустрии электронной коммерции, мы поняли, что продавать косметику через Интернет - это непростая задача для косметических брендов. Это сложно, потому что для покупателей естественно принимать решение о покупке на основе физического применения продукта.

Наш путь к продукту начался с постановки этой проблемы и потребности в технологии виртуального макияжа. Пандемия еще больше повысила спрос на безопасные бесконтактные покупки.

Что такое GlamAR?

GlamAR - это решение для примерки виртуального макияжа, которое помогает покупателям виртуально примерить макияж. Они могут опробовать несколько продуктов, посмотреть, что соответствует их потребностям, и без проблем принять решение о покупке.

Цели, которые нужно достичь

Мы перечислили разработки, которые нам потребуются для разработки GlamAR:

  • Модель ML для определения точных ориентиров на лице в режиме реального времени.
  • Техника увеличения макияжа.
  • Стабилизируйте и интерполируйте контрольные точки.
  • Достигните среднего числа кадров в секунду или FPS без сбоев и задержек.

Рабочие блоки

GlamAR включает в себя разные блоки, похожие на блоки Lego, которые собираются вместе. Эти блоки различаются в зависимости от возможности повторного использования, производительности, возможностей подключения и платформы (Android, iOS или Desktop).

Мы можем разделить эти блоки на:

  • Внешний интерфейс: Android, Интернет и iOS
  • Машинное обучение: модель прогнозирования сегментации, ориентиров и стиля
  • C ++: код многократного использования
  • Серверная часть: основа для GlamAR

Эти блоки имеют определенные функции и связаны, чтобы составить продукт GlamAR. Интерфейс проверяет аутентификацию, а затем извлекает файлы конфигурации и веса из серверной части. Входное изображение предварительно обрабатывается и анализируется для модели машинного обучения, а выходные данные модели отправляются в блок C ++ в качестве входных данных. Затем изображение дополняется и отправляется обратно во внешний интерфейс для отображения в виде дополненного изображения. Этот цикл по-прежнему обеспечивает беспроблемную виртуальную примерку в реальном времени.

Внешний интерфейс

Фронтенд состоит из 3-х доменов: Android, Web и iOS. К ним относятся богатый пользовательский интерфейс, экземпляр камеры и другие функциональные коды.
Мы использовали Java и Kotlin для пользовательского интерфейса Android. Большая часть кода обработки изображений написана на C ++, что делает его оптимизированным для памяти, эффективным и многоразовым. Мы использовали NDK (C ++) и веб-сборку для компиляции кода в Android и Desktop соответственно.

Android

Мы начали с идеи создать масштабируемое, точное и самообслуживающееся решение для платформы Android, которое будет предлагаться в виде SDK. Чтобы реализовать наше видение, мы разделили наш код на три отдельных модуля: Face, Hair и Nail.

Подразделение сделало код более организованным и масштабируемым для будущих обновлений других вариантов примерки, таких как Foundation, Jewellery и т. Д. Разделение функций на модули также помогает нам более точно удовлетворять разнообразные потребности наших клиентов, например , если бренд хочет представить только косметику для лица, им не нужно выделять место для модуля «Волосы».

Вся обработка выполняется на стороне клиента, поэтому мы гарантируем, что наша логика обработки останется вне поля зрения и скрыта. Для этого большая часть внутреннего кода и алгоритмов написана на родном Android C ++.

Другой важной целью было сделать SDK как можно меньше, поэтому мы перестроили библиотеки C ++ из исходного кода (например, в OpenCV), используя только несколько выбранных модулей, так что вся библиотека не требуется.

Проблемы с технологической точки зрения

  • Стандартное разрешение: разрешение камеры зависит от аппаратного обеспечения устройства. Низкое разрешение может ухудшить качество вывода. Чтобы решить эту проблему, мы предварительно обработали каждый кадр, чтобы изменить его размер до определенного диапазона.
  • Проблема с задержками и сбоями. Для беспрепятственного виртуального примерочного использования частота кадров 10 и выше имеет решающее значение. Чтобы добиться параллельной обработки, мы запускаем процесс в двух потоках, которые работают синхронно, чтобы не было сбоев или задержек. Таким образом, мы смогли достичь в среднем 12–25 кадров в секунду, обеспечивая возможность примерки в реальном времени.

Модель машинного обучения

Изначально мы использовали MLKit от Google для определения характерных точек лица. Затем мы обучили настраиваемую модель обнаружения ориентиров на наборе данных из миллионов изображений лиц, которые были собраны, вручную аннотированы и объединены с общедоступными. Первым шагом для обучения модели машинного обучения является получение обширного и безошибочного набора данных, и мы обучили наши пользовательские модели с нуля, чтобы они соответствовали нашим требованиям.

Специальная модель

  • Модель прогнозирования макияжа. Мы определяем область кожи и волос с помощью сегментации и определяем для них доминирующий цвет. Цвет глаз играет важную роль в прогнозировании макияжа глаз. Основываясь на цветовых атрибутах, мы прогнозируем макияж с помощью нашей панели цветового картирования для разных случаев, таких как вечеринка, повседневная одежда, офис и т. Д.

  • Сегментация ногтей. Мы создали специальную модель, настроив слои Mobilnet v2 для кодировщика. Часть декодера имеет несколько вариантов, использующих блок повышающей дискретизации с Transpose Convolution или Upsample2D + Convolution и обеспечивающих правильное пропускание соединения между кодером и декодером. Чтобы предотвратить переоснащение и помочь нашей сети изучить надежные функции, мы применили регуляризацию отсева.

  • Модель сегментации волос: MediaPipe - это кроссплатформенная платформа для создания конвейеров мультимодального прикладного машинного обучения. Мы использовали MediaPipe для обработки изображений в реальном времени и получения максимальной отдачи от оборудования устройства.

Что нужно знать о MediaPipe:

  • Делегирует тяжелые вычисления ЦП, такие как обработка изображений и вывод модели, на ГП.
  • Использует потоки для параллельных вычислений и отслеживания объектов для увеличения FPS.
  • Имеет встроенную поддержку Tflite и экономит время при развертывании моделей.

Swati Modi помогла нам в короткие сроки примерить краску для волос. Посмотрите ее блог, где рассказывается, как она использовала MediaPipe для этой функции.

C ++ (рендеринг и алгоритм)

Мы использовали C ++ для критических задач компактной памяти, таких как преобразование изображений, стабилизация ориентиров, создание сетки или рендеринг макияжа. Мы объединили C ++ с OpenCV и OpenGL для эффективного рендеринга изображения.

Наши алгоритмы C ++:

  • Ориентир стабилизации: точки, предсказанные моделью, не были стабильными. Чтобы справиться с этим, мы написали алгоритм, использующий OpenCV для стабилизации, используя подход среднего порога.
  • Удаление шума. Необработанное изображение имеет проблемы с шумом, яркостью и освещением. Наш алгоритм устраняет шум, увеличивает яркость и соответствующим образом ретуширует лицо.
  • Рендеринг: перед рендерингом макияжа мы интерполируем некоторые новые точки, используя метод среднего, среднего и тангенциального, чтобы эти точки покрывали граничный случай. Когда они у нас есть, мы создаем сетку и визуализируем макияж.
  • Создание актива. Мы разработали алгоритм для создания актива во время выполнения и для аутентификации актива.

Пакет Curl интегрирован с кодом C ++, чтобы добавить поддержку сетевых вызовов, чтобы сделать код C ++ самообслуживаемым, многоразовым и независимым от платформы.

Back End

Надежный бэкэнд GlamAR - это то, что управляет панелью администратора и SDK. Чтобы обеспечить быстрый ответ, обычно менее 50 мс в SDK, мы активно использовали асинхронные структуры. Эта структура включает FastAPI в качестве веб-инфраструктуры, MySQL в качестве базы данных и Tortoise-ORM в сочетании с Aerich в качестве уровня ORM.

Одной из ключевых функций, которые мы разработали внутри компании, являются динамические формы. Теперь добавление или изменение новых категорий продуктов и их различных параметров конфигурации не требует написания ни одной строчки кода во внешнем интерфейсе. Чтобы обрабатывать большие объемы трафика, мы развернули наши сервисы в Kubernetes, которые масштабируются пропорционально входящей нагрузке на сервер.

А как насчет деловой перспективы?

GlamAR - это продукт с дополненной реальностью, но как он поможет брендам, в чем преимущество и действительно ли он полезен?

Ну да! Бренды должны предлагать больше безопасных и бесконтактных способов совершения покупок. С GlamAR вы можете расширить свой уникальный продукт и впечатления от посещения магазина, которые покупатели ожидают от вашего бренда, но виртуально.

Чтобы узнать больше о перспективах бизнеса, загляните здесь.

Заключение

В этом блоге мы расскажем вам о технических деталях GlamAR.

Мы создали GlamAR таким образом, чтобы его можно было легко интегрировать с мобильным или интернет-магазином, просто использовать и создать полноценную платформу самообслуживания, на которой вы можете добавлять продукты или управлять ими.

Но мы не останавливаемся на достигнутом, это только начало. Сейчас мы хотим добавить примерку украшений и одежды, так что ждите, чтобы испытать следующую революцию.

Начни с GlamAR! Это бесплатно без ограничения по времени на стартовом плане.

По любым вопросам обращайтесь к нашим Часто задаваемым вопросам. Если вам нужна дополнительная информация, напишите нам по адресу [email protected].

GlamAR как продукт был бы невозможен без разработчиков и их усилий. Престижность Гаурав Гола, Свати Моди, Анубхав Рой, Нирадж Шукла, Тушар Морайе, Шубхам Далви, Акаш Чокши, Махеш Гуди, Мохит Пилхан , Шубхам КамлаПури !

Если вы интересуетесь искусственным интеллектом или любите программировать, проектировать и тому подобное, ознакомьтесь с нашими вакансиями здесь.

Ищете больше

  1. GlamAR на Product Hunt.
  2. GlamAR - Как мы создали приложение для примерки в реальном времени от Neerak Shukla
  3. Запуск GlamAR: виртуальное примерочное решение на основе AR от Kritika Singhania.

#HappyFynding