DNK

DNK 

Stable Diffusion - учусь сам, делюсь с другими.

57subscribers

29posts

goals1
$4.25 of $213 raised
На развитие сайта по тематике Stable Diffusion - stALogen.ru

Stable Diffusion. Генерируем изображения с заменой лица всего по одной фотке.

Прошли те времена когда нужно было нанимать фотографа для фотосессии. Теперь ненужно тратить весь день на переодевания и поездки, достаточно иметь парочку обычных фотографий, капельку воображения и установленный Stable Diffusion
В этом материале я расскажу как получить качественную замену лица на сгенерированном изображении всего по одному фото в качестве референса.
Для начала разберёмся какие есть способы:
- Если личность популярная, достаточно вписать её в подсказку. Можно воспользоваться не только именем Актёра, но и именем персонажа. Это самый лучший и простой вариант замены лиц, но нейросеть должна знать вашего героя.
- Воспользоваться LoRA/LyCORIS/Embedding - это мини модели натренированные на фотографиях необходимого персонажа, дополняют основную модель генерации. Качество обычно хорошее и естественно не все физиономии есть в наличии. Скачать большинство можно с Civitai.
- Воспользоваться расширениями предназначенными для замены лиц ReActor или FaceSwapLab. Есть ещё Roop - но на текущий момент он не поддерживается.
- Через ControlNet с помощью IP-Adapter или Instant_ID.
Рассмотрим последний вариант с помощью IP-Adapter, когда у нас всего одна фотография неизвестной женщины, например скачаем первую попавшуюся из интернета. Не знаю кто такая. но для эксперимента сойдёт :Р
В конце концов должны получить вот такой результат новой генерации:
Если Вас устраивает результат, читаем далее, если что-то не то, то всё равно читайте пожалуйста далее, в следующих материалах я покажу как сделать ещё лучше.
Для начала нам понадобится XL модель которая может делать изображения фотографического стиля, например juggernautXL_v9Rundiffusionphoto2, скачать можно с Civitai. Модели SD1.5 используют другие модели Controlnet и лоры соответственно, результат будет немного хуже, поэтому я его тут не рассматриваю, а даю готовый рецепт счастья.
В самом Stable Diffusion нам понадобится Controlnet, модели для ip-adapter и Lora для этих моделей. Controlnet не забывайте обновить, а модели и Lora можете скачать вручную если они не появились автоматически (Lora точно не появится, качаем, а затем вставляем вручную):
FaceID модели для Controlnet (нам понадобятся файлы ip-adapter-faceid_sdxl + lora ip-adapter-faceid_sdxl_lora или ip-adapter-faceid-plusv2_sdxl + lora ip-adapter-faceid-plusv2_sdxl_lora)
Теперь разберём настройки:
• в главную подсказку введите описание будущей генерации, в негатив то что хотите исключить. Подсказка должна быть лаконичной, согласующейся с референсом. Чем короче подсказка - тем лучше.
• Sampler=DPM++ SDE Karras (или согласно вашей модели)
• Steps=20 (или согласно вашей модели)
• Разрешение ставим согласно рекомендуемым для модели и необходимому соотношению, например для XL 1024 на 1024 если у вас соотношение сторон квадратное.
• ОБЯЗАТЕЛЬНО CFG=2 и постепенно увеличиваем до выполнения подсказки или уменьшаем устраняя эффект пережаренности и повышая реалистичность. Для нечеловеческих лиц или не реалистичной стилистики  можно выставить по умолчанию на 7. Этот параметр напрямую зависит от подсказки, используемой модели для генерации, качества референса фото и расположения звёзд на небе.
• В Controlnet выбираем один из вариантов и в подсказку вставляем соответствующую Lora:   
   - Preprocessor=ip-adapter_face_id и Model=ip-adapter-faceid_sdxl в подсказку<lora:ip-adapter-faceid_sdxl_lora:1>
   -
Preprocessor=ip-adapter_face_id_plus и Model=ip-adapter-faceid-plusv2_sdxl в подсказку <lora:ip-adapter-faceid-plusv2_sdxl_lora:1>
• В Controlnet повышаем параметр Control Weight=1.3
• В Controlnet вставляем референс лица, разрешение следует уменьшить до рекомендуемого при обычной генерации. Из требований к изображению следует обратить внимание на узнаваемость черт, отсутствие ярко выраженных эмоций, макияжа, специфического освещения, кривляний в кадре, посторонних лиц и прочего. Чем стандартнее и проще референс - тем лучше. 
Я немного усложнил задачу используя яркую эмоцию с активным действием и нестандартные разрешением, поэтому Prompt получился следующим:  
Подсказка: Downblouse, Nipslip, windblownface, a woman shouting, parachute, clouds, skydiving, helmet, GoPro, <lora:ip-adapter-faceid_sdxl_lora:1>
Негатив: Blurred, noisy, low quality, grainy
А так же пришлось увеличить CFG=2 и в итоге получил следующее:
В обычных условиях всё гораздо проще, но тем не менее CFG поставил на 1.5:
Внимание: Мелкие огрехи типа кривожопых пальцев, косоглазия и прочих прелестей генерации мы обязательно научимся убирать или улучшать, но сделаем это в отдельном материале. Здесь же мы рассматриваем только первый этап - получение изображения с похожим  референсным лицом.
Вместо ip-adapter можно воспользоваться Instant_ID, актуально в случае необходимости стилизации изображения. 
Вариант с Instant_ID более требователен к ресурсам. Тем же кто решиться на эксперимент  нужно обновить controlnet до версии не ниже V1.1.440, скачать две модели в папку /models/ControlNet, затем переименовать их как показано далее с сохранением расширения: ip-adapter_instant_id_sdxl и control_instant_id_sdxl. Далее, используя две вкладки Controlnet подрубить обе модели с соответствующими препроцессорами:
  1 вкладка: препроцессор instant_id_face_embedding с моделью ip-adapter_instant_id_sdxl. Сюда закидываете референс лица.
  2 вкладка: препроцессор instant_id_face_keypoints  с моделью control_instant_id_sdxl. Сюда кидаете расположение головы, с этого референса будет браться расположение глаз и рта, поэтому можно вставлять любое изображение с подходящим разворотом головы. В img2img достаточно не включать галочку для загрузки изображение, в этом случае оно будет браться из главного окна.
На системах с видеопамятью 12 ГБ и ниже, на вкладках Controlnet рекомендую включать галочку "Low VRAM" - иначе будите отлетать по памяти.  
Трудности с которыми Вы можете столкнуться: лицо не похоже на референс - попробовать закинуть другой референс, рядом с выбором Preprocessor (между ним и моделью), есть значок солнышка, при нажатии на него в консоли недолжно быть никаких ошибок, это означает что лицо успешно распознано. Проверяйте настройки и особенно наличие Lora в описании. Если изображение не чёткое, и не слушается подсказки - увеличивайте понемногу CFG, например попробуйте поставить 1.5-2. Все настройки в данном материале для XL модели!!
Несмотря на кажущуюся простоту процесса замены лиц - это лишь малая доля. В дальнейшем я покажу как ещё больше увеличить сходство с референсом используя такие расширения как FaceSwapLab и ReActor в совокупности с ip-adapter. А так же расскажу и покажу как поправить косячки генераций в авто режиме и как увеличить изображения с сохранением оригинальных черт. 
Если кому тема будет интересна, то могу расcмотреть вариант на SD1.5. Подписывайтесь и пишите комментарии. Оставайтесь со мной, дальше будет только интереснее. Спасибо за внимание.
  Другие способы замены и больше примеров с тестами вы найдёте перейдя по ссылке - stALogen.ru
Мило, конечно, однако у меня 1660s 32 гб, 1tb, 3600+, с 12 потоками, и максимум могу запустить, модель в 4 гб и в край, и то не желательно, где-то 2 гб, максимум, иначе после генерации ПК нужно перезагружать... То есть воспользоваться не сможет почти никто, ну да ладно все равно один, из лучших гайдов может онлайн получится, одно непонятно, те кто пишут такие инструкции, у вас что промышленное оборудование стоит что ли. Python и JS, хочется отправить... На.... 
Леонид Кабисоа (Hallow), приветствую. На самом деле не всё так плохо, основная нагрузка ложиться на видеокарту. У меня рефаб ASUS GeForce RTX 3060 12 ГБ (TUF-RTX3060-O12G-GAMING) - хватает на всё, даже flux (fp8 и ниже) работает на ComfyUI и Forge. Цена видеокарты была 27 тыс. с копейками, сейчас дороже. 
у меня 3090 иногда не хватает памяти в некоторых задачах.
Romanio Amd, у меня на 12GB VRAM - нехватка памяти возникает при изменении моделей если одна из них flux. помогает только перезапуск. надо подумать, может использовать ноду "clear vram" при использовании схемы с двумя моделями
DNK, да просто я более качественные модели использую кроме тех которые около 23 гб надо 5090 покупать уже с пк, а 3090 пойдет для локальных моделей llm. 4090 не хочет дешеветь разумно.
Subscription levels3

Поддержка штанов автора

$0.15 per month
Благодарность автору, на пропитание.

Признательность

$1.42 per month
На вдохновение и последующие материалы 

Благословление на подвиги

$14.2 per month
Просто так 
Go up