Сегодня я подведу логическую черту под серией статей про создание изображений в нейросетях методом Img2Img, он же Image to Image, или "картинка по картинке".
Предыдущие три статьи с подробным объяснением того, что это за метод и как он работает, можно найти в разделе ИИ-интенсив этого блога.
В самом начале знакомства с нейросетями мои представления о том, как работает Image to Image, были довольно туманными. Поэтому мне не приходило в голову ничего лучше, чем наугад скрещивать случайные фотографии со случайными же описаниями — старый добрый метод научного тыка. В общем, в отдельных случаях получалось даже интересно, но смысл и практическая польза в этом занятии начисто отсутствовали.
К тому же первой нейросетью, с которой проводились мои эксперименты, стал "Кандинский". А у него, как стало очевидно из предыдущей статьи по теме, по Image to Image не самые высокие оценки. Да и вообще, все нейросети выполняют генерацию картинки по картинке с очень разными результатами.
Есть ли у них при этом что-то общее, и для каких целей вообще можно использовать Image to Image, разберёмся сегодня. Будет немного длинно, зато очень наглядно.
Image to Image — осознанное использование
В принципе никто вам не запрещает экспериментировать, как я, и пробовать самые нелогичные сочетания картинки и текста. Иногда действительно могут выходить неожиданно хорошие результаты, но чаще — полная ерунда.
Однако на самом деле разработчики предлагают использовать этот метод для другого, а именно — для создания копий изображения. Причём не точных копий, а таких, степень сходства которых с оригиналом можно контролировать.
Кроме того, можно по своему усмотрению устанавливать художественный стиль изображения, а это, как мы увидим дальше, очень полезная штука.
Применять Image to Image осознанно можно как для развлечения, так и в практических целях. Первое, что тут может прийти в голову — генерация бесконечных вариаций чьих-либо портретов в разных жанрах. Сегодня, например, мне под руку попалась Зендея:
Впрочем, для создания разного рода аватарок уже существует куча специализированных приложений, которые ничего другого и не делают. Так что этот вариант применения Image to Image я считаю самым малозначительным.
А вот возможность исправлять недочёты в изображении — из числа действительно полезных свойств. Помните комплект новогодних стикеров, сгенерированных DALL-E? Так вот, на самом деле нейросеть там не везде справилась на пятёрку. Кое-что пришлось всё-таки переделывать, где-то руками, а где-то — призвав на помощь Image to Image.
На этом котёнке, например, обнаружились обрывки провода от гирлянды, разбросанные по нему случайным образом. Можно было вооружиться инструментами Photoshop и удалить их один за другим вручную, а можно загрузить картинку в Playgroundai, ввести точное её описание ("стикер; котёнок в шапке Санты, обмотанный гирляндой, держит ёлочный шарик, векторная иллюстрация" — только, разумеется, по-английски) и подобрать подходящее значение Image Strength, чтобы результат не слишком далеко отходил от оригинала. В моём случае удачным оказалось значение 35.
И вуаля!.. Провода исчезли. Правда, не исчез второй хвост. Его пришлось ампутировать уже в Photoshop.
Необходимость что-то подправить в картинке может возникнуть у вас, даже если вы генерируете изображения просто для развлечения. Но, как ни парадоксально, возможность создания картинки по картинке может принести максимум пользы именно тем людям, которые при появлении нейросетей громче всех кричали "Караул!": художникам и дизайнерам.
Image to Image для дизайнеров
Пример 1
Допустим, я графический дизайнер в рекламном агентстве. Передо мной стоит задача создать рекламный макет для продвижения мужского шампуня. Мне подходит поза Тимоти Шаламе на фото, найденном в Интернете, и я хочу использовать изображение мужчины, сидящего в такой позе. Для моих целей также идеально подошла бы причёска Тимоти Шаламе, разве что волосы для рекламы стоило бы сделать пышнее. По понятным причинам я не могу использовать личность Тимоти в рекламе, но я могу наштамповать десятки вариантов фото никогда не существовавших мужчин со свежевымытыми и уложенными волосами, которым не придётся платить за съёмку и разрешение использовать их изображение в корыстных целях, и все они будут сидеть в нужной мне позе.
Правда, этот конкретный пример — настоящий кошмар для бедных нейросетей, которые относительно недавно только научились считать пальцы на руках, причём на каждой по отдельности, и то не все, а тут такое. Но здоровые руки при необходимости можно пересадить и от Тимоти.
Пример 2
Допустим, я всё ещё графический дизайнер, и теперь мне нужно найти подходящую картинку для листовки кафе быстрого питания — узнаваемый продукт на однородном фоне. Нашлась одна бесплатная картинка с левитирующим чизбургером, и он подходит мне по всем параметрам, кроме одного: он создан в программе 3D-моделирования и выглядит слишком простым и ненастоящим, а заказчик хочет, чтобы еда на картинке вызывала аппетит. Эту задачу можно решить разными способами: например, попросить нейросеть создать реалистичное фото или остаться в рамках 3D-рендера, но добавить больше деталей. Здесь могут помочь популярные заклинания вроде ray traced ("трассировка лучей", техника отрисовки 3D, которая даёт реалистичные результаты) или octane render (отсылка к 3D-изображениям, созданным в одноимённой программе), добавленные к тексту запроса. Но в любом случае будет иметь значение величина Image Strength: чем реалистичнее будет мой чизбургер, тем сильнее он может внешне отклоняться от исходника. Загружаю исходную картинку и дополняю её описанием, не забыв упомянуть, что мне нужно именно детальное изображение высокого качества. Двигая ползунок Strength туда-сюда и сравнивая результаты, в итоге я смогу найти оптимальный вариант. Вот что получилось у меня при содействии Playgroundai:
Та же самая задача, решённая Leonardo AI:
Пример 3
В предыдущем примере исходная картинка была бесплатной, но может получиться и так, что самое подходящее для целей дизайнера изображение будет защищено лицензией и стоить много денег. А заказчик, допустим, денег не дал. Если раньше в такой ситуации дизайнер мог поступить нехорошо и просто стырить картинку, то теперь авторские права остаются при авторе, а дизайнер получает то, что ему нужно, при помощи Image to Image:
Слева — фотография с ресурса GettyImages, которая бесплатно не распространяется. Справа — примерно то же самое, но не то же самое, от нейросети Playgroundai. Этическая сторона вопроса сейчас время от времени обсуждается в заинтересованных кругах, но ни к чему определённому, насколько мне известно, на законодательном уровне пока не пришли.
Image to Image для художников
Для тех, кто предпочитает не искать картинки в интернете, а рисовать самостоятельно, Image to Image тоже может оказаться весьма полезным.
Если вы — профессиональный художник с большим портфолио, вы вполне можете обучить на работах из него свою собственную нейросетевую модель, которая будет генерировать изображения в вашем индивидуальном изобразительном стиле. Только представьте, сколько времени она сможет вам потенциально сэкономить, дорабатывая лёгкие наброски до стадии черновых работ (или даже чистовых, если хорошо её натренировать)! И при этом все рисунки будут выглядеть сделанными вашей рукой. Точнее — рукой вашего прилежного ученика.
Увы, к художникам с большими портфолио я не отношусь, поэтому примеры будут простыми, а результаты — стилистически очень разными. Это тоже может быть полезно, если вы хотите протестировать свою идею в совершенно разных направлениях, и, возможно, выбрать одно для дальнейшего её развития или просто поискать вдохновения.
Начну с очень простого и небрежного наброска сидящего котёнка. Попробую сгенерировать похожего, но с большим количеством деталей и в разных техниках. Результаты Leonardo AI:
Результаты Playgroundai:
Теперь, если я решу дорабатывать рисунок дальше, у меня есть несколько визуальных подсказок с идеями возможных направлений развития и дополнительных деталей. Например, почему мне сразу не пришло в голову, что у маленьких котят очень короткие хвостики, которые вряд ли можно обернуть вокруг передних лап? Это важная деталь, если я хочу, чтобы мой персонаж выглядел убедительно. Нейросети помогли мне обратить внимание на этот прокол. Добавим туда же уточнённую форму ушей и различные варианты глаз.
Теперь попробую рисунок карикатурной чихуахуа.
С юмором у ИИ пока сложно, поэтому выпученные глаза на оригинале остались немного недопонятыми. Вероятно, мне нужно было добавить слово "карикатура" к описанию. Но и здесь уже есть множество деталей и идей, которые я могу в дальнейшем использовать: чего стоят одни только очки со стразами!
Чем проще исходный рисунок, тем искусственному интеллекту легче творить. Обилие деталей пока ещё сбивает его с толку, хотя здесь всё зависит от модели. Вот, например, намного более детальный набросок кота в скафандре, плывущего в невесомости. Несмотря на очень точное текстовое описание, Leonardo не смог справиться с созданием шлема с ушами и даже воспроизвести консервную банку, а на шлейку (это космическая кошачья шлейка поверх скафандра) просто махнул рукой. Потребовалось очень много попыток, прежде чем получилось что-то более или менее приемлемое.
Но это никак не дискредитирует собственно метод. Практически ежедневно появляются новые нейросетевые модели, благо энтузиастов в этой сфере предостаточно. Многие тренируют и тестируют свои модели сначала втихушку, дома, но рано или поздно они появляются в открытом доступе.
Вам удалось дочитать до конца? :) Спасибо за терпение. Полагаю, тема генерации картинки по картинке теперь раскрыта полностью. Если вам есть что добавить — добро пожаловать в комментарии. А ещё нелишним будет напомнить: нейросети развиваются с такой скоростью, что всё, написанное здесь, может устареть на следующий день, и я никак не могу это контролировать. Всегда проверяйте дату выхода публикации, и, если с этой даты прошло уже много времени, на всякий случай поищите в блоге на эту тему что-нибудь посвежее.
Успешного творчества!