Пример композиции используемой в тестах
Sailor Moon, (cinestill:1.2), (RAW,analog), chubby body, ( wearing cotton panties with bra), smiling at camera, (skin_details:1.2), perfect teeth, (detailed face), blushing, detailed glossy eyes, blonde pastel rainbow braided hair, sharp, (background is messy bedroom), details, 8k, absurdes, pov, hi res, highly intricate details, analog, raw, cinestill, volumetric lighting, deep rich colors, ((zoomout))
Negative prompt: (background:1.4), lamp, (worst quality:2), (low quality:2), (normal quality:2), dot, mole, lowres, cropped, jpeg artifacts, ugly, duplicate, morbid, mutilated, out of frame, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 25, Size: 512x768, Model hash: ec41bd2a82, Model: photon_v1, ControlNet 0: "Module: none, Model: controlnet11Models_openpose [73c2b67d], Weight: 1, Resize Mode: Crop and Resize, Low Vram: False, Guidance Start: 0, Guidance End: 1, Pixel Perfect: True, Control Mode: Balanced", ControlNet 1: "Module: depth_zoe, Model: controlnet11Models_depth [4b72d323], Weight: 1, Resize Mode: Crop and Resize, Low Vram: False, Processor Res: 512, Guidance Start: 0, Guidance End: 1, Pixel Perfect: True, Control Mode: Balanced", Version: v1.6.0
Prompt для заготовки позы:
(Cyborg:1.1),
stand,
(gray background:1.6), (without background:1.3), (minimalism:1.3),
[[[gymnast]]], [[[pose]]],
(beautiful face:1.2), ( beautiful body:1.2), (no gravity:1.3), (empty hands:1.3)
Negative prompt: (background:1.4), lamp,
(worst quality:2), (low quality:2), (normal quality:2), dot, mole, lowres, cropped, jpeg artifacts, ugly, duplicate, morbid, mutilated, out of frame, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 10, Seed: 28, Size: 512x768, Model hash: ec41bd2a82, Model: photon_v1, ControlNet 0: "Module: none, Model: controlnet11Models_openpose [73c2b67d], Weight: 1, Resize Mode: Crop and Resize, Low Vram: False, Guidance Start: 0, Guidance End: 1, Pixel Perfect: True, Control Mode: Balanced", Version: v1.6.0
Подготовка позы
Если поза некачественная или не совпадает с вашим соотношением сторон, то её нужно предварительно подготовить. Для этого, нужно вставить заготовку со скелетиком (заготовка позы полученная благодаря работе препроцессора openpose) в заранее залитый чёрным цветом холст с нужным соотношением и разрешением и уже потом переместить полученный результат в ControlNet.
Удобнее всего делать это в расширении самого Автоматика - Photopea. Alt+Ctrl+С (Размер холста) - правим на своё. Перекидываете (или открываете) скачанную позу, жмёте Alt+Ctrl+T (свободное трансформирования) на слое с позой. Погоняете размер и позицию. Заливаете свободное поле по краям чёрным цветом. Внизу жмём "Send to txt2img ControlNet" или куда Вам нужно.
Разрешение картины с использованием ControlNet и Модели OpenPose можно увеличить по сравнению с рекомендуемыми разработчиком, таким образом добиться лучшего качества, но всё должно быть в рамках приличия.
Если исходный скелетик оставляет желать лучшего, можно воспользоваться фокусом - сгенерировать сначала несколько картинок с использованием нижеприведённого Prompt для заготовки позы, на нём будет более отчётливо видны конечности и не мешаться фон, затем выбираете изображение из сгенерированной пачки у которого более или менее приличные конечности, помещаете эту картинку в ControlNet и получаете позу лучшего качества применив препроцессор dw_openpose_full. Таким образом из говёненькой заготовки можно получить шикарный скелет. Кстати, если будете генерировать небольшой пачкой до 8 шт, пользуйтесь Batch size - работает на 20-30% быстрее чем Batch count, но в последнем можно задать большее количество и выше повторяемость в случае повтора отдельной генерации.
Незабываем подкорректировать описание и негатив в соответствии с вашими потребностями!
Имейте ввиду, на вашей конфигурации, даже при условии повторения всех настроек, всё равно будут отличия, если захотите повторить эксперимент, дело в том, что звёзды постоянно двигаются 🙂
Получение позы
Позу можно скачать с интернета или подготовить самому. Самый быстрый вариант - это скачать готовый вариант уже обработанной позы с сайта civitai. Однако даже в этом случае факторов влияющих на результат конечной генерации - миллион и маленькая тележка, начиная от моделей и заканчивая расположения звёзд на небе. Учитывайте, позу можно повторить не только с помощью группы процессоров OpenPose, но и с помощью карты глубины, препроцессоров canny, lineart, SaoftEdge и Scribble/Sketch и даже менее подходящих для сложных поз - NormalMap (карты нормалей) и IP-Adapter. А иногда и объединяя эти методы.
Если у вас стандартная, распространённая поза в правильном соотношении относительно вашей будущей генерации, можете смело загонять скачанную позу в ControlNet и наслаждаться результатом, иначе придётся предварительно подготовить позу.
Внимание: Препроцессор нужно отключать если вставляете обработанную заготовку - скелетик. Если есть выбор вставить скелетик или картинку с няшкой, вставляйте первое, тем самым экономятся ресурсы на повторный просчёт позы из картинки. Так же, следует держать в уме что, чем сложнее поза и меньше её размер относительно холста - тем больше косяков.
Настройки для позы
Скачивая позы или готовые изображения, следует обратить внимание на следующие нюансы:
- Во первых, это соотношение сторон, а точнее длинная сторона. Если у вас стоит задача сформировать изображение 512*768 px - т.е. портретное изображение - то и позу надо качать портретную, либо менять своё мировоззрение вместе с разрешением.
- Во вторых, следует подрихтовать скачанную позу под свои потребности.
Если Ваше разрешение чуть чуть отличается от скачанной позы, то можно воспользоваться настройками "Resize Mode":
- Just Resize - сжимает заготовку, помещая её в Ваше разрешение
- Crop and Resize - обрезает исходник по краям в соответствии с Вашим разрешением
- Resize and Fill - вписывает заготовку в ваше разрешение с заполнением по краям
Однако, если Вы "не угадали" с соотношением и разрешением, то применять эти настройки - себе дороже, ниже пример скаченной оригинальной позы, её правильной подготовки, а так же варианты с "Resize mode", что есть что догадаетесь сами, это домашнее задание.
OpenPose
OpenPose - это часть расширения controlnet отвечающая за позы посредством выделения скелета из представленного оригинала. На самом деле OpenPose - не панацея, пихнуть описанного в подсказке персонажа можно несколькими способами, но есть нюансы:
- Помимо персонажа нужно не упустить другие элементы в композиции, т.к. недостаточно впихнуть только персонажа, нужно впихнуть его вместе с другим описанием в подсказке.
- Проще всего впихивать впихуемое. А вот впихивать невпихуемое - нужно постараться.
оригиналы
Для понимания позы использовался Киборг - как ни странно, но на нём было менее заметны выворачивания конечностей, чётко видна поза, хоть и видны непристойности - но они как бы в пределах образа манекена и не отвлекают внимание. С целью привлечения внимания на позу, были прописаны соответствующие токены убирающие задний фон, источники света, предметы в руках, а также пришлось поместить персонажа в безгравитационное пространство - что бы не рисовало стулья, турники и прочие опоры тела. При этом добавлены детали и акцент на лице. Таким образом я получил чистый пример позы с прорисованными сочленениями и минимум дефектов чисто на Prompt, при этом не использовались Lora, текстовые инверсии и прочие улучшайзеры.
Модель использовалась Photon_v1 - она неплохо справляется с указанной подсказкой.
Соотношение 3:2 или 2:3, по длинной стороне 768 px. Если у Вас соотношение совпадает с скаченным скелетиком, можете использовать любое разрешение, иначе нужно вставить позу на чёрный квадрат с нужным Вам разрешением и уже затем поместить позу в ControlNet.
Чтобы сохранить позу или результат с Prompt внутри картинки, достаточно перетащить в окно подсказки. Все параметры прописаны внутри картинок, они не менялись - пользуйтесь на здоровье.
dw_openpose_full
dw_openpose_full - расширенная, более новая версия OpenPose_full, лучше отрабатывает пальцы. Обновите ControlNet и используйте его.
openpose_full
openpose_full - включает в себя:
- OpenPose : глаза, нос, глаза, шея, плечо, локоть, запястье, колени и лодыжки.
- OpenPose_face : OpenPose + детали лица.
- OpenPose_hand : OpenPose + руки и пальцы.
- OpenPose_faceonly : только детали лица
Рассматривать эти препроцессоры - не имеет смысла, ибо есть dw_openpose_full.
Препроцессор можно отключать заранее получив результат и поместив в главное окно ControlNet вместо исходного изображения. Тем самым экономятся ресурсы на повторный просчёт позы из картинки.
Тесты с разными приёмами постановки позы
Будем экспериментировать не на самой простой позе и не самом лучшем варианте предподготовленной позы. Для этого возьмём позу супергеройского приземления (аля Чёрная вдова), поза не проработана, непонятно что с пальцами, есть перекрестия рук и ног, нестандартное расположение ног. На более простых позах - всё гораздо проще, может подойти любой вариант!
Начальный тест (подходит только для простых поз)
Закидываем позу, отключаем препроцессор, т.к. мы уже используем готовый результат его работы и сразу вставляем своё описание в подсказку. Если помучить Seed - можно добиться результата, но не факт. Данный способ идёт вне конкурса, т.к. он предназначается для простейших поз, а не как у нас.
1 место (если есть качественная картинка или поза) - поднастроенный dw_openpose_full
Закидываем непосредственно картинку и используем препроцессор dw_openpose_full для получения качественной позы. И выставляем настройки Control Weight = 2 (отвечает за силу контроля) и Control Mode (приоритет) ставим на "ControlNet is more important" (Контроль важнее).
И вот, вот уже то самое - поза есть, спальня есть, барышня соответствует описанию.
Отсюда вывод - очень важна качественная исходная картинка для того, что бы получить качественную позу используя правильный препроцессор и настройки.
А что бы поучить из какахи конфетку, а точнее их фиговой позы нормальную, используйте Prompt в начале статьи - тот который с Cyborg. Благодаря нему, можно получить исходник с относительно правильными вариантами, выбрать наиболее подходящий и уже с его помощью сгенерировать позу.
2 место (нужна картинка с шумом на фоне) - depth_leres или depth_leres++
Закидываем непосредственно картинку и используем препроцессор depth_leres или depth_leres++.
Другие препроцессоры глубины - требуют подбора Control Weight. Здесь же, нужен именно шум/туман на заднем фоне, что бы из него слепить окружение либо нужно уменьшать силу контроля.
2- е место, т.к. есть нюанс - рисует одежду, окружение и прочее с карты глубины. Т.е. поза должна быть на монотонном и не однородном фоне. Сгенерировать такую картинку можно используя Prompt из начала материала, либо другим способом замещения фона на готовой картинке.
3 место - поднастроенный openpose
Используем только одну вкладку, закидываем в неё позу, отключаем препроцессор и сразу вставляем своё описание.
Но выставляем настройки Control Weight = 2 (отвечает за силу контроля) и Control Mode (приоритет) ставим на "ControlNet is more important" (Контроль важнее).
Если помучить Seed - можно добиться результата, но не факт.
3- е место по причине необходимости подбора seed без искажений. Возможно следует применить какую-нибудь текстовую инверсию или Lora для исправления ситуации, но это уже совсем другая история.
4 место - dw_openpose_full
Используем только одну вкладку. Закидываем непосредственно картинку и используем препроцессор dw_openpose_full. Результат аналогичный предыдущему, но тут мы использовали более качественную позу, которую получить сложнее, а результат такой же как и у обычного openpose.
5 место - depth_zoe или depth_midas
Используем только одну вкладку. Закидываем непосредственно картинку и используем препроцессор depth_zoe или depth_midas. Поза повторилась, а вот для Prompt - приходится очень скрупулёзно подбирать Control Weight до десятых долей, в данном случае он = 0,45. Уменьшая значение Control Weight получаем уродства, точнее на некоторых Seed получаем их, а на некоторых улучшаем окружение, а если увеличиваем этот параметр то улучшаем позу но теряем окружение. Именно поэтому последнее место в рейтинге и не заняли данные препроцессоры.
6 место - scribble_xdog
Используем только одну вкладку. Закидываем непосредственно картинку и используем препроцессор "scribble_xdog". Выставляем приоритет Control Mode на "My prompt is more important". Беда и с позой и композицией, поэтому и последнее место.
животные позы
Для примера будем использовать всё теже prompt для тестов, но позы возьмём от животных.
Человек в позе зверушки (depth_midas)
Используем только одну вкладку, закидываем в неё картинку котейки, используем препроцессор depth_midas, вставляем своё описание. И это не совпадение, вот Batch size = 6
Но есть нюанс, придётся подобрать Control Weight, в данном случае он равен 0,5
Человек в позе зверушки (normal_bae)
человек в позе зверушки
Используем только одну вкладку, закидываем в неё картинку собачки, используем препроцессор normal_bae, вставляем своё описание. И это не совпадение если всё ещё так думали, вот Batch size = 6
Но есть нюанс, придётся подобрать Control Weight, в данном случае он равен 0,4-0,5 в зависимости от сложности позы. Если увеличиваем - больше собакевичей получаем, уменьшаем - получаем более человечные позы. Сложность в подборе этого значения
Зверушка в позе человека (normal_bae)
Используем только одну вкладку, закидываем в неё картинку с человеком, используем препроцессор normal_bae с настройками:
- Control Weight = 2
- Control Mode = My prompt is more important
Prompt
(dog:1.4),
(RAW,analog), blushing, detailed sharp, street. details, 8k, absurdes, pov, hi res, highly intricate details, analog, raw, cinestill, volumetric lighting, deep rich colors, ((zoomout))
Negative prompt: (worst quality:2), (low quality:2), (normal quality:2)
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 5, Size: 512x768, Model hash: ec41bd2a82, Model: photon_v1, ControlNet 0: "Module: normal_bae, Model: controlnet11Models_normal [592a19d8], Weight: 2, Resize Mode: Crop and Resize, Low Vram: False, Processor Res: 512, Guidance Start: 0, Guidance End: 1, Pixel Perfect: True, Control Mode: My prompt is more important", Version: v1.6.0
Монстр (Openpose)
Используем только одну вкладку, закидываем в неё картинку с нарисованным скелетом неведомой зверушки. Цвета желательно использовать разные для разных конечностей, левая и правая нога - это разные конечности. Для одинаковых конечностей - одинаковые цвета, например для голов змея Горыныча. Препроцессор отключаем. И обязательно правим описание, негатив я удалил ибо нам нужны те самые особенности, а в основное описание добавил описание зверушки схожей с позой. В описание добавляем по необходимости токены типа:
- дополнительные конечности
- несколько рук/ног/голов
Prompt
(caterpillar:0.7), additional limbs, a few legs,
(RAW,analog), blushing, detailed sharp, (street:1.4). details, 8k, absurdes, pov, hi res, highly intricate details, analog, raw, cinestill, volumetric lighting, deep rich colors, ((zoomout))
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 5, Size: 768x512, Model hash: f57b21e57b, Model: revAnimated_v121, VAE hash: 15e96204c9, VAE: blessed2.vae.pt, ControlNet 0: "Module: none, Model: controlnet11Models_openpose [73c2b67d], Weight: 2, Resize Mode: Crop and Resize, Low Vram: False, Guidance Start: 0, Guidance End: 1, Pixel Perfect: True, Control Mode: Balanced", Version: v1.6.0
Прототип персонажа
Тест разрешения
Закидываем в controlnet картинку готовой позы с несколькими вариациями поворота + крупный план лица, препроцессор отключаем, модель OpenPose. в Prompt вставляем своё описание. На одном и том же исходнике поз можно генерировать без проблем разные конечные картинки. Это без ADetailer.
Тест текстовой инверсии
Закидываем в controlnet картинку готовой позы с несколькими вариациями поворота, препроцессор отключаем, модель OpenPose. в Prompt вставляем своё описание + Текстовая инверсия charturnerv2 с триггерными словами. Примеры триггеров:
- (несколько изображений одного и того же персонажа в одной и той же одежде:1.2)
- 5 просмотров, (несколько просмотров)
- вид сзади, вид спереди, вид сбоку
полный оборот персонажа - моделирование стиля,((лист персонажа)),(лист модели)
- ((переворот)),(разворот)
- игровая роль, отображение игрового персонажа
- концепция персонажа