1520

Нейросеть, создающая картинки из текста

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

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Да, это всё нарисовала она


Для начала небольшая справка. Нейросеть называется CLIP Guided Diffusion HQ. О чём это нам говорит? HQ — понятно, высокое качество. CLIP (Contrastive Language-Image Pre-Training) — это такой сравнительно новый метод обучения мультимодальных нейросетей. Мультимодальность в данном случае означает одновременную обработку разных типов данных — текста и изображения. Предыдущие сети, умевшие рисовать картинки, в основном относились к типу GAN (генеративно-состязательные). У этого подхода есть свои плюсы и минусы, ну да сейчас не о нём. Diffusion означает диффузионный метод формирования изображения, при котором из «затравочной» картинки поэтапно удаляется шум. Затравка может быть осмысленным изображением или случайным набором пикселей.

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Типичная затравка. Когда б вы знали, из какого сора...


Примечательно, что CLIP Guided Diffusion HQ была обучена не на заранее размеченных наборах данных, а на 400 миллионах пар «картинка-текст», взятых просто из интернета. Да, мемы с котиками, рисунки фурей с Deviantart и предвыборные плакаты Трампа — всё это сеть впитала в себя, словно дух реки из «Унесённых призраками». Причём алгоритм сам определял, какой текст к какой картинке относится, что привело к некоторым любопытным особенностям. Чтобы хоть немножко «окультурить» нейронку, авторы вручную добавили в датасет ещё 500 тысяч изображений, которые ищутся по словам из заголовков статей английской Википедии.


Но довольно теории, ведь все понимают, ради чего мы тут собрались, — ради наркоманских картиночек, конечно же! Попробовать CLIP Guided Diffusion HQ можно много где. Естественно, все вычисления будут выполняться не на вашем компьютере, а на удалённой виртуальной машине. Код требует мощного графического ускорителя с кучей памяти. Нет, можно запускать и на CPU, но тогда результат работы увидят только ваши внуки.


Для начала предлагаю попробовать простой веб-интерфейс, позволяющий немного поиграть шрифтами параметрами.

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Запрос вводится в поле text, ползунок timestep respacing задаёт количество итераций (чем больше, тем проработаннее будет картинка), остальные параметры первое время можно не трогать. Нажимаем [Submit], ждём несколько минут и получаем свою дозу ЛСД размером 256 × 256 пикселей. Да, негусто, но таковы ограничения используемого датасета и доступной аппаратуры. О том, как можно поднять разрешение, мы ещё поговорим в конце поста.


Вот так, по мнению нейросети, выглядит «pikabu».

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Не спрашивайте меня, почему он похож на чёрную дождевую лягушку с анальной пробкой!

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

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


Абстрактные пейзажи удаются CLIP Guided Diffusion HQ намного лучше. Например, вот эту иллюстрацию по запросу «Песнь льда и пламени» (естественно, по-английски) можно хоть сейчас ставить на обложку метал-альбома.

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Кстати, насчёт перевода. Мне стало любопытно, не было ли в обучающей выборке текстов на кириллице. Я сформулировал максимально простой запрос, по которому было бы очевидно, поняла меня сеть или нет, — «синий треугольник». В общем, не повторяйте моих ошибок!

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Теперь этот мужик будет являться ко мне во снах.


Если написать тот же текст латиницей, результат будет не лучше. Хоба!

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

В общем, про русский язык можно забыть.


По запросу «steampunk» удалось получить затейливые узоры из латунных трубок и клапанов, эдакий Царь-саксофон.

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Но в целом с техникой нейросеть справляется плохо. Сколько раз я ни просил её нарисовать самолёт, паровоз или танк, получалась какая-то ерунда.


Не стоит ждать от неё и угадывания того, что именно вы имеете в виду. Скажем, вводя запрос «Heroes III», я был уверен, что получу какую-то вариацию на тему скриншотов из игры. А получил вот что:

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Ну, тут отдалённо угадываются фигуры в доспехах и с оружием... Видимо, это герои. Три штуки!


Любопытные картинки получаются, когда сети попадаются слова с множественными значениями. Скажем, «Red Square» — и «Красная площадь», и «красный квадрат». Нейросеть не могла знать, что именно от неё хотят, поэтому на всякий случай сгенерировала картинку «и нашим, и вашим» — красный квадрат, но со структурой брусчатки.

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Ещё немного крипоты по запросу The Hound of the Baskervilles.

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

«Это я, сэр Генри. Помоги выбраться из собаки!»


Понимания культурного контекста кремниевым мозгам, конечно, не хватает. Я предложил сетке сгенерировать обложку для книги «Снятся ли андроидам электроовцы?». В результате получилось изображение с двумя подключёнными к электросети смартфонами (видимо, на Android), на экране которых изображены овцы.

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

— Какие претензии? Андроиды есть? Есть. Овцы есть? Есть. Электрические? Ну так ясен хрен, что не живые! Иди отсюда, кожаный мешок, ты сам не знаешь, чего хочешь!


Впрочем, в чём слабость сети, в том и её сила (простите, что заговорил цитатами из пацанских пабликов). Она честно пытается интерпретировать все слова, которые вы включили в запрос, и если ей знакомо что-то похожее, может получиться очень интересный результат. Нет никаких формальных правил, просто вписывайте туда всё, что придёт в голову. Например, добавляя в конце by <имя_художника>, можно получать картины в его стиле.

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Harry Potter by Wassily Kandinsky и Robinson Crusoe by Claude Monet


Если нужен конкретный цвет, это тоже можно добавить в запрос — скорее всего, сработает. Повторю фрагмент стартовой картинки:

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

1. Scientific certainity by Salvador Dali in blue

2. Alchemist by Boris Vallejo in orange


Остальные две иллюстрации, если что, это The Picture of Dorian Gray by Giuseppe Arcimboldo и The Lord of the Rings by Arnold Böcklin.


Если требуется дорисовать (ну или сделать более наркоманской) существующую картинку, её нужно добавить в поле initial image. Параметр skip_timesteps влияет на то, на сколько итераций нейросеть может уйти в своих фантазиях от предложенного образа, а clip guidance scale определяет, насколько строго его нужно придерживаться.


Хороший результат получается не всегда. Скажем, попытка скрестить образы Бога-Императора и Владимира Путина лишь сделала Императора более недовольным.

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Была и другая картинка по тому же тексту, но её я покажу, только если очень-очень попросите.


I need MOAR!


Если вам мало возможностей huggingface.co, советую обратиться к оригинальному коду авторства Katherine Crowson. Заходите сюда под гугл-аккаунтом, нажимайте «Подключиться» в правом верхнем углу и надейтесь, что вам не выпадет сообщение о том, что доступен только центральный процессор. Если же вам предоставили GPU, самое время заглянуть в зубы дарёному коню. Для этого поставьте курсор на первый блок кода и нажмите Ctrl+Enter, чтобы выполнить его. На экране появится информация о графическом ускорителе виртуальной машины.

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Скорее всего, вам достанется средней паршивости Tesla K80, на котором картинка в хорошем качестве считается полчаса–час. Но если повезёт (чаще всего это бывает ночью), можно заполучить и Tesla T4, а это уже означает ускорение почти на порядок плюс некоторые дополнительные возможности, о которых я скажу далее.


Чтобы шестерёнки завертелись, нажимайте Ctrl+F9 (ну или [Среда выполнения → Выполнить всё]). Потребуется время на установку необходимых пакетов и скачивание самой модели, обычно в пределах десяти минут. Изредка нужно проявлять активность в этой вкладке, иначе Google будет ругаться, что вы зря тратите его ресурсы.


Основные параметры задаются в блоке Settings for this run.

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Если вы хотите работать только с текстом, ничего кроме prompts вам не нужно. Если же требуется стартовая картинка, вставьте её URL в одинарных кавычках вместо None вот сюда:
init_image = None. Также рекомендую для начала skip_timesteps = 300 и init_scale = 1000.


Количество итераций задаётся в блоке Model settings параметром timestep_respacing. Значение должно быть в одинарных кавычках.

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

Я бы для начала ставил 500 или даже 250, особенно если вам достался слабый ускоритель. 1000 необходимо для максимальной проработки и звенящей чёткости деталей.

Кстати, о чёткости. Как я уже говорил, эта сеть умеет делать картинки размером только 256 × 256. Задача сгенерировать изображение по тексту очень сложна, так что даже на одну такую картинку уходит больше вычислений, чем в своё время потребовал весь атомный проект СССР. Но вот задача увеличить разрешение с сохранением чёткости куда проще, и её вполне можно перепоручить другой нейросети. Тут я уже не буду подробно расписывать, можно почитать обзор и выбрать понравившуюся. Есть полностью бесплатные, есть с триальным периодом. Некоторые иллюстрации прямо сильно выигрывают от апскейла.

Нейросеть, создающая картинки из текста Нейронные сети, Руководство, Длиннопост

«Квантовый портал в стиле Сталкера», увеличение 4x через deep-image.ai


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


Ну и, наконец, о дополнительных возможностях, которые дарует ускоритель Tesla T4. У него 16 ГБ памяти, а это значит, что на нём можно запускать продвинутую версию той же нейросети, которая сразу генерирует картинки размером 512 × 512 пикселей. Доступна тут.


Вообще у нейросетей, основанных на методе CLIP, есть много вариаций. Я показал только три самые простые, с которыми можно быстро начать работу. Но если поискать, вы найдёте и другие.


Ещё раз основные ссылки для ЛЛ:


1. Совсем просто

2. Немного заморочиться

3. Если повезёт заполучить Tesla T4


Кидайте в комменты ту занятную дичь, что у вас получится!

Автор поста оценил этот комментарий

Возможно, вы путаете реальность с серией доктора Хауса. Если нет - то художница стырила идею оттуда :)

раскрыть ветку (1)
29
Автор поста оценил этот комментарий

Не знал, что Доктор Хаус выходил в 1974 году. Впрочем, чего только в мире не бывает. Однажды и вовсе Виктор Цой украл песню у Полины Гагариной ;)

8
Автор поста оценил этот комментарий

Тянет

Иллюстрация к комментарию
раскрыть ветку (1)
66
Автор поста оценил этот комментарий

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

Иллюстрация к комментарию
показать ответы
14
Автор поста оценил этот комментарий

"Была и другая картинка"


Ну и?

раскрыть ветку (1)
14
Автор поста оценил этот комментарий

Ну не, это не тянет на «очень попросим»!

показать ответы
20
DELETED
Автор поста оценил этот комментарий
Эх.. хотел поиграться, но видать не судьба ☹️
Иллюстрация к комментарию
раскрыть ветку (1)
10
Автор поста оценил этот комментарий

Эффект Пикабу) Тогда пробуйте по второй ссылке, у меня пока работает.

показать ответы
1
Автор поста оценил этот комментарий

А я не умею в нейросети.


Покажите мне, пожалуйста, Солярис Лема.

Спасибо)

раскрыть ветку (1)
5
Автор поста оценил этот комментарий

Но ведь в посте описано всё для того, чтобы начать «уметь»)

показать ответы
2
Автор поста оценил этот комментарий

Мне даже в Лигу лени вступить лень...

раскрыть ветку (1)
4
Автор поста оценил этот комментарий

Ну ладно, только для вас и только сейчас) Картинки по запросам Solarian Ocean и The thinking ocean of Solaris, 500 итераций. Понятно, что сеть не знает этой реалии и пытается как-то скрестить Солнце с океаном. Думаю, лучшего результата можно будет достичь, если что-то дописать про планету. Но это уже сами!

Иллюстрация к комментарию
Иллюстрация к комментарию
показать ответы
0
Автор поста оценил этот комментарий

Блин, Tesla K80 мне выдали сразу а оно не может до конца выполнить код так как на этапе подгрузки установок модели идёт переполнение ОЗУ и прерывание сеанса :/

раскрыть ветку (1)
4
Автор поста оценил этот комментарий

Это изредка случается, обычно помогает переподключиться. Главное — не перепутать модель. На K80 может работать только 256×256.

показать ответы
DELETED
Автор поста оценил этот комментарий
А точки и запятые это просто набор символов и их придумал какой-то зануда
раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Судя по вашим комментариям, вы разделяете эту позицию.

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

Иллюстрация к комментарию
показать ответы
DELETED
Автор поста оценил этот комментарий
Не рисует она ничего. И не нейросеть, а программа написанная человеком создаёт составные картинки методом подбора, исходник знаки алфавита, точнее номера под которыми они значатся. Это как синтезатор речи, только изображений.
раскрыть ветку (1)
3
Автор поста оценил этот комментарий

А часы на самом деле никуда не идут, потому что у них ножек нету. Это лишь вращение шестерёнок под воздействием механической энергии, запасённой в пружине.

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

показать ответы
3
Автор поста оценил этот комментарий

а я так и не понял, куда надо жать, чтобы выиграть(

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

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

0
Автор поста оценил этот комментарий

Офигенно!

В том-то и дело, что не только сеть, но и никто не знает этой реалии.

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

Как по мне- похоже)


Спасибо вам огромное!

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

The thinking ocean of the planet Solaris, 500.

Иллюстрация к комментарию
показать ответы
0
Автор поста оценил этот комментарий
4615 минут. Спасибо было очень интересно
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

На этот случай есть вторая ссылка и инструкция в посте)

4
Автор поста оценил этот комментарий
Mad Max, Lord of the Rings, Starship Troopers
Иллюстрация к комментарию
Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Супер! Какие настройки?

DELETED
Автор поста оценил этот комментарий
Говно твой сервис, бро. Мало того, что очереди по 600к плюс, так он еще до конца ничего не может сделать и вылезает error
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Как хорошо, что он не мой. Ну и если не работает первая ссылка, кажется, даже для члена ЛЛ не слишком сложно перейти по второй)

показать ответы
1
Автор поста оценил этот комментарий

Ув. @moderator, только сейчас заметил, что я слепошарик и везде в посте писал CLIP Guided Giffusion HQ. Должно быть, конечно, Diffusion. Опечатка существенная, может помешать пикабушникам в дальнейшем искать информацию об этой сети. Тысяча извинений за беспокойство, но всё-таки — исправьте, пожалуйста.

2
Автор поста оценил этот комментарий

@BootSect, подскажи, пожалуйста, возможно ли этот код выполнить на 8 гигах видеопамяти? Пускай даже медленно. У меня удалось лишь меняя параметр до cutn = 5, но тогда никаких картинок. А настройки по-умолчанию уходят в out of memory.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Не эксперт в этом вопросе, но предположу, что без серьёзной переработки кода — нет.

0
Автор поста оценил этот комментарий

С шестого раза запустилось после переподключения, ещё и ОЗУ всего на 10% забилось.

Видать я где-то в прошлые разы с подргузкам накосячил и туда закидал кучу мусора который там застрял.


А сама платформа collab research потряская - как идеей так и визуалом. В программисты что ли всё таки пойти...


P.S. - а как там перезапускать генерацию с новыми вводными без подгрузки всего по новой через Ctrl+F9?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Забыл написать. По Ctrl+F10 с позиции, где были изменения.

показать ответы
0
Автор поста оценил этот комментарий

Вот что получилось по вашему запросу. 1000 итераций, но картинка всё равно нечёткая — видимо, мало было в выборке картинок по таким словам. Но всё-таки угадываются какие-то фото из Припяти и тень посередине. Так что у вас с вероятностью 99% был инопланетный друг)

Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

И вот ещё 600 итераций по тому же запросу, но немного с другими настройками.

Иллюстрация к комментарию
показать ответы
0
Автор поста оценил этот комментарий

забавно, если повторите сбросьте что у вас получится)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Вот что получилось по вашему запросу. 1000 итераций, но картинка всё равно нечёткая — видимо, мало было в выборке картинок по таким словам. Но всё-таки угадываются какие-то фото из Припяти и тень посередине. Так что у вас с вероятностью 99% был инопланетный друг)

Иллюстрация к комментарию
показать ответы
2
Автор поста оценил этот комментарий

"Stalker Shadow of Chernobyl" 500-я и финальная

Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Честно говоря, это очень похоже на то, что он рисует по базовому запросу "alien friend by Odilon Redon". Надо будет повторить ваш запрос про Stalker, но пока есть ощущение, что ваша строка почему-то не применилась.

показать ответы
1
DELETED
Автор поста оценил этот комментарий
Только ждать, перезагруз только собьёт все
вот еще

первое He built a house over the catcher in the rye. At night and during the day, the light does not go out in the windows, But there is no other road through the forest!

и второе Thyme, sage, night herbs smell sharper. Pick a handful of them before the Ground freezes through. We run at random.Blood oozes from fresh stigmata. You can't go back. And this means that everyone is for himself!

текст взял из песни би 2 "над пропасть во ржи"
должна была быть третья, но я случайно перезагрузил страницу, а в очереди уже больше 10 чел и по времени 3000сек
Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Первая картинка шикарна! Я не пробовал задавать такие длинные входные строки, нужно будет поэкспериментировать. И да, я всем настоятельно рекомендую переходить на Colab (вторая ссылка в конце поста), там почти всегда доступно.

показать ответы
1
DELETED
Автор поста оценил этот комментарий
Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Офигеть, кто-то таки дождался) Только, кажется, не стоило одновременно заполнять и text, и image prompt. Я не знаю, какой рисунок вы хотели получить, но если требовалось, чтобы он больше был похож на init_image, нужно было сильно увеличить Init_scale.

показать ответы
0
Автор поста оценил этот комментарий
Не знаю, по ссылке перешёл. Хз, всё ли правильно делаю.
Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ой, на веб-интерфейсе уже давно пора поставить крест, эффект Пикабу всё обрушил. Судя по счётчику, вам надо ждать неделю) Переходите по второй ссылке из моего поста, запускайте код в Colab — там всё должно работать без проблем и относительно быстро.

показать ответы
0
Автор поста оценил этот комментарий
Я на ночь оставил. В итоге выдало ошибку. В параметрах ничего не менял. Скажите, почему так долго?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

Иллюстрация к комментарию
показать ответы
0
Автор поста оценил этот комментарий

А на домашней 1070 будет не быстрее чем на К80? Как это все завертеть на домашнем ПК? Можно просто скопировать код?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

В принципе можно, но не в пару кликов. Другие колабовские ноутбуки я запускал локально через jupyter, правда, пришлось повозиться с несовместимыми версиями пакетов и странными ошибками при установке. С этой моделью не вышло, т. к. ей для работы нужно никак не меньше 8 ГБ видеопамяти, а у меня только 6. В общем, попробуйте, если получится — расскажите, как оно.

показать ответы