Установка и настройки
IP-Adapter — это модель ControlNet, которая позволяет использовать референс - изображение в качестве подсказки для стиля, элементов и даже лица. Это не объединение вашего описания с картинкой, это рисование в стиле изображённом на картине и используя элементы с него же. Несмотря на схожесть с описанием назначения препроцессоров Reference, IP-adapter делает всё в разы лучше, о чём вы сами убедитесь далее.
Для использования этого инструмента, нам понадобятся скачать модели по адресу https://huggingface.co/h94/IP-Adapter/tree/main/models
Основные настройки которыми мы будем пользоваться:
Control Weight - сила с которой будет копироваться стиль
Starting Control Step и Ending Control Step - Начальный шаг и конечный шаг включения в работу модели ControlNet.
И в inpaint нам понадобится Denoising strength - допустимый предел изменений исходника в соответствии с референсом
Экспроприируем стиль
Примеры
Это промежуточные экспериментальные варианты.
Верхняя строчка - референс. Вторая строчка - пример с людьми включает в себя негатив и позу на отдельной вкладке Controlnet. Третья вкладка - только 1 токен в подсказке "tractor", без негатива.
Prompt - внутри картинок.
Требование к референсу: простая форма без лишних частей с возможностью лёгкого перечисления элементов и объектов для возможности их исключения через негатив. Идеальный вариант - куб с элементами округлой вставки по бокам (например сердечко) на монотонном фоне. Таким образом можно будет легко исключить лишние элементы из результата, но сохранить стиль.
Краткие выводы
- IP-Adapter может копировать не только стиль, но и позу, мимику, цвета референса, разные элементы и их части - в том числе и части тела или одежды.
- Для лучшего копирования стиля очень важна подсказка, негатив и настройки генерации, далее совокупность этих вещей будем называть Prompt. Стиль копируется и без всего этого, но лучшего результата можно добиться только при использовании настроенного prompt.
- Для повторения композиции со стиля, можно получить описание, например воспользоваться расширением Interrogator, полученную из него подсказку нужно "приспособить" под свою подсказку.
- Не забывайте выбрать подходящую модель для генерации, от этого тоже многое зависит.
- Если на референсе предмет, а вам нужен человек, обязательно укажите это в подсказке, увеличьте вес при необходимости, а лучше всего воспользуйтесь позой и Openpose в ControlNet. Если на референсе мужчина, а нужна на генерации женщина, мы должны обязательно указать это в описании, возможно в негатив добавить мужчину, а так же повысить веса токенов и поместить ближе к началу описания - тем самым "перебить" влияние токена с референса.
- Если композиция референса не совпадает с генерируемой композицией, то нужно во-первых уменьшить силу стиля параметром Control Weight и во-вторых запустить его применение после определённого количества шагов используя параметр Starting Control Step.
Основные тесты
Применение стиля к генерации, к готовой картине, объекту или его части
Сценарии
Для примера нам понадобится модель для XL или 1.5, модели скачиваются автоматом или вручную по ссылке.
Сценарии использования будут немного отличаться в зависимости от того что требуется:
- нарисовать новую картинку в стиле референса
- заменить стиль готовой композиции
- заменить стиль только у одного из объектов или его части
Действия будут немного отличаться в зависимости от того есть или нет описания к эталону и референсу, а также композиции самого референса.
Воспользуемся простейшим Prompt для тестов по которой будет сгенерирован Эталон трактора:
tractor
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 22, Size: 512x512, Model hash: 338b85bc4f, Model: juggernaut_reborn, Version: v1.8.0
Общая последовательность действий на вкладке controlnet
Для SD1.5 необходимо выставить настройки:
- Выбираете основную модель которая может воспроизвести стиль с референса, чем точнее подберёте, тем чётче будет результат.
- Вставляем в ControlNet референс, естественно включаем расширение, выбираем из групп IP-Adapter препроцессор ip-adapter-auto. В зависимости от основной модели генерации выбираем ip-adapter_sd15_plus для SD1.5. Референс желательно иметь как можно более абстрактный, не связанный с лицом, узнаваемым брендом или неким ярким объектом. Идеальным вариантом для референса - простая фигура на монотонном фоне без лишних деталей.
- Если Вам нужна определённая поза, действуйте согласно материалу о позах. В нашем же примере мы будем использовать трактор, для него больше важен Seed в котором он похож на то что нужно, без обрезок и дополнительных частей типа пятого колеса, В идеале - использовать настройки с генерации, если они имеются.
- Обязательно правите подсказку и если это само собой разумеющееся для режима txt2img, то для inpaint во вкладке ima2imq нужно описать объект под маской.
Таким образом, для нашего примера достаточно написать: tractor.
Теперь самое важное, настройки Controlnet:
Control Weight = 0.5-0.6 (txt2img) - 0.8 (img2img). Чем больше - тем сильнее проявляется стиль, но и больше искажается сама композиция, В режиме img2img этот параметр дополнительно коррелируется с параметром Denoising strength в настройках главного окна, если повышаем Control Weight то нужно понижать Denoising strength но иногда это нужно сделать для как раз увеличения стиля с сохранением объекта.
Starting Control Step=0.1-0.2 - Это процент общего количества шагов, который нужно пропустить, перед применением стиля. Это нужно сделать что бы сохранить нашу композицию, изменив только стиль. Первые шаги самые важные, первые 0.3 важнее оставшихся 0.7.
Control Mode=My prompt is more important - описание важнее стиля, т.к. в самом стиле могут присутствовать элементы несоответствующие нашей композиции.
Для SDXL необходимо подкорректировать настройки:
- Модель ip-adapter нужно выбрать соответствующую - ip-adapter-plus_sdxl_vit-h
Для img2img, помимо вышеперечисленных моментов, должны дополнительно провести некоторые действия и выставить настройки:
- Закинуть эталонную картинку в главное окно,
- Denoising strength=0.75 - значение по умолчанию, отвечает за степень допустимого изменения всей картины в соответствии со стилем. Обычно этого достаточно, если есть искажения композиции, то понижаем. Если стиль не проявляется достаточно сильно, то повышаем. Данный параметр коррелируется с Control Weight и Starting Control Step в настройках Controlnet.
- Проверяем разрешение картины, оно должно соответствовать эталонному изображению, для этого нажимаем на линеечку в виде треугольника.Для inpaint, помимо всех вышеперечисленных моментов, должны дополнительно провести некоторые действия и выставить настройки:
- Выделить маской объект или его часть подлежащую стилизации.
- Mask mode=Inpaint masked - рисовать в маске
- Inpaint area= whole picture - если нужно перегенерировать всю картину, или only masked - если нужно перегенерировать конкретный участок под маской, В последнем случае разрешение указанное в соответствующей области будет использоваться для участка под маской, а не всей картины, что актуально если нужно перегенерировать небольшую маску и увеличить при этом качество генерации.
Улучшеное копирование стиля и его применение к человеку
особенности работы с человеком
В предыдущем разделе мы научились применять стиль к объектам. Однако при детальном рассмотрении выяснится что стилю чего-то не хватает - может яркости, может цветности, может ещё что-то. Для начала попробуем "приспособить" наш предыдущий опыт с объектами к человеку, что бы было с чем сравнить до улучшенного копирования.
Для этого возьмём довольно сложный референс, наиболее яркий пример я нашёл в интернете. Отдельное спасибо автору за Prompt. Напомню, что на нашем сайте все prompt можно посмотреть либо непосредственно в самом материале, либо прочитав exif метаданные внутри изображения.Дополнительные действия для применения стиля к человеку
- Если Вам нужна определённая поза, действуйте согласно материалу о позах во второй вкладке. Я для примера использовал готовую позу. В случае применения Openpose можно усилить стиль,
- Обязательно правьте описание что бы хоть немножко описать свою будущую картину, позу и другие элементы. Например, если на референсе портрет, а Вам нужна другая поза, нужно перебить токен "портрет" своим описанием - например (full body:1.4). Если на референсе "мужчина", а вам нужна женщина, то Вам понадобится перебить этот токен в своём описании добавив в него женщину и вполне вероятно что придётся повысить вес. Так же не забывайте про негатив.
- Сила стиля референса будет уменьшаться прямо пропорционально длине подсказки и негатива.
- Усилить стиль можно повысив параметр Control Weight=0.6 и уменьшив Starting Control Step=0.2.
Результат
Prompt
1people, (full body:1.4), side view, full-length image,
smiling at camera, skin_details, perfect teeth, (detailed face), blushing, detailed glossy eyes, sharp, 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), 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: 4, Size: 512x768, Model hash: 9aba26abdf, Model: deliberate_v2, Style Selector Enabled: True, Style Selector Randomize: False, Style Selector Style: base, ControlNet 0: "Module: ip-adapter_clip_sd15, Model: ip-adapter_sd15_plus [32cd8f7f], Weight: 1, Resize Mode: Crop and Resize, Low Vram: False, Processor Res: 512, Guidance Start: 0.3, Guidance End: 1, Pixel Perfect: True, Control Mode: Balanced", ControlNet 1: "Module: dw_openpose_full, Model: controlnet11Models_openpose [73c2b67d], 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
КОПИРОВАНИЕ СТИЛЯ с улучшенной ПОДСКАЗКой
- Для начала закиньте Референс в PNG info - возможно автор молодец и не стал жадничать. Отправляйте полученные данные в txt2img, правьте подсказку, меняйте модель в соответствии с полученной информацией и наслаждайтесь результатом и без ControlNet 😉
- А вот если у вас нет нужной модели или автор жлоб и специально изменил описание изображения или стёр его. То можно воспользоваться расширением Interrogator предварительно установив его в Автоматик. Это расширение позволяет предложить описание для картинки и проанализировать на предмет применения стиля определённого художника. Однако, внимание: применение данного расширения целесообразно для применения схожих композиций, т.е. ваша генерация должна иметь аналогичные объекты как и на референсе. Если объекты имеют расхождения - нужно учитывать эти моменты как в позитивной подсказке, так и негативной. Включайте голову при редактировании!!!
Т.к. на предыдущем шаге мы получили удовлетворительный результат, нам будет с чем сравнить. Автор картинки с которой мы будем копировать стиль оставил описание - спасибо ему, но мы его использовать не будем, оно здесь для сравнения с описанием из interrogator, вот оригинальный Prompt:
Prompt
The colorful jelly flew through the air and landed on the young girl, enhancing her mesmerizing appearance., cinematic shot + dynamic composition, incredibly detailed, sharpen, details + intricate detail + professional lighting, film lighting + 35mm + anamorphic + lightroom + cinematography + bokeh + lens flare + film grain + HDR10 + 8K + Roger Deakins, ((cinematic))
Negative prompt: ((3d, cartoon, anime, sketches)), (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), bad anatomy, out of view, cut off, ugly, deformed, mutated, ((young)), EasyNegative, paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, glans,extra fingers,fewer fingers, (ugly eyes, deformed iris, deformed pupils, fused lips and teeth:1.2), (un-detailed skin, semi-realistic, cgi, 3d, render, sketch, cartoon, drawing, anime:1.2), text, close up, cropped, out of frame, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, 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,, Watermark, Text, censored, deformed, bad anatomy, disfigured, poorly drawn face, mutated, extra limb, ugly, poorly drawn hands, missing limb, floating limbs, disconnected limbs, disconnected head, malformed hands, long neck, mutated hands and fingers, bad hands, missing fingers, cropped, worst quality, low quality, mutation, poorly, close up, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, blurry, bad anatomy, blurred, watermark, grainy, signature, cut off, draft, blur, drawn, huge calf, bad hands, fused hand, missing hand, disappearing arms, disappearing thigh, disappearing calf, disappearing legs, missing fingers, fused fingers, abnormal eye proportion, Abnormal hands, abnormal legs, abnormal feet, abnormal fingers
Steps: 20, Sampler: DPM2 a Karras, CFG scale: 7, Seed: 1376610259, Size: 1331x1664, Model hash: 565b4cbd77, Model: zavychromaxl_b2, Denoising strength: 0.1, Clip skip: 7, Version: v1.5.1
А вот описание предложенное Interrogator, которое применили при генерации вместо нашего предыдущего описания:
Prompt
a woman with colorful hair blowing in the wind, stuning fantasy 3 d render, bubbling liquids, colour portrait photograph, feminine beautiful face, floating bubbles, the element woman, mana flowing around it, effervescent, splashes of color
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 4, Size: 512x768, Model hash: 9aba26abdf, Model: deliberate_v2, Style Selector Enabled: True, Style Selector Randomize: False, Style Selector Style: base, Version: v1.6.0
Теперь сравним результаты с нашим произвольным описанием и результатом через interrogator:
референс предмет, а генерируется человек
Это вариант посложнее, ибо Interrogator делает описание авто, а нам нужно описание человека. В добавок сам референс перебивает образ человека.
Самый простой способ выйти из этой ситуации - понизить вес Референса (в нашем примере до 0.5) и ОБЯЗАТЕЛЬНО использовать на второй вкладке OpenPose.
Однако более правильным вариантом будет вдумчивое изменение подсказки и негатива. interrogator - нужен только тогда, когда вы сами не можете описать стиль, применение данного расширения требует экспериментального подтверждения и ручной правки, особенно в случае разных композиций на Вашей генерации и референсе. Например, если на референсе машина а нам нужен человек на генерации, то нужно исключить все моменты связанные с машиной, желательно добавить токен "car" в негатив, а в позитив добавить токен связывающий машину с человеком - "cyborg".
ВАРИАНТ 1
Описание предложенное Interrogator добавляем к "Человеческому", на отдельной вкладке включаем openpose - это обязательно, т.к. благодаря этому рисуется человек, а не авто:
Prompt
1people, (full body:1.4), side view, full-length image,
smiling at camera, skin_details, perfect teeth, (detailed face), blushing, detailed glossy eyes, sharp, details, 8k, absurdes, pov, hi res, highly intricate details, analog, raw, cinestill, volumetric lighting, deep rich colors, ((zoomout)),
bugatti bugatti bugatti bugatti bugatti bugatti bugatti bugatti bugatti bugatti bugatt, in an arena in movie dune-2021, made of liquid metal, by Ben Enwonwu, hiper detailed, metabaron, qirex, black gold light blue, parking in the street, photo render, wet climate, mercedez benz, future!!
Negative prompt: (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: 4, Size: 512x768, Model hash: 9aba26abdf, Model: deliberate_v2, Style Selector Enabled: True, Style Selector Randomize: False, Style Selector Style: base, ControlNet 0: "Module: ip-adapter_clip_sd15, Model: ip-adapter_sd15_plus [32cd8f7f], Weight: 0.5, Resize Mode: Crop and Resize, Low Vram: False, Processor Res: 512, Guidance Start: 0, Guidance End: 1, Pixel Perfect: True, Control Mode: Balanced", ControlNet 1: "Module: dw_openpose_full, Model: controlnet11Models_openpose [73c2b67d], 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 + IP-Adapter + Openpose VS Prompt + Interrogator + IP-Adapter + Openpose
ВАРИАНТ 2
Описание простое, согласованное с референсом (правильные токены выделил зелёным цветом), openpose - в данном случае дополнительная опция для позы, а не обязаловка:
Prompt
portrait, woman, cyborg
Negative prompt: car
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 4, Size: 512x768, Model hash: 338b85bc4f, Model: juggernaut_reborn, ControlNet 0: "Module: ip-adapter_clip_h, Model: ip-adapter-plus_sd15 [c817b455], Weight: 0.5, Resize Mode: Crop and Resize, Low Vram: True, Processor Res: 512, Guidance Start: 0.1, Guidance End: 1, Pixel Perfect: False, Control Mode: My prompt is more important, Hr Option: HiResFixOption.BOTH, Save Detected Map: True", ControlNet 1: "Module: none, Model: control_v11p_sd15_openpose [73c2b67d], 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, Hr Option: HiResFixOption.BOTH, Save Detected Map: True", Version: v1.8.0
Prompt (без правильных токенов) + IP-Adapter + Openpose VS Prompt (с правильными токенами) + IP-Adapter + Openpose
несколько вкладок с IP-Adaper
Сравним что будет если использовать одну вкладку с одним референсом или две вкладки с референсом в том же стиле. Смысла в применении нет - т.к. решающее значение будет иметь подсказка и Референс в последней вкладке
img2img замена лица с дополнительными тестами
Внимание: для ознакомления с тестами по замене лица, частей лица и прочих элементов с помощью IP-Adapter - перейдите по ссылке на материал по замене лиц с подробным тестированием и сравнением.
Текст на фоне Референса
Ещё можно писать текст встроенный в референс
Краткие выводы
- текст делаем крупным
- шрифт легко различимым с крупными отступами между элементами букв.
- в качестве референса никогда не берём изображение с лицом. в идеале должен быть арт с чётким стилем.
- т.к. у нас используется ControlNet то разрешение можно ставить выше обычного
- текст лучше писать от руки, толстыми линиями с хорошо различимыми чертами. Тест должен быть крупным.
- буквы и нарисованные элементы на Референсе должны быть физически выполнимы с помощью элементов описанных в описании.
- Хорошо отрабатывает Preprocessor - scribble_xdog (XDoG Threshold=2) и Model = controlnet11Models_scribble
исходники
полезные материалы
Материалы для Референсов текста и прочее можно накачать с civitai. В частности эти замечательные квадратики были скачаны у пользователя navimixu
Основные тесты
txt2img - начальные тесты
txt2img
txt2img - воспользуемся Референсом 1 и проверим так ли хорошо отрабатывает IP-Adapter. или проще воспользоваться другими инструментами?
Interrogator БЕЗ IP-Adapter
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
Препроцессор scribble_xdog с параметром XDoG Threshold =1 тестируем на описании полученного из Interrogator.
Interrogator и Без него + IP-Adapter
Препроцессор scribble_xdog с параметром XDoG Threshold =1 тестируем на описании полученного из Interrogator + IP-Adapter и тоже самое только с пустым описанием
Тест семплеров
Тест препроцессоров без IP-adapter
Подкорректированное описание - удалил лишнее:
spaghetti and hot dog sausages, 2019 trending photo, with full descriptions, featured on pinterest, caidychen, seamless, sparkels
Небольшой вывод:
- Буковки следует делать покрупнее, не сливающиеся.
- Прежде чем изобретать велосипед с текстом и IP-Adapter, может следует попробовать обычным описанием, в ControlNet вставляем изображение текста, выставляем Model = ip-adapter_sd15_plus, а препроцессор один из тестируемых: canny, pidnet_sketch, pidnet_scribble, scribble_xdog, lineart,lineart_standart и т.д. - тот что чётче отделяет буквы и их элементы.
txt2img - полезные примеры
Практика и действительно полезные примеры
Итак, для практического применения текст делаем крупным, шрифт легко различимым с крупными отступами между элементами букв. В качестве референса никогда не берём изображение с лицом. в идеале должен быть арт с чётким стилем.
Квадратики и прочее можно накачать с civitai. В частности эти замечательные квадратики были скачаны у пользователя navimixu
scribble_xdog
- Control Weight=0.5
- Starting Control Step=0.3
- Основная модель Deliberate2
- XDoG Threshold=40
scribble_xdog
- Control Weight=0.5
- Starting Control Step=0.3
- Основная модель Deliberate2
- XDoG Threshold=3
scribble_xdog
- Control Weight=0.5
- Starting Control Step=0.3
- Основная модель Deliberate2
- XDoG Threshold=3