Изучаем возможности Stable Diffusion, часть 2
Лонг для тех, кому интересны продвинутые возможности работы с нейросетью
0.Что нового?
За неполный месяц, что прошел с моего первого гайда, сообщество Stable Diffusion невероятно выросло как в качестве генерируемых изображений, так и в методах работы с нейросетью. Дошла до пика и пошла на спад любовь к Грегу Рутковски и Альфонсо Мухе, животным в броне; вошли в моду изображения разных химер и вставка портрета себя любимого куда можно и нельзя через методы Dreambooth и Textual Inversion.
Появилась много сборок, работающих в онлайне - кто-то делает свои сайты, кто-то разворачивает на гугловском Colab, а одна группа вообще запустила коллективные вычисления, где ты можешь "дать погонять" свою простаивающую видеокарту всем желающим/воспользоваться чужой.
Следующее достижение, до которого, судя по всему, осталось недолго - генерация экспортируемой 3D-модели. Уже появились первые открытые репозитории на базе Stable diffusion, которые с этим справляются. 3D-моделлерам тоже пора начинать думать, на какую сторону спора вставать - "Вау, удобное подспорье для повседневных задач" или "Опасно, многих выкинет из профессии".
Whocareswhoami и Ok_Entepreneur_5833 поняли, как повторить "стиль" Midjourney даже без дополнительного обучения. Надо всего лишь... сформировать свой запрос к Stable Diffuson как " {subject}, stunning, highly detailed, 8k, ornate, intricate, cinematic, dehazed, atmospheric, (oil painting:0.75), (splash art:0.75),(teal:0.2),(orange:0.2), (by Jeremy Mann:0.5), (by John Constable:0.1),(by El Greco:0.5),(acrylic paint:0.75). Вместо {subject} - ваш желаемый объект. Весовые коэффициенты могут по-разному задаваться в зависимости от вашей сборки. Не забывайте про ограничение в 75 понятий(токенов) на 1 запрос!
Версия нейросети Stable Diffusion 1.5 с исправленными лицами так и не вышла в широкий доступ, но сообщество уже приноровилось исправлять лица с помощью прогона через CodeFormer/GFPGAN. Корявые руки с лишними пальцами все еще остаются слабым местом базовой нейросетки.
1. Что будет в этом гайде?
Прошлый гайд был про простую в установке сборку от NMKD, которая на днях получила апгрейд до версии 1.5, обзавелась must-have функцией исключения лишних деталей изображения ("негативный запрос") и кучей улучшений качества жизни. Я все еще рекомендую начинать с нее, если не хочется возиться с самостоятельной установкой python, git и вы просто хотите понять базовые возможности, предоставляемые нейросетью.
В этом же гайде я буду расписывать установку и возможности сборки Automatic1111. Ее отличие - частые обновления , огромное количество функций и настроек (они появляются намного быстрее, чем я пишу этот гайд), браузерный интерфейс. Она слегка сложнее в установке и требует больше времени на освоение, но и возможностей для реализации своих фантазий в ней в несколько раз больше.
В гайде буду рассматривать все на примере своей системы (Win10, Nvidia GTX1080) и запросов, на экспертность и чувство прекрасного не претендую. Буду рад любым дополнениям и исправлениям по содержимому, особенно от тех, кто понимает, что находится "под капотом" у методов.
Здесь не будет каких-либо сложно сделанных изображений в примерах, т.к цель - показать, как тот или иной аспект сборки поможет вам реализовать ваше виденье с помощью нейросети. Ну и самому освоить весь этот зоопарк инструментов :)
Если у вас Мак с M1 - есть гайд внутри самой сборки либо сборка InvokeAI (спасибо за уточнение, Arthur Netsvetaev !). Если у вас хорошая видюха от AMD - тоже есть гайд по установке (попробуйте и скажите, работает ли). На линуксе все и так должно идти концептуально по +- тем же шагам, что описаны у меня.
2. Установка
0) Ставим Python 3.10.6. Можно и выше, но автор сборки просит тогда не донимать вопросами вида "а почему у меня не работает". У меня самого стоит более свежая 3.10.7, полет нормальный.
Во время установки нужно отметить галочкой "Add Python to Path"
1) Ставим git. Будет МНОГО разных опций во время установки; не пугайтесь и оставляйте везде варианты по умолчанию, если не знаете, про что они.
Опционально - поставьте себе git-клиент, если не хотите работать с командной консолью. У меня стоит TortoiseGit, мне нравится. Качаете с официального сайта. Во время установки, опять же, выбирайте опции по умолчанию, если не знаете необходимых альтернатив.
Установили git-клиент - пора выкачать с гитхаба нужную сборку. Щелкните правой кнопкой на том месте, где хотите разместить сборку (весит она сама по себе без моделей всего 1.6 мб), нажмите Git Clone. В новом окне скопируйте в URL вот это - https://github.com/AUTOMATIC1111/stable-diffusion-webui.git ,при желании поменяйте название папки в строке Directory, нажмите OK.
Когда захотите обновить сборку (стоит делать каждые дня 2-3, автор невероятно продуктивен) - нажимаете правой кнопкой по папке, выбираете TortoiseGit- Pull, проверяете, что Remote Branch = "master", нажимаете Ок
2) Качаете саму нейросеть. Например, с файлообменника (без регистрации) или официального сайта (с регистрацией). Кидаете ее в папку models\StableDiffusion. Должно получиться так:
Почти все дополнительные нейросети - апскейлеры (повышают разрешение изображения) / исправители лиц выкачаются сами при первом их использовании, отдельно скачивать их не надо. Если у вас есть какой-то предпочтительный апскейлер на базе ESRGAN - можете закинуть его в папку models\ESRGAN.
3) Запускаем webui-user.bat в корневой папке, он сам выкачает все необходимые библиотеки. Первый запуск может занять довольно много времени. Когда все установится, вы увидите в командной строке надпись "Running on local URL: http:127.0.0.1:7860". Копируете адрес в свой любимый браузер и все готово!
2.5 Особенности установки на системы с недостатком видеопамяти и Nvidia16XX
Если у вас карта 16-ой серии или вам не хватает видеопамяти для генерации изображений, потребуется немного поправить запускаемый файл webui-user.bat.
Открываете его "Блокнотом" или другим редактором и вписываете в поле "set COMMANDLINE_ARGS=" нужные аргументы :
- Для старших моделей 16-ой серии надо прописать --precision full --no-half . Может также потребоваться --medvram, если не будет хватать видеопамяти
- Для других карт с 4 ГБ памяти и ниже вписываете --medvram. Если все еще жалуется, что не хватает памяти - добавляете --opt-split-attention. Если и это не помогло, пишите --lowvram --always-batch-cond-uncond --opt-split-attention
- Ту же самую опцию --medvram можно использовать, если хочется сразу генерировать 1024*1024 изображения на картах с 6-8 ГБ памяти.
Каждая опция замедляет генерацию изображений, поэтому не торопитесь их включать без необходимости. Не забудьте сохранить файл после внесения исправлений. Про сами опции можно почитать здесь.
Скоро в сборку добавится генерация на процессоре и оперативке, а не видеокарте, тогда ограничения на генерацию будут только временные. Владельцы слабых (по нынешним меркам) систем пока могут воспользоваться вот этой сборкой
3. Настройки
Настроек очень много, но можно ничего не менять и переходить к 4 разделу сразу.
После внесения желаемых изменений нужно нажать сверху "Applу Settings" и, иногда, перезагрузить все приложение.
Если вам захочется разобраться, что делает каждая настройка:
1) Always save all generated images | grids - Если не боитесь забыть сохранить удачный вариант/хочется экономить место/лень потом чистить лишнее - убирайте галку. Тогда надо будет нажимать "Save" на нужные изображения/сохранять их средствами браузера. Имхо - сетку нагенерированных изображение (grid) хранить смысла мало, ее удобно только для предпросмотра использовать
2) File format for images | grids - По умолчанию стоит формат png. Пробовал сохранять в jpeg, pdf, tiff, gif, eps - работает. psd, raw - нет.
3) Images | Directory filename pattern - по какому принципу называть изображения или папки. По умолчанию стоит [seed]-[prompt_spaces]. Возможные варианты: любая комбинация из [steps], [cfg], [prompt], [prompt_spaces], [width], [height], [sampler], [seed], [model_hash], [prompt_words], [date], [model_hash], [date], [datetime], [job_timestamp]. Я себе для изображений поставил [seed]-[datetime], а все описания пусть сохраняются в текстовике.
4) Add extended info (seed, prompt) to filename when saving grid - добавлять ли какое-то особенное название к сетке изображений. По умолчанию они называются просто grid-xxxx, где xxxx- номер запроса
5) Do not save grids consisting of one picture - на самом деле, не только сохранять, но еще и создавать не будет сетки в этом случае
6) Grid row count; use -1 for autodetect and 0 for it to be same as batch size - сколько строк будет в сетке изображений. при -1 будет стараться сделать квадратную/прямоугольную сетку
7) Save text information about generation parameters as chunks to png files - будет зашивать информацию о параметрах генерации внутрь самого png изображения. Прочитать эту информацию потом можно будет через специальные программы-инспекторы либо вкладку "PNG Info" в самой сборке
8) Create a text file next to every image with generation parameters - очень важно включить, если вы хотите повторяемости своих результатов / возможности поделиться всеми настройками генерации с кем-то еще. У содержимого текстового файла нет ограничений на размер содержимого, а вот впихнуть все-все параметры в название изображения вряд-ли получится из-за базового ограничения в 256 символов на длину пути (куда входит и название файла) в Windows. Вы можете снять это ограничение у windows но мне кажется, что отдельный текстовый файл удобнее.
9) Save a copy of image before doing face restoration - стоит включить, если вы планируете включать исправление лиц всегда и везде, так как иногда после "исправления" становится хуже. Я бы просто рекомендовал делать исправление лиц только на отдельных изображения - вычислительные ресурсы сэкономите, как минимум.
10) Quality for saved jpeg images - актуально, если выбрали jpeg как способ сохранения. Чем ближе к 100, тем меньше артефактов и больше вес у изображения.
11) If PNG image is larger than 4MB or any dimension is larger than 4000, downscale and save copy as JPG - включайте, если вам по каким-то причинам нужно ограничение на максимальный размер файла в 4 мб.
12) Use original name for output filename during batch process in extras tab - влияет на название файлов с результатами, когда будете сразу несколько изображений через апскейлеры/ исправители лиц прогонять. С галкой у результата будет имя, как у оригинала, без нее - просто номер запроса
13) When using 'Save' button, only save a single selected image - с галкой будет сохранять только 1 изображение, без него - все, что получились в результате запроса. Обратите внимание, когда вы нажимаете "Save", изображения сохраняются не в папку по умолчанию (output/txt2img и прочие), а в папку log/images. Можно таким образом отдельно сохранять самые удачные, что б быстрее искать их потом.
14) Paths for saving - выбирайте директории для сохранения результатов каждого метода. Нюанс только 1 - если укажете что-то в "Output directory for images |grids ; if empty, defaults to three directories below" - будет сохранять все изображения в выбранную папку вне зависимости от метода генерации.
15) Saving to a directory - можете включить создание отдельных папок под результат каждого запроса. Структура возможных наименований подпапок такая же, что и у изображений ( пункт 3) ). Если выберете [promt_words] в структуре наименований - можно указать, сколько слов из запроса брать в название папки. Так можно объединять в папки изображения, у которых первые слова в ваших запросах совпадают. Удобно, так как часто с 1 идеей в запросе различаются последние слова, а по первым можно их группировать.
16) Upscaling. Основные опции тут связны с "Tiling" - разбиением изображения на множество мелких участков для их апскейла с их возможным наложением друг на друга. Все хорошо, но есть нюанс - я с лупой не увидел никаких различий при любых настройках тайлинга для любых апскейлоров. Возможно, баг текущей версии. Напишите в комментариях, если вы нашли разницу.
17) LDSR processing steps. Lower = faster . Апскейлер LDSR тяжеловесный и медленный. Результат получается отличный от остальных, он больше мелких деталей "додумывает", но при этом появляются артефактные участки (краснл-синие точки) . На моей карте каждый его шаг занимает примерно 4 секунды и что спустя 100, что спустя 200 шагов артефакты не исчезают.
18) Select which Real-ESRGAN models to show in the web UI. (Requires restart) - можно выбрать дополнительные специализированные апскейлеры, например для аниме. Если знаете, зачем они вам - включайте и перезагрузите приложение.
19) Upscaler for img2img - не обнаружил никакого эффекта, возможно баг.
Предлагаю вам сравнивать разные апскейлеры - приближайте простой пример изображения с мелким кружевом и волосами и поймите, что подходит вашей ситуации. Я для себя решил, что для большинства задач подойдет SwinIR, а для создания супер-детализированных волос и шерсти - LDSR. Если хочется и разрешение увеличить и размытие сразу сделать - ScuNET GAN
20) Face restoration model
Можно выбрать, какая из моделей исправления лиц будет применяться в методе txt2img при включенной галочке "Restore faces". Я опять топлю за их применение только в случае необходимости - через вкладку "Extra", в которой вы и так можете выбрать метод и настройки для улучшения лиц.
Часто встречается высказывания, что CodeFormer лучше подойдет для реалистичных изображений, а GFPGAN - для околоанимешных. Чем хуже оригинал, тем заметнее будет улучшение. На и так неплохих становится только хуже - смотрите пример:
21) VRAM usage polls per second during generation. Set to 0 to disable. - из названия кажется, что должно влияет на частоту оценки объема видеопамяти. По-идее большая частота позволит не пропустить какое-то пиковое значение нагрузки, но я не нашел пока сценария, когда это на что-то влияет в обычном применении сборки и оставил на 1 опросе в секунду
22) Always print all generation info to standard output - не увидел никакого эффекта на выдаваемую информацию ни в интерфейсе ни в текстовых файлах
23) Add a second progress bar to the console that shows progress for an entire job. - влияет на то, будет ли в консоли дополнительных прогресс-бар для подсчета ожидаемого времени на генерацию всех изображений. На браузерный интерфейс не влияет
24) Stable Diffusion checkpoint - выбор варианта модели. Вам в раскрывающемся списке будут доступны все модели, которые вы закинули в папку models\Stable-diffusion. Большой список моделей, которые уже кто-то обучил, есть вот здесь. Будьте осторожны, там не только безобидная модель для Вайфу, но и модели для фурри, фут-фетешизма и прочего непотребства.
25) Apply color correction to img2img results to match original colors и Save a copy of image before applying color correction to img2img results - должно делать общую гамму скорректированного изображения более похожей на оригинал, но в моих тестах с автокоррекцией обычно получается хуже, чем без нее. Поэтому включить отдельное сохранение результата без коррекции, мне кажется, разумно. Нюанс - изображение без коррекции не покажет в браузере, оно будет только в папке для сохранения с пометкой "-before-color-correction"
Пример img2img с выключенной и включенной коррекцией:
26) With img2img, do exactly the amount of steps the slider specifies (normally you'd do less with less denoising). - слегка меняет результаты img2img при одинаковых настройках числа шагов.. Разница непринципиальная, но если вам важна повторяемость результата - зафиксируйте настройку в каком-то положении.
27) Enable quantization in K samplers for sharper and cleaner results. This may change existing seeds. Requires restart to apply. - ни малейшего изменения результатов не обнаружил ни на одном семплере из сборки. Возможно, баг, который поправят.
28) Emphasis: use (text) to make model pay more attention to text and [text] to make it pay less attention - очень удобная функция для изменения важности (веса) отдельных слов в запросе. Не рекомендую убирать.
29) Filter NSFW content - если вы не хотите видеть обнаженку при случайном запросе - поставьте здесь галку. По умолчанию ее нет.
30) Allowed categories for random artists selection when using the Roll button - если будете пользоваться местной функцией "Мне повезет", можете добавить, будет ли она брать художников из выбранных списков. Какого художника куда отнесли можно посмотреть здесь
31) Interrogate Options - влияет на функцию CLIP Interrogate, которая вызывается в img2img.
- Interrogate: keep models in VRAM - включайте, если у вас много видеопамяти и вы хотите, что б отрабатывало быстрее
- Interrogate: use artists from artists.csv - использовать ли список художников по умолчанию. Если сделаете свой - отключайте
- Interrogate: num_beams for BLIP - по описанию в вики - насколько детализованное описание будет без учета художников. Я не увидел никакой разницы
- Interrogate: minimum/maximum description length - заствать нейросеть выдавать описание заданного размера. Точно имеет смысл задавать минимум, т.к без него описание будет слишком генерализованным. Но переборщите с минимумом - нейросеть просто будет повторять 1 и тот же признак в описаниии, пока требуемого объема не достигнет. Максимум имеет смысл просто поставить на 256, хуже описания от этого не станут.
32) Show show image creation progress every N sampling steps. Set 0 to disable. - полезная опция, которая покажет, как меняется изображение на каждом шаге. С учетом того, что с каждым шагом изображение может сильно поменяться композиционно, особенно для _a семплеров, отображение позволит понять, на каком шаге стоило остановиться. Минус - время на отработку запроса возрастает, и процесс отрисовки будет показываться только для первого изображения в batch (соответсвенно - хотите, что б показывало все - увеличиваете Batch count, а Batch size ставите 1)
33) Show grid in results for web и Do not show any images in results for web - показыать ли сетку из изображений и результаты вообще. И то и то достаточно полезно, особенно если вы генерите много изображений сразу
34) Add model hash to generation information - полезно, если вы используете разные модели, что б вспомнить потом, с помощью какой именно сделали изображение.
35) Enable full page image viewer - изображение в браузере становится кликабельным и увеличенного масштаба. По-умолчанию оно масштабируется, если на него нажать, но можно это отключить в "Show images zoomed in by default in full page image viewer". Show generation progress in window title - не увидел эффекта
36) Sampler parameters - можно выбрать, какие семплеры спрятать, что б глаза не мозолили и настроить условия работы части из них. Например, eta (noise multiplier) for ancestral samplers влияет на все семлеры с буквой "а", сильно меняя их стартовые условия, и, соответственно, результат. Эти настройки не сохраняются в описаниях генерации, поэтому, если вам важна повторяемость, зафиксируйте настройку 1 раз в каком-то положении.
Разные настройки sigma влияют на семплеры euler, heun и dpm2. Например, при sigma churn =1 и sigma noise =1, обычный euler выдает результат, аналогичный euler_a.
Смотрите пример влияния разных настроек сигмы на euler(Beautiful cat sprite on fire elemental,intricate detailed fur, flame, vivid colors,
Steps: 50, Sampler: Euler, CFG scale: 7, Seed: 1766758075, Size: 512x512, Model hash: 7460a6fa).
Влияние Sigma tmin на результат практически незаметно. Больше примеров можно посмотреть здесь
4. Возможности
Во вкладке txt2img - базовый функционал отрисовки по текстовому описанию. У сборки есть много приятных функций, которые позволяют изменять изображения в лучшую строну или автоматизируют рутинные операции
0) Выделение отдельных слов - теперь можно задавать отдельным элементам запроса большую/меньшую важность. Примерно как указать "хочу, что б точно было вот это, а вот то - как пойдет)
Универсальный вариант синтаксиса - (понятие:вес). Более простой - (поняти ) - умножит важность на 1.1, [понятие] - разделит на 1.1
Пример с одинаковым запросом по содержимому "Apple tree, snake, man and woman, bible, old painting) и параметрами генерации, но разными весами
1) Negative promt - на мой взгляд, самая важная функция для улучшения качества изображений. Как оказалось, сетке надо сказать не просто "Делай как надо", но и "Как не надо - не делай" и качество результата значительно вырастет. Просто вбиваете, каких элементов быть на изображении не должно - принципы запроса от противного такие же, что и для обычного. Можно дополнительно акцентировать внимание на отдельных элементах негативного запроса с помощью (). Пример с запросами ниже :
2) Create Style /Apply Style. Ускоряет набивание одних и тех же фраз в запросах. Вбиваете свой запрос, который как-то описывает желаемый вами повторяющийся стиль, нажимаете Create Style, придумываете ему имя. Появятся 2 дополнительные кнопки "Style 1", "Style 2". Вбиваете свой новый запрос, выбираете в одной или в обеих кнопках нужный вам стиль, нажимаете "Apply style". Стили добавятся к концу нового запроса.
Рядом еще расположены кнопки добавления случайного имени художника к запросу из списка artist.csv (см. Настройки - пункт 30), и распознавания настроек генерации. Кидаете в "Promt" всю обвязку запроса - sampler, разрешение, шаги и т.д, нажимаете на синюю кнопку с белой стрелкой и все эти параметры перейдут из запроса в их положенные части интерфейса. Удобно, когда хотите максимально повторить чей-то уже готовый и хорошо описанный запрос.
Помните про ограничение на 75 условных объектов (векторов). Под кнопками стиля идет счетчик для вашего запроса. Обновляется с небольшой задержкой
3) Restore Faces - применяет к результату одну из сетей, улучшающих качество лиц (см. Настройки - пункт 20). Лучше делать отдельно через раздел Extras
4) Tiling - делает изображение, все грани которого не содержат каких-то четких элементов, что позволяет поставить несколько таких изображений рядом друг с другом. Хорошо для создания текстур, наверное. Посмотреть, как будет выглядеть "плитка" из таких изображений, можно, нажав на готовое изображение и нажав на иконку плитки в верхнем левом углу.
Пример (Grass, by Tomas Kinkade Steps: 50, Sampler: Euler a, CFG scale: 7, Seed: 42, Size: 512x512, Model hash: 7460a6f):
5) Highres. fix - влияет на изображения больше 512*512, у которых встречается частая проблема с дублирование элементов в разных частях изображения . Сначала строит композицию на 512*512, затем увеличивает разрешение, а потом использует на этом всем img2img
Пример с 1 и тем же запросом :
При включенном highres. fix появляются 2 дополнительные настройки. Scale Latent - по описанию должно делать апскейл в латентном пространстве сразу. На практике - изображение становится четче, но немного меняется композиция. Denoising Strenght - насколько много шума положить поверх картинки низкого разрешения перед ее перерисовкой в большое. Меньше шума - меньше шанс на любые изменения, хоть позитивные, хоть негативные.
6) Кнопки включения рандомайзера и использования повторно seed из последнего запроса
7) Extra - здесь прячется возможность сделать смесь изображений из двух seed с разной степенью выраженности одного и другого. Тут снова будут лисы из предыдущего запроса в качестве примера, простите :
Другая возможность - изменение высоты-ширины изображения без принципального изменения композиции. Сталкивались с тем, что голова/ноги в кадр не влезли, а если изменить размер - получается совсем другое изображение? Возможно, resize from вам поможет. Задаете сначала целевые высоту/ширину (например, надо сделать изображение чуть выше, что б голова влезла) , а в extras указываете из изображения какой высоты-ширины взять основную композицию. Пример работы функции:
8) Send to - отправить выделенное изображение на вход в:
- базовый img2img
- inpaint, где можно дорисовать что-нибудь с помощью маскиъ
- extras, где можно сделать апскейл и поправить лица
9) Scripts - запускает последовательность действий со своими отдельными настройками. Скрипты можно спокойно писать самому или добавлять уже сделанные сообществом (многие доступны по ссылке). Помещаете .py файл в папку scripts и перезапускаете все приложение.
В базовую версию входит скрипт Promt Matrix, позволяющий быстро посмотреть, что будет если поменять отдельные слова в запросе. Разделяете слова через | . Все, что до первого | всегда будет в запросе, из остального сделает матрицу комбинаций
Пример - Sisters of Battle from Warhammer 40k , splash art, beautiful face, glowing angelic halo, white hair | in a flower garden| on a battlefield| dancing| preaching. Negative prompt: Miniatures, deformed, extra hands, bad, lackluster Steps: 25, Sampler: Euler a, CFG scale: 7, Seed: 42.0, Size: 512x512, Model hash: 7460a6fa
Второй скрипт просто возьмет текст из файла вместо того, что у вас введено в поле Promt
Третий скрипт - X/Y plot, строит изображения с разными настройками. Выбираете 2 желаемые настройки и через запятую указываете нужны значения. Пример настроек для отрисовки матрицы с лисичками из 7-ого пункта:
Во вкладке Img2Img - функционал отрисовки по готовому изображению. Дополнительных возможностей, относительно txt2img добавляется не так много, но они очень мощны!
1) Interrogate - "Компьютер, что здесь нарисовано?". Позволяет лучше понять, как нейросетка называет сущности и стиль какого художника видит на картине. Загружаете изображение, нажимаете "Interrogate", ждете, пока загрузится специальная модель в несколько ГБ весом.
Пример - что видит нейросетка на картине Айвазовского "Радуга".
2) Inpaint
Позволяет нанести на участок изображения слой-маску и сгенерировать что-то только на нем, не затрагивая остальной рисунок. Можно инвертировать - рисовать везде, кроме замаскированного слоя (Inpaint not masked) . Можно загружать изображение с готовой маской, сделанной где-то еще (Upload mask) , можно нарисовать в браузере самому. Края маски можно размывать через Mask blur, для более плавного перехода в основное изображение
Надо определиться с тем, что будет под маской на начало генерации - гамма изображения (fill), оригинальное изображение, цветовой шум или вообще нули (latent noise/ nothing). Рекомендую пробовать разные варианты в каждой ситуации, сходу не получается сказать, что какой-то лучше.
Если у вас изображение с 1 разрешением, а маску хочется нарисовать в другом - можно включить Inpaint at full resolution и уточнить границы изображения для него
Пример - хотим добавить капитану Джеку Воробью попугая.
3) Just resize, Crop and resize, Resize and fill - опции на случай, если вы хотите менять разрешение в новом изображении. В Just resize может поехать композиция, если целевое разрешение не квадратное. Рискуете неожиданно получить широкого Фила Спенсера. В Crop and resize - выкинет все выступающие части, в Resize and Fill - заполнит гаммой изображения.
Актуально пробовать разные варианты, если хотите делать неквадратные результаты.
4) Batch img2Img - берет все изображения в одной папке и применяет к каждой img2img, кладет в заранее указанную целевую папку. Взяли все пиксельные изображения из старой игры - сложили в одну папку - поставили этот скрипт на всю ночь - с утра смотрите результаты - выкладывете в соцсети - PROFIT!
5) Скрипты
img2img alternative test - меняем только часть изображения по текстовому описанию. Скрипт сложный и результаты не очень стабильные, будьте к этому готовы.Я очень рекомендую следовать шагам из wiki , за исключением CFG Scale. У меня он начал хоть как-то менять результат только от СFG 4 и выше.
Пример результата:
Loopback - прогнать 1 и то же изображение через img2img несколько раз. Можно задавать прогрессивную силу изменений на каждом шаге (Denoising strength change factor). При 1 - меняем с одинаковой силой на каждом шаге. Меньше 1 - изменения с каждым последующим шагом будут слабее и наоборот при больше 1.
Outpainting - расширяет изображения с выбранных сторон согласно запросу. Можно выбрать произвольные стороны изображения для дорисовки, как 1, так и все сразу. Рекомендуется поставить семплер Euler_a, 80-100 шагов и Denoising strength: 0.8. Можно выставить ширину полосы для дорисовки( в пискелях), будет ли меньше четких деталей по краям и вариативность цвета относительно исходного участка. Запрос на то, что должно быть в этих дорисованных частях, все равно нужен.
Пример:
SD Upscale - повышает разрешение в два раза средствами самой нейросети. Разбивает изображение на много перекрывающихся квадратов (степень перекрытыя настраивается) и повышает разрешение каждого квадрата, а затем сшивает их вместе. Плюсы - можно сделать очень большое разрешение даже на средней видеокарте (я делал до 8 к) . Минусы - велик шанс появления лишних деталей, мозаики вместо цельного изображения и очень большое время на апскейл.
Вкладка Extras - здесь сидят апскейлеры и улучшатели лиц.
1) Resize - настройка множителя для итогового размера изображения, применяется в Upscaler 1. Примеры работ разных апскейлеров можно посмотреть в описании настроек (пункт 19)
2) Upscaler 2 не будет увеличивать разрешение, но может добавить дополнительных деталей/сгладить лишние. Не забудьте тогда выставить Upscaler 2 visibility поближе к 1
3) GFPGAN visibility и Codeformer visibility - улучшают лица, каждая по-своему. Codeformer хорошо делает реалистичную кожу лица, но плохо исправляет взгляд. GFPGAN исправляет взгляд, но лица делает как под тонной косметики. Можно комбинировать для лучшего эффекта. Примеры можно посмотреть в описании настроек (пункт 20)
Обратите внимание, у Codeformer weight, который отвечает за силу эффекта, инвертирована шкала - чем ближе к 0, тем сильнее эффект.
4) Batch Process - можно применить одинаковые настройки апскейла и исправления лиц сразу ко всем выбранным изображениям.
Вкладка Сheckpoint merger отвечает за возможность объединить две модели в 1. Например, можно сделать модель, которая представляет собой нечто среднее между стандратной Stable Diffusion и Waifu Diffusion - в результе будет рисовать лица, которые обладают только частично анимешными чертами
Отрабатывает запрос на объединение моделей очень быстро. Чем больше будет появляться обученных моделей, тем полезнее будет эта вкладка :)
1) Interpolation Amount - насколько итоговая модель будет тяготеть к стилю первой или второй. При 0.5 - возьмет поровну. При 0 - только от второй модели, при 1 - только от первой.
2) Interpolation Method - как именно объединять модели - взвешенной суммой с учетом Interpolation Amount или через функцию- сигмоид. По-идее, чем дальше от центра, тем больше будут видны изменения между методами интерполяции, при 0.5 они идентичны.
3) Safe as float16 сокращает вес файла с моделью в 2 раза ценой небольшой потери в точности.
Примеры одного запроса ( Portrait of a beautiful young woman with blue eyes in a flower field. Negative prompt: bad, deformed, lackluster Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 42, Size: 512x512) в разных моделях:
Вкладка Textual Inversion позволяет дообучить модель конкретному стилю или персонажу,
Если я правильно понимаю, при textual inversion нейросеть не запоминает новые фото, но она понимает, что новое понятие, которому мы хотите ее обучить, выглядит как нечто среднее между уже известными ей ("учит эмбеддинг") . Поэтому точного повторения ваших фото этим методом не получится, но что-то вроде стиля сеть выучит.
Последовательность действий:
1) Как-то называем наше понятие. Этим словом вы потом будете вызывать результаты после дообучения
2) Initialization text - c какого ближайшего понятия стартовать обучение.
3) Number of vectors per token - насколько сложным получится новое понятие. Чем больше здесь значение, тем больше примеров потребуется для обучения и тем меньше места останется на весь запрос, когда будете его вызывать.
Задаете эти параметры на свое усмотрение и нажимаете "create" - создастся пустой файл с эмбеддингом
4) Source directory - вписываете путь до папки с всеми нужными изображениями. Изображения могут быть во всех форматах, которые читает сборка (см. Настройки, пункт 2. Webp тоже читает), ограничений на размер на этом этапе тоже нет
5) Destination directory -путь, по которому складывать результаты после предобработки. Этот же путь лучше всего прописать в Dataset directory чуть ниже
6) Flip - делать зеркальные копии изображений. Бесплатное увеличение обучающей выборки!) Split into... - разбивать большие изображения на 512*512 куски. Add caption - прогонять их через Interrogate метод (может быть полезно для лучшего обучению стилю конкретного художника)
Выбрали желаемые опции - нажали Preprocess.
Я рекомендую после этого проверил результаты, т.к могло обрезать изображения так, что на них желаемого объекта почти не видно
7) Embedding - выбираете тот файл, который создался на 3-ем этапе
8) Log directory - куда скаладывать промежуточные результаты обучения
9)Prompt template file - выбрать текстовый файл, в котором лежат типичные запросы, которые будет использовать система при обучении. Для конкретных объектов/персонажей - выбирайте в конце пути subject.txt. Для повторения чьего-то стиля - style.txt. Учтите, что во втором случае у ваших обучающих файлов название должно описывать содержимое каждого изображения (слова разделять через пробел) . Если лень вписывать самому - надейтесь на "Add caption"
10) Learning Rate - насколько быстро делать обучение (смещение на каждом шаге) . Поставите слишком много - рискуете "сломать" эмбеддинг, в консоли выпадет ошибка. Я оставил 0.005.
10) Max steps - насколько долго учить нейросеть ( в шагах). В моем случае разница между 500 и 5000 шагов составила 3%. (0.14 и 0.11). По - умолчанию стоит 100000, это избыточно, как мне кажется.
При таком Learning rate и 5000 шагов система учила эмбеддинг полтора часа.
Save a copy - делать ли копии промежуточных результатов обучения эмбеддинга, на случай внезапного выключения приложения. Тогда при повторном запуске обучение продолжится с последней копии.
Пример с и без textual inversion и одиним из исходных изображений(Инь из Darker than Black):
Итог: бело-черно-фиолетовую гамму изображения ухватило, анимешность и очертания +- ухватило, но до идеала далеко.
5. Заключение
Я надеюсь, что этот гайд вдохновит вас попробовать разные необычные способы генерации изображений и позволит приблизить результаты к тому образу, который вы хотите получить.
Жду ваших результатов в ленте на DTF! Делитесь своими запросами и параметрами генерации, это позволит увеличить уровень изображений всем участникам.
Если остаются вопросы, что-то не получается - пишите в комментарии, будем вместе разбираться.
Благодарю за отличное руководство!
От души душевно в душу,
Шаурмы тебе покушать...
Спасибо за гайд для гуманитариев, от души
(о_О)
Просто нейросеть уловила всю суть этих картинок.
highres.fix и resize from - как раз для такой ситуации) Если это не было целью
Люблю через img2img прогонять скрины из игр.
Очень круто получается! Подскажите, какой запрос использовать и настройки в img2img, чтобы добиваться таких результатов?
Красота! Я портреты из BG2 пронял, но синдром утенка сказал, что "раньше было лучше" :)
Комментарий недоступен
До чего технология дошла
Дядя фестер, сними парик
Новая профессия - заклинатель нейросетей. Из них потом вырастет церковь нейросетей и напишут библию нейросетей, к которой будут отсылать всех.
Все уже придумано до нас :) Присобачить к этой сборке speech2text и можно петь Литании Духу Машины
portrait of a model by Flora Borsi, style by Flora Borsi, bold, bright colours, Mohawk haircut, ((Flora Borsi))
Negative prompt: cartoon, 3d, (disfigured), (bad art), (deformed), (poorly drawn), (extra limbs), strange colours, blurry, boring, sketch, lacklustre, repetitive, cropped, ((hand)), ((hands))
хороший запрос
красота! Пили пост в Нейроскрины ;)
Спасибо за обзор. Для маков на м1 я крайне рекомендую форк https://github.com/invoke-ai/InvokeAI — он быстро работает, стабильный и очень быстро развивается. Кто хочет попробовать новый интерфейс— загружайте development, в ближайшие дни обновится.
А для старых маков, до м1, на что-то можно рассчитывать или всё совсем грустно?
Спасибо за уточнение, добавлю к гайду этот и удалю Diffusion bee
Я так понял его скачивать вместо предложенного автором?
Наконец-то нормальный четкий практический гайд, а не новости в духе "в тридевятом царстве" про очередные достижения нейронок или хвастовство картинками. От души.
Я не умею рисовать. Недавно начал проектировать сет для персонажа в Dota 2, и намаялся с концептом так, что ой. Если нейросеть сможет выдавать сколько-нибудь пригодные концепты по запросам, то это будет просто офигенно.
Комментарий недоступен
Там бывают прикольные идеи, но всё надо очень сильно допиливать вручную, потому что очень часто ИИ рисует что-то нелогичное, что человек бы не нарисовал
Пример того как генерировать игровые ассеты
https://www.youtube.com/watch?v=blXnuyVgA_Y&ab_channel=AlbertBozesan
И ещё https://www.youtube.com/watch?v=Me8-dKhQ0UU&ab_channel=PatrickGalbraith
ну, это она и делает: стили, материалы. Но дорисовывать после все равно придется.
Ну офигеть, там и так места не так уж и много... Если АИ отпускать в свободное плаванье, то сильный разброс того что выходит, надо много точного указать, а место ограничено
Highres. fix - влияет на изображения больше 512*512, у которых встречается частая проблема с дублирование элементов в разных частях изображения .Но при это иногда почему-то это не работает в img2img. Хз от чего это зависит.
resize from вам поможетЕсли детальный бэкграунд, то дорисовывает он так, что видно края старого изображения.
И я пробовал заказать картинку с кораблем в шторм и почему-то, даже если корабль выставлен как супер важная деталь, SD всё равно отказывается его рисовать. Из 8 раз, только на 3 был парусный корабль, на 1 танкер, на остальных просто океан в шторм.
По итогу, штука забавная как баловство, в которой, если повезет можно генерировать фэнтези портреты для каких-нибудь РПГ где их можно загружать, но до чего-то серьезного далеко, в основном из-за качества лиц если они не прям вплотную (особенно глаз) и анатомии, которая в 8 из 10 случаев либо не рисует руку, две руки, ногу или две ноги.
"И я пробовал заказать картинку с кораблем в шторм и почему-то, даже если корабль выставлен как супер важная деталь...."
Если не смог сделать запрос с парусным кораблем в шторм, это не значит что нейронка этого не может, это значит что ее плохо попросили.
Запрос "Small boat in foreground, giant big kraken in the background, lightning in background, intricate, detailed, volumetric lighting, sharp focus, scenery, photorealism, digital painting, highly detailed, concept art, ruan jia, steve mccurry"
seed 1600351998 guidance scale 9 1024 × 576
по этим параметрам можешь убедиться что делает такую картинку
а с пальцами часто решает параметры негативные вплоть до "extra fingers" "mutated" "many fingers" и др.
Вообще заходишь в lexica.art пишешь ship storm - и выбираешь понравившиеся картинки и стиль - оттуда берешь и модифицируешь под собственные нужды. С нуля без опыта ты хороший запрос не составишь.
Оно не даст законченный идеальный продукт, по-крайней мере пока. Но дать референс для нормального художника - вполне. Проще ставить ТЗ, когда есть пример требуемого результата, не в виде стикмана и не в виде "сделайте, что б было прям красиво"
Да, место не много остается, увы. Можно, наверное, попробовать нагенирить толстый эмбеддинг с кучей простых изображений с таким описанием, тогда место оптимизируется.
Highres. fix в img to img - пойду проверю у себя. Может баг, неработающих опций хватает, на самом деле.
resize from - а не путаешь с outpainting? Там края видно, да.
С кораблями меня только Айвазовский выручал :)
Спасибо за гайду!
Пусть и оказалось бесполезной, потому что старичок-ноут не вывозит данное действо)
В связи с этим вопрос: кто может порекомендовать какие-либо качественные браузерные вариации?
Сам тусуюсь здесь - https://huggingface.co/spaces/stabilityai/stable-diffusion
Но может есть альтернативы?
В Midjourney кончились попытки; доступ к Далле 2 так и не прислан; десктопная версия Стэйбла, повторюсь, не тянет
Заранее благодарен за рекомендации!
В целом есть такой список со всеми ресурсами
StableDiffusion Navigation List
Dream Studio
(https://beta.dreamstudio.ai/)Prompt search engines
lexica (https://lexica.art/) | krea (https://www.krea.ai/) | libraire
(https://libraire.ai/)
Colabs
Deforum (https://colab.research.google.com/github/deforum/stable-diffusion/blob/main/Deforum_Stable_Diffusion.ipynb) | Voldemort (https://colab.research.google.com/drive/1zN99ZouzlYObQaPfzwbgwJr6ZqcpYK5-) | Optimized (https://colab.research.google.com/github/neonsecret/stable-diffusion/blob/main/optimized_colab.ipynb) | Fast SD (https://github.com/TheLastBen/fast-stable-diffusion)
Sites
dreamlike (https://dreamlike.art/) | getimg (https://getimg.ai/) | mage (https://www.mage.space/) | dezgo (https://dezgo.com/) | scum
(https://scum.co/)artbreeder (https://collage.artbreeder.com/) (https://huggingface.co/spaces/stabilityai/stable-diffusion)| HF (https://huggingface.co/spaces/stabilityai/stable-diffusion) | img2img (https://huggingface.co/spaces/huggingface/diffuse-the-rest) | inpainter
(https://inpainter.vercel.app/paint)
Bots
exhuman (http://t.me/txt2image_exhuman_bot) | wrapper (http://t.me/StableDiffusionWrapperBot) | sd_bot
(http://t.me/stable_diffusion_bot)
Попробуй https://www.mage.space/ - free генерация
А попробуй вот эти коллективные вычисления - https://stablehorde.net/, вдруг оно постабильнее обычных сайтов
Я понял истинный замысел: весь мир ставит себе нейросети на компы, и она захватывает всю цифровую жизнь человечества.
Надо на телефоны ставить тогда, их больше)
Неплохо
Комментарий недоступен
Неплохо только если не рассматривать глаза.
Не читал, но одобряю.
Спасибо за лонг.
Правда я не совсем понял как работает img2img.
Если просто добавить картинку ни чего не меняя в настройках - выдает что-то далекое от исходного. Если добавить описания, то это опять не имеет ни чего общего с изображением, а скорее просто выдает, то что я написал. А как немного менять что-то на изображении (сохраняя основные черты) я, так к сожалению и не разобрался.
Настраивай CFG - чем оно ниже, тем ближе к исходному будет результат.
выпустили Stable Difussion 2.0
Установка в webui: https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#stable-diffusion-20
Понаделал портретиков. Весьма неплохо
На миджорниевские похожи. Поделишься запросом?
Некоторые картинки в посте поразили. Как тут где-то и писали, художники действительно могут смело начинать переучиваться в "операторов нейросети". Их классические услуги скоро будут не нужны.
Не нужны будут только обезьяны-рисоваки, а не художники.
Иллюстраторы нужны для капризных заказчиков и для серийных иллюстраций из повторяющихся персонажей.
Благодаря твоему гайду я уже неделю не могу оторваться от SD! Это какой-то наркотик для меня, по ряду причин, которые я быть может озвучу в своих статьях... Но возникли вопросы, которые я с ходу нагуглить не могу, может быть ты шаришь?
1) Почему при добавлении скобок и прочих знаков форматирования текста, результат может кардинально измениться в отрисовке? На что это влияет? Это какой-то способ выбрать стиль рисовки или что? Читал, что скобки влияют на вес сущности , но не смог найти этому визуального подтверждения. В моем случае на отображение влияет количество {{}}}} —-- )))(((( знаков, добавление всяких © ‘€ и т.п. Вот попробуй простой запрос "man sitting" - в обычном случае он рисует сидящего человека в разных вариациях при разных SEED. Выдели один из Сидов и добавь к запросу всякие знаки - результат будет разный. Почему? ?? Хотелось знать конкретнее, на что это влияет.
2) Есть статья или инструкция о том, как вообще ОНО понимает текст? Понимает ли контекст? Для меня момент не очевиден, ибо иногда оно рисует до ужаса логичное изображение, точно по описанию, а иногда ну полная хрень, где даже отсутствуют описываемые детали. Так как же конкретно оно видит описание? Надо ли описывать всё "по-человечески", типа "Человек сидит перед старым телеком и смотрит межгалактическое порно" или можно упростить "Человек, телек, порно" и результаты будут те же.
3) В сети вижу всякие гифки с анимированной работой нейронки.... Но я не нашел сборки ,которая могла бы перерендерить видео. Это получается они дробят анимацию на отдельные кадры и каждый кадр отдельно прогоняют?
4) Я не смог создать НИ ОДНОЙ нормальной генерации по запросу "Стрельба из лука", "Лучник", "Лук и стрелы" и прочие комбо. Такая же проблема наблюдается при описании работы с иными "бытовыми" предметами, будь то ножи или лопаты - всё рисуется максимально всрато. Как победить эту проблему? Надо обучать самому на миллионах изображений ножей и прочего?
1) У Automatic1111 скобки реально влияют на то, как отрисовывается. Зафиксируй seed, а в запросе меняй только веса отдельных элементов, увидишь разницу. Чем больше скобок () - тем больше веротяность того, что элемент будет на изображении/этих элементов будет больше. Если [] - наоборот. Но можно просто писать конструкции типа "натюрморт, (яблоко:1.5), ,(банан:0.5) ", вместо "натюрморт, (((((яблоко))))), [[[[[банан]]]]]"
2) и 4) На русском есть статья на хабре, но из нее я почти ничего понять не могу (https://habr.com/ru/post/693298/) .
Если своими словами - был датасет LAION5B - 5 миллиардов изображений всякой всячины с подписями. Посмотреть, что в нем как подписано - можешь вот тут https://rom1504.github.io/clip-retrieval/?back=https%3A%2F%2Fknn5.laion.ai&index=laion5B&useMclip=false. Подписи частенько не совпадают с тем. что изображено и в этом большая проблема.
На этом датасете учится CLIP - штука, которая сопоставляет изображение с текстом. Потом отдельно училась сама нейросеть Stable diffusion -, которая пытается так сделать четче случайный цветовой шум так, чтобы проявилось то изображение, которое распознает CLIP. Она пытается на каждом шаге делать так, что б CLIPу "нравился" результат все больше и больше. Но поскольку у CLIP представления о цели заданы небольшим набором изображений, которые еще и противоречить друг-другу могут, часто получается фигня.
Может просто так быть, что изображения c нужными тебе лучниками не попали в датасет и тогда придется дообучать через Textual Inversion|Hypernetworks|Dreambooth. Глянь, например, что выходит на archery - https://rom1504.github.io/clip-retrieval/?back=https%3A%2F%2Fknn5.laion.ai&index=laion5B&useMclip=false&query=Archery
Если ничего в похожего на твои хотелки нет - придется учить, да. Но там не миллионы изображений нужны для обучения. 20-50 достаточно.
В добавок к первому вопросу - в исходном датасете есть разметка под разные символы (смайлики, например). Включишь их в свой запрос - он постарается их учесть вне зависимости от сборки stable diffusion- https://rom1504.github.io/clip-retrieval/?back=https%3A%2F%2Fknn5.laion.ai&index=laion5B&useMclip=false&query=%E2%98%BA
3) Есть отдельно скачивыемые скрипты для такого https://github.com/deforum-art/deforum-for-automatic1111-webui . Сам не пользовался еще
Наверное, опечатка, наверное "вместо {subject}"?
Да, поправил, спасибо!
RuntimeError: Couldn't checkout commit 246930bf1dc872357ddd0b235b847ea6 for Taming Transformers.
Command: "git" -C repositories\taming-transformers checkout 246930bf1dc872357ddd0b235b847ea6
Error code: 128
stdout:
stderr: fatal: reference is not a tree: 246930bf1dc872357ddd0b235b847ea6
установка библиотек завершилась, но эта ошибка появляется
Проблема решилась тем, что я скачал вручную taming-transformers с гитхаба, потом перекинул в папку repositories.
Чувствую себя как на паре по стохастическому анализу — вроде отдельные слова понятны, но вот вместе — мозг плавится 😅
в какой-то момент станет проще — появятся продукты на основе нейросетей для нормальных людей. Пока это все для фазы innovators/early adopters, поэтому много терминов и плохие интерфейсы.
Вопрос в том, насколько правильно прогонять всякие картинки итд через ИИ без прав на них? Вообще там в в сообществе художников на эту тему сильный бугурт сейчас. Особенно если взять в счет то, как приняли чела, который с помощю ИИ копировал стиль недавно умершего Kim Jung Gi
Вопросы с авторским правом в интернете очень сложные, бугурт художников понятен. Здесь хоть не так все сложно разобраться, как с NFT; тут, на мой взгляд, ситуация скорее похоже на "можно ли делать фотографию известной картины и кому принадлежат права на фотографию?"
Мое мнение - сейчас нейросети только помогают раскрутиться художникам. Кто знал Грега Рутковски до бума нейросетей? А сейчас он - звезда СМИ.
Если художник творит ради признания - мне кажется, он должен быть рад, что его стиль копируют. Если ради денег - тоже, т.к покупающие картины всегда почему-то любят оригиналы, а не репродукции, а больше известности = большая стоимость работ.
Если ради того, что бы быть единственным и неповторимым в своем стиле - все плохо стало из-за нейросетей, ага.
Но я не художник и не юрист, тут надо их слушать. Я в патентном праве пытался разобраться, - сломал голову, т.к со стороны кажется, что это полная неработающая хрень ;)
настолько же правильно, как художники при создании своих работ используют референсы и подсматривают стиль других художников.
После того как в опенсорс запустили эту технологию уже открыт ящик пандоры. Ну уберут с запроса имя художника, даже стиль условно его выпилят. Но это не запретит никак любому "Ваньке" через dreambooth прогнать и натренировать на этом стиле. Художнику выход только в подвале сидеть рисовать и запрещать фотографировать свои работы.
Большинство коммерческих проектов вообще делается "хочу концепты в стиле (название франшизы)". И ничего всех всё устраивало.
Истерика только из-за того что художники чувствуют как их труд обесценивается.
Ничего страшного придумают как реализовать себя. В любом случае хороший художник используя нейронку выдаст конечный продукт значительно качественнее чем человек без навыков. Начнут ценится не просто красивые картинки, а смысл, посыл, эмоции которые выдаёт арт и т.п. В целом считаю картинка по качеству вырастит, что в коммерческих крупных проектах, что в индюшатине.
я старался, но у меня не получилось
мне это все напоминает творения некоторых чешских киностудий) Negative promt :deformed не помогает?)
Дефолтная модель тупо не умеет рисовать члены, увы.
наконец-то художники не нужны.
...написал художник) Кстати, годные работы на артстейшене.) Красава.
Людей, природу и архитектуру нейросети отлично "рисуют". Но до чего же всратыми остаются результаты с различным транспортом... (На изображении как раз выдача от stable diffusion по запросу attack helicopter firing rockets)
И ещё вопрос – можно ли подключить к расчётам тензорные ядра видеокарт от Nvidia серии RTX?
Да, с транспортом проблемы есть, видать не так много примеров хороших в датасете. Так что можно только дообучать сетку на нужных фотках c textual inversion/dreambooth
"Другая возможность - изменение высоты-ширины изображения без принципального изменения композиции. Сталкивались с тем, что голова/ноги в кадр не влезли, а если изменить размер - получается совсем другое изображение? Возможно, resize from вам поможет. Задаете сначала целевые высоту/ширину (например, надо сделать изображение чуть выше, что б голова влезла) , а в extras указываете из изображения какой высоты-ширины взять основную композицию. " - Можно подробнее, про эту функцию? там тоже очень много дополнительных настроек и чекпоинтов, что для чего, не понятно.
Не-не, это не в апскейлинге (вкладка Extras), это в txt2img методе. Делается новое изображение нужного разрешения (например 768*512,как у вас) , но за основу композиции берется изображение размером 512*512 (или другим настраиваемым). Низ получится не такой, как был раньше, но очень похожий. Если хочется совсем низ не трогать и дорисовать верхушку - лучше использовать img2img и outpainting, а потом еще раз img2img получившегося результата
Премного благодарен! Автор постарался от души
Спасибо огромное за гайдище! Как раз все удалось поставить, экспериментирую.
Кстати о настройке [If PNG image is larger than 4MB or any dimension is larger than 4000, downscale and save copy as JPG]:
включайте, если вам по каким-то причинам нужно ограничение на максимальный размер файла в 4 мбПри изменении настройки пишет 1 settings changed: export_for_4chan
Так что может и для каких-то других ресурсов это будет актуально
Подскажите, если мне по портретному фото сделать карандашный скетч, чтобы он был максимально похож на портрет на фото, какие параметры задавать?
О, прикольный запрос.
Я бы попробовал через модель depth2img и для начала вбивал в нее что-то вроде pencil sketch. Если получится - уже дорабатывал бы запрос
См пример с настройками и результатом
Приветствую.
Подскажите, каким стеком должен обладать data engineer, который будет развивать нейронку, идиентичную этой.
Мне кажется, что по языку - скорее пайтон, большинство библиотек уже написаны под него. Для развития самой нейронки сейчас нужны не столько знания конкретного стека, сколько понимание методов обработки изображений и их классификации, принципов работы языковых моделей, авотоэнкодеров, способов работы с железом и всего вот этого. Любой из компонентов SD можно улучшать и улучшать, по одному только портированию всего на AMD гигантский фронт работ.
Глянь https://www.youtube.com/watch?v=snUceAplmEI
У меня понимания всего этого нет, я мимокрокодил. Точно вижу, что меня с моим базовым гуманитарным пониманием принципов классических методов ML и питона не хватит на 98% текущих задач сообщества ;)
Party battleship, cyberpunk style... ?
Все по гайду сделал, но выдает такое и при копировании в строку ничего не находит. Это я рукожоп или лавочку прикрыли?
ЗЫ: откат, не чекнул коммент выше с фиксом, все работает теперь
Не получается запустить python из за кириллицы в названии папки учетной записи. Это можно как то исправить?
Когда устанавливаешь - сделай "Customize installation"- "Next"- и выбери папку без кириллицы в пути
Не забудь нажать "Add Python to PATH"
Да, переустановить питон в другое место, где в пути нет кириллицы
https://translated.turbopages.org/proxy_u/en-ru.ru.2e2ff0c9-63419bb6-b962a90d-74722d776562/https/stackoverflow.com/questions/50231447/coding-issue-in-folder-path - мб поможет
В реддите видел люди используют несколько скобок типа - (((текст))). Или разные виды скобок - [trending on artstation]. Это на что то влияет?
да. Две скобки подряд = повысить важность участка в 1.1*1.1 = 1.21 , больше вероятности что он будет ярко представлен. Но можно просто писать (элемент:1.21), эффект тот же
Квадратные понижают важность элемента на 1.1 , аналог (элемент:0.9)
подскажите пожалуйста. при запуске webui-user.bat скачивало и устанавливало что-то минут 10-15, потом вылазит ошибка такого плана:
venv "E:\!NS\SD\stable-diffusion-webui\venv\Scripts\Python.exe"
Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug 1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)]
Commit hash: ea9bd9fc7409109adcd61b897abc2c8881161256
Installing requirements for Web UI
Launching Web UI with arguments:
No module 'xformers'. Proceeding without it.
Loading weights [fe4efff1e1] from E:\!NS\SD\stable-diffusion-webui\models\Stable-diffusion\model.ckpt
Creating model from config: E:\!NS\SD\stable-diffusion-webui\configs\v1-inference.yaml
LatentDiffusion: Running in eps-prediction mode
DiffusionWrapper has 859.52 M params.
Applying cross attention optimization (Doggettx).
Textual inversion embeddings loaded(0):
Model loaded in 3.6s (load weights from disk: 1.1s, create model: 0.4s, apply weights to model: 0.4s, apply half(): 0.4s, move model to device: 0.5s, load textual inversion embeddings: 0.8s).
Running on local URL: http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.
Traceback (most recent call last):
File "E:\!NS\SD\stable-diffusion-webui\launch.py", line 361, in
start()
File "E:\!NS\SD\stable-diffusion-webui\launch.py", line 356, in start
webui.webui()
File "E:\!NS\SD\stable-diffusion-webui\webui.py", line 232, in webui
app.add_middleware(GZipMiddleware, minimum_size=1000)
File "E:\!NS\SD\stable-diffusion-webui\venv\lib\site-packages\starlette\applications.py", line 135, in add_middleware
raise RuntimeError("Cannot add middleware after an application has started")
RuntimeError: Cannot add middleware after an application has started
Для продолжения нажмите любую клавишу . . .
перезапускал батник несколько раз, но безрезультатно. В гугле ничего по этой ошибке не нашел. Помогите )))
https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/7717/commits
не у тебя одного)
Как вижу, фикс в откатывании на старую версию fast.api
добавь в конец requirements_versions.txt
строчку
fastapi==0.90.1
и сохрани новый файл
Спасибо за гайд. Только мне не установить никак. Уже раз двадцатый по различным гайдам делаю. Не запускатся webui-user.bat. Запускаю и нифига. Я даже не понимаю, что не так. Ни ошибок, ни сообщений каких-то. Просто ничего не происходит.
открой webui (обычный) блокнотом и поменяй set ERROR_REPORTING=FALSE на TRUE. Может выдаст вменяемую ошибку
На семёрку можно поставить? А то ставил какую-то похожую - не запускались установочные скрипты
Сложно сказать.. Попробуй посмотреть в этом гайде раздел W7-help https://rentry.org/voldy#-w7-help-
Питон говорят, что потребуется неофициальный
https://github.com/adang1345/PythonWin7/raw/master/3.10.6/python-3.10.6-amd64-full.exe
Ставил на карту от амд, видимо из-за этого и не работает?
Да, тут, говорят, надо сделать те же приседания, что и в сборке от NMKD. Если у тебя там получилось как-то, то и здесь должно :) Автор сборки ссылается на тот же гайд - https://rentry.org/ayymd-stable-diffustion-v1_4-guide
Ставь питон 3.10.7, на 3.10.6 ошибки при установке
Попробовал обучить сетку - скормил 20 портретов 1-го человека, но результат отвратительный. Задача: генерировать реалистичные фото реального человека в разных локациях и одеждах. Подскажите гайд, пожалуйста
Через Hypernetworks или Dreambooth должно работать . В третьей части своего гайда постараюсь расписать подробно именно это. Залайкана видюшка-гайд https://www.reddit.com/r/StableDiffusion/comments/xtwvzl/ultimate_beginners_guide_to_dreambooth_no_code/
Stable Diffusion GUI 1.5.0 перезалейте кто-то. Пишет загрузка будет длится 5 часов
что-то с интернетом, наверное, оно быстро качается сейчас у меня с офф.сайта.
Помогите люди добрые, все перепробовал: и скачивал файлы которые просит и закидывал в папку, и запускал файл Лонч, ничего не помогает
Открывай консоль (Пуск - вбиваешь cmd). В ней вбиваешь сначала
python -m ensurepip
потом:
python -m pip install --upgrade pip
Иногда на картинках (не на всех) генерируются вотермарки. Не понял логику появления. Хотелось бы разобраться
Значит, что на тех картинах, на которых учили, были подписи/ вотермарки. Сетка ж не знает, что это не важная часть изображения, она их и пытается отрисовать, как может ;) Скорее всего, обучающих изображений было мало - какое-то редкое понятие взяло за основу.
Попробуй немного запрос переформулировать
При попытке использовать апскейлер LDSR, выходит такая ошибка:
У них что-то поменялось. Сделай внутри папки models папку LDSR.
Скачай в нее https://heibox.uni-heidelberg.de/f/31a76b13ea27482981b4/?dl=1
и https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1 . Переименуй last.cpkt в model.cpkt
Кстати, а как сделать, чтобы эта штука людям на картинках головы не отрубала?
Посмотри раздел 4-7, про resize from, как раз про эту ситуацию)
в негативный промпт — "bad anatomy"
Есть инфа как на амуде запустить
Я не уверен что оно тебе нужно, там через wls и docker нужно запущать.