[Перевод] 4,2 гигабайта, или как нарисовать что угодно

В нашем мире мы можем сделать всё, что захотим. Всё, что угодно.

Боб Росс, The Joy Of Painting, сезон 29, эпизод 1


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

Я представил огромный инопланетный объект, висящий в горящем оранжевом небе над давно покинутым Сиэтлом, здания которого покрыты зарослями.

Тем же вечером я за несколько часов создал вот такое изображение:

5a72a14bb0f72b43e6044d132938b8e9.png


Простите за низкое разрешение — к сожалению, у моего GPU всего 12 ГБ памяти.

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

Этап 1: небо


Давайте начнём с этого огненно-оранжевого неба. Вполне подойдёт небольшой градиент.

911f5fae1f7fa9a06a5d935d2f9ae1d4.png


На мой взгляд, выглядит красиво. Это соответствует оттенкам изображения, возникшего в моём мозгу.

Этап 2: земля


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

e4b838762724cd6e0f616faf885fe4f5.png


Этап 3: фон


На любом изображении Сиэтла обязано присутствовать два элемента: Спейс-Нидл и гора Рейнир.

Давайте добавим эту гору.

50abe27eb245db3fa59412b1b2bcc789.png


Прекрасно.

Этап 4: передний план


Думаю, чтобы оживить передний план, подойдут красивые тёплые цвета осени. Давайте добавим их где-то ближе к низу.

591468344fcf8ae552a2373b4d2fe147.png


Пусть эти пятна не совсем походят на деревья. Мы всегда можем передумать и сделать их чем-нибудь другим.

Самое важное, чему мы хотим вас научить — наслаждаться своей работой и хорошо проводить время.

Боб Росс, The Joy Of Painting, сезон 14, эпизод 1


Этап 5: город


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

Я хочу немного сместить Спейс-Нидл, чтобы она контрастировала с горой Рейнер.

b9959cfd3856d640d1afdfb5830bd8de.png


Всё выглядит очень здорово.

Этап 6: первый раунд Stable Diffusion


Теперь, когда у нас есть красивый черновик рисунка, давайте пропустим его через img2img Stable Diffusion и посмотрим на результат.

Рекомендую выполнять сэмплирование с несколькими разными seed и выбирать тот результат, который понравится больше.

Наверно, лучше начать с простого. Вместо того, чтобы перегружать строку полным запросом (инопланетный корабль, огненно-оранжевое небо, покрытые зарослями здания), давайте создадим картину Сиэтла, на основе которой потом продолжим работу. Значение ddim_steps можно оставить низким, около 50. Мы увеличим его ближе к завершению.

scripts/img2img.py –n_samples 1 –n_iter 1 –prompt "Digital fantasy painting of the Seattle city skyline. Vibrant fall trees in the foreground. Space Needle visible. Mount Rainier in background. Highly detailed.” –ddim_steps 50 –seed 47004 –scale 7 –strength 0.80 –init-img step5.png


«Цифровая фэнтези-картина с очертаниями города Сиэтл. На переднем плане яркие осенние деревья. Видна Спейс-Нидл. На фоне гора Рейнер. Высокая детализация».

91e51a14fc5fd893dd7e9e3f04c34b55.png


Мне нравится этот результат, однако я не очень рад, что Спейс-Нидл сместилась влево. Похоже, с разными seed она перемещается, поэтому пока сохраним её, а позже подберём seed с позицией получше.

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

Bob Ross, The Joy Of Painting, сезон 3, эпизод 5


Я предпочёл в первом раунде присвоить высокое значение strength, чтобы Stable Diffusion на полную силу использовала своё воображение. Если оно окажется слишком диким (например, нарисует несколько копий Спейс-Нидл), то strength можно уменьшить.

Для этого потребуется экспериментировать; кроме того, не все seed дают идеальные результаты. По моему опыту, если попробовать около десятка seed, то один-два вам понравятся.

Этап 7: делаем картину постапокалиптической


Теперь давайте превратим этот красивый город в руины.

Так как на предыдущем изображении чётко видны очертания Сиэтла, в следующей строке запроса можно уменьшить упор на «Seattle». Мы упомянем его, чтобы Stable Diffusion не слишком отдалилась от темы, но больший упор мы сделаем на новую часть, то есть аспект «постапокалиптичности».

scripts/img2img.py –n_samples 1 –n_iter 1 –prompt "Digital Matte painting. Hyper detailed. City in ruins. Post-apocalyptic, crumbling buildings. Science fiction. Seattle skyline. Golden hour, dusk. Beautiful sky at sunset. High quality digital art. Hyper realistic.” –ddim_steps 100 –seed 47200 –scale 9 –strength 0.80 –init-img inputs\step6.png


«Цифровая дорисовка. Гипердетализация. Город в руинах. Постапокалиптические осыпающиеся здания. Научная фантастика. Очертания Сиэтла. Предзакатный час, сумерки. Красивое небо на закате. Высококачественный цифровой арт. Гиперреализм».

aa7526d5691229c28a737b533999e69a.png


Сразу заметно следующее:

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

Гора Рейнер пропала, как и деревья с переднего плана.

Если бы мы хотели сохранить их, это можно было бы сделать. Просто дополнить строку запроса, упомянув эти элементы, и, возможно, уменьшить свойство strength до 0.70, чтобы ограничить творческую свободу Stable Diffusion.

Однако мне вполне нравится этот «творческий выбор» Stable Diffusion. С этой точки обзора деревья бы казались не на своём месте, а на картине слишком сильная дымка, поэтому гора Рейнер, скорее всего, не была бы видна. Кроме того, тёплый цвет деревьев стал зловещим свечением, а зелёная земля покрылась зарослями. Поэтому мне кажется, что это улучшило картину.

Вкратце о строках запросов


Если вы зайдёте в любое сообщество, посвящённое генерации изображений, то заметите, что во многих (в большинстве?) строках запросов упоминаются имена реальных художников.

Например, в этом творении, использующем следующую строку запроса (prompt):

gigantic extraterrestrial futuristic alien ship landed on  the kingdom of Julius Caesar, roman historic works in brand new condition, not ruins, hyper-detailed, artstation trending, world renowned artists, historic artworks society, antique renewel, good contrast, realistic color ,cgsociety, by greg rutkowski,gustave dore, Deviantart


«гигантский инопланетный футуристический корабль приземлился на владения Юлия Цезаря, римские исторические здания в совершенно новом состоянии, не руины, гипердетализированные, тренды artstation, знаменитые художники, общество исторических картин, восстановление антиквариата, хорошая контрастность, реалистичный цвет, грег рутковски, гюстав доре, Deviantart».

Похоже, добавление имён конкретных художников на самом деле улучшает результат.

Однако мне неловко пользоваться этим. Законно ли это? Абсолютно. Этично ли это? … Вероятно, да. Но всё равно это почему-то кажется мне неправильным.

Результаты работы этой модели настолько хороши, что введя в поисковике «Greg Rutkowski’s art», человек может найти результаты, в которые включены и настоящие работы художника, и сгенерированные искусственным интеллектом. И я не хочу вносить в это свой вклад. На самом деле, учитывая что, ИИ-модель может создавать подобия работ Грега Рутковски за считанные секунды, а реальному Грегу, вероятно, требуется много часов работы, нетрудно представить, что вскоре при запросах его работ поисковики будут выдавать больше сгенерированных ИИ картин, чем реальных. Это немного меня смущает.

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

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

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

Этап 8: космический корабль


Вернёмся к нашему творению:

aa7526d5691229c28a737b533999e69a.png


Возможно, вам захочется нарисовать космический корабль прямо на получившемся результате.

И я рекомендую вам сделать это! Получайте удовольствие и экспериментируйте.

Но насколько я понял, Stable Diffusion не очень хорошо справляется со «смешиванием» разного уровня качества. Её сбивает с толку, когда на одной картине присутствует безукоризненная Спейс-Нидл и детский рисунок космического корабля в стиле MS Paint.

Давайте продолжим работать в слоях и составлять изображение понемногу.

Вот мой потрясающий корабль:

8dedb33022098c21f0dd5363a214c006.png


Прошу прощения у Джорджа Лукаса.

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

eb3028287f1eea03356840d1f42681fd.png
scripts/img2img.py –n_samples 1 –n_iter 1 –prompt "Digital fantasy science fiction painting of a Star Wars Imperial Class Star Destroyer. Highly detailed, white background.” –ddim_steps 50 –seed 47001 –scale 7 –strength 0.80 –init-img step7.png


«Цифровая научно-фантастическая фэнтези-картина имперского Звёздного разрушителя из Звёздных войн, высокая детализация, белый фон».

Давайте просто закинем космический корабль на изображение:

346168034a1a9fa58711e90560e64822.png


Как будто он не на своём месте. Давайте сгладим его, снова пропустив через Stable Diffusion.

Этап 9: второй раунд Stable Diffusion


Этот раунд Stable Diffusion позволит нам решить две задачи:

  • Вписать корабль в изображение
  • Реинтерпретировать корабль с учётом контекста изображения


Если вам очень полюбился корабль из этапа 8, то вы можете выполнить раунд с очень низкой strength, чтобы Stable Diffusion не слишком его изменила.

Однако лично мне захотелось установить strength примерно на 0.80 и я оказался доволен результатом. Модель склонна удивлять меня, выдавая что-то лучше, чем я представлял.

Давайте пропустим изображение через несколько seed и посмотрим, что получится.

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

Красивый город, корабль не очень:

589bfbf3d740dd31756e6c8949d5fdd2.png


Отличный корабль, так себе город:

ceb2d285667ab4b932a8660a5d9cbe7f.png


Так… давайте просто скомбинируем их!

На этом холсте вы творец, поэтому решайте сами, что хотите добавить в этот мир.

Боб Росс, The Joy Of Painting, сезон 10, эпизод 12


Мы возьмём отличный корабль, вставим его в красивый город и выполним проход с низкой strength, чтобы не слишком сильно изменить тот и другой.

Вот как выглядит «скомбинированное» изображение, которое я на скорую руку создал в GIMP:

e528aabeaa0da4a553b08547be694870.png


Если уж мы редактируем картину в GIMP, неплохо будет добавить прямо посередине несколько летящих вдалеке птиц.

Давайте вырежем эту часть изображения и нарисуем на ней птиц:

88f61e3ee629a4f68172ebd37e90e9c9.png


А затем пусть Stable Diffusion поколдует над картиной:

fadbf5c746371c81739cd02abc3bfd05.png
scripts/img2img.py –n_samples 1 –n_iter 1 –prompt "Digital Matte painting. Hyper detailed. Brds fly into the horizon. Golden hour, dusk. Beautiful sky at sunset. High quality digital art. Hyper realistic.” –ddim_steps 50 –seed 47407 –scale 9 –strength 0.75 –init-img step14a.png


«Цифровая дорисовка. Гипердетализация. Птицы летят к горизонту. Предзакатный час, сумерки. Красивый город на закате. Высококачественный цифровой арт. Гиперреализм».

Соединим всё вместе копипастингом:

377c3997d4a44c04317885e36e6bcc86.png


И, наконец, последний проход с низкой strength, чтобы соединить всё это вместе и создать наш шедевр:

5a72a14bb0f72b43e6044d132938b8e9.png
scripts/img2img.py –n_samples 1 –n_iter 1 –prompt "Digital Matte painting. Hyper detailed. City in ruins. Post-apocalyptic, crumbling buildings. Science fiction. Seattle skyline. Star Wars Imperial Star Destroyer hovers. Birds fly in the distance. Golden hour, dusk. Beautiful sky at sunset. High quality digital art. Hyper realistic.” –ddim_steps 100 –seed 47413 –scale 9 –strength 0.20 –init-img step14c.png


«Цифровая дорисовка. Гипердетализация. Город в руинах. Постапокалиптические осыпающиеся здания. Научная фантастика. Очертания Сиэтла. Парит Звёздный разрушитель из Звёздных войн. Вдалеке летят птицы. Предзакатный час, сумерки. Красивое небо на закате. Высококачественный цифровой арт. Гиперреализм».

Обратите внимание, что для красивого смешения достаточно задать низкую strength — 0.20.

Мысли в заключение


4,2 гигабайта.

4,2 гигабайта.

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

4,2 гигабайта чисел с плавающей запятой, в которых каким-то образом закодировано столь многое из известного нам.

Да, я ударился в лирику. Нет, я не провозглашаю появление сильного ИИ, который будет нами править. Я просто любуюсь красотой ситуации, пока она нова и свежа.

Потому что новой и свежей она будет недолго. Мои ощущения не сильно отличаются от тех, которые возникли у меня при отправке первого электронного письма: бабушка уже получила моё сообщение? Во Флориде? За считанные секунды? Это было самым волшебным, что я видел в детстве. А теперь электронная почта — самая скучная и повседневная часть моего дня.

Многие уже говорят о практическом использовании. Преступном использовании. Преуменьшении важности. Преувеличении важности. Об искажениях. О монетизации. О демократизации — на самом деле это всего лишь монетизация с более удобным для маркетинга названием.

Я не буду говорить обо всём этом. Я просто думаю об этих 4,2 ГБ. Насколько это мало по сегодняшним меркам. Такой маленький объём, в котором хранится так много.

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

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

© Habrahabr.ru