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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Абстрактные пейзажи удаются CLIP Guided Giffusion 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


Источник

Поделиться ссылкой:

Total Views: 937 ,
 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *