образовательная корпорация

Нейронные сети, Пушкин и фрукты

23 апреля 2018 г. на площадке театра юного зрителя СамАрт состоялся Творческий отчет ДШИ №8 «Радуга» под названием «Поколение NEXT выбирает Пушкина».

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

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

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

C собой взяли:
  1. Большой телевизор, чтоб всем было хорошо все видно
  2. Бытовую домашнюю веб-камеру для быстрого отсмотра картинки
  3. Камеру ближнего боя Intel RealSence SR300
  4. Камеру дальнего боя Intel RealSence R200
  5. Маленький сервер на базе core i7 с графической картой NVidia GT 750
  6. Несколько наборов MakeyMakey
  7. Пару яблок, банан и огурец (но об этом позже)
Программная часть:
Стилизацией изображений в наше время занимаются нейросети. Пару лет назад был очень популярен neural-doodle. Он позволял делать простые мазки основными цветами, а затем обрабатывал их в стилистике какого-либо мирового художника. На тот момент обработкой и отрисовкой занимался процессор и делал это очень мучительно, порядка 2-3 часов выходило на картинку.
Чуть позже к такой обработке подключили видеокарты, и на данный момент лучшие показатели выдают параллельные вычисления на ядрах CUDA, которые живут на картах от NVIDIA.

При разработке мы отталкивались от идей одной из первых широко известных реализаций нейросети на базе Torch (платформа глубинного обучения) - jcjohnson/neural-style, но очень печалила скорость обработки - она составляла около семи минут на восьми ядрах i7, либо около двух-трех минут на видеокарте. А на месте проведения не было места под несколько серверов, чтоб ускорить вычисления, и, в идеале, нужно было обойтись ноутбуком. Поэтому пришли к более быстрой реализации yusuketomoto/chainer-fast-neuralstyle на базе другой платформы обучения нейросетей chainer. На которой, благодаря оптимизациям и некоторому послаблению к качеству удалось достичь скорости обработки - примерно одну секунду на фотографию (800*600).

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

Шаблоны выбрали такие:

Лукоморье
Это сочные, живые цвета. Яркая сказка.
Для данной категории идеально подходило направление модерн.
Детские рисунки по сказкам Пушкина
За основу взяли акварельные и рисунки гуашью, немного смешали их с кубизмом.
Морская тема
Волны, берег, шторм. Решили немного отойти от темы и посмотреть, что будет, если добавить "морских кудряшек" с японских гравюр.
Светские балы
Теплые тона, классическое представление. Использовали технику дивизионизма (рисование квадратными мазками и точками), плюс смещение цветового фона фотографии в светлые тона.
Карандашный набросок
Рисунки на полях - все как в оригинальных рукописях Пушкина. Смесь абстракцианизма с карандашными скетчами.


Финальная реализация выглядела следующим образом:

На телевизоре развернуто веб-приложение с несколькими областями:
  1. Живая картинка с бытовой камеры - чтоб можно было найти себя в кадре, принять красивую позу и сделать фотографию
  2. Предпросмотр необработанного изображения
  3. Один из пяти шаблонов для работы нейросети
  4. И сам результат
Рядышком было запущено консольное приложение на питоне, которое реагировало на нажатия определенных клавиш и отдавало команды веб-приложению и нейросети.

Саму клавиатуру мы спрятали и людям предстояло изучить другой способ взаимодействия со стендом. Изначально было задумано, чтобы зрители управляли процессом съемки и выбором шаблона с помощью жестов - именно поэтому взяли дальнюю камеру R200, но не вышло - в помещении было слишком шумно (тепловой и цифровой шум), настолько, что объемные датчики на обеих камерах просто не справлялись и плохо ловили контуры человека. А, учитывая, что дети подходили не по одному - эта идея оказалась несостоятельной.

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

Для того, чтобы сделать фотографию, надо было одновременно прикоснуться к огурцу и банану; чтобы применить фильтр - к яблоку и огурцу. Такой подход к управлению надолго озадачивал и приводил в восторг детей, а взрослые с недоверием косились на еду, из которой торчали маленькие проводочки. Но быстро адаптировались и получали удовольствие от командования стендом с помощью фруктов.



В результате, за время мероприятия стенд сделал около семиста снимков, работал он четыре с половиной часа, из них чистых вычислений было 14 минут.
Интерактив исправно держал нагрузку, выдержал натиск любопытных посетителей, и ему удавалось генерировать картинку 640х480 пикселей за полторы секунды. Вышло вполне приемлимое время ожидания.

Некоторые заметки по шаблонам

Лукоморье
Самая яркая и контрастная картинка на выходе. Из-за этого сильно чувствительна к исходным пересветам и теням на фотографии. Очень просто лишним светом создать контрастные однородные пятна на фото. Пересвеченные фотографии выходили с черепами вместо лиц.
Детские сказки
С кубизмом вышел перебор, резкие грани совсем перебили тематику и получались любопытные, но не тематические результаты. Нейросеть получила слишком мало акварельных рисунков для анализа, поэтому основной паттерн обработки изображений остался в кубическом стиле.
Морская тема
Результат получился спорный, где-то излишне уходящий в волны-кудряшки, либо с сильным смещением в синий цвет. Однако вариант интересный, годится для дальнейшего обучения и поисков.
Карандашный набросок
Самый первый и самый "неопытный" шаблон. И, как первый блин комом, эта модель выдавала слишком неоднозначные варианты, простые карандашные рисунки были слишком разбавлены моделью с абстракциями. И то, что получилось, слишком мало напоминало зарисовки на полях. К тому же, это самая тяжелая реализация модели нейросети - на некоторых фотографиях думала до 4х секунд.
Светские балы
Самый востребованный вариант среди участников. Нейросеть по этому шаблону выдавала результат, наиболее похожий на оригинальное изображение, искажения и дорисовка заключались в корректировке цвета и точечных штрихах. Конечный результат был легко узнаваем и психологически приемлем для зрителя.


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


Главная цель интерактива - привнести что-то эмоциональное и технически необычное - была выполнена на 100%. В чем можно убедиться, просмотрев в галерее довольные фотографии. Многие дети подходили по нескольку раз и уже откровенно ловили кураж от происходящего!



Скачать архив фотографий (49МБ) | Галерея



P.S. И, конечно же, в процессе обучения мы тренировались на котиках!


И никто не пострадал. Разве что - если только немножечко морально.