Как вписать человека в любое фото с помощью Stable Diffusion и Automatic1111

Как вписать человека в любое фото с помощью Stable Diffusion и Automatic1111

Недавно участвовал в движухе, где нужно было на реальное фото наложить сгенерированного человека: реального или нет — не важно. Многие начали спрашивать в чате, как это сделать, и вот, наконец, у меня дошли руки до гайда.

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

Подготавливаем необходимое

Что нам понадобится? Во-первых, установленный либо локально, либо в облако Automatic1111. Прикреплю ссылки на лучшие по моему мнению гайды, можете смело пользоваться. В случае проблем готов помочь в чате.

Также необходимо зарегаться на сервисе Avaturn.me — в нем мы создадим виртуального аватара того человека, которого будем добавлять в окружение на фотографии.

Для того, чтобы добавить персонажа, вам будет нужно обучить модель на его фотографиях, и тогда вы сможете генерировать его в любом образе. Я натренировал модель на изображениях девушки, поэтому буду показывать на ее примере. Вы же можете как последовать моему примеру, так и взять готовое решение, к примеру, LORA или Embeddiong Кары Делевинь.

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

К тому же сам персонаж лучше генерируется на небольших показателях ширины и высоты фото, поэтому учитывайте это.

Перейдем к практике

Итак, у вас есть фотографии, куда необходимо добавить персонажа — что дальше, спросите вы? Дальше нам нужно создать виртуального аватара, которого мы затем наложим поверх фотки.

Переходим на сайт Avaturn.me и загружаем в него 3 фотографии вашего лица, сделанные с разных углов. Жмем Upload photos и загружаем.

Добавляем фото
Добавляем фото

Собственно, вот требования к фотографиям от самого сервиса.

Загружаем фото, сделанные с трех сторон
Загружаем фото, сделанные с трех сторон

После недолгих манипуляций вы получите своего 3D-аватара, которого потом можно выгрузить в удобном формате и анимировать в блендере или синьке. Но нам будет достаточно браузера и окна предпросмотра.

Одеваем нашу девицу и задаем позу
Одеваем нашу девицу и задаем позу

В редакторе можно и шмотки подобрать, и цвет волос, и ракурс поменять, и позу задать — в общем, практически полная свобода действий. Далее просто скрините деваху и отправляете в сервис Erase.bg, где можно быстро убрать фон, не теряя в качестве и разрешении.

После проделанных манипуляций дружим девушку и фотографию, чтобы они никогда больше не разлучились. Для лучшего результата можете подрисовать тени в фотошопе, скорректировать освещение. Это ускорит процесс, однако нейронка и сама сможет догадаться, откуда светит солнце, поэтому запариваться не обязательно.

Также уточню, что одежда может быть практически любой, ведь в Stable Diffusion вы сможете в пару кликов как цвет заменить, так и фасон, ткань и материалы. Одежда легко заменяется, как и любая другая часть исходника.

Добавляем персонажа на фото
Добавляем персонажа на фото

Как только вас устроил результат по композиции и перспективе, вы можете переходить к самой ответственной части — Automatic1111.

Доводим все до ума в Stable Diffusion

Закидываем картинку и обрисовываем ее маской. Захватывайте область больше, чем занимает персонаж, чтобы и тени прорисовались, и контурный свет, и какие-то элементы одежды, волосы. В промпте обозначьте условия окружения и желаемую одежду.

Обводим объект маской
Обводим объект маской

Негативный промпт вставляем такой: (deformed, distorted, disfigured:1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers:1.4), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation

Остальные настройки выставляете так, как на скриншоте ниже. Сейчас мы будем подгонять объект под окружение, поэтому выбираем в разделе Inpaint area параметр Whole picture, а в поле Masked content ставим Original — так алгоритмы будут придерживаться оригинальной обстановки и пытаться подстроить под нее девушку.

Выставляем настройки
Выставляем настройки

Дальше нам нужно крутить и таскать ползунки, чтобы добиться вменяемого результата. Наша задача — получить вписанный в окружение объект, детали будем дорабатывать в конце. У меня сначала получалось что-то типа такого:

Первые попытки
Первые попытки

Будьте готовы к тому, что на данную задачу на первых этапах уйдут часы. Но постепенно вы отточите навыки и сможете щелкать такие задачки на раз-два!

Сам я, к слову, тренировался часов пять подряд, но зато сейчас минут за 20 смогу создать готовый силуэт. Есть, правда, одна маленькая проблемка — руки. Вот на их прорисовку у меня уйдет уже около часа. Такой вот вам инсайд. Но вы можете создать, к примеру, 10 генераций, и выбрать среди них наиболее удачную, где руки получились хорошо. Для этого я и советовал уменьшить разрешение, эксперименты — наше все!

Как только общий силуэт вас устроит, вы можете переходить к доработке конкретных участков: рук, лица, обуви и элементов одежды. Выделяете маской желаемую область и меняете параметр Inpaint area на Only masked.

Дорабатываем маленькие участки картинки
Дорабатываем маленькие участки картинки

После долгих попыток я получил результат, до которого я сам не смог докопаться. Скорректировал цвета в Photoshop, наложил некоторые эффекты и увеличил разрешение через встроенные в Automatic1111 апскейлеры, гайд про которые есть у меня в блоге.

Congratulations, вы справились!

Теперь кто-то умеет генерировать реального человека на фотографии с помощью лучшего фреймворка для Stable Diffusion на сегодняшний день. Буду рад обратной связи и вашим комментариям, а также приглашаю в свой телеграм чат, где отвечу на все вопросы касаемо SD.

Буду рад видеть вас в телеграм-канале, где я собираю лучшие гайды по Stable Diffusion. А если не найду, то пишу сам.

7070
45 комментариев

впиши меня сюда

16
Ответить

Тебе только что гайд дали

2
Ответить

из полезного только информация как органично вписать любой объект с сохранением бэкграунда.
Девочка получившаяся только формой лица похожа на 3д модель. Раз возникают у тебя проблемы с руками, то используй библиотеку поз на том же civitai, либо сам создай позу через control_net по depth (влияние веса поставить на 0,8-0,9 чтобы не было сильно привязано к силуэту и ограничивало в генерации типов одежды). Лучше человека сгенерировать с правильными руками сразу, чем через инпэйнт потом это всё править. Лицо гораздо проще через инпэйнт в увеличенной размере прогнать (only masked).
Я бы делал так 3 фото прогнал через лору натренировал там. При генерации использовал позу с civitai (либо с любой фотографии похожей девчушки, с вырезом бэкраунда). При генерации бы получалась девочка у которой форма головы, волосы, цвет +- была похожа на мою обученной по лора. Потом бы лицо прогнал через инпэйнт. С лицом возможно пришлось бы повозиться, если бы ракурс сильно отличался от того на чем тренировал. Но это явно проще чем возиться с руками. Если бы мне нужна была конкретная одежда, то натренировал бы на ней Textual inversion или лора отдельно.
Не забывайте принцип обучения нейронок - shit in, shit out. Если 3д модель корявая и не похожая на наш объект то и на выходе придется корпеть и править все эти косяки чтобы получился человек который нам нужен.
Есть еще вариант который иногда использую. Обучаю также лору на лице. Потом лицо человека прогоняю через сервисы - яндекс картинки, либо на какую знаменитость похож этот человек. И пробую сгенерировать эту знаменитость через stable diffusion просто в промтах использую имя и фамилию знаменитого человека и получается +- то что мы хотим, потом только лицо прогоняю инпэйнтом с натренированной лорой с минимум правок.

7
Ответить

Офигенные инсайты! 👏👏👏

1
Ответить

Можете записать видео как вы работаете с лицом, чтобы оно было похоже, пожалуйста? Интересует как сделать лицо на ростовой фигуре человека если просто с помощью Лоры не получается

Ответить

Мой вариант вставки лица своей сестры

6
Ответить