Дисклеймер: Я не являюсь профессионалом в отрасли генеративного дизайна, поэтому всё что здесь сказано основано на моём сугубо личном небогатом любительском опыте.
Мотивация: Я заметил, что большинство генераций на Пикабу не являются фотореалистичными (я как-то равнодушен к аниме ¯\_(ツ)_/¯ ). В попытке на это повлиять и написан данный гайд.
С точки зрения аппаратного обеспечения при использовании txt2img-моделей важны два параметра:
Видеокарты от Nvidia с позиции применения их в генеративном дизайне работают на порядок быстрее карт от AMD. Если же ваш компьютер использует встроенную графику и не имеет дискретной видеокарты, боюсь, ничего работать не будет и на этом можно прерывать чтения данного гайда.
Переходим на GitHub-репозиторий программы Fooocus по ссылке https://github.com/lllyasviel/Fooocus
Находим раздел Download – Windows и кликаем по ссылке >>> Click here to download <<< (начнётся скачивание архива с программой). Кстати, если у вас карта AMD обратите внимание на соответствующий раздел Windows (AMD GPUs).
Распаковываем этот архив куда-нибудь на диск компьютера.
Включаем Fooocus запуская один из bat-файлов в папке:
run.bat (модель juggernautXL_v8Rundiffusion);
run_realistic.bat (модель realisticStockPhoto_v20) – как раз ранние по времени 10 постов из серии «Нейродевки» на Пикабу я генерил этой моделью.
Первый запуск будет долгим. Ждите скачивания программой необходимых ей ресурсов…
Первый этап пройден! Fooocus запущен!
Этап 2. Скачивание и установка альтернативных моделей
Модель realisticStockPhoto даёт вполне хорошие результаты, однако генерить NSFW в полной мере (в части стратегических девичьих мест 😉) мне этой моделью не удавалось, так как видимо обучалась эта модель на фотостоках лишённых NSFW-тематики, и модель просто не знает как это рисовать.
Есть два пути преодоления данного обстоятельства:
Использовать альтернативную модель (т.н. checkpoint) – полноценная модель изначально дообученная на какой-то тематике (например на NSFW-тематике). (может использоваться самостоятельно вместо juggernautXL_v8Rundiffusion или realisticStockPhoto_v20);
Использовать LORA (применяется как некая «приправа» для базовых checkpoint). Например, базовой моделью может быть realisticStockPhoto_v20 (или иная другая) и плюс LORA умеющая в NSFW-контент.
Мы пойдём по первому пути. Поэтому на сайте https://civitai.com/ скачиваем модели специально обученные на NSFW-тематике. Для этого заходим на сайт, переходим в раздел Models. В открывающемся окне при нажатии Filters выбираем:
Time period: All Time;
Model types: Checkpoint;
Checkpoint type: All;
Base model: SDXL 1.0.
Чтобы были видны модели заточенные под NSFW вам вероятно потребуется на сайте зарегистрироваться.
Находим нужную нам модель, например модель с названием «SDXXXL» (или любую другую) открываем страницу модели и скачиваем, кликая по ссылке Download.
После того как модель загрузиться нам нужно положить её в папку по пути Fooocus\models\checkpoints и при необходимости перезапустить Fooocus.
После перезапуска, активируем галочку Advanced для отображения дополнительных настроек.
Имя вашей скачанной модели должно появится в списке Base Model (SDXL Only) вкладки Models. Выбираем скачанную вами модель. В этой же панели можете выбрать необходимые вам LORA (их помещать в папку Fooocus\models\loras) и определить степень их влияния на базовую модель (мы этим пренебрежём).
Этап 3. Настройка расширенных параметров
Я для своих генераций во вкладке Advanced обычно выставляю следующие значения параметров:
Guidance Scale – 1.6 (чем больше, тем контрастнее получается результат, я ставлю, наоборот, низкие значение чтобы получать неконтрастные естественные цвета)
Image Sharpness – 25 (чем больше, тем больше деталей на изображении, я ставлю очень большие значение, чтобы сделать кожу более естественной)
Этап 4. Промпт
В большое поле слева от кнопки Generate пишем текстовое описание на английском языке того, что мы хотим получить, т.н. «промпт».
При помощи переводчика перевожу промпт: «Юная девушка с косичками и веснушками улыбается и замахивается теннисной ракеткой, теннисный корт, городской пейзаж, детализированная кожа, детализированные глаза, поры» и вставляю его в поле.
Этап 5. Генерация
Сейчас всё готово чтобы начинать генерацию.
Выбираете один из вариантов производительности и нажимаете Generate.
Могу ошибаться, но если я правильно всё понимаю:
Quality (Качество) – 60 шагов генерации (используется выбранная модель и выставленные параметры);
Speed (Скорость) – 30 шагов генерации (используется выбранная модель и выставленные параметры);
Extreme Speed (Экстремальная скорость) – 8 шагов генерации (используется выбранная модель, но выставленные параметры видимо игнорируются так как соответствующие ползунки становятся неактивными для изменения).
Lightning и Hyper-SD вроде как не используют выбранную вами модель а используют свою скачиваемую по интернету (но это не точно).
Для начала нагенерим пару десятков (ну или сотен, как повезёт 😄) изображений на Speed или Extreme Speed пресете. Можно и на Quality сразу, но это сильно дольше.
Этап 6. Вариация
После того как получили достаточно вариантов изображений выбираем одно понравившиеся и начинаем работать уже конкретно с ним.
Активируем галочку Input Image, включаем вкладку Upscale or Variation: и перетаскиваем мышкой понравившееся изображение в инпут поле для картинки.
Данная вкладка содержит следующие функции:
Vary (Subtle) – слабая вариация картинки;
Vary (Strong) – сильная вариация картинки;
Upscale (1.5x), Upscale (2x) и Upscale (Fast 2x) – разные варианты апскейлеров увеличивающих разрешение картинки. В некоторых случаях можно использовать, но они часто теряют детали и в случае ростового фото, кожа становиться «плоской». В случае портрета, с точки зрения влияния на кожу, проявляют себя лучше.
Выбираем функцию Vary (Subtle) и генерим варианты этой же картинки, но уже используя пресет качества «Quality». Пять, десять, двадцать генераций, пока не найдёте наилучший на ваш взгляд вариант.
Этап 7. Детализация
Далеко не все элементы готового изображения в итоге выглядят должным образом. Лицо модели (глаза в особенности) волосы и другие части тел должны быть резкими, качественными и проработанными.
Переходим на вкладку Inpaint or Outpaint.
Данная вкладка содержит в себе инпут поле для изображения, в которое мы, также как на предыдущем этапе, перетаскиваем мышкой понравившийся вариант изображения, а также следующие функции:
Inpaint or Outpaint – для расширения композиции в разных направлениях (лево, право, верх, низ);
Improve Detail – для улучшения детализации;
Modify Content – для модификации изображения, добавления/удаления элементов изображения.
Выделяете необходимый участок (обратите внимание на горячие клавиши во всплывающей подсказе) и генерируете несколько вариантов. Понравившийся перетаскиваете на инпут поле источника картинки для дальнейшего осуществления этого итеративного процесса детализации.
Вот и всё. Приглашаю в комментарии профессионалов от мира генеративного дизайна для критики моего подхода и предложения альтернативных лучших практик.