VSCO — одно из наиболее популярных мобильных приложений для обработки фото. Приложение помогает выбирать подходящие фильтры к фотографии с помощью сверточных нейросетей.
Разработчики используют машинное обучения для рекомендации пресетов. Пресеты представляют собой настроенные наборы с фильтрами. Всего пресетов в приложении 160. Это наглядный кейс коммерческого масштабируемого использования глубокого обучения.
Идея рекомендации пресетов в том, чтобы облегчить для пользователя выбор между фильтрами. Чтобы решить эту задачу, разработчики используют сверточную нейросеть на задаче классификации. Количество классов получается равно количеству пресетов. При этом сама модель напрямую связана с приложением.
Видеодемонстрация работы функционала доступна ниже.
Пользователю рекомендация показывается в поле “For This Photo”. Как только пользователь загружает фотографию и начинает ее редактировать в приложении, изображение идет на вход модели. В свою очередь, модель выдает рекомендуемый пресет. Разработчики говорят, что функционал с рекомендацией второй по популярности после функции “All”, которая показывает все пресеты.
Модель выдает рекомендацию в формате 6 наиболее вероятных предсказаний модели. Разработчики отдельно регулируют, чтобы пресеты были разнообразными.
Машинное обучение в смартфоне
Изначально команда не рассматривала возможность держать модель на сервере для рекомендации. На это были три причины, которые необходимо было учитывать:
- Офлайн обработка изображений, чтобы не ограничивать пользователей без доступа в интернет;
- Cкорость: при хорошей скорости интернета вариант с облачным машинным обучением работал бы долго, учитывая все этапы обучения, а при низкой скорости — работал бы еще дольше, что нежелательно;
- Приватность данных, чтобы не хранить фотографии пользователей в облаке на время обучения
Что внутри модели
Разработчики использовали ML Kit от TensorFlow и TensorFlow Lite. Архитектура CNN, которая использовалась, основывалась на SqueezeNet. Эта архитектура была выбрана из-за своей компактности, которая несильно влияет на точность предсказаний.