Как стать автором
Обновить

Комментарии 24

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

Из полезного - перечисление основного инструментария (плагинов).

Я бы сказал - неплохой стартовый обзор, на хабре подобного вроде еще не было.

Но есть некоторые неточности, щас буду душнить:

Просто пишите через запятую набор понятий.

Вредный совет. Это так только для моделей обученных на изображениях описанных тэгами (AnythingV3 и наследники, но тогда надо и про clip skip рассказать) Базовая модель и многие файнтюны (особенно SDXL) обучались на нормальных человеческих описаниях, соответсвенно их лучше понимают.

Все модели обучаются на наборе изображений фиксированного размера (512x512 или 1024x1024). Наименьшее кол-во проблем будет именно с этими "опорными" разрешениями.

Неправда. Только базовые модели первой версии 0.9-1.5 обучались на фиксированном разрешении 512х512. Большинство файнтюнов первой версии обучались на различных разрешениях, вплоть до 768х768 и у них значительно меньше проблем с нестандартными (в разумных переделах) разрешениями.

SDXL сразу обучалась на множестве вариантов разрешений, она официально поддерживала несколько вариантов с самого начала:

... другие интересные инструменты, которые имеют скорее экспериментальный характер. К их числу я бы отнёс ComfyUI

Кхм... интересные у вас представления об "экспереметальном характере", учитывая что самые интересные работы делаются именно в комфи и насколько я знаю профессионалы зарабатывающие обработкой картинок и видео в SD тоже пользуются им. Видимо поэтому в обзоре не упомянут ни AnimeDiff, ни SVD ?

  • Euler A - гладкий идеализированный результат (50+ шагов для хорошего качества)

Про сэмплеры которые "медленные или странные" это вы конечно тоже загнули, но это в общем вкусовщина. Стоит упомянуть что самые "странные" это как раз "A" сэмплеры. С ними генерация за 20 шагов может очень сильно отличаться от генерации за 19 при одном и том же сиде, что исключает их использование в некоторых сценариях. Ancestral сэмплеры предназначены для ускорения генерации, так что 50 шагов для эйлера-А это явный перебор, в отличии от простого Эйлера разницы в качестве не будет после примерно тридцатого шага, дальше вы уже просто по разному генерируете шум)

Еще можно наверное было упомянть SD Turbo и LCM

Я хочу красное платье и зелёные волосы!!! А получаются красные волосы, зелёная водолазка и красная юбка...

Увы, избежать этого никак не получится

Да ладно... BREAK, regional prompter, etc... в зависимости от задачи что-то да подойдет

В общем и целом согласен. Спасибо что потратили время на уточнение моих неточностей.

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

Единственное что хотелось бы уточнить - про экспериментальность ComfyUI. Да безусловно, возможностей влезть в процесс inferenca там больше и как следствие, контроля над происходящим. Но начинать я бы с него всё-же не стал, так как нужно иметь большой багаж знаний и хорошо понимать что происходит внутри SD чтобы иметь возможность своими руками собрать нужный граф. И в разряд экспериментальных он в моём представлении попадает именно потому что в нём реализуют самые сложные и нетривиальные workflow. Для 95% задач не требуется слишком сложного начального этапа. Да и постобработка, что после ComfyUI, что после Automatic1111 в большинстве сулчаев необходима.

nvidia rtx 3xxx +

Двухтысячники вполне подходят под минимальные комфортные требования.

Запускаю на 1070'й, но иногда падает скорость, т.к. начинает в подкачку уходить, с целью отожрать доп. RAM. Однако, вылетов не наблюдаю, так или иначе она дорисовывает всё, даже больше разрешения, единственное - медленно.

По мимо самого gpu на производительность так же сильно влияет объём памяти. И

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

2 серия нвидий и правда сравнима по скорости с 3 сериией на генерации мелких изображений. Но тут ещё нужно брать во внимание объём памяти у самой видеокарты. Если её будет недостаточно, то скорость генерации будет падать в разы из-за свопинга. И происходить это будет на последних этапах работы над изображением, когда разрешение уже относительно высокое (1500px+). Так же будет проблематично использовать XL модели, так как у них требования к памяти ещё выше.

В моей практике, для создания чего-то интересного обычно приходится запускать процесс генерации десятки а то и сотни раз (начальный процесс, плюс все последующие доработки), и если бы генерация занимала не 5-10-15 секунд, а скажем 1-2 минуты, пользоваться этим для полезных практических применений было бы затруднительно.

По этому я бы ориентировался скорее на объём памяти (8гб ок, но лучше 12), если SD применяется в качестве инструмента для работы. 3060 с 12гб не сильно ударит по карману, и даст хороший экспириенс в плане времени иттерации.

PS. Товарищи с THG сделали сравнение разных видеокарт на генерации маленького изображения. Получилось следующее:

Но опять таки, это маленькие изображения, если бы сравнение проводилось на больших (этап доработки), были бы совсем другие результаты.

Это всё понятно, я сам использую SD в работе с её самого появления на своей 2080 Ti, в PS она мне успешно заменила Адобовский Firefly.
Тем не менее, "nvidia rtx 3xxx" - это в т.ч. весьма распространённые восьмигиговые бюджетные 3050 и "народные" 3060, которых, если судить по Вашему графику, обгоняет старая восьмигиговая 2060S.

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

Ох, боюсь это тема для отдельной статьи...

C удовольствием бы почитал подобную статью!

Проще всего многократной перерисовкой (inpainting). Генерируем около изображений 20 пирата, выбираем наиболее близкое к желаемому. Далее начинаем перегенерировать область за областью. Сперва выделяем лицо, требуем сделать повязку. Потом область возле руки, создавая топор. Кстати, для топора скорее всего потребуется найти подходящую LoRA, потому что SD из рук вон плохо создаёт инструменты. Мне ещё не встречалось такой модели, которая могла бы прямо из коробки создать, скажем, механика с отвёрткой в руках. Или с гаечным ключом.

После серии перерисовок получается готовое изображение, на которое уже можно накладывать текст или иные эффекты.

Пример того, как это работает:

Исходный скетч (лучшее из серии в 30 штук)

Финальный фрейм комикса после пары часов перерисовок

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

Это вы еще, вероятно, человека со сноубордом не пробовали генерить.

У всех без исключения моделей очень странное представление о том что такое сноуборд и как он крепится к человеку.

Информации много, это плюс, не вся она точная и актуальная, это минус, но об этом уже писали.

Про фокус мнение странное, там есть все настройки, они в дебаг меню просто, как первый интерфейс фокус как раз самое оно, потом а1111, потом комфи)

+ Ещё Ruined Fooocus имеется. Но фокус ограничен sdxl. В базовом виде он не может в turbosdxl на текущий момент, только LCM, где страдает качество.

Но у фокуса на текущий момент есть суперпреимущество: inpaint. Полноценный. Пока нет инпейнт модели для контролнета и инпейнт чекпоинтов - в большинстве случаев вне исправить (лицо/зрачки/пальцы) это превращается в боль и перерисовку через img2img с потерей деталей.

Спасибо за статью! Как раз собираюсь пощупать SD, подскажите пжл, если знаете, имеет смысл ставить SD на WSL ? Это даст какой-то прирост в плане производительности\удобства\возможностей или можно не заморачиваться и ставить прямо в винду?

Прироста точно не будет, так как драйвер для видеокарты у вас всё равно будет виндовый. По мимо этого WSL требует для своей работы дополнительной оперативной памяти. И если у вас в системе не 20гб+ ram, это будет ощутимо при работе с XL моделями, в особенности в моменты их загрузки в память.

SD устанавливается в одну папку, и не особо мусорит в системе т.к. все зависимости устанавливаются в venv. Так же будет проще с загрузкой моделей, каждый чекпоинт весит 2гб+ (для 1.5) и 6гб+ (для XL), и его может быть накладно копировать в файловую систему WSL. Либо придётся сразу загружать из терминала с помощью того же wget'a.

В общем явных преимуществ нет, а вот неудобств вероятно добавится.

Спасибо! Именно такую статью и искал

Стоит упомянуть что самые "странные" это как раз "A" сэмплеры. С ними генерация за 20 шагов может очень сильно отличаться от генерации за 19 при одном и том же сиде, что исключает их использование в некоторых сценариях

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

Что же вы ничего не рассказали про TensorRT ?

https://github.com/NVIDIA/Stable-Diffusion-WebUI-TensorRT

Даёт ощутимый прирост в скорости.

Но как всегда есть но :)

Не рассказал, потому что текущий вариант реализации плохо применим на практике.

TensorRT штука интересная, потому что позволяет в 2+ раз ускорять генерацию изображений. Как Proof of Concept норм, но у неё слишком много минусов чтобы рекомендовать её:

  • Для каждого чекпоинта приходится создавать отдельную модель которая занимает 1гб+

  • Модели-ускорители создаются под конкретное разрешение

  • Не работают Lora. А чтобы заработали их нужно смерджить с чекпоинтом, что долго, не удобно, занимент много места. А учитывая то что Lora часто не одна, и хочется покрутить её вес в промпте, это прям совсем для любителей.

  • Довольно проблематично установить

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

Сейчас можно создавать модели для Lora.

Отличная статья для новичка в теме!

Для тех, кто использует в работе Python версий выше, чем 3.10.6, небольшой хинт. Подходит использование pyenv, и дополнительно в webui-user.bat принудительное заполнение переменной PYTHON=.... Дальше в кавычках путь к вашему установленному питону 3.10.6, включая python.exe.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории