Краткий АЛГОРИТМ
  1. Закидываем картинку в inpaint
  2. Выделяем поточнее маской элемент который собираемся менять в цвете, а если выделить всю картину то можно раскрасить всю картину целиком, но результат будет мало контролируемым. На этом этапе можем воспользоваться одним из расширений по получению быстрой маски, например A Person Mask Generator из раздела полезняшек, а так же можем воспользоваться расширением Inpainting Anything - если нам понадобится кардинально изменить цвет, но тут есть пару особенностей, поэтому внимательнее читайте материал по данным расширениям. Настройки вкладки inpaint:
    Mask mode = Inpaint masked (рисовать в маске),
    Masked content = fill (акцент на описании),
    Inpaint area=Only masked (увеличивает область маски до указанного разрешения, таким образом картина будет обрабатываться не целиком в указанном далее разрешении, а конкретно выделенный участок будет преобразован в указанное разрешение и именно с ним будет вестись работа),
    Разрешение ставим 768-768 или даже 1024-1024 (область маски будет преобразована в это разрешение, что улучшит отработку мелких деталей).
    Denoising strength регулируем в пределах 0.7- этой настройкой будем контролировать соответствие исходника и наших хотелок.
    Gamma Correction - повышаем если хотим сделать цвет более тёмным и понижаем если хотим сделать более светлым
  3. Получаем описание всей картины, для этого проще всего закинуть изображение в interrogator. Из полученной подсказки удаляем лишнее описание и всякие улучшалки, оставляем только объекты и элементы композиции. Добавляем цвет ко всем элементам в подсказке. Добавляем стиль улучшения изображения в конец подсказки и негатива. Учитываем, что тёмный исходник можно менять на тёмные цвета и наоборот, ибо сначала идёт обесцвечивание оригинала, а потом колоризация. Повысить интенсивность цвета можно увеличив вес токена цвета вместе с объектом, дополнительно прописав токен color в подсказку или токен black and white в негатив и так же повысив их вес. На светлом эталоне есть вероятность непрокрашивания некоторых участков, с тёмным эталоном таких косяков нет.
  4. Если этот пункт не выполнять - у нас в результате произойдёт замена элемента в выделенной области на указанный в подсказке, а не его перекраска. Нам же нужна перекраска, поэтому включаем Controlnet - Recolor. Препроцессор recolor_intensity=для придания интенсивности цветам или recolor_luminance=для подсветки в указанном свете - хотя на самом деле граница между этими препроцессорами весьма условна. Модель выбираете исходя из основной модели для генерации, SD1.5 работает лучше чем XL. Если у нас цвет в описании тёмный то усилить эффект можно повысив Gamma Correction, а если свет светлый то нужно наоборот понизить этот параметр для усиления эффекта.

Расширения

Есть простой способ раскраски изображений - расширение Deoldify, однако из-за отсутствия контроля над процессом, этот вариант здесь мы рассматривать не будем. Также есть возможность перекраски, а точнее перегенерации с сохранением деталей через расширение Inpaint Anything, но для более качественной раскраски/перекраски с сохранением исходника оригинала нам понадобятся Controlnet и модели ioclab_sd15_recolor или ХL-sai_xl_recolor_128lora для SD1.5 и XL соответственно. Модели если их по каким-то причинам ещё нет, качаем по ссылке:

Следует сделать акцент на том что мы не собираемся менять сам объект перекраски, а наоборот - хотим сохранить его особенности и черты. Особенностью этого метода будет являться раскраска светлых элементов в светлые краски, а тёмных в тёмные. Т.е. просто так, не получится изменить чёрную рубашку на белую, но на золотую или на красную пожалуйста. Так же следует иметь ввиду что, хреновый оригинал - даёт хреновый результат, иными словами старую ЧБ фотку нужно сначала "привести в порядок", а уже потом раскрашивать.

Recolor — красим и перекрашиваем всё что угодно

Эксперименты

примеры в ходе экспериментов

То, ради чего дальше читать:

исходники для быстрого доступа

Копия светлая - получена с помощью расширения Inpaint Anything из оригинала, поэтому немного отличается, но тёмные участки как и светлые помогут нам в некоторых экспериментах

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

Тесты без расширялок

В подсказку пишем "ЦВЕТ dress". Controlnet не используем. Используем Оригинал - с тёмным платьем.

original download

Исходник и маска

Выводы
  • Для замены тёмного цвета на тёмный - можно не заморачиваться с Controlnet. Достаточно маски, и правильных параметров. Однако для замены на эталоне из светлых тонов - такой фокус не прокатит.
  • Denoising strength подбираем в зависимости от оригинала - на простом исходнике оставляем значение по умолчанию, на сложном понижаем с небольшим шагом. 
Тест параметров и препроцессоров

Для начала протестируем возможность замены тёмного оригинала на белый или красный цвет. Посмотрим на что влияет при этом параметр Masked content. Отдельно протестируем препроцессоры recolor_intensity и recolor_luminance. Для тестирования в подсказку пропишем цвет "white dress" в качестве неправильного цвета (т.к. эталон тёмный) или "red dress" в качестве правильного цвета замены.

original download

Исходник и маска

Выводы
  • Настройка Masked content = fill (акцент на описании), на тёмных участках лучше отрабатывает цвет.
  • Препроцессор luminance - немного как бы подсвечивает цвет, а intensity - делает цвет насыщеннее. Но зачастую разница едва уловима.
  • Denoising strenght - ставим либо по умолчанию, либо выше.
Тест параметров

Тест параметра Mask content. Используем копию со светлым платьем.

tmpd50utbpt download

Исходник и маска - обращайте внимание, что автомаска может кривожопенько отработать на светлых участках, на примере особо криво отработала область бёдер.

Выводы
  • Настройка Masked content = fill (акцент на описании), на тёмных участках лучше отрабатывает цвет.

Берём Оригинал с светлым платьем и меняем цвет платья

red dress

Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 196840501, Size: 768x1024, Model hash: d37263937f, Model: epicphotogasm_z, Denoising strength: 0.75, Mask blur: 4, Style Selector Enabled: True, Style Selector Randomize: False, Style Selector Style: base, ControlNet 0: "Module: recolor_luminance, Model: ioclab_sd15_recolor [6641f3c6], Weight: 1, Resize Mode: Crop and Resize, Low Vram: False, Threshold A: 1, Guidance Start: 0, Guidance End: 1, Pixel Perfect: False, Control Mode: Balanced, Hr Option: Both, Save Detected Map: True", Script: X/Y/Z plot, X Type: Prompt S/R, X Values: "red, green, blue, yellow, pink, black, white, gold", Version: v1.7.0

fill original

fill VS original

Тесты параметров

Тесты замены цвета кожи с применением параметра Gamma correction. В подсказку пишем "(ЦВЕТ skin:ВЕС)". Отдельно тестируем влияние веса токена на результат.

tmpd50utbpt download

Исходники

Выводы
  • Со светлым эталоном перекраска идёт сложнее - местами не прокрашивается, для исправления ситуации следует повысить параметр Gamma Correction, например до 1.5. Тёмный эталон даёт более качественный результат, сделать более светлый свет можно понизив Gamma Correction.
  • Вес токена объекта раскраски и его цвета играет большую роль.
Тесты фона эталона

Пробуем заменить цвет платья на разных эталонах - тёмном и светлом. Сами эталоны разные по рюшечкам если присмотреться, это следует иметь ввиду.

Маску делал вручную - она неточная.

original tmpd50utbpt

Исходники

Выводы
  • Со светлым эталоном перекраска идёт сложнее - местами не прокрашивается, для исправления ситуации следует повысить параметр Gamma Correction, например до 1.5. Тёмный эталон даёт более качественный результат, сделать более светлый свет можно понизив Gamma Correction.
  • Маску нужно делать точно. Автомаска (A Person Mask Generator) на светлом эталоне платья отрабатывает не всегда корректно, некоторые участки платья в районе бёдер не распознало, поэтому пришлось делать маску вручную. И даже в таком случае, при условии наличия маски в области левой ноги - платье тем не менее не перекрасилось, а изменилось на ногу. Маска - не точная, поэтому есть окантовка в некоторых местах.
epicphotogasm_z-green dress 1 6-1-Time_20240129112224 epicphotogasm_z-green dress 1 6-1-Time_20240129112038

Берём Оригинал с тёмным платьем и меняем цвет платья на зелёный (green dress:1.6), в сравнении параметр Gamma Correction на значении 1 и 0.5

(green dress:1.6)

Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1, Size: 768x1024, Model hash: d37263937f, Model: epicphotogasm_z, Denoising strength: 0.75, Mask blur: 4, Style Selector Enabled: True, Style Selector Randomize: False, Style Selector Style: base, ControlNet 0: "Module: recolor_luminance, Model: ioclab_sd15_recolor [6641f3c6], Weight: 1, Resize Mode: Crop and Resize, Low Vram: False, Threshold A: 1.4, Guidance Start: 0, Guidance End: 1, Pixel Perfect: False, Control Mode: Balanced, Hr Option: Both, Save Detected Map: True", Version: v1.7.0

epicphotogasm_z-green dress 1 6-1-Time_20240129111127 epicphotogasm_z-green dress 1 6-1-Time_20240129111637

Повторяем эксперимент но со светлым платьем в качестве эталона, в сравнении параметр Gamma Correction на значении 1 и 1.5

Тесты параметров

Gamma Correction тёмный Оригинал меняем на зелёный и жёлтый

original download

Исходник и маска

Выводы
  • Gamma Correction увеличиваем для тёмных цветов и уменьшаем для светлых
  • На тёмных участках - перекраска работает великолепно. На светлых участках следует крутить параметр Gamma Correction в большую сторону.
green 05 green 15

Берём Оригинал С оригинальной подсказкой и меняем цвет платья на зелёный (green dress:1.6), смотрим как будет влиять настройка Gamma Correction 0.5 и 1.5

(green dress:1.6),
magnificent goddess of all times and peoples, aphrodite, beautiful face, realistic skin, dresses developing on the wind, full -length, full full body, blue eyes, the wind in the hair, portrait painting, intricate detail, detailed black eyes, realistic, by Jean-Baptiste Monge

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: 1, Size: 768x1024, Model hash: d37263937f, Model: epicphotogasm_z, Denoising strength: 0.75, Style Selector Enabled: True, Style Selector Randomize: False, Style Selector Style: base, ControlNet 0: "Module: recolor_luminance, Model: ioclab_sd15_recolor [6641f3c6], Weight: 1, Resize Mode: Crop and Resize, Low Vram: False, Threshold A: 1.5, Guidance Start: 0, Guidance End: 1, Pixel Perfect: False, Control Mode: Balanced, Hr Option: Both, Save Detected Map: True", Version: v1.7.0

yellow 05 yellow 15

Повторяем эксперимент но со светлым цветом - жёлтым (yellow dress:1.6)

Тесты параметров

Control Weight и Наличия подсказки с негативом

original download

Исходник и маска

Выводы
  • Подсказка и негатив - важный фактор
  • Control Weight - если и стоит увеличивать то не более 1.4, да и то в особых случаях
Control Weight 1 + описания Control Weight 2 + описание

Берём Оригинал С оригинальной подсказкой и меняем цвет кожи на тёмный (dark skin:1.6), смотрим как будет влиять настройка Control Weight 1 и 2

(dark skin:1.6),
magnificent goddess of all times and peoples, aphrodite, beautiful face, realistic skin, dresses developing on the wind, full -length, full full body, blue eyes, the wind in the hair, portrait painting, intricate detail, detailed black eyes, realistic, by Jean-Baptiste Monge

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: 1, Size: 768x1024, Model hash: d37263937f, Model: epicphotogasm_z, Denoising strength: 0.75, Style Selector Enabled: True, Style Selector Randomize: False, Style Selector Style: base, ControlNet 0: "Module: recolor_luminance, Model: ioclab_sd15_recolor [6641f3c6], Weight: 1, Resize Mode: Crop and Resize, Low Vram: False, Threshold A: 2, Guidance Start: 0, Guidance End: 1, Pixel Perfect: False, Control Mode: Balanced, Hr Option: Both, Save Detected Map: True", Version: v1.7.0

без описания CW1 без описания CW2

Убираем подсказку и негатив, оставляем только (dark skin:1.6) и повторяем тест.

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