Можно ли обучить нейронную сеть рисовать картинку в определенном стиле?

10

Можно ли научить нейронную сеть рисовать картинку в определенном стиле? (Таким образом, он берет изображение и перерисовывает его в стиле, для которого он был обучен.)

Есть ли одобренная технология для такого рода вещей? Я знаю об алгоритме DeepArt. Хорошо заполнить основное изображение определенным рисунком (например, vangoghify image), но я ищу что-то другое - например, создание мультфильма в определенном стиле из входного портрета.

zavg
источник
3
Одним из препятствий к обучению нейронной сети от фотографии до мультфильма может быть нахождение набора обучающих данных. Кажется, что набор данных должен содержать фотографии и карикатуры, которые люди нарисовали на основе этих фотографий. Я не знаю ни о каких таких наборах данных.
Таннер Светт
@TannerSwett Как вы думаете, сколько изображений необходимо для такого обучения?
Завг
Я не эксперт, поэтому я могу только догадываться. Я думаю, вам понадобится как минимум тысяча изображений. Вам может понадобиться намного больше, чем это. Кстати, я предлагаю взглянуть на этот инструмент: github.com/hardmaru/sketch-rnn Этот инструмент был использован для создания подражания китайским иероглифам; может быть, аналогичный инструмент может генерировать имитации мультфильмов.
Таннер Светт
Возможно, я немного устарел, поскольку мое обучение NN было некоторое время назад, но если вы думаете о том, чтобы просто обучить сеть с несколькими тысячами изображений и ожидать, что она сможет воспроизводить изображения в стиле, которого вы, возможно, достигаете слишком далеко - если вы думаете, что это хороший стартовый проект, то не надо. Для достижения того, что вы описываете, потребуется «много» ручных манипуляций. Подумайте о знаниях, необходимых для интерпретации изображения, а не только по шаблону.
Питер Скотт
Также стоит посмотреть на vox.com/2016/6/1/11787262/blade-runner-neural-network-encoding
Питер Скотт

Ответы:

12

Существует соответствующая статья: Л. А. Гатус, А. С. Экер, М. Бетге, 2015, Нейронный алгоритм художественного стиля . Цитирую из аннотации,

Здесь мы представляем искусственную систему на основе Deep Neural Network, которая создает художественные образы высокого качества восприятия. Система использует нейронные представления для разделения и рекомбинации содержимого и стиля произвольных изображений, обеспечивая нейронный алгоритм для создания художественных изображений.

Вот рисунок 2 из этой статьи:

введите описание изображения здесь

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

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

Изменить: после проверки упомянутого проекта DeepArt, кажется, что он использует те же методы. Я не уверен, почему это не то, что вы хотите, потому что концепция передачи стиля является настолько общей, насколько это возможно.

Sascha
источник
4
Мультфильмы преувеличивают и упрощают черты всего, что они изображают, создавая формы, которые очень сильно отличаются от форм на фотографии. Я не верю, что существующие нейронные сети передачи стиля когда-либо делали это.
Таннер Светт
@TannerSwett Посмотрите на примеры здесь: imgur.com/a/ue6ap . Некоторые из них довольно мультипликационные.
амеба
@amoeba Да, они выглядят мультяшными, но ни у одного из них нет искаженных пропорций, которые есть у большинства настоящих мультфильмов.
Таннер Светт
Мы говорим о передаче стиля здесь. Во всех примерах используется какой-то априори выбранный стиль, где ни один из них не был мультяшным (почему результат должен выглядеть мультяшным, когда он узнал о Ван Гоге). Может быть, вы могли бы просто запустить проект с открытым исходным кодом (у меня не было проблем в прошлом) и попробовать его с помощью Cartoon-Input.
Саша
7

Это довольно сложная проблема для решения. Здесь вы можете увидеть несколько примеров того, как стиль мультфильма, например, от Симпсона, был применен к изображению.

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

Редактировать:

Комментарий @TannerSwett добавляет кое-что к этому, есть возможность зайти на веб-страницы некоторых художников и попытаться найти их иллюстрации и попытаться выучить «их» стиль. Я все еще не думаю, что это удовлетворительно или даст достаточно данных, но это было бы интересно проверить. В настоящее время нет общедоступного решения, но я думаю, что определенно некоторые люди работают над этим, и мы скоро увидим лучшие результаты.

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

Gumeo
источник
1
Этот пример Симпсона выглядит довольно круто для меня @Gumeo
FabricioG
1

Это не должно быть слишком сложно сделать. Не читал упомянутую статью, вот мой рецепт:

Вариационные Авто Кодеры

Онлайн-демонстрация с морфингом лиц: http://vdumoulin.github.io/morphing_faces/online_demo.html

и https://jmetzen.github.io/2015-11-27/vae.html для кодеков.

По сути, это дает вам возможность параметризовать «стиль» в вашем случае, например, скажем, насколько широким или размытым должен быть мазок кисти. Материал, который зависит от стиля, которому вы пытаетесь подражать.

В приведенном выше примере различные «морфированные» или «воображаемые» грани являются функцией параметров в скрытом пространстве. На изображении ниже это будет то, что вы получите, изменив материал на уровне кода.

Вот основная идея: оригинальное изображение слева, стилизованная версия того же изображения справа:

введите описание изображения здесь

Теперь, теоретически, если вы натренируете такую ​​модель на обычном изображении и стилизованном изображении в качестве цели и добавите свертки, вы сможете изучить фильтры ядра , соответствующие типу «мазков кисти», которые использует художник ,

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

Удачи!

Хорошей отправной точкой будет статья в вики об авто кодировщиках: https://en.wikipedia.org/wiki/Autoencoder

сюрикен х синий
источник