
Введение
Как известно, генерация в нейросети 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

Результат генерации



Набросок 2

Результат генерации



Выводы
Различные модели выдают отличающиеся результаты, не всегда получается что-то интересное, порой приходится дорабатывать изображение в Inpaint. Но следить за процессом интересно, так как никогда точно не знаешь, что получится на выходе. Пока по наблюдениям можно сказать следующее:
большое количество размытых пятен часто даёт эффект полного расфокуса, так что желательно наличие пятен, имеющих чёткие границы
светлые зигзагообразные линии чаще приводят к появлению на изображении человека (обычно девушки, причем иногда не совсем одетой)
худшие результаты получаются на светлом однотонном фоне c малым количеством одноцветных чётких пятен. Чаще всего в кадре появляются невнятные фигурки, а то вообще какая-то абстракция, лишённая смысла
интересные результаты дают вертикальные линии на фоне размытых разноцветных пятен
лучше всего себя показывает модель Art Universe, Epic Realism и Dreamshaper 8
Ещё больше скетчей и результатов есть в моём телеграмм-канале. Эксперименты продолжаются.
Комментарии (8)
MountainGoat
20.09.2023 12:35Я раньше любил написать в запрос только "nothing" и так генерировать. Получалось крипово: бескрайние поля и пустые коридоры перемежаются с портретами стариков, флагами какими-то, и космосом.
Но теперь нужны старые модели: более современные, даже на базе 1.5, все выдают либо пятна, либо пытаются написать слово nothing.
vassabi
20.09.2023 12:35.... мда, и все эти картинки не нарисованы человеком (спустя несколько часов), а сгенерированны за считанные минуты. Каждый раз смотрю и каждый раз чуствую себя как папуас перед первым фонографом О_О
Emulyator
20.09.2023 12:35+1Так то оно так, но надо помнить, что на имеющихся моделях можно сгенерить далеко не все что хочешь, сколько ни упрашивай. Решить такие задачи можно дообучая сеть тем или иным способом на базе картинок-примеров нарисованных/сфотканых человеком.
Quiensabe
20.09.2023 12:35+2Как показала практика, при значениях ниже 0.5 практически на всех моделях и при любых прочих параметрах генерации, финальное изображение максимально упрощалось и стремилось к наброску. При значениях в диапазоне от 0.5 до 0.6 чаще получались картинки в мультяшном стиле, при этом негативные промты на результат влияния почти не оказывали
Этот параметр не предназначен для работы с набросками. Вы по сути хотите не определять близость результата к наброску, а определять близость наброска полученного из результата, к вашему исходному наброску. Ровно для этой цели и создан ControlNet.
набросок результат gygavolt Автор
20.09.2023 12:35Этот параметр предназначен для работы с изображением. И он активен только в режиме img2img. В любых вариантах: Sketch, Inpaint, Inpaint sketch. Насколько я понимаю принцип работы, Denoising strength определяет величину зашумления исходного изображения. И как показала практика, финальный результат очень чувствителен к данному параметру. Причём, такое впечатление, что критическим порогом является значение в районе 0.5, ниже которого исходный скетч практически не деградирует, сохраняя и форму и цветовые компоненты. А выше - появляются нюансы.
Quiensabe
20.09.2023 12:35+1Принцип работы, Denoising strength меняется в зависимости выбора других параметров, и в целом он несколько сложнее. Вот тут неплохо описано с примерами.
Если упростить, то да, можно сказать, что этот параметр определяет насколько будет преобразовано исходное изображение во что-то новое. С этим я никак не спорю.
Смысл моего комментария в том, что конкретно в задаче превращения скетча в полноцветное изображения нужно использовать соответствующий инструмент. Используя для этого Denoising strength вы создаете среднее между фотографией и наброском, поэтому и получается ерунда, или фото непохожее на то что нарисовано на наброске, или недо-фото похожее на набросок, но убогое само по себе. В середине компромисс, который одинаково плох с обоих сторон.
У ControlNet есть похожий параметр - Control Weight. Но он при генерации будет делать скетч из промежуточных версий результата (похоже на фильтр выделение границ в фотошопе), и сравнивать ваш набросок с ним. Это позволяет превращать рисунок в фото (а также многое другое). Что и показано на моем примере.
vassabi
20.09.2023 12:35+1вотвидите - чем нейронки прикольнее обычных приложений - в них можно засовывать всякую фигню, не только специально подготовленные данные и они все равно как-то работают :) (а не просто падают)
Emulyator
Мне показалось, что в статье нет того, с чем нельзя "ознакомиться в многочисленных статьях и видеообзорах в интернете".