Dreams and Robots
3.06K subscribers
120 photos
20 videos
1 file
67 links
ИИ на практике или "мама, а меня тоже заменят?"
加入频道
Что такое модели, где их взять и куда поставить?

Model, Checkpoint - файл с расширением .ckpt или .safetensor. В модели хранятся все веса для генерации картинок, без неё ничего работать не будет. Обычно это большие файлы с размером 3-4 гигабайта, иногда больше.

Базовые стандартные "официальные" модели существуют в разных версиях. Я рекомендую скачать все и выбрать подходящую под свои задачи. Мне нравится 1.5. Но начиная со второй размер датасета увеличился до 768х768, а в 2.1 очень хорошо получаются портретные фотографии.

Помимо стандартных моделей существуют еще и специфические, которые работают в img2img:

Inpainting - это модель, которая позволяет переделывать определенные участки изображения, учитывая форму и размер маски.
С выходом ControlNet1.1 Следующие две модели устарели, но вы можете их встретить:
Depth - модель, которая генерирует картинку по карте глубины.
Pix2pix - модель для перерисовки картинки методом Instruct pix2pix.

Если вы скачиваете новую модель, и у вас есть выбор, то скачивайте safetensors. Она не отличается от ckpt по сути, но открывается быстрее и в ней нет исполняемого кода, который потенциально может быть вредоносным. Также есть разные версии - pruned, emaonly и другие. Скачивайте pruned-emaonly, которая занимает меньше места.

Модели надо положить в папку stable-diffusion-webui/models/Stable-diffusion/ Можно создавать подпапки, которые позволят удобно каталогизировать все имеющиеся чекпойнты.

Базовые модели (для скачивания нажмите на стрелочку вниз справа от имени файла):
Версия 1.5
https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/main
Inpainting:
https://huggingface.co/runwayml/stable-diffusion-inpainting/tree/main

Версия 2
https://huggingface.co/stabilityai/stable-diffusion-2/tree/main
Inpainting:
https://huggingface.co/stabilityai/stable-diffusion-2-inpainting/tree/main
Depth
https://huggingface.co/stabilityai/stable-diffusion-2-depth

Версия 2.1
https://huggingface.co/stabilityai/stable-diffusion-2-1/tree/main

Pix2Pix (Внимание! Работает только в img2img!):
https://huggingface.co/timbrooks/instruct-pix2pix/tree/main

Важный момент, что для работы моделей 2 и 2.1 рядом с ними должен лежать файл настроек, который называется так же, как модель, но имеет расширение yaml. Я подготовил архив с yaml-файлами для официальных моделей, скачайте его вот тут: https://bit.ly/3XPYGAV и распакуйте в ту же папку.

Также существуют модели от сообщества. По сути это стандартные чекпойнты, доученные на новых датасетах. Их можно найти и скачать на сайте https://civitai.com/

Обратите внимание, что некоторые из них обучены на моделях 2 и 2.1 (это указано на странице чекпойнта), для них нужно будет скопировать соответствующий yaml и переименовать его, чтобы имя соответствовало модели.

Чекпойнт выбирается в интерфейсе Автоматика в выпадающем списке в левом верхнем углу. Загрузка модели занимает некоторое время, так что следите за консолью.

Удачного творчества!

#основы
👍265
Базовые параметры Stable Diffusion.

В основном вы будете работать в двух вкладках: txt2img и img2img. Из названий понятно, что в первой вы генерируете картинку из текста, а во второй из другой картинки (и текста тоже).

Давайте разберемся, какие параметры есть в этих вкладках.

Prompt и Negative prompt. Это два больших текстовых поля. В них вы вводите свой запрос, по которому будет генерироваться картинка. Запрос лучше вводить по-английски, но Stable diffusion знает и русский, и другие языки, можете проверить.

Про то, как составлять запросы, будет отдельный пост, пока пробежимся по основам.
1. В Stable diffusion существует ограничение в 75 токенов на запрос. Токен - это не всегда одно слово, иногда одно слово разбивается на несколько токенов. Также к ним относятся знаки препинания. Но в Automatic1111 это ограничение снято, промпт может быть любой длины, но при превышении лимита время генерации незначительно увеличивается.
2. Любое слово или группу слов можно усилить или ослабить, поставив его в круглые (усиление) или квадратные [ослабление] скобки. При этом число скобок влияет на силу веса. (((cat))) in a [purple] hat значит усиление веса слова cat и ослабление слова purple. Также в одиночных круглых скобках можно добавлять вес числом через двоеточие. Например (cat:1.3) увеличит вес слова cat. Если сделать меньше одного, то уменьшит. Обычно вес лучше не увеличивать больше 1.4, иначе результат получается пережженным. Когда вы выделили слова или целую фразу, можно с Ctrl нажать на клавиатуре стрелки вверх и вниз, чтобы изменить вес.
3. Негативный промпт позволяет чинить определенные проблемы в картинке. В нем тоже можно повышать веса отдельных слов.

Sampling method. Если упрощать, то это алгоритм, по которому происходит поиск нужной картинки в пространстве всех возможных картинок (очень простое объяснение). При генерации картинки создаётся случайный шум и Stable Diffusion пытается убрать этот шум и получить нужное изображение. Это происходит итеративно, и каждый шаг приближает нас к правильной картинке. Вот как раз сэмплер и задаёт это "движение". Чтобы не парить вас теорией скажу так: Euler A самый быстрый. Ему достаточно 20-25 шагов, чтобы получить чистую картинку. Но при этом результат меняется в процессе сэмплинга и он лучше подходит для стилизованных изображений. Для фоторила хорошо идут DDIM, DPM++ 2M. На самом деле, разница между ними достаточно условная, как между Пепси и Кока-колой. Очень часто я вообще не парюсь с сэмплером и работаю в Euler A.

Sampling steps - те самые шаги в сторону красивой картинки. Для Euler A достаточно 20-25. Для других сэмплеров может понадобиться и большее значение, иногда до 50. Когда картинка "недоделана", на ней появляются артефакты. Поднимайте шаги, если заметили их.

Width, Height - размеры картинки. Это важный параметр. В отдельном посте я расскажу, как получать хайрезные изображения. Пока скажу так: лучше, чтобы начальный размер соответствовал датасету, на котором сеть тренировалась. Для модели 1.5 это 512х512, для моделей 2+ это 768х768. Необязательно делать квадратные картинки. Но не увеличивайте изображение значительно больше исходного, иначе начнут появляться артефакты в виде клонов, вторых голов и так далее. Как с этим бороться расскажу чуть позже. Важное ограничение! И ширина, и высота должны делиться на 8.

CFG Scale. Это степень соответствия картинки вашему промпту. Условно говоря это лерп между картинкой, сгенерированной пустым промптом (Scale 1) и только вашим промптом (Scale 30). Начинайте с 7. Можно доходить до 15. Выше уже не рекомендуется, картинка начинает портиться. Ниже семи опускать имеет смысл, если вы используете обученные Lora или Hypernet, иногда это позволяет избавиться от повторяющихся элементов стиля.

#основы
👍25🔥5
Batch size - число картинок, которые одновременно генерируются видеокартой. Зависит от разрешения и объема VRAM. Если у вас 8 гигабайт, можно поставить штуки 4. На 4090 я могу поднимать это число до 40. Кстати, изменить максимально допустимое число можно поправив файл ui-config, в нем есть параметр Batch count/maximum. Как понять, что памяти не хватает? Если у вас генерация прервалась, загляните в консоль. Скорее всего там ругается на память. В этом случае уменьшайте батчи.

Batch count - это число батчей, которые запустятся последовательно. То есть Batch size * Batch count - это и будет число картинок после генерации.

Seed - это сид для генератора шума, из которого создается картинка. Если в нем стоит -1, то сид будет случайным. Когда вы генерируется несколько картинок с одним и тем же сидом, результат будет практически идентичным. Вы можете нажать на иконку с зелеными стрелками по кругу, чтобы использовать сид из последней генерации, когда вам понравилась картинка и вы хотите продолжать над ней работать.

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

Как разобраться, какие параметры на что влияют? В выпадающем списке Scripts выберите X/Y/Z plot. Этот скрипт позволяет рендерить картинки с разными установками и делать из них красивые таблицы. Например выбирайте в X type CFG Scale, а в X values запишите через запятую 2,3,5,7,14 Теперь у вас будет сравнительная таблица с пятью разными значениями скейла, очень удобно. Не забудьте поставить 1 в батчах.

Все параметры генерации, включая сид, модель и промпты, сохраняются по умолчанию в метадату PNG-файлов. Вы всегда можете засунуть PNG в поле во вкладке PNG Info и восстановить все настройки.

https://preview.redd.it/ud12agb7goj91.jpg?width=640&crop=smart&auto=webp&s=e2324e756b4629441cfd204b1715d252767a0f91

#основы
👍23🔥2
Что же делать, если вы хотите получить сочную, детальную хайрезную картинку, а не эти жалкие почтовые марки в 512 пикслей? Вам поможет опция Hires. fix.

Когда вы ее включаете, сначала проходит генерация в исходном размере. Потом результат апскейлится и прогоняется через img2img с тем же промптом. Таким образом у вас сохраняется композиция исходной генерации, но при этом добавляются детали.

Ставьте в width и height 960 и 544. И ширина, и высота, должны делиться на 8.
Включайте Hires.fix

Upscaler. Не думая выбирайте R-ESRGAN 4x+. Я проводил тесты, он работает лучше всех. SwinIR дает чуть больше деталей, но они не очень качественные, а работает он медленнее.

Hires steps - это сколько шагов будет использовано для img2img. При нуле берется исходное значение, можете его и оставить.

Denoising strength - сила img2img. Ставьте 0.3-0.4, иначе ваша исходная картинка сильно поменяется.

Upscale by: 2 или можете поставить разрешение в Resize width/height to.

Это всё. Нажимайте Generate, ждите и получайте отличную FullHD картинку. Точнее по вертикали будет на 1080, а 1088 из-за ограничений на разрешение, так что не забудьте обрезать лишние пиксели.

Это же поможет, если вы слишком изменили пропорции картинки и теперь у вас персонаж двоится, или у него выросла вторая голова. Уменьшайте исходное разрешение и добавляйте деталей в хайрез фиксе.

#основы
👍20
Промпты - это самая интересная часть процесса генерации. Это больше искусство, чем наука, хотя, конечно, можно найти некоторые закономерности.

Для начала почитайте вот это: https://openart.ai/promptbook

1. Общая структура: Медиум (Painting, photo, drawing, sketch) of Объект (dog, cat, starship Enterprise), детали (highly detailed, trending on artstation), стиль (by Greg Rutkowski, in style of impressionism). Эта схема не отлита в камне, экспериментируйте!
2. Слова, которые находятся ближе к началу, имеют больший вес
3. Используйте (усилители) и [ослаблятели] весов. Для точной настройки пользуйтесь (вот таким форматом:1.2)
4. Если что-то вас не устраивает в изображении, подумайте над использованием негативного промпта
5. Заведите себе базу данных промптов и записывайте интересные находки

Ресурсы для поиска промптов:
https://openart.ai/
https://prompthero.com/stable-diffusion-prompts

Список стилей:
https://docs.google.com/spreadsheets/d/1BA8EMidpQsQbSDc7s3k-hA9CyijQ7X3pSACNhAuzut8/edit#gid=2051882840

Конструктор промптов:
https://promptomania.com/stable-diffusion-prompt-builder/

Когда у вас получилась хорошая картинка, заморозьте сид и начинайте немного видоизменять промпт. Меняйте веса отдельных слов - это приведет к мелким изменениям. Именно так, кстати, и делается самая плавная анимация, когда ключевыми кадрами меняется сила определенных слов запроса.
Иногда добавление одного слова или даже символа или перестановка слов местами может привести к интересным результатам, пробуйте!

Хорошей практикой является начать с чужого промпта и начать его менять, наблюдая за результатом.

Чужие промпты можно посмотреть, например, вот тут:
https://www.reddit.com/r/StableDiffusion/?f=flair_name%3A%22Workflow%20Included%22
https://yangx.top/text2image/84671

#основы
👍261
Существует много разных способов тюнинга модели и генерации. Поговорим про четыре самых популярных. Это Dreambooth, Lora, Hypernet и Embedding (textual inversion).

Можно как тренировать их самостоятельно на ваших собственных материалах, так и скачивать готовые на https://civitai.com

Что же это такое?

Dreambooth-чекпойнты.
Это файнтюнинг модели, когда уже готовую модель доучивают на небольшом датасете, чтобы добавить какой-то стиль или объект. Это большие файлы, от трех гигабайт, которые включают в себя как данные исходной модели, так и новые изученные веса. Именно такие чекпойнты и можно найти на Civitai.
Использование: Файл .ckpt или .safetensor кладется в папку Models/Stable-Diffusion и выбирается в выпадающем списке чекпойнтов.
Плюсы: можно обучить новой концепции, которой еще не было в модели.
Минусы: большой вес файла, нельзя использовать несколько моделей одновременно.

Lora
Это набирающий популярность формат, который объединяет возможности обучения Dreambooth с гибкостью других подходов. Это маленькие файлы размером в десятки мегабайт.
Использование: Положить в папку Models/Lora. Использовать в промпте вида <Lora:НАЗВАНИЕ ФАЙЛА БЕЗ РАСШИРЕНИЯ:ВЕС>. Или нажать на красную иконку с книжкой под кнопкой Generate и выбрать там нужную Лору. В одном запросе можно использовать несколько Лор. При этом можно с помощью веса менять их силу. Значения от нуля до одного, хотя можно ставить и больше единицы, иногда это дает интересный результат.
Плюсы: Хорошее и быстрое обучение, можно извлечь веса Lora из обычного чекпойнта DreamBooth, чтобы уменьшить его вес. Можно использовать несколько Лор в одном запросе.

Embedding
Когда вы делаете запрос, его слова превращаются в токены, а они - в цифровое представление, многомерные векторы. Это представление называется Embedding. Так вот, вместо изменения весов самой модели можно изменить веса этого эмбеддинга, чтобы более точно найти нужный стиль. Процесс обучения эмбеддинга называется Textual Inversion, потому что обучение как бы проходит наоборот. Мы подбираем промпт, чтобы он более точно соответствовал картинке. Потом результат записывается в очень маленький файл (десятки килобайт).
Использование: поместить файл .pt или .bin в папку Embeddings. В промпте написать название файла без расширения. Или выбрать через красную иконку, как и Лору. Можно менять силу эмбеддинга стандартными скобками.
Плюсы: Крошечный вес, можно использовать несколько эмбеддингов в одном запросе, обучение на маленьком датасете.
Минусы: Нельзя обучить новой для нейросети концепции.

Hypernetwork
Это еще один способ тюнинга модели путем добавления новых слоев в нейросеть. Отлично подходит для обучения стилю. Размер файлов от четырех до нескольких сотен мегабайт.
Использование: поместить файл .pt в Models/Hypernetworks. В промпте написать <hypernet:НАЗВАНИЕ ФАЙЛА БЕЗ РАСШИРЕНИЯ:ВЕС> или воспользоваться красной иконкой для выбора из имеющихся. Логика использования такая же, как у Lora.
Плюсы: очень быстрое обучение. Хорошо улавливает стиль. Можно использовать несколько гипернетворков одновременно.

Для начала я рекомендую накачать себе разных чекпойнтов, лор, гипернетов и эмбеддингов и поэкспериментировать с ними, чтобы разобраться, как они вообще работают.

Самостоятельно их обучение - это отдельная большая тема, к которой мы еще не раз вернемся.

#основы
👍241
Пожалуй, на этом можно заканчивать серию постов про основы. Надеюсь, эти статьи дадут вам прививку против инфоцыган, которые будут примерно все то же самое, только менее структурированное, впаривать вам за 16 тысяч.
В будущем, конечно, будут обучающие посты на более продвинутые темы, так что пишите в комментариях, о чем ещё вам хотелось бы услышать. Да. комментарии у нас тут есть, даже чат целый.

Всем удачного творчества!
🔥526👍4
Пятничная мудрость

Картинка - Stable Diffusion & ControlNet
Текст - ChatGPT
😁21🤔5🤯2🙏1
This media is not supported in your browser
VIEW IN TELEGRAM
С помощью молотка, молитв и двухметрового костыля я сделал API для ControlNet. Теперь можно работать с ним из Гудини, делать батч-процессинг и прочие прикольные вещи.

Погружение в глубины исходников Автоматика стоило мне пары лет жизни. По возможности избегайте этого.
🔥10877👍1
Я сформулировал свои мысли о ChatGPT! Она мне напоминает того самого чувака, который никогда не скажет "я не знаю" или "я не умею", а просто возьмется за задачу, прошляпит сроки и подведёт всю команду.

В какой-то момент я полюбил обучаться с GPT. Иногда я прошу её объяснить разные сложные концепции простым языком, задаю уточняющие вопросы. Это действительно очень крутой способ узнать что-то новое, чем-то похожий на общение с настоящим ментором, у которого можно уточнить любой нюанс.

Но иногда, примерно через полчаса, ты натыкаешься на очевидно ложное утверждение. Нейросеть начинает "вести" и вместо того, чтобы сказать "я не знаю", она придумывает очень странные и далёкие от реальности истории. Начинаются те самые знаменитые "галлюцинации". В результате вся сессия обучения идет прахом, потому что сложно понять в какой момент начался дрифт, и она перестала говорить правду. Ведь тональность и убедительность рассказа не поменялись.

GPT - это просто языковая модель, которая сказав "А" обязана сказать и "Б". Она не умеет признаваться, что чего-то не знает, она просто не запрограммирована не знать. Добавим это в копилку слабостей ИИ, которую мы откроем, когда он начнет порабощать человечество.

Любопытно, что если общаться с GPT на русском, то как будто становится хуже. Возможно, где-то в модели произошло семантическое смешивание слов "расскажи", "опиши" и "перескажи", иначе я это объяснить не могу . Я попросил GPT пересказать сюжеты советских фильмов и не разочаровался.
👍28😁72🥰1💩1
This media is not supported in your browser
VIEW IN TELEGRAM
Нашёл косяк в коде расширения для ControlNet, который сломал мне весь api. Починил и снова балуюсь, на сей раз с интерьерами. Накидал кубиков, и норм. Такая нынче визуализация.
🔥65👍8😱62❤‍🔥1
Если вы когда-нибудь занимались 3D, у вас наверняка скопилась коллекция текстур потеков краски, непонятных пятен, потертостей, царапин и прочих таких штук.
Вы можете использовать их для генерации интересных абстрактных картин. Помещаете такую текстуру в img2img, подбираете промпт типа 'Abstract paiting of a girl' и играете со слайдером Denoising strength, пока не получите подходящий результат.
Пользуйтесь!
#совет
🔥36👍7