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

Ра­нее мы уже изу­чили базовые воз­можнос­ти Stable Diffusion и ус­танов­ку ней­росети на компь­ютер, рас­смот­рели нес­коль­ко базовых моделей и на­учи­лись работать с лорами, сти­лями и рефай­нерами в при­ложе­нии Fooocus.

Fooocus прек­расно под­ходит для начала работы и поз­воля­ет без лиш­них слож­ностей получать кра­сивые изоб­ражения, но вско­ре поль­зователь упи­рает­ся в потолок. В Fooocus не вый­дет сра­зу генери­ровать кар­тинки в высоком раз­решении или авто­мати­чес­ки исправ­лять проб­лемы с руками и лицами; для это­го сущес­тву­ют более прод­винутые и нам­ного более слож­ные в исполь­зовании вари­анты, один из которых мы и будем изу­чать.

 

Stable Diffusion WebUI и его производные

Stable Diffusion WebUI, раз­работан­ный авто­ром AUTOMATIC1111 — один из самых популяр­ных интерфей­сов к Stable Diffusion, воз­можно даже самый популяр­ный. Его кон­курент — ComfyUI, пред­лага­ющий уни­каль­ную, «не для всех», кон­цепцию поль­зователь­ско­го интерфей­са. Написать обо всех про­дук­тах в одной статье невоз­можно; на сей раз оста­новим­ся на интерфей­се AUTOMATIC1111, а точ­нее, на одной из его пер­спек­тивных про­изводных.

Ин­терфейс сущес­тву­ет в нес­коль­ких вари­антах. Мес­то WebUI сре­ди раз­личных интерфей­сов Stable Diffusion мож­но опи­сать сле­дующим обра­зом.

  1. Fooocus — прос­той про­дукт для начина­ющих.
  2. WebUI Forge — форк AUTOMATIC1111 с более высокой ско­ростью работы и опти­мизи­рован­ным механиз­мом работы с виде­опа­мятью, заимс­тво­ван­ным из дру­гого про­дук­та, ComfyUI. Его раз­работ­чик — автор Fooocus и сети Control Net. На дан­ный момент активная раз­работ­ка прек­ращена, а репози­торий переве­ден в ста­тус «экспе­римен­таль­ного»; на нем будут отра­баты­вать­ся новые тех­нологии.
  3. WebUI reForge — в свою оче­редь, све­жий и активный форк выше­опи­сан­ного WebUI Forge, в котором при­сутс­тву­ют как опти­миза­ции Forge, так и новин­ки, которые появи­лись в AUTOMATIC1111 за вре­мя без­дей­ствия раз­работ­чика Forge.
  4. AUTOMATIC1111 — собс­твен­но, «клас­сичес­кий» WebUI, upstream для раз­нооб­разных фор­ков. Для работы на виде­окар­тах с 8 Гбайт VRAM и мень­ше тре­бует доработ­ки напиль­ником и даже пос­ле све­жих опти­миза­ций в вер­сии 1.10 все рав­но работа­ет мед­леннее WebUI Forge.
  5. SD.Next — форк AUTOMATIC1111 за авторс­твом vladmandic. Сло­жен в допили­вании и тре­бует от поль­зовате­ля серь­езной под­готов­ки, зато под­держи­вает новей­шие диф­фузные тех­нологии, которых нет в A1111.
  6. ComfyUI — очень мощ­ный и отлично опти­мизи­рован­ный про­дукт с самой широкой сов­мести­мостью и под­дер­жкой раз­ных тех­нологий диф­фузии. Если тебе бли­зок интерфейс в сти­ле блок‑схем — поп­робуй, не пожале­ешь!
  7. SwarmUI — на осно­ве Comfy, который все‑таки слож­новат в осво­ении, соз­дан интерфейс SwarmUI. Его автор дол­гое вре­мя работал в Stability AI и покинул ком­панию пос­ле фиас­ко с выходом модели SD3 Medium. К это­му про­дук­ту сто­ит прис­мотреть­ся; воз­можно, сде­лаю это в сле­дующей статье.
 

Краткая предыстория

Прог­ресс в сис­темах генера­тив­ного ИИ стре­мите­лен. Ког­да я начинал писать эту статью, самым инте­рес­ным интерфей­сом был WebUI Forge, замет­но опе­режав­ший ори­гиналь­ный AUTOMATIC1111 по ско­рос­ти работы, осо­бен­но на виде­окар­тах с неболь­шим объ­емом памяти. Шли месяцы, и раз­работ­чики AUTOMATIC1111 опти­мизи­рова­ли про­изво­дитель­ность и добав­ляли новые воз­можнос­ти, а репози­торий WebUI Forge как буд­то зас­тыл во вре­мени. 8 июня раз­работ­чик Forge сде­лал объ­явле­ние: в AUTOMATIC1111 все ста­ло как минимум неп­лохо, поэто­му репози­торий Forge ста­новит­ся экспе­римен­таль­ным.

С одной сто­роны, в AUTOMATIC1111 и в самом деле под­тянули ско­рость. С дру­гой — механизм управле­ния памятью из Forge так и не добави­ли. В резуль­тате даже ста­рый, мно­го месяцев не обновляв­ший­ся WebUI Forge все еще быс­трее ори­гина­ла. Раз­работ­чик Panchovix сде­лал собс­твен­ный форк WebUI Forge, в котором внед­рены поч­ти все новин­ки из AUTOMATIC1111. Новый форк работа­ет быс­трее и ста­биль­нее ори­гиналь­ного Forge и сущес­твен­но опе­режа­ет AUTOMATIC1111. Имен­но о нем я и хочу рас­ска­зать.

 

Установка и начало работы

Про­ект reForge — в активной раз­работ­ке. В бли­жай­шее вре­мя ожи­дает­ся пол­ноцен­ный файл «всё в одном»; пока же при­дет­ся повозить­ся с Git.

На стра­нице про­екта рекомен­дует­ся такая пос­ледова­тель­ность шагов:

git clone https://github.com/Panchovix/stable-diffusion-webui-forge.git
cd stable-diffusion-webui-forge
git checkout main_upstream_a1111

Мож­но вос­поль­зовать­ся аль­тер­натив­ной инс­трук­цией. Для начала кача­ем пол­ный архив WebUI Forge с GitHub, рас­паковы­ваем и выпол­няем из катало­га webui сле­дующие коман­ды:

git remote add reForge https://github.com/Panchovix/stable-diffusion-webui-reForge
git branch Panchovix/main_upstream_a1111
git checkout Panchovix/main_upstream_a1111
git fetch reForge
git branch -u reForge/main
git pull

На Reddit есть аль­тер­натив­ный вари­ант уста­нов­ки, я исполь­зовал имен­но его. Точ­но так же кача­ем и рас­паковы­ваем WebUI Forge, перехо­дим в его пап­ку и выпол­няем:

git reset --hard
git remote add reForge https://github.com/Panchovix/stable-diffusion-webui-reForge
git fetch reForge
git switch -c main_upstream_a1111 panchovix/main_upstream_a1111

Да­лее нуж­но запус­тить update.bat и run.bat. Прог­рамма авто­мати­чес­ки ска­чает и уста­новит необ­ходимые зависи­мос­ти; впро­чем, их не так мно­го — раз­работ­чик ори­гина­ла WebUI Forge уже упа­ковал в архив все необ­ходимое для начала работы, за исклю­чени­ем раз­ве что базовой модели Stable Diffusion — ее ты можешь ска­чать самос­тоятель­но и положить в пап­ку

\stable-diffusion-webui-forge\webui\models\Stable-diffusion

Здесь stable-diffusion-webui-forge — кор­невой каталог, в который уста­нов­лен WebUI.

При желании путь к моделям мож­но изме­нить, отре­дак­тировав вот этот файл:

stable-diffusion-webui-forge\webui\webui-user.bat

Для это­го нуж­но рас­коммен­тировать и отре­дак­тировать стро­ку

##@REM --ckpt-dir %A1111_HOME%/models/Stable-diffusion^

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

set XDG_CACHE_HOME=%CD:\~0,2%\.cache\
set TRANSFORMERS_CACHE=%CD:\~0,2%\.huggingface\
set HF_HOME=%CD:\~0,2%\.cache\huggingface\
set HF_DATASETS_CACHE=%CD:\~0,2%\.cache\huggingface\datasets

Пос­ле успешно­го запус­ка тебя встре­тит приб­лизитель­но такой экран.

Что здесь име­ет зна­чение:

  • Stable Diffusion checkpoint — тут выбира­ем базовую модель. Если в спис­ке нет ни одной, ее нуж­но ска­чать и положить в соот­ветс­тву­ющую пап­ку, пос­ле чего нажать на голубую икон­ку «Обно­вить спи­сок».
  • SD VAE — это кое‑что новое по срав­нению с Fooocus. VAE отве­чает за перевод кар­тинки из латен­тно­го прос­транс­тва в прос­транс­тво пик­селей (и наобо­рот). Ты можешь выб­рать авто­мати­чес­кую нас­трой­ку, и тог­да VAE будет исполь­зовать­ся из сос­тава базовой модели (если он в нее вооб­ще вклю­чен, что быва­ет не всег­да), либо ска­чать и положить в пап­ку stable-diffusion-webui-forge\webui\models\VAE внеш­ний VAE. Ска­чать стан­дар­тный VAE мож­но с Civitai.
  • Clip skip — не тро­гаем. Для моделей SDXL этот параметр в A1111 игно­риру­ется, так что менять его и бес­смыс­ленно, и бес­полез­но. Он был инте­ресен во вре­мена SD1.5.
  • Txt2img — собс­твен­но, в этой вклад­ке про­исхо­дит генера­ция. Осталь­ные мы пока не рас­смат­рива­ем; из ряда вкла­док нам будут инте­рес­ны нас­трой­ки Settings.
  • Prompt, negative prompt — здесь хорошо зна­комые поля вво­да. WebUI Forge унас­ледовал от A1111 син­таксис зап­росов; мы обя­затель­но погово­рим о них поз­днее. Важ­но знать, что все, что работа­ло в Fooocus, будет точ­но так же работать и здесь, но в A1111 воз­можнос­ти управле­ния зап­росами замет­но шире.
  • Generate — начало генера­ции. Одна­ко не спе­ши жать эту кноп­ку, мы еще не закон­чили с нас­трой­кой.
  • Enqueue и выбор базовой модели над ней: это кноп­ки рас­ширения Agent Scheduler (его нуж­но уста­нав­ливать отдель­но из вклад­ки Extensions — сра­зу пос­ле Settings), которое поз­воля­ет соз­давать оче­реди из зап­росов. Весь­ма полез­ное рас­ширение, пос­коль­ку генера­ция на боль­шинс­тве виде­окарт, увы, далеко не мгно­вен­ная.

Сра­зу под кноп­кой Enqueue (или Generate, если у тебя не уста­нов­лено рас­ширение Agent Scheduler) находит­ся окно выбора сти­ля. По умол­чанию там пус­то; пре­дус­танов­ленных сти­лей с WebUI Forge не пос­тавля­ется. О том, как работать со сти­лями, — в одном из сле­дующих раз­делов.

Даль­ше начина­ется самое инте­рес­ное: парамет­ры генера­ции. Перед тем как прис­тупить к соз­данию шедев­ра, обя­затель­но нуж­но их нас­тро­ить.

  • Sampling method — выбор сем­пле­ра и шедуле­ра, которые будут исполь­зовать­ся для соз­дания кар­тинки. Мы обя­затель­но обсу­дим алго­рит­мы и их раз­личия; пока же пореко­мен­дую сем­плер DPM++ 3M SDE (очень быс­трый и дос­таточ­но све­жий алго­ритм, но тре­бует боль­ше шагов), DPM++ SDE (его про­тиво­полож­ность: мед­ленный, но деталь­ный, тре­бует мень­ше шагов), DPM++ 2M SDE (что‑то сред­нее меж­ду ними), а так­же уни­каль­ный алго­ритм Restart (каж­дые нес­коль­ко шагов дела­ет «откат», что в теории поз­воля­ет изба­вить­ся от мел­ких огре­хов). В качес­тве шедуле­ра пореко­мен­дую Align Your Steps, недав­нюю раз­работ­ку Nvidia. Этот шедулер поз­воля­ет получить резуль­тат за мень­шее чис­ло шагов по срав­нению с клас­сичес­кими метода­ми.

  • Sampling steps — чис­ло шагов для генера­ции пер­вого про­хода. Силь­но зависит от выб­ранно­го сем­пле­ра и от парамет­ра CFG (выше CFG — боль­ше шагов). Для DPM++ 3M SDE Karras и CFG от 4 до 8 луч­ше уста­новить поряд­ка сорока шагов, а DPM++ SDE Karras может обой­тись и двад­цатью.

На этом мес­те сто­ит прер­вать­ся и объ­яснить, почему бес­конеч­ное уве­личе­ние чис­ла шагов не всег­да ведет к улуч­шению качес­тва изоб­ражения. Боль­шинс­тво сов­ремен­ных (не «унас­ледован­ных», ancestral) сем­пле­ров добав­ляет неболь­шой про­межу­точ­ный шум на каж­дом шаге.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии