Найти тему

Нейросеть Fooocus v2: Input Image в деталях.

Нейросеть Fooocus v2: Input Image в деталях.

#Нейросети #Генеративныенейросети #Fooocus

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

Мы уже познакомились с тем, как установить и использовать этот интерфейс, а также выяснили, за что отвечают основные настройки и как функционируют различные режимы.

Сегодня мы углубимся в раздел "Input Image" и узнаем, как с его помощью можно дорисовывать, увеличивать или полностью изменять любые изображения.

Приступим!

Открываем интерфейс Fooocus и устанавливаем флажок на «Input Image» внизу экрана. В результате открывается дополнительное окно, наполненное множеством интересных функций. Здесь мы можем создавать вариации уже существующего изображения или просто увеличивать его.

Давайте рассмотрим вкладку "Upscale or Variation".

Variation - вариации

Прежде всего, нам нужно загрузить или сгенерировать изображение. Я загрузил фото из сети.

Референс фото
Референс фото

Далее ставим галочку «Vary (Subtle)», поле запроса остается пустым и жмем «Generate» ждём, и получаем:

Результат работы режима «Vary (Subtle)»
Результат работы режима «Vary (Subtle)»

Чтобы не перегружать вас информацией, я скажу кратко. Режим «Vary (Subtle)» полностью повторяет референсный образ, включая рефлексы,свет, тени, элементы одежды и пр. Хотя в нашем случае одно колечко он всё же оставил себе, ну и курточку подменил. Но это не страшно. На то они и генеративные нейросети, чтобы чего нибудь нагенерировать от себя.

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

Далее ставим галочку «Vary (Strong)» и жмем «Generate», ждём и получаем:

Результат работы режима «Vary (Strong)»
Результат работы режима «Vary (Strong)»

Режим "Vary (Strong)" кардинально изменяет исходное изображение и отчасти передает общие черты. Часто генерирует изображения, которые не имеют ничего общего с оригиналом. Я пробовал экспериментировать с различными запросами, но не могу сказать, что это что-то изменило. Я не совсем понимаю назначение этого режима, но вполне возможно, что я ошибаюсь, и кто-то найдет его для себя крайне полезным.

Upscale - Увеличение

В этом режиме нейросеть просто увеличивает изображения добавляя им немного четкости и резкости. Мы можем выбрать нужную кратность увеличения - 1,5 или 2 раза, или 2x Fast (что делает изображение ощутимо худшего качества). При увеличении в 1,5 раза я не заметил критичных изменений в исходном фото, увеличение в 2 раза дало вот такой неприятный результат:

СПРАВА РЕФЕРЕНС
СПРАВА РЕФЕРЕНС

Чтобы минимизировать изменения исходного изображения при увеличении, рекомендуется отключить параметр Random Seed и установить его значение равным 0. А во вкладке Advanced - Developer debug mode - выставить силу подавления шума Denoising Strength при Upscale в пределах 0.10.

-6

Это не устранит все проблемы, но результат будет значительно лучше.

И, наконец, рассмотрим режим, который, на мой взгляд, является самым интересным — «Image Prompt».

Чтобы иметь полный контроль над процессом генерации, обязательно установите флажок «Advanced».

Режим «Image Prompt», также известный как IP adapter ControlNet в Stable Diffusion, позволяет использовать изображение в качестве запроса. Он извлекает из него не только стиль, но и контекст, что делает его особенно ценным инструментом для создания текста или изображений на основе исходного изображения.

Вот пример того, как работает этот режим. Выберите любую фотографию, оставьте запрос пустым и нажмите кнопку «Generate». В зависимости от выбранных параметров «Stop At» и «Weight», вы можете получить различные результаты:

-7

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

По умолчанию установлено значение 0.5, что означает, что нейросеть будет использовать половину информации из загруженного изображения, а другую половину создаст самостоятельно.

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

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

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

PyraCanny - Контуры

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

Пример:

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

Загружаем изображение в Image Prompt, выбираем PyraCanny, ставим «Stop At» и «Weight» на нужное нам значение, в окне промпта пишем "a cat" или "a fluffy cat" и генерируем изображение.

Результат генерации
Результат генерации

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

Полезный инструмент, как вы считаете?

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

-10

Также можно и стилизовать текст. Для этого берем заранее подготовленный PNG файл с заранее подготовленным текстом на прозрачном фоне, для этого подойдет любой графический редактор.

Опытным путем выявил, что наилучшие для моих целей результаты достигаются при значениях «Stop At» при 1 и «Weight» при 1.2-1.3, у вас же эти цифры могут отличаться но начинать стоит с этого.

3D "NEURO ART WORKSHOP, metal word, letter, acid blue, magenta
3D "NEURO ART WORKSHOP, metal word, letter, acid blue, magenta

Если вам нужны объемные буквы, в запросе укажите «3D, word, letter», материал и цвет букв и все ваши пожелания.

CPDS - Глубина и контрастность

В этом режиме, сеть создает карту на основе резкости и контрастности загруженного изображения. Изображение обрабатывается таким образом, чтобы остались только основные элементы: силуэты, очертания, резкость и глубина. Это позволяет перенести в вашу генерацию любую сложную сцену или позу, не ограничиваясь строгими контурами, как это делает алгоритм Canny.

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

Ну и наконец FaceSwap - Замена лица

Это режим, от которого я ожидал получить больше всего удовольствия и пользы, но в итоге все получилось не так, как я хотел. Разработчик называет этот режим FaceSwap, но, на самом деле, он не имеет ничего общего с ним. Это фактически все тот же IP-адаптер, просто обученный на лицах. После многих часов, проведенных в этом режиме, приходит разочарование и понимание того, что достичь здесь хоть сколько-то приемлемого результата будет очень сложно. Некоторые лица удается "пересадить" более-менее приемлемо, но некоторые просто невозможно, и в результате получается совершенно не то.

Справа генерация, слева референс.
Справа генерация, слева референс.

Не помогает увеличение параметра "Weight", если мы начинаем поднимать его. Цвет, композиция и ракурс наследуются от загруженного изображения, и текстовый запрос с точными указаниями касательно черт лица практически не помогает. При еще большем весе иногда получается перенести лицо, но так же в генерируемое изображение перекочует фон референса и вместе с этим невозможно изменить ракурс лица.

Единственный более-менее похожий результат. Ради которого мне пришлось перебрать десяток моделей и множество вариантов из настройки Developer Debug Mode.

Справа генерация, слева референс.
Справа генерация, слева референс.

В итоге, для моего референса лица лучше всего подошла модель jibMixrealisticXL_v8 BetterComposition. Разрешение генерации изображения 1024x1024, и референсное изображение - 1024x1024. Метод замены референсных изображений - VAE, метод выборки - dpm_2_ancestral, планировщик - exponential.

-15

Процесс занял много времени, но стоит ли тратить его без гарантии получения достойного результата? Если вам нужно, вы можете воспользоваться Stable Diffusion или Forge UI, установить там расширение Faceswap или Reactor и за полчаса провести операцию по пересадке лица. :)

Я продолжаю использовать этот метод, надеясь, что в фокусе всё же исправят этот режим или добавят наш любимый настоящий Face swap.

Не тратьте время зря, работая с этим режимом. Он может быть полезен, если вам нужно разнообразить лица в ваших генерациях, но не более того.

Вкладка Inpaint or Outpaint

Inpaint - Изменяем изображение

Иногда, при удачной генерации, может появиться объект, который нам не нужен. Режим Inpaint может помочь нам решить эту проблему. Inpaint работает по простой механике - закрашивает то, что нам не нравится, при помощи маски. В запросе мы указываем, что хотим видеть на месте маски, и вуаля!

-16
-17

В Fooocus есть 3 режима работы.

В Inpaint или Outpaint (используется по умолчанию при переходе в него) вы можете выполнять Outpaint (расширение или дорисовка), чтобы расширить или добавить детали к любому изображению, будь то старая фотография или просто неудачно обрезанное фото.

Improve Detail (face, hand, eyes, etc.) - режим улучшения деталей, отлично подходит для улучшения детализации лица, рук, глаз и других объектов.

Modify Content (add objects, change background, etc.) - режим редактирования, в этом режиме очень удобно что либо добавить, то чего раньше не было или изменить, то чего на изображении по вашему мнению быть не должно.

В режимах Improve Detail и Modify Content появляется дополнительное поле для ввода запроса, в котором можно указать нужные вам изменения, это сделано для удобства, дабы не менять основной запрос, и избежать путаницы.

-18

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

-19

Также мы можем добавить персонажа, просто нарисовав маску там, где хотим его разместить.

Запрос: a female troll with a frying pan in her hand
Запрос: a female troll with a frying pan in her hand

В окне дополнительного запроса указываем нужное уточнение, и получаем:

-21

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

-22

Outpaint - Расширяем изображение

Outpaint - это отличный режим, который позволяет создавать большие и детализированные изображения. Он позволяет изменять соотношение сторон и расширять изображения.

Запрос: shrek stands in the gym
Запрос: shrek stands in the gym

Работа с этим режимом довольно проста. Вам нужно выбрать изображение для расширения, указать сторону расширения (право, лево, верх, низ) и нажать кнопку "Generate". Если вы не хотите указывать запрос при расширении, оставьте поле пустым. Но вы можете менять запрос после каждой генерации.

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

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

На этом мы завершили наше знакомство с возможностями функции Input Image в интерфейсе Fooocus. Я надеюсь, что теперь вам будет легче творить.

В следующей статье мы рассмотрим интересную программу помогающую новичку с установкой большинства нейросетей на свой пк без утомительных танцев с бубном.

Ну и конечно же, если вам понравилась эта статья, буду рад вашим подпискам, комментариям и лайкам. Недавно я запустил Discord-канал и постараюсь поддерживать его насколько возможно, там вы сможете не только следить за новостями, но и общаться, делиться опытом и приобретать новые знания о нейросетях. Чтобы всегда быть в курсе моих новых материалов, подписывайтесь на мой Boosty, Telegram-канал и страницу "ВКонтакте". Пока что нас немного, но я надеюсь, что с течением времени сообщество станет больше. Это станет отличной мотивацией для меня активно работать и над другими социальными сетями.