DOU Проектор: Cluise — как мы с помощью machine learning создаем мобильного стилиста

От редакции:
В рубрике DOU Проектор все желающие могут презентовать свой продукт (как стартап, так и ламповый pet-проект). Если вам есть о чем рассказать — приглашаем поучаствовать. Если нет — возможно, серия вдохновит на создание собственного made in Ukraine продукта. Вопросы и заявки на участие присылайте на  Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. .

Идея

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

Меня зовут Кирилл Трусковский, я отвечаю за машинное обучение в Сluise — проекте, который создает мобильное приложение, помогающее юзерам комбинировать одежду из своего гардероба и покупать вещи, которые им действительно нужны.

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

Реализация

Начнем с системы распознавания. Для нее мы используем Convolutional neural networks (CNN), как нельзя лучше зарекомендовавшие себя в этой области за последние годы. Предложил такой подход и реализовал первые результаты Тарас Середа. Сейчас Cluise классифицирует вещи по 54 базовым классам одежды. Для обучения CNN нужен датасет с размеченными классами (одна фотография — один класс). Количество вещей, которые загрузили наши пользователи, исчисляется миллионами, потому отобрать данные для обучения было не сложно. Сложно было заставить QA руками задать лейблы для обучающего датасета :)

Всего наша размеченная выборка содержит 150 000 фотографий одежды, из которых 120 000 мы используем как обучающую, приблизительно по 2000 изображения для каждого из класса, и 30 000 для валидации и тестирования.

Далее мы построили архитектуру CNN, которая состояла из последовательных слоев (convolutional layer — activation layer — pooling layer), и заканчивалась тремя fully connected layer и softmax на выходе. В итоге, наша сеть содержала 23 последовательных уровня. Во время обучения мы используем early stopping и делаем снепшот модели каждые 10 000 итераций. Алгоритм обучения — SGD. Как функцию ошибки мы использовали Cross entropy. С переобучением мы боролись, включая в нашу архитектуру dropout layer и применяя data augmentation.

То есть наша текущая версия модели основана на стандартных state of the art подходах к CNN. Время обучения занимает приблизительно 2-3 дня, после чего функция ошибки выходит на плато и дальше не меняется. Мы постоянно экспериментируем с архитектурой и пробуем новые модели и подходы, которые появляются почти каждый день. В данный момент мы строим convolutional variational autoencoder для того, чтобы получить наиболее информативное численное представление фотографии одежды.

Система рекомендаций. Недавно мы выпустили новую версию приложения с системой рекомендаций для магазина. До запуска у нас не было никаких рейтингов или отзывов о товаре, но был гардероб пользователя, то есть подходящим решением для нас была content based recommender. То есть, основываясь на том, что уже есть у пользователя и что ему нравится, мы предлагаем ему похожие вещи для покупки и для создаваемых нами образов. В первой версии мы используем текстовое описание вещей, формируем наиболее предпочтительные описание из пользовательского контента и с помощью алгоритма tf-idf находим наиболее подходящие предложения для гардероба, в магазин и в образы, которые пользователь может составить с уже существующими у него вещами.

На эту идею нас вдохновил курс recommender-systems на Coursera, мы даже используем похожее ПО. С появлением рейтингов мы планируем подключить более сложные алгоритмы для рекомендательных систем. Также в будущем подключим к рекомендации CNN, так как c их помощью можно получить не только классификацию, но и очень информативное численное представление изображения для ранжирования результатов, выданных алгоритмом tf-idf.

Стек технологий:
— C++, cuda и Python — сама модель и обучение;
— AWS GPU instance — как железо для обучения;
— Python (Flask) — для использования в продакшене системы распознавания и рекомендаций;
— Elasticsearch — для поиска и работы tf-idf;
— MongoDB — для хранения данных;
— Docker — для деплоя.

Результаты

Результаты распознавания очень хорошие, для нашей области мы достигли точности 89%.

До недавнего времени мы были сконцентрированы на разработке и уделяли мало внимания продвижению продукта, но в нашем приложении уже сформировалось сообщество пользователей из Европы и Америки, которые регулярно используют функцию Dress me. О Cluise написали Washington Post, TheStar и другие мировые издания, о нем рассказали в эфире популярного американского телешоу The Rachael Ray. На днях нас включили в список 10 лучших стартапов Украины, мы заняли второе место в конкурсе UVCA challenge.

Мы продолжаем работать над улучшением рекомендательной системы с учетом первых отзывов и работаем над расширением функций приложения. Ищем в команду ML Engineer, Support Manager, QA. Буду благодарен вам за рекомендации.

Похожие статьи:
Python — одна з найпопулярніших мов програмування серед українських розробників, яка має широку сферу застосування. Мова має порівняно...
Когда смотришь на появившийся на рынке монитор от EIZO FlexScan S1503, создаётся впечатление, что компания вернулась на десятилетие назад или...
В выпуске: описание современного стека технологий для production env, real time web — the web after tomorrow, сложности построения микросервисов, ведение...
Місяць тому запоріжцю Миколі Мухіну виповнився 61 рік. Програмуванням він займається вже понад 30 років, і нині буквально...
Существует огромное количество статей, научных трудов и практических советов по менеджменту в IT. Но найти информацию...
Яндекс.Метрика