Исследование передачи стиля с помощью нейронных сетей

Введение

Будучи студентом без каких-либо конкретных проектов, связанных с машинным обучением, мой интерес привел меня к генеративным нейронным сетям и к тому, как компьютеры могут создавать произведения искусства, которые может создать только тот, кто имеет опыт в искусстве. Я создал @mlphotostyle, простой в использовании инструмент, чтобы каждый мог превратить свои фотографии в произведение искусства. Просто опубликуйте в Твиттере две фотографии с тегом @mlphotostyle, и первая фотография будет оформлена в стиле второй. Примеры можно найти здесь: http://mlstylephoto.s3-website.us-east-2.amazonaws.com/gallery.html и по всей статье.

Как это работает

Потоковые твиты

Весь процесс начинается, когда пользователь твитит свои два изображения на @mlphotostyle. Программа использует потоковый API Twitter для получения твитов с тегом @mlphotostyle и определяет, можно ли их обработать, просматривая медиафайлы. Если они могут обрабатывать, соответствующая информация извлекается и записывается в базу данных на AWS RDS. Программа также запускает экземпляр EC2 m5.xlarge для обработки двух изображений. Для кода проверьте этот репозиторий Github.

Стилизация фотографий

Процесс стилизации начинается с загрузки двух фотографий из твита и изменения их размера до 512x512 пикселей. Хотя это ухудшает качество, два изображения должны иметь одинаковое разрешение, и это разрешение является максимальным, при котором результат может быть возвращен пользователю за разумное время. Также создается другое изображение, но это всего лишь массив случайного шума размером 512x512 пикселей. Затем алгоритм проходит через процесс градиентного спуска, чтобы сделать шум похожим на два изображения, отправленные пользователем. Затем конечный продукт загружается в Amazon S3, и пользователю отправляется твит, уведомляющий о том, что полученное изображение готово к просмотру. Для получения дополнительной информации об алгоритме ознакомьтесь с этой записной книжкой iPython. Полный код, работающий на экземпляре AWS, можно найти в этом репозитории Github.

Хостинг

MLstylephoto использует множество различных сервисов AWS, которые работают вместе. Веб-сайт представляет собой статический сайт, размещенный на S3. Стример Tweet работает на инстансе EC2 t2.micro, потому что он бесплатен в течение года. Фактическая программа стилизации работает на экземпляре EC2 m5.xlarge, который запускается каждый раз при получении нового твита.

Вывод

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

Кредиты

Авторы благодарны hnarayanan за блокнот iPython, который вдохновил проект. Спасибо разработчикам библиотеки python-twitter за создание простой обёртки API. Изображения, используемые в этой статье, являются моими собственными.