Как сделать из наброска картину?

Получаем окантовку и вписываем в него подсказку

Примеры

Одним из ярких применений обводчиков контура является замена объекта в соответствии с новым описанием.

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

Краткие выводы
  • Проще всего впихнуть авто в авто, чем танк в авто. Поэтому, иногда проще заранее подрисовать "дуло" чем колупаться с ползунками.
  • т.к. у нас используется ControlNet то разрешение можно ставить выше обычного
  • подсказку можно писать короткую, т.к. львиная информация берётся из ControlNet.
  • Шаги выше 20 только если рекомендует сам разработчик модели, а вот ниже - можно поиграться, что бы добиться некоторых эффектов.
  • CFG ставьте меньше - если хотите реализма или по больше если хотите по ярче.

Возьмём для примера два разных описания - одно короткое, другое длинное по описанию. Сгенерируем по этим подсказкам изображения. Одно из которых будем помещать в главное окно ControlNet для препроцессора - что бы его обработать во входящее изображение для Модели. Модель работает с определённым типом входящего изображения, например это может быть карта глубины или окантовка контуров загруженного изображения. А второе изображение будем использовать для того, что бы вписать его в очертания первого с помощью модели ControlNet. Второе изображение - это предварительный просмотр нашего описания, что бы увидеть что мы вписываем и предположить конечный результат в голове, дабы потом покрутить ползунки и добиться нужного контроля результата. 

Внимание, всегда следует иметь ввиду: вписать впихуемое, например человека в архангела, можно без проблем. А вот вписать невпихуемое, например впихнуть архангела с крыльями в очертания обычного человека - нужно больше манипуляций, например необходимо понижать Control Weight в район 0,3-0,6 тем самым уменьшая влияние ControlNet, если ниже - будет теряться вписывание в очертания но лучше исполняться описание, если выше - то будет отсутствовать результат по описанию, крылья не появятся.

справка

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

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

настройки для тестов с "людьми"
  • Control weight = 1. Чем больше - тем больше придерживается линий и меньше описания. В некоторых случаях его необходимо уменьшить, иначе получим "пережжённое" изображение, как в примере с lineart_standart.
  • Starting Control Step = 0. Начальный шаг срабатывания ControlNet в % от общего количества шагов, где 1 =100%. До этого генерируется основное описание с негативом, ControlNet не задействуется.
  • Ending Control Step = 1. Соответственно, конечный шаг срабатывания controlNet в % от общего количества шагов, опять таки где 1 = 100%. После этого показателя, нейросеть пытается преобразовать картинку в то, что написано в описании, ControlNet отключается а основная модель попытается слепить конфетку из того что есть. Акцент будет идти не только на подсказку, но и на то что уже было сгенерировано, выравнивая всю картину под описание - это важно помнить! Чем больше интервал - тем меньше шансов модели выровнять композицию под описание, приходится вписываться в изображение подготовленное препроцессором.
  • Control Mode = balanced. Есть ещё либо больше приоритет на описание, либо больше приоритет на полученное препроцессором изображение. balanced - старается учесть и входящее изображение и описание.

настройки для тестов с машинами

  • CFG Scale = 5 т.к. стиль у референса ярко выраженный, что бы не получить "пережарку" стилем - рекомендую уменьшить CFG, чем меньше - тем более реалистичным выглядит.
  • Control weight = 0.75 выше выходит прям референс, ниже 0.5 теряем референс
  • Starting Control Step = 0
  • Ending Control Step = 1. 
  • Control Mode = balanced

Основные тесты

lineart_anime
lineart_anime lineart_anime+
tmp9cys94ru photon_v1-Porsche-4-Time_20231031115246

lineart_anime_denoise

lineart_anime_denoise photon_v1-Sailor Moon cinestill 1 2 RAW analog chubby-4-Time_20231018195636
tmpvr5a4esn photon_v1-Porsche-4-Time_20231031120310
lineart_coarse
lineart_coarse photon_v1-Sailor Moon cinestill 1 2 RAW analog chubby-4-Time_20231018195444
tmpsnwk190o photon_v1-Porsche-4-Time_20231031120439
lineart_realistic
lineart_realistic photon_v1-Sailor Moon cinestill 1 2 RAW analog chubby-4-Time_20231018195811
tmpl6ggi6am photon_v1-Porsche-4-Time_20231031120808
lineart_standart
lineart_standart (from white & black line) photon_v1-Sailor Moon cinestill 1 2 RAW analog chubby-4-Time_20231018195535
tmpch_nhg5h photon_v1-Porsche-4-Time_20231031121038
invert
invert (from white & black line) photon_v1-Sailor Moon cinestill 1 2 RAW analog chubby-4-Time_20231016211704
tmpx3p491o1 photon_v1-Porsche-4-Time_20231031121345

фокусы

Фокус с отключённым препроцессором

Ниже пример если вставить изображение и отключить препроцессоры, а затем поменять картинки и описания.

photon_v1-Sailor Moon cinestill 1 2 RAW analog chubby-4-Time_20231016224849 photon_v1-archangel-4-Time_20231016225024
Фокус с шагами

Если применить ControlNet на интервале шагов ( на примере 0,2-0,3 или 0,3-0,4), можно получить проявление элементов первого описания (крылья и эффекты) во втором описании! Т.е. сначала генерируется описание, потом добавляется слой с ControlNet, и уже после картина выравнивается Моделями с акцентом на сгенерированную херомантию и описание с негативом. Лепит из того что получилось конфетку. Чем больше интервал и чем ближе он к началу - тем меньше шансов у модели сделать вкусняшку.

Step 02-03 step 03-04

Canny - очерчивает кромки изображения, и по факту очень схож с Lineart, кроме дополнительных ползунков.

параметры

Canny Low Threshold и Canny High Threshold создают очертания загруженного изображения, но благодаря ползункам могут создавать больше искажений если уменьшать значения ползунками, и наоборот - делать очертания без лишнего шума при увеличении значений.

Настройка Threshold
Canny_1-1 Canny_255-255
результат Threshold
Canny_1-1+ Canny_255-255+
Upscaler

Следует упомянуть - что любой upscaler (увеличитель изображения) очень сильно может влиять на конечный результат. Это просто примечание, тесты и разборки будут в отдельном разделе. А сейчас имейте ввиду, анализируя пример с upscaler под названием "8x_NMKD-Superscale_150000_G" и разным значением силы "Denoising strength" 0,5 и 1 - данный параметр отвечает за изменения которые допускается вносить upscaler'у в исходник. Чем меньше значение - тем больше сохраняется оригинал, но детали не сильно прорабатываются и новых не появляется. Чем выше значение - тем больше деталей и они "лучше" прорабатываются - исходя из взглядов апскейлера.

Canny_upscaler 05 Canny_upscaler 1

SoftEdge - создаёт очертания, но с разной силой линий.

примеры

Дабы не повторяться, просто посмотрим: как работают препроцессоры, какие картинки они выдают на Control Weight = 1, Step 0 - 1, и при применении фокуса с шагами на Step 0,3-0,4.

Scribble/Sketch - создают очертания как и другие препроцессоры, но есть несколько существенных отличий. Во первых, в препроцессоре scribble_xdog - появляется дополнительный ползунок влияющий на работу не модели, а именно препроцессора, добавляя или удаляя детали. Кроме того, большое отличие в Модели (controlnet11Models_scribble) для работы с этими препроцессорами. Control Weight - диапазон можно расширить больше как и диапазон шагов при исполнении фокуса с детализацией.

Лучше один раз показать чем долго долго писать

Кстати данный препроцессор (точнее модель от него) лучше всех подходит для генерации рук. Достаточно частично сделать набросок рук, пальцев.

препроцессоры Scribble/Sketch

Для начала рассмотрим препроцессоры (кроме scribble_xdog - его будем разбирать отдельно)

влияние Control Weight

Итак, поэкспериментируем с Control Weight  0.5 - 1 - 2

Препроцессор scribble_xdog

XDoG Threshold - дополнительный ползунок влияющий на детализацию препроцессора. Рассмотрим пример с минимальным и максимальным значением, а во втором тесте поменяем местами описания и картинку для препроцессора. Сами описания и картинки оригиналов расположены в начале материала.

пихуем впихуемое
пихуем невпихуемое
И всё же есть победитель, если нужно одно впихнуть в другое?
СРАВНЕНИЕ

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

scribble vs canny

Пихаем Архангела в барышню

photon_v1-archangel-4-Time_20231018191107 photon_v1-archangel-4-Time_20231018192228
scribble vs canny

Пихаем барышню в Архангела 

photon_v1-Sailor Moon cinestill 1 2 RAW analog chubby-4-Time_20231018190851 photon_v1-Sailor Moon cinestill 1 2 RAW analog chubby-4-Time_20231018192725

Дополнительные приёмы

применение изображения от другого препроцессора

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

на примере lineart

пример использования
photon_v1-archangel-4-Time_20231015215218 photon_v1-archangel-4-Time_20231016131035

До применения фокуса и после

Учитывайте элементарную подсказку и небольшое разрешение

archangel

Negative prompt: (worst quality:2), (low quality:2), (normal quality:2)

Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 4, Size: 512x768, Model hash: ec41bd2a82, Model: photon_v1, Clip skip: 2, Version: v1.6.0

А если серьёзно, что такое шум?
шум - это случайный набор пикселей

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

Пример работы препроцессоров
препроцессоры Lineart

Оригинал шума - его мы и будем брать. Цвет в данном случае не играет роль, а препроцессоры мы выключим вовсе.

шум шуму рознь!

Шум - это мелкие частицы. Всё остальное это уже текстура.

Как сохранить композицию?
Control Step

Для сохранения композиции нужно менять шаг начала запуска работы ControlNet - Starting Control Step, например на 0,35. Применяем сразу Hirez.fix дабы лучше увидеть изменения. 

Starting Control Step и Ending Control Step - Начало и конец внедрения шума в процентном соотношении от общего количества шагов. Если хотим сохранить начальную композицию и детали - то следует указывать начальный шаг побольше, например как в примере 0,25. Если указать меньше - получим большее изменение деталей, если указать больше - получим большее сохранение начальных деталей и композиции.

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

photon_v1-archangel-4-Time_20231016123504 photon_v1-archangel-4-Time_20231016125258
Как увеличить детали?
Control Weight

Используем "Оригинал шума", но меняем настройки.

Control Weight - сила шума, на примере 0,5/0,25 без препроцессора. Это как если накладывать в указанном диапазоне шагов плёнку, с дополнительным слоем из шума и говорить нейросети чего-нибудь слепить из него, а этот параметр будет выступать в качестве прозрачности шума. Чем ниже значение - тем меньше придумывает деталей на каждом шагу, чем больше - тем ярче наш слой с шумом и нейросеть начинает усердно придумывать детали.

photon_v1-archangel-4-Time_20231015233221 photon_v1-archangel-4-Time_20231015233530
Внедрение на чуть чуть
интервал шагов

Ещё можно внедрить шум буквально на чуть чуть, например от 0,25 до 0,35 или с 0,4 по 0,5 шаг с максимальным весом Control Weight - и тоже получим интересный эффект. Нейросеть получит толчок в форме шума из которого нужно срочно что-то слепить.

Чем позже впихнуть - тем больше деталей от оригинала.

Чем раньше втыкаем - тем меньший интервал нужно делать, иначе можем поменять композицию

step 0.25-0 step 04-0
И зачем такие сложности - есть же Lora для увеличения деталей?
необходимость?

Всё дело в контроле, используя Lora вы можете повысить детализацию, а можете и похерить композицию. Да и использовать несколько инструментов одновременно - никто не запрещал.

Вот примеры одного из популярных детализаторов и приём с шумом, решать Вам (пример с "Эталонным шумом").

Отличие canny от Lineart

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

Control Weight 04+ Control Weight 065

CW=0,4 VS CW=0,65

А ещё реальное применение есть?

Текст особым шрифтом

Примеры

Одним из ярких применений обводчиков контура является текст написанный элементами указанными в описании.

Ниже тест из пары тройки обычных токенов .

Краткие выводы
  • т.к. у нас используется ControlNet то разрешение можно ставить выше обычного
  • текст лучше писать от руки, толстыми линиями с хорошо различимыми чертами. Тест должен быть крупным.
  • буквы и нарисованные элементы на Референсе должны быть физически выполнимы с помощью элементов описанных в описании.
  • Чем сложнее Референсный тект - тем проще должно быть описание
  • Хорошо отрабатывает Preprocessor - scribble_xdog (XDoG Threshold=2) и Model = controlnet11Models_scribble

исходники

Сразу скажу - далее будут чисто тесты, а не вылизанный вариант уже исходя из их результата. Исходный текст специально содержит текст разного формата и стиля, что бы понять как нужно и как ненужно!

Настройки по умолчанию.

Prompt

Prompt Interrogater:

a plate of spaghetti and hot dog sausages, 2019 trending photo, but with thin, plating, 8l, mm, with full descriptions, featured on pinterest, caidychen, seamless, sparkels

Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 3168587211, Size: 512x768, Model hash: ec41bd2a82, Model: photon_v1, Style Selector Enabled: True, Style Selector Randomize: False, Style Selector Style: base, Version: v1.6.0

Основные тесты

  • Preprocessor - canny
  • Model = controlnet11Models_canny 
tmppf_ja2t5 photon_v1-a plate of spaghetti and hot dog sausages-3660975946-Time_20231031145627

  • Preprocessor - lineart_anime
  • Model = controlnet11Models_lineart
tmpyq05rqcu photon_v1-a plate of spaghetti and hot dog sausages-889548030-Time_20231031150706

  • Preprocessor - lineart_anime_denoise
  • Model = controlnet11Models_lineart
tmplpryumsk photon_v1-a plate of spaghetti and hot dog sausages-1422697785-Time_20231031150928

  • Preprocessor - lineart_coarse
  • Model = controlnet11Models_lineart
tmp0yc6l7p_ photon_v1-a plate of spaghetti and hot dog sausages-2490587883-Time_20231031151904

  • Preprocessor - lineart_realistic
  • Model = controlnet11Models_lineart
tmpbh0ccvre photon_v1-a plate of spaghetti and hot dog sausages-1044338572-Time_20231031152050

  • Preprocessor - lineart_standard
  • Model = controlnet11Models_lineart
tmpdtswv_1w photon_v1-a plate of spaghetti and hot dog sausages-2137919400-Time_20231031152700

  • Preprocessor - invert (from white bg & black line)
  • Model = controlnet11Models_lineart
tmpu9nojo4m photon_v1-a plate of spaghetti and hot dog sausages-2175480722-Time_20231031152918

  • Preprocessor - none
  • Model = controlnet11Models_softedge
tmpigoswu7w photon_v1-a plate of spaghetti and hot dog sausages-158242657-Time_20231031153150

  • Preprocessor - softedge_hed
  • Model = controlnet11Models_softedge
tmpa1qmd4pr photon_v1-a plate of spaghetti and hot dog sausages-108499795-Time_20231031153337

  • Preprocessor - softedge_pidinet
  • Model = controlnet11Models_softedge
tmpju8rontc photon_v1-a plate of spaghetti and hot dog sausages-2257781674-Time_20231031154103

  • Preprocessor - softedge_pidisafe
  • Model = controlnet11Models_softedge
tmpuvm4kljy photon_v1-a plate of spaghetti and hot dog sausages-1872007742-Time_20231031154336

  • Preprocessor - none
  • Model = controlnet11Models_scribble
tmpigoswu7w photon_v1-a plate of spaghetti and hot dog sausages-3422317101-Time_20231031154613

  • Preprocessor - softedge_hed
  • Model = controlnet11Models_scribble
tmpeyfvuzwb photon_v1-a plate of spaghetti and hot dog sausages-2844524961-Time_20231031154854

  • Preprocessor - softedge_pidinet
  • Model = controlnet11Models_scribble
tmp793gokzs photon_v1-a plate of spaghetti and hot dog sausages-990132047-Time_20231031155101

  • Preprocessor - scribble_xdog (XDoG Threshold=32)
  • Model = controlnet11Models_scribble
tmp1c9klmzx photon_v1-a plate of spaghetti and hot dog sausages-2335687326-Time_20231031155259

  • Preprocessor - scribble_xdog (XDoG Threshold=2)
  • Model = controlnet11Models_scribble
tmpso6qylya photon_v1-a plate of spaghetti and hot dog sausages-4234710633-Time_20231031155533

  • Preprocessor - t2ia_sketch_pidi
  • Model = controlnet11Models_scribble
tmpy52bg8dv photon_v1-a plate of spaghetti and hot dog sausages-95706555-Time_20231031160048

  • Preprocessor - invert (from white bg & black line)
  • Model = controlnet11Models_scribble
tmpa9xg2s65 photon_v1-a plate of spaghetti and hot dog sausages-3243779229-Time_20231031160233

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