Введение

Как известно, генерация в нейросети Stable Diffusion осуществляется по текстовому описанию с использованием различных обученных моделей. Кроме того, в качестве первичного источника можно использовать произвольное изображение (генерация по скетчу). Подробно об установке и подробностях работы можно ознакомиться в многочисленных статьях и видеообзорах в интернете. Отмечу только, что в работе нейросети при генерации используется цветовой шум – это стало отправной точкой моего небольшого исследования, которым я хочу с вами поделиться.

В процессе работы с нейросетью мною были использованы как текстовые описания (промты), так и скетчи – примитивные наброски, описывающей некую общую концепцию будущего изображения. При генерации по скетчу в настройках нейросети можно задавать значение параметра «Denoising strength» (принимает значения от 0 до 1). Параметр указывает силу влияния наброска на первичную генерацию изображения. Чем ближе значение к единице, тем меньше влияние. Как показала практика, при значениях ниже 0.5 практически на всех моделях и при любых прочих параметрах генерации, финальное изображение максимально упрощалось и стремилось к наброску. При значениях в диапазоне от 0.5 до 0.6 чаще получались картинки в мультяшном стиле, при этом негативные промты на результат влияния почти не оказывали. Реалистичные модели, как правило, при низких значениях дают результаты с большим количеством искажений, при больших – сценарий финального изображения очень быстро уходит от того, что изображено на наброске.

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

В какой-то момент меня посетила идея: а что, если в качестве скетча использовать не осмысленные изображения, а некий шум, максимально примитивный набор цветовых пятен. Для работы в Stable Diffusion использовалась сборка от AUTOMATIC1111

Промт (одинаковый для всех скетчей):

associations, masterpiece, 8k, detailed

Параметры генерации:

  • Steps: 25

  • Sampler: DPM++ 2M Karras

  • CFG scale: 7

  • Size: 512×512

  • Denoising strength: 0.62 - 0.675

Для улучшения финального результата использовалась Lora "Detail tweaker" и расширение ADetailer

Результаты получились довольно интересными. Итак.

Набросок 1

Результат генерации
Модель Art Universe, Seed: 1654881968
Модель Art Universe, Seed: 1654881968
Модель Art Universe, Seed: 3931922218
Модель Art Universe, Seed: 3931922218
Модель CyberRealistic, Seed: 1063730015
Модель CyberRealistic, Seed: 1063730015

Набросок 2

Результат генерации
Модель Epic Realism, Seed: 582712724
Модель Epic Realism, Seed: 582712724
Модель Art Universe, Seed: 2929912603
Модель Art Universe, Seed: 2929912603
Модель Art Universe, Seed: 556240507
Модель Art Universe, Seed: 556240507

Выводы

Различные модели выдают отличающиеся результаты, не всегда получается что-то интересное, порой приходится дорабатывать изображение в Inpaint. Но следить за процессом интересно, так как никогда точно не знаешь, что получится на выходе. Пока по наблюдениям можно сказать следующее:

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

  • светлые зигзагообразные линии чаще приводят к появлению на изображении человека (обычно девушки, причем иногда не совсем одетой)

  • худшие результаты получаются на светлом однотонном фоне c малым количеством одноцветных чётких пятен. Чаще всего в кадре появляются невнятные фигурки, а то вообще какая-то абстракция, лишённая смысла

  • интересные результаты дают вертикальные линии на фоне размытых разноцветных пятен

  • лучше всего себя показывает модель Art Universe, Epic Realism и Dreamshaper 8

Ещё больше скетчей и результатов есть в моём телеграмм-канале. Эксперименты продолжаются.

Комментарии (8)


  1. Emulyator
    20.09.2023 12:35
    +5

    Мне показалось, что в статье нет того, с чем нельзя "ознакомиться в многочисленных статьях и видеообзорах в интернете".


  1. MountainGoat
    20.09.2023 12:35

    Я раньше любил написать в запрос только "nothing" и так генерировать. Получалось крипово: бескрайние поля и пустые коридоры перемежаются с портретами стариков, флагами какими-то, и космосом.

    Но теперь нужны старые модели: более современные, даже на базе 1.5, все выдают либо пятна, либо пытаются написать слово nothing.


  1. vassabi
    20.09.2023 12:35

    .... мда, и все эти картинки не нарисованы человеком (спустя несколько часов), а сгенерированны за считанные минуты. Каждый раз смотрю и каждый раз чуствую себя как папуас перед первым фонографом О_О


    1. Emulyator
      20.09.2023 12:35
      +1

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


  1. Quiensabe
    20.09.2023 12:35
    +2

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

    Этот параметр не предназначен для работы с набросками. Вы по сути хотите не определять близость результата к наброску, а определять близость наброска полученного из результата, к вашему исходному наброску. Ровно для этой цели и создан ControlNet.

    набросок
    набросок
    результат
    результат


    1. gygavolt Автор
      20.09.2023 12:35

      Этот параметр предназначен для работы с изображением. И он активен только в режиме img2img. В любых вариантах: Sketch, Inpaint, Inpaint sketch. Насколько я понимаю принцип работы, Denoising strength определяет величину зашумления исходного изображения. И как показала практика, финальный результат очень чувствителен к данному параметру. Причём, такое впечатление, что критическим порогом является значение в районе 0.5, ниже которого исходный скетч практически не деградирует, сохраняя и форму и цветовые компоненты. А выше - появляются нюансы.


      1. Quiensabe
        20.09.2023 12:35
        +1

        Принцип работы, Denoising strength меняется в зависимости выбора других параметров, и в целом он несколько сложнее. Вот тут неплохо описано с примерами.

        Если упростить, то да, можно сказать, что этот параметр определяет насколько будет преобразовано исходное изображение во что-то новое. С этим я никак не спорю.

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

        У ControlNet есть похожий параметр - Control Weight. Но он при генерации будет делать скетч из промежуточных версий результата (похоже на фильтр выделение границ в фотошопе), и сравнивать ваш набросок с ним. Это позволяет превращать рисунок в фото (а также многое другое). Что и показано на моем примере.


        1. vassabi
          20.09.2023 12:35
          +1

          вотвидите - чем нейронки прикольнее обычных приложений - в них можно засовывать всякую фигню, не только специально подготовленные данные и они все равно как-то работают :) (а не просто падают)