Хочу поделиться с вами моим постом с github и reddit.
Я потратил много времени на поиск и решение проблемы с ошибками при установке ControlNet, десятки раз переустанавливал webui и перечитал море информации на github. Пока что данный способ самый рабочий из всех и позволяет обойти ошибки установки mediapipe, OSError и permissions при установке ControlNet.
Сперва я рекомендую сделать чистую установку SD webui, но если такой возможности нет, то удалите расширение controlnet в папке extensions и удалите папку venv, после чего запустите webui-user.bat, дождитесь пока webui восстановит удалённые папки и загрузит все файлы, затем закройте webui.
Перейдите в папку с SD webui, щелкните на строку с директориями и введите "cmd", нажмите enter.
Откроется командная строка и вы увидите путь к вашей папке с webui.
Теперь вам нужно поочередно вводить эти команды, терпеливо дожидаясь завершения всех операций (я выделил команды жирным текстом):
Готово. Теперь запустите файл webui-user.bat и установите/переустановите расширение controlnet. Сообщения об ошибках больше не должны появляться и расширение будет работать нормально. Если и появятся какие-то ошибки, то можете их игнорировать либо написать в комментариях, я попробую разобраться.
Будем считать, что вы уже установили и настроили Automatic1111's Stable Diffusion web-gui, а также скачали расширение для ControlNet'a и модели для него. Нам нужно будет лишь controlNet Inpaint и controlNet Lineart.
В интернете уже есть гайд по установке. И не один. Да хоть на том же YouTube.
Будем учиться редактировать на примере вот этой картинки:
Автор - Chaesu
Первым делом открываем фотошоп. Да, прежде чем загружать изображение в SD, его нужно подготовить. Проблема тут такая: SD 1.5 модели не могут нормально работать с изображениями больше 800 пикселей. Поэтому, выделяем в фотошопе вот такую область размером 600x900:
Не снимайте выделение сразу, оно ещё пригодится
Выделение есть, теперь Ctrl+C и вставляем скопированный кусок во вкладку txt2img в окошко ControlNet'а (в первые три, то есть вставляем три раза):
Вы ведь не забыли увеличить количество юнитов контролнета в настройках?
Теперь настраиваем сами юниты контролнета: Unit 0:
Первый юнит будет отвечать за перенос стиля
Unit 1:
Второй отвечает за редактирование с сохранением контекста
Unit 2:
Ну и третий юнит для контроля генерации
После этого нажимайте на кнопку предпросмотра:
И скачивайте получившийся "негатив"
Можно поиграться с другими препроцессорами, но lineart_realistic обычно выдаёт лучший результат
Смело открываем его в фотошопе (в новой вкладке, старую пока не трогаем) и начинаем редактировать. Надо лишь убрать всё лишнее и обозначить контур того, что хотим получить. Вот как-то так:
Контролирующий лайн готов. Теперь очищаем ControlNet Lineart и вставляем наш "линейный рисунок". Так как на вход теперь на вход контролнету сам лайн, то нам не нужен препроцессор - ставим его на none.
Это всё ещё Unit 2
Осталось только нарисовать маску inpaint'а. Переходим в ControlNet Inpaint (Unit 1) и прямо тут в веб-интерфейсе закрашиваем те части, которые хотим перерисовать:
Про тень от одежды не забудьте
Осталось лишь написать промпт (и негативный промпт), выбрать параметры генерации (размер 600x900 не забывайте) и нажимать Generate до тех пор, пока не увидите приемлемый результат. Например:
Главное что стиль далеко не уехал
Это изображение неплохо бы отправить в img2img inpaint, чтобы поправить мелкие недоработки, но сейчас просто копируем его в буфер, возвращаемся в фотошоп и вставляем в нужное место (выделение пригодилось).
Сидит как влитая
Исправляется тем же образом:
Приемлемо
По тому же принципу делаем остальных
Видите недоработки? Исправить их - это ваше домашнее задание
Модель для генерации логично выбирать близкую по стилю. Для не слишком реалистичных рисунков Kizuki Alternative почти идеальна.
Несколько советов:
- Уменьшайте исходное изображение заранее, облегчайте нейросети работу.
- Можно обойтись из без Lineart'а, и тогда сетка додумает форму самостоятельно.
- Если какие-то части получились хорошо, а какие-то нет, то просто перенесите результат во вкладки Reference и Inpaint и работайте уже с ним.
- Если исходное изображение слишком тёмное либо светлое, то модель сама по себе может не справиться и имеет смысл подключать затемняющую или осветляющую мини-модель (лору).
Как перерисовать/раздеть любого персонажа с помощью Stable Diffusion
Сегодня я расскажу о способе дорисовывать любые рисунки с помощью инструментов Stable Diffusion. Но прежде чем я начну, убедитесь что у вас установлена свежая версия Stable Diffusion webui от Automatic1111 + расширение ControlNet 1.1 со всеми нужными моделями. Вот видео-инструкции (смотреть по порядку):
Установили? Тогда начинаем.
Часть 1. ControlNet Inpaint
Ни для кого не секрет, что в SD существует фича под названием inpaint - это, по сути, способ сгенерировать что-то поверх существующего изображения. В интерфейсе от Automatic1111 под inpaint'ом обычно подразумевают один из режимов img2img. Это хоть и мощный инструмент, но, всё же, недостаточно точный и контролируемый. Тут на помощь приходит ControlNet Inpaint и исправляет главный недостаток "классического" inpaint'а - игнорирование контекста. Впрочем, достаточно теории переходим к практике.
Итак, возьмём изображение, которое мы хотим отредактировать.
И сразу же уменьшаем/увеличиваем его до нужного разрешения: В моём случае с 1500x1500 до 640x640. По опыту скажу, что лучший результат получается при размере меньшей стороны от 512 до 768 пикселей, а большая сторона при этом желательно меньше 1024 пикселей.
Теперь открываем вкладку txt2img в web-gui, раскрываем ControlNet и переносим изображение на холст Unit 0, выбираем режим Inpaint и выставляем все нужные настройки (и включить не забудьте):
Теперь замазываем места, которые хотим перерисовать: В промпт пишем то, что хотим в результате видеть. Ещё раз, пишем не то, что нужно нового добавить, а то, каким хотим видеть финальную картинку:
Негативный промпт как обычно: EasyNegative, badhandv5, (worst quality, low quality, normal quality:1.4)
Модель подбираем поближе к стилю рисунка (реалистичный/стилизованный). В моё случае это MeinaMix_v11-inpaint.
Параметры генерации:
Всё, можно нажимать Generate до тех пор пока не появится приемлемая картинка.
Столь хороший результат обеспечивается препроцессором inpaint_only+lama - он пытается дорисовать зону под маской с учётом "наружного контекста". Это же и обеспечивает генерацию правильного цвета.
Простой случай разобрали, переходим к чему-то посложнее:
Часть 2. Style transfer
Возьмём теперь другой рисунок попробуем повторить описанный выше процесс:
Мда, мало того, что поза поехала, так ещё и стиль оказался потерян. Одного ControlNet Inpaint тут недостаточно. Надо подключать дополнительные юниты.
Нам нужно решить 2 задачи:
Повторить существующий стиль рисункаСохранить силуэт
Для решения первой задачи будем использовать ControlNet reference и ControlNet T2IA - они оба позволяют копировать стиль с изображения-референса и как нельзя лучше работают в связке.
Возвращаемся к интерфейсу ControlNet'a. Копируем исходное изображение в Unit 1 и Unit 2. Настраиваем вот так:
(Все нужные модели скачать не забыли?) А в качестве четвёртого ControlNet'a можно использовать любой, что позволяет сохранить форму: canny, depth, softedge, lineart - на ваше усмотрение и под конкретную задачу. (Вот тут softedge)
Интересный факт: никто не запрещает отредактировать выход предпроцессора в фотошопе. Что-то убрать, что-то подрисовать. Вот где могут понадобиться навыки рисования.
Ладно, всё 4 юнита активны. Нажимаем Generate и:
Это совсем не то, нужно! Формы сохранены, но промпт будто проигнорирован. Что случилось? Я вам скажу что: сила ControlNet'а оказалась слишком велика. Stable Diffusion попытался во время генерации воссоздать рисунок-референс да ещё и плюс inpaint там подсунул белый цвет с фона!
Как с этим бороться? Нужно уменьшить эффект двух юнитов переноса стиля (reference и T2IA), но при этом нельзя сильно уменьшать их силу, иначе перенос стиля будет ослаблен. В общем, нужно воспользоваться настройкой Starting Control Step. Она отвечает за то, на какую долю шагов генерации придётся действие ControlNet'a.
Starting Control Step 0.5, например, означает, что первую половину шагов генерация будет опираться только на промпт, а со второй половины подключится уже наш ControlNet.
В общем, план такой: слегка понижаем Control Weight (сила) у стилевых юнитов (примерно до 0.9). После этого начинаем постепенно поднимать границу начала действия стилевых юнитов. Также имеет смысл подобным же образом немного ослабить действие Inpaint'a - позволяет в некоторых случаях исправить цвета.
После нескольких попыток (и усиление промпта) получаем вот такую задницу:
Не идеально, но уже шаг в нужном направлении. На самом деле, сейчас можно (и нужно) уже именно это изображение сделать референсом. Другими словами, скопировать его во все 4 юнита и отталкиваться уже от него. И так сколько нужно раз. Пока не получится идеальный результат, либо ваша генерация окончательно не развалится.
Часть 3. img2img
Даже после получения хорошей генерации во вкладке txt2img имеет смысл несколько отшлифовать изображение уже через img2img inpaint. Главное не забудьте подключить 2 ControlNet'a для переноса стиля. Помните да, reference и T2IA.
Некоторые пункты в виде итога:
Ключ ко всему - это ControlNet (inpaint_only+lama) и ControlNet (reference_only, T2IA) Генерацию лучше проводить поэтапно, чтобы было на что опереться в последующие шаги Также имеет смысл разделять генерацию объектов нужной формы и затем покраску их в нужные цвета. Подбирайте подходящие под задачу модели и/или лоры. Не забудьте про параметры Control Weight, Starting Control Step, Ending Control Step. И про Control Mode в самом низу!
P.S. Хотел бы я чтобы кто-то обстоятельно протестировал этот метод и поделился бы потом результатами. Мне кажется, как-то можно добиться ещё большей близости к стилю оригинала, ведь задача состояла именно в этом.
Туториал закончен, теперь впечатления. Это охиренно мощная штука! Можно как угодно дорисовать любую картину, стиль вообще не важен, тем более что сейчас уже натренированы сотни моделей на все случаи жизни. Хоть скриншоты из мультфильмов/аниме, хоть картины маслом. Фильмы и фотографии вообще пройденный этап. Можно даже без использования inpaint'a просто сгенерировать сколько хочешь изображений с нуля, просто опираясь на единственный рисунок. А ведь ControlNet появился лишь в начале этого года. Короче, уже почти год прошёл, а всё это до сих пор кажется каким-то колдунством. Что грядущий день готовит...
Развернуть
Отличный комментарий!
а говорили что нейросети работу заберут судя по этому туториалу теперь нужен Senior Stable Diffusion Manager чтобы только на жопу посмотреть )
Как перерисовать любой рисунок с помощью StableDiffusion
Нужно:
Установленный и настроенный свежий Automatic1111 web-guiУстановленное расширение ControlNet, и все нужные модели к немуУмение хоть сколько-нибудь с этим работать
Всё происходит во вкладке txt2img
Сначала берём исходное изображение, кладём его в 2 вкладки ControlNet'a и включаем их. Вот как-то так:
Первую вкладку (Unit 0) настраиваем следующим образом:
А вот так вторую (Unit 1):
Два инстанса нужны, потому что первый отвечает за передачу стиля, а второй обеспечивает генерацию поверх существующего изображения с учётом контекста.
Осталось нарисовать маску:
Параметры генерации, промпты:
В промпте, то что хотим сгенерировать в зоне маски
Негативный как обычно - EasyNegative, (worst quality, low quality, normal quality:1.4), (painting of bad artist:1.2)
Нажимаем Generate и получаем:
Пара моментов:
Старайтесь генерировать поближе (насколько возможно) к оригинальному разрешение. Hires. fix лучше не использовать - он ломает тонкие детали.
Нужен подходящий чекпойнт в зависимости от стиля оригинального рисунка. Под реалистичные рисунки реалистичные модели, под стилизованные - стилизованные.
Раз уж я вошёл в мир нейросетей благодаря реактору (через слитую модель novelAi и гайду к ней), то хочу вернуть дань благодарности этим небольшим мануалом.
Вы сможете генерировать прикольные арты на основе любого логотипа \ текста буквально в пару шагов.
0) Нужен stable diffusion от automatic1111 свежей версии (как его устанавливать тут не буду описывать);
скачиваем все версии моделей (там есть раздел Versions с отдельной кнопкой загрузки);
все скачанные файлы закидываем в <путь до SD>\stable-diffusion-webui\extensions\sd-webui-controlnet\models
2) Генерируем арты:
a) подготавливаем свой логотип \ текст.
я сделал такую картинку в фш:
p.s: походу желательно не использовать прозрачный фон (у меня с ним ничего не вышло).
b) двигаем настройки ControlNet:
c) и наконец генерируем (выставляем размер, пишем promptы, жмакаем generate).
единственное НО: у меня не получилось подружить controlNet с "hiresfix". даже "latent(nearest)" начинает ломать образ. поэтому генерировал сразу в 768х768 (Вам, возможно, надо будет пробовать с 512х512)
Ну и напоследок хочу сказать что это расширение умеет гораздо большее. например можно полностью копировать стиль фото \ любые позы \ выражения лиц и ДАЖЕ рисовать идеальные руки и ноги (причём с фокусом на них). Но и запариться там нужно чуть сильнее)
Представляю твоему вниманию модель Berry's Mix. Данная модель используется без VAE, и собирается вручную в Stable Diffusion во вкладке "Checkpoint Merger". Чтобы собрать данную модель необходимо предварительно скачать четыре модели (если нету), из которых будем лепить Berry's Mix.
1) Novel AI (стилистика рисования) magnet:?xt=urn:btih:5bde442da86265b670a3e5ea3163afad2c6f8ecc Если ты скачиваешь Novel AI впервые, скачать тебе необходимо только ...\models\animefull-final-pruned\model.ckpt (4.2гб) 2) Zeipher F222 (тела, анатомия) https://redirect.ai.zeipher.com/b1t50kc 3) Stable-diffusion-v1-5 (основа) https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned.ckpt 4) r34_e4 (ты знаешь что это) https://mega.nz/file/3JQ13JTZ#sdByZl4rXp7uxxIDutGs5GHg5RkGZfLrTA5wQEfkDJE Неудобно скачивать с MEGA? Вот тут можно найти ссылки на торренты https://rentry.org/sdmodels
Закидываем все скачанные модели в папку с моделями (stable-diffusion-webui\models\Stable-diffusion\) Скачанную модель Novel AI, тот что model.ckpt можно для удобства переименовать в NovelAI.ckpt. Переходим во вкладку Checkpoint Merge В Primary model (A) - NovelAI.ckpt В Secondary model (B) - f222.ckpt В Tertiary model (C) - v1.5pruned.ckpt (Stable diffusion 1.5) В Custom Name - TEMP Ставим ползунок Multiplier (M) на 1, (максимально вправо). В Interpolaion Method переключаем на Add difference
Запускаем нажатием на кнопку Run. Ждём.
Когда закончит, переходим во вкладку Setting и в самом низу жмём Restart Gradio and Refresh components.После перезагрузки, заходим на страницу Checkpoint Merger предварительно обновив страницу (F5).
Теперь: В Primary model (A) - TEMP.ckpt В Secondary model (B) - r34_e4.ckpt В Tertiary model (C) - оставляем пустой В Custom Name - Berry's Mix Ставим ползунок Multiplier (M) - на 0.25 В Interpolaion Method оставляем на Weighted Sum
Запускаем нажатием на кнопку Run. Ждём. Когда закончит, переходим во вкладку Setting и в самом низу жмём Restart Gradio and Refresh components. Загружаем модель в меню chekpoint. Готово!
Я не скидываю готовую модель, так как лучше будет каждому поработать с вкладкой Checkpoint Merger. Там можно создавать невероятные миксы. Если данный контент понравится, создам гайды на другие миксы.
Проблема такая: имеется видеокарта amd rx6750, а нейросетки больше любят Nvidea, искал аналоги на амд, пока использую SD WebUI DML Neuro, но у неё нет возможности использования LoRa. Во время поисков нашёл вот такой вариант на DirectML https://github.com/lshqqytiger/stable-diffusion-webui-directml
Не запускается, так же просит нвидеа карту
Однако никакие настройки и внесение в аргументы мне не помогли. А использовать через процессор мне не хочется, слишком долго создает картинку.
Stable Diffusion 3 теперь доступна для скачивания и запуска локально
Генерация по промту: Epic anime artwork of a wizard atop a mountain at night casting a cosmic spell into the dark sky that says "Stable Diffusion 3" made out of colorful energy
Теперь модель можно скачать и запустить локально (пока только Medium-версию). Разработчики пишут, что новая модель лучше понимает текст промта, более реалистичная в плане рук и лиц. А так же лучше запоминает детали на даже на небольших дата сетах. Одна из интересных фитч - генерация надписей.
Еще пишут что она "идеально подходит для работы на стандартных потребительских графических процессорах без снижения производительности". Но тут бы я поспорил, легко переварить 10Gb не каждая видеокарта сможет. На моей машине работает медленнее по сравнению с SDXL.
Скачать саму модель можно с civitai или huggingface. Запустить на данный момент только в comfyui.
Немного погонял локально, промты действительно понимает хорошо. Но модель "недообучена" - качество оставляет желать лучшего. Предыдущие версии тоже от этого страдали, но люди из комьюнити допиливали до вполне не плохих результатов.
Несколько примеров на модели SD3 Medium Incl Clips T5XXLFP8
Сложный промт с положением объектов на картинке указанием цветов (у прошлых моделей возникали проблемы):
Three bottles on a table in a kitchen. Bottles that look like cola. Left bottle is full of blue liquid with the number 1 on it. Middle bottle is full of white liquid with the number 2 on it. Right bottle is full of red liquid with the number 3 on it.
Видно, что модель четко следует промту. Круто!
Попробуем с людьми:
Forest in the background. Dark theme, sunset, look at at viewer, captured in the late afternoon sunlight. Photo of three 21 year old woman. Left woman is blonde with the number 1 on blue T-shirt. Middle woman is redhead with the number 2 on white T-shirt. Right woman is brown hair with the number 3 on red T-shirt. Wearing shorts
Тут пришлось сначала описать лес на фоне, потому что иначе он выглядел как будто прифотошопленным. В остальном модель четко соблюдает номера, цвет футболок и волос. Раньше, без танцев с бубном, четко прописать нескольких разных типажей на одной картинке было почти не реально - детали сливались и получались клоны. А в новой версии достаточно просто описания.
А что по надписям на картинке? Попробуем:
Neon sign with the text "Ты пидор"
Видимо, русскую кодировку не завезли, но видно что модель старается, попробуем иначе:
Neon sign with the text "You are awesome!"
Попробуем сгенерить котика:
A black cat walking along a street paved with stone.Close-up of a cat's face.
Опять неплохо, хотя пришлось реролить несколько раз, что бы получить более-менее нормальный результат. Модель знает основы анатомии кота, но иногда больше похоже на детский рисунок.
Как на счет аниме?
Illustration anime, cartoon. 1woman, blue eyes, brown hair, dynamic angle, centered, full body photo. Street in the background
Опять пришлось реролить несколько раз. Заметил, что если указывать больше деталей, картинка получается лучше.
Попробуем городской пейзаж:
Urban photography: houses, trees, cars, and peoples. the road goes from the bottom left to the right
Осторожно: если долго рассматривать картинку, можно подумать что у тебя инсульт...
Что мы имеем на данный момент? Пока реализм хромает... Не всегда с первого раза выходит что нужно. Лично я ожидал большего. Все те же проблемы с руками и склонностью к "плоскости" перспективы и объектов.
Но есть ощущение, что модель действительно лучше понимает что от нее хотят. Будем надеется, что дообучение будет по силам сообществу, и мы увидим NSFW версию от авторов Juggernaut или Pony Diffusion.
Гайд на Stable Diffusion бота из предыдущего поста
Пост, о котором идет речь и бот, о котором идет речь (https://t.me/SDhentAI_bot - @SDhentAI_bot)
После ввода команды старт появляется приветсвующее сообщения и кнопки.
Нажимаем generate и видим меню, где можно наш запрос специализировать, выбрать все параметры внешности и позу. Еще можно написать свой собственный промпт, но мне лениво сочинять его, обычно генерит шнягу, если сам пишешь.
Выбираем параметры, жмем generate и ждем картинку с няшкой. Некоторые позы и ракурсы друг с другом конфликтуют, например, миссонерская поза и вид сзади, и они тоже генерят шнягу, так что надо смотреть.
Чтобы добавить параметр, которого нет в кнопках, можно нажать на custom. Будет предложенно отправить свой параметр, я ввел night, moon, sky и отправил, бот принял промпт и я нажал continue.
Еще есть дополнительные опции, которые можно выбирать несколько за раз
Получилась вот такая кошко девочка в очках при луне.
Под катом оставлю оригиналы изображений и еще парочку бонусов. Удачных вам генераций!
Итак есть возможность заставить работать нейронку даже на 4 гиговых видеокартах, правда там будет слегка порезанный интерфейс но всё же.Версия для ленивых, с не самым приятным интерфейсом, зато просто запускаете exe и всё работает(если верить странице) https://grisk.itch.io/stable-diffusion-gui правда тут для 4 гиговых максимально возможное разрешение 256х512. Опять же если это действительно так. Но на 6 гиговых железно должно идти.
Ну и для любителей консольки и приятного интерфейса репа GitHub - basujindal/stable-diffusion В ридми пишут, что 4 гиговые 2060 справляются с 512х512. Как устанавливать могу предположить, сам не ставил, поэтому обманывать не буду. Но опять можно пройти по гайду --K-DIFFUSION RETARD GUIDE (GUI)-- (rentry.org) так-как мой уже немного устарел, хотя все еще работает вероятно.
Там пропустить пункты связанные с GFPGAN то есть 11 и удалить 36 строчку из скачанного environment.yaml. 4 пункт тоже не нужен, так-как будем использовать скрипты из репозитория basujindal/stable-diffusion. Как все установили скачиваем и закидываем из репы basujindal/stable-diffusion папку optimizedSD в корень waifu-diffusion.
судя по этому туториалу теперь нужен Senior Stable Diffusion Manager чтобы только на жопу посмотреть )