AzoftКейсыAR приложение для Leef: виртуальная примерочная часов

AR приложение для Leef: виртуальная примерочная часов

Ольга Аксёнова Июль 26, 2018

Виртуальная примерочная часов

С чего всё начиналось

Leef Company — американская компания, которая уже почти 10 лет производит внешние накопители, адаптеры, карты памяти и другие аксессуары для смартфонов. Не так давно Leef решили развивать ещё одно направление: продажу очков и часов. А чтобы продвигать новые продукты на рынке, задумали сделать маркетинговое мобильное приложение.

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

Решение

Мы стартовали проект осенью прошлого года. План был такой: сначала делаем демо версию AR-приложения под iOS, затем приступаем к Android.

Мы подключили наших R&D разработчиков и исследовали готовые открытые библиотеки, которые можно было бы использовать для AR приложения виртуальной примерочной. Нужного инструмента не нашли и остановились на кастомном решении с использованием свёрточных нейросетей.

Если хочешь, чтобы дело было сделано хорошо, сделай его сам. — Фердинанд Порше

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

Мы постепенно увеличили количество изображений в датасете до 60 тысяч. В ходе работы поменяли цвет крестика на запястье с зелёного на синий — практика показала, что ярко-синий значок проще отделить от общего фона при распознавании.

Затем разработали алгоритм, который затирает крестик на руке — нам этот рисунок был нужен, чтобы обучить нейросеть распознавать центр запястья. А вот пользователю в приложении видеть его незачем.

Распознавание центра запястья

Для виртуальной примерочной мы экспериментировали. Сначала разработали прототип AR приложения на Python в Linux, чтобы проверить работу нейросетей на ПК, а уж потом перенести на iOS. Использовали три свёрточные нейронные сети. Первую обучили находить центр запястья на руке. Вторую — определять размер запястья. А третью натренировали распознавать положение руки в пространстве — чтобы виртуальные часы двигались вместе с рукой.

Когда все три нейросети были обучены, мы импортировали 3D модель часов в мобильное iOS приложение. Сначала попробовали применить платформу ARKit от Apple, но она поддерживается только на девайсах iPhone 6S и выше. В итоге остановились на графическом фреймворке SceneKit, который работает и с более старыми моделями яблокофонов.

Мы трудились над демо версией iOS 3 месяца. Были доработки: увеличили датасет, переконвертировали 3D модели часов в другой графический формат. Параллельно начали портировать нейросети на Android.

Опыт работы над iOS помогал нам, но с Android-версией возникли свои сложности.

Если iOS справлялся с тремя объёмными нейросетями, то в Android-версии производительность упала: система тратила кучу времени на обработку двух изображений, основного и дополнительного. В итоге AR на Android превратилась в слайд-шоу с часами.

Мы подумали и нашли выход — изменили архитектуру Android-версии приложения. Натренировали новую модель нейросети работать за двоих и заменили ей две предыдущие модели. Результат нас порадовал — скорость работы Android приложения существенно выросла, а необходимость в дополнительном изображении отпала.

Сейчас в демо-версиях под iOS и Android можно примерить только одну модель часов, но в перспективе можно будет выбрать любые часы из каталога и посмотреть, как они выглядеть на руке.

AR приложение

MPPS — Models Processing Per Second, количество полных обработок моделей в секунду.

Стек технологий

Objective-C, Tensorflow, Java, SceneKit, Python: Numpy, OpenCV.

Результат

Проект виртуальной примерочной — непростой и амбициозный. Мы экспериментировали с разными эвристиками свёрточных нейросетей, прокачались в 3D технологиях, научились портировать нейросети на мобильные платформы. Результатом гордимся: у нас получилось мобильное приложение с отличным перформансом — до 30 кадров в секунду вместо обещанных 5.

Комментарии

комментарии