ITСooky

IT-рецепты съедобные и не очень!

Добавляем в Stable Diffusion свое лицо и выражение лица с позой тела!

дата 20.05.2023

При первом релизе заводской модели для Stable Diffusion там забыли убрать реальных людей, нас там коненчо не было, но знаменитости были. В последующих убрали, хотя вродебы никто не успел пожаловаться… Но возможность добавить свое лицо и позы оставили из чего проистекает великая польза для домохозйств как-то создание своих аваторов с любым состоянием лица и шикарностью фона, так и для фанатов всяких — своего любимого аткера заснуть в любую роль.

Пологаю что Stable Diffusion через вебморду AUTOMATIC1111 у вас уже установлен, на какой-нибудь платформе, если нет вот описано как я ставил его на Ubuntu Генерируем нейросетью Stable Diffusion свои картинки по текстовому описанию!

Кстати в зависимости от даты установки у вас будут разные проблема, сейчас вот например массовая проблема 9341 при попытке запустить с xfarmers, а он нужен — экономнее с памятью GPU работает! Но сейчас не об этом! У вас все установилось и запустило, вы зашли через браузер на http://127.0.0.1:7860/ и поехали!

Задаем Stable Diffusion позу
Нам понадобиться, в AUTOMATIC1111 установить расширение sd-webui-controlnet manipulations
Идем в Extentions\Available жмем Load from: находим его в появившимся списке и жмем с права Install

По кончанию установки он появится в Extentions\Installed

Теперь надо перезагрузить AUTOMATIC1111 в Settings нажимаем Reload UI и после этого он появляется во вкладке txt2img снизу, слева ControlNet v1.1.181

Для ControlNet нужны свои модели, качаем их кажется от сюда: https://huggingface.co/lllyasviel/ControlNet/tree/main/models
Скачиваем файлы
control_sd15_depth.pth
control_sd15_openpose.pth

Это основные для меня модели
openpose — рисует вектроно позу по скелету, а тепрь еще и выражение лица захватывает
depth — рисует глубину весго кадра

И кладем их в папку /stable-diffusion-webui/models/ControlNet

В настройках включаем чтобы можно было одноврменно три модели использоваться
В Settings находим слева ControlNet и ставим 3 в
Multi ControlNet: Max models amount (requires restart)

Сохраняем перезапускаем в Settings нажимаем Applay settings и Reload UI

Попробуем использовать, во вкладке txt2img раздвигаем ControlNet v1.1.181 мы сейчас на вкладке ControlNet Unit 0
Поставили галку Enabled
Ткнули в Image туда загрузили фотку
В Preprocessor выбрали openpose-face
В Model выбрали control_sd15_openpose.pth
Ткнули на бомбочку, это теепрь так превьью запускается, раньше месяц назад было по другому, и видим превьюшку!
Ну и тогда уж сраз, сверху пишем

Young woman

И жмем Generate

Итого все получилось по костям! Но нехватает объем для этого и нужен depth

Во вкладке ControlNet Unit 0 оставляем все как было, тжем в ControlNet Unit 1 и тут
Поставили галку Enabled
Ткнули в Image туда загрузили фотку
В Preprocessor выбрали depth_leres
В Model выбрали control_sd15_depth.pth

И жмем сразу Generate

И вот они объемы появились. Кости стоят правильно с правильными объемами на них!

Добавляем в Stable Diffusion свое лицо
У меня сейчас хороший результат выдает способ через Embedding. Созданная Embedding модель подходит ко всем моделям натренорованных на той же что и она модели, они сейчас практически все на v1-5-pruned-emaonly.safetensors.

Для начала находим 25-40 фоток, размер больше 512 пикселей по высоте и ширине, качественные с нейтральной позой лица, это поза и будет на всех нарисованных нейросетью. По размеру лица в кадре нужны разные — очень крупно, по грудь, по пупок. Я буду делать значит Ану де Армас, потому что я её фанат мне можно.

Вот такие фотки я выбрал

Идем в Train\Create embedding
Тут задаем имя, любую кракозябку главное чтобы у ней не было другого смысла для нейросети, кроме как указания на этот embedding
И в Number of vectors per token пишем 5 — так все советую для 30-40 фоток

Далее идем в Идем в Train\Preprocess images
Тут прописываем папки, Source directory где лежат фотки и Destination directory где будет лежать результат.
Ставлю галку на Auto focal point crop и раньше ставил Use BLIP for caption, потому что советуют её ставит, но это функция перестала работать и ни на что на самом деле не влияет.

Заметьте у нас все размеры везде были по 512 пикслей

И все теперь мы готовы начать обучение
Идем в Train\Train
В Embedding выбираем имся созданное ранее
В Embedding Learning rate я ставлю

0.05:10, 0.02:20, 0.01:60, 0.005:150, 0.002:500, 0.001:3000, 0.0005:10000, 0.0001

В Dataset directory это Destination directory из предыдушего шага
В Max steps ставлю 30000
В Drop out tags when creating prompts. cndk. 0.1
А в Choose latent sampling method выбираю Random
Остальное по умолчани.

И важно чтобы сверху была выбрана базовая модель v1-5-pruned-emaonly.safetensors

Запускаем, нажимаем Train Embedding, все встретимся через 2 часа(время для тех у кого тоже 7168 ядер cuda Обзор и тестирование в играх профессиональной видеокарты NVIDIA PNY RTX A4500 20Gb, что по своременным меркам уже средненько)! Каждые 500 шагов создается превьюшка для визуального контроля

Ну и вот результат уже узнаваемый, но я вообще то оставляю учиться на ночь, выходит где то 150000-200000…иии это не всегда дает результат, иногда чем дольше тем хуже, тут нет верных цифр надо смотреть как получается, для этого настройка Save a copy of embedding to log directory every N steps, 0 to disable у нас стоит записывать через каждые 500 шагов. В папке /stable-diffusion-webui/textual_inversion/дата_создания/имя_вашего_embedding/embeddings пишутся все варианты, берем их кладем в /stable-diffusion-webui/embeddings запускаем обработку и смотрим может в самом начале уже было хорошо! Кстати сама модель подозрительно меленькая, не больше 16 килобайт, сколько её не учи!

Ну и делаем значит, добавляю текстовый запрос

female posing, wearing elegant dress, art by Ana_de_Armas881

Ana_de_Armas881 — это имя моей Embedding модели и жму Generate


Узнаваемо да, но ужасно мало точек, это можно исправить поставив галочку на Hires. fix оставляем все по умолчанию и она увеличивает в два раза рабочую поверхность, а значит и результат

Вообще уже хорошо!

Можно попробовать другие модели не заводскую v1-5-pruned-emaonly.safetensors

Хорошая реалистичность у:
realisticVisionV20_v20.safetensors

cyberrealistic_v30BETA.safetensors

Лицо явно лучше у них получается, но надо учитывать что эти модели не заводские обучены на реальном мире как придется, но примерно 30%-50% приличных фоток они выдают!

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


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

Ваш адрес email не будет опубликован. Обязательные поля помечены *