Для Stable Diffusion XL есть нас­трой­ки, которые счи­тают­ся «пра­виль­ными»: опре­делен­ные сем­пле­ры, узкий диапа­зон зна­чений шка­лы CFG, фик­сирован­ные соот­ношения сто­рон и раз­меры изоб­ражения. Наруше­ние этих законов час­то при­водит к арте­фак­там, выгора­нию или блек­лым резуль­татам. Но что будет, если соз­натель­но игно­риро­вать пра­вила и исполь­зовать нес­тандар­тные парамет­ры? Спой­лер: иног­да из этих экспе­римен­тов выходит кое‑что полез­ное.

Борьба с выгоранием

При генера­ции кар­тинок модели с архи­тек­турой U-Net работа­ют, пос­тепен­но уда­ляя шум и вос­ста­нав­ливая из него детали. Для это­го исполь­зуют­ся два типа пред­ска­заний: cond (conditioned) и uncond (unconditioned). Cond отра­жает пред­ска­зание, осно­ван­ное на тек­сто­вом зап­росе (и дру­гих усло­виях — нап­ример, ControlNet). Uncond — «пус­тое» пред­ска­зание или пред­ска­зание, соз­данное на осно­ве негатив­ных клю­чевых слов, опи­сыва­ющих то, чего мы не хотим видеть в окон­чатель­ном изоб­ражении.

Ба­ланс меж­ду пред­ска­зани­ями cond и uncond управля­ется парамет­ром CFG (Classifier-Free Guidance), который слу­жит сво­еоб­разным муль­тип­ликато­ром. Высокие зна­чения CFG при­водят к уве­личе­нию рас­сто­яния меж­ду пред­ска­зани­ями и, соот­ветс­твен­но, уси­лению вкла­да cond. Это повыша­ет детали­зацию и точ­ность сле­дова­ния зап­росу.

Ми­нималь­ное зна­чение парамет­ра CFG — еди­ница (одна­ко его мож­но сни­зить до нуля редак­тирова­нием фай­ла нас­тро­ек; дроб­ные зна­чения CFG могут ока­зать­ся полез­ными для работы некото­рых типов сем­пле­ров), мак­сималь­ное — 35, сред­нее — от 3 до 7.

С рос­том CFG, помимо детали­зации, рас­тут кон­траст и насыщен­ность (цве­товой кон­траст) изоб­ражения. При низ­ких зна­чени­ях CFG на выходе будет блек­лая, малокон­трастная кар­тинка с высокой сте­пенью кре­атив­ности и сла­бым сле­дова­нием зап­росу. Если же зна­чение CFG под­нять выше допус­тимого для модели мак­симума, то кар­тинка вый­дет детали­зиро­ван­ной, но «переж­женной».

В статье «Фиш­ки Flux.1. Добива­емся луч­ших кар­тинок от новой генера­тив­ной модели» я нем­ного рас­ска­зал о том, на что вли­яет CFG в модели Flux и как пра­виль­но выб­рать его зна­чение. Сегод­ня же я хочу погово­рить о вари­антах исполь­зования экс­тре­маль­ных зна­чений CFG, как очень низ­ких, так и чрез­вычай­но высоких.

Низкие значения CFG: высокая креативность, но низкий контраст

Нач­нем, пожалуй, с работы с низ­кими зна­чени­ями CFG. Нас­коль­ко низ­кими? В зависи­мос­ти от модели, «низ­кими зна­чени­ями» могут быть как CFG = 3, так и дроб­ные CFG = 0,3...0,9. Плю­сы низ­ких зна­чений CFG — кре­атив­ность и раз­нооб­разие, а так­же более точ­ное сле­дова­ние выб­ранно­му сти­лю (от каран­дашных наб­росков до фоторе­ализ­ма). Раз­работ­чики мно­гих моделей, опти­мизи­рован­ных под реализм, рекомен­дуют исполь­зовать понижен­ные зна­чения CFG для дос­тижения мак­сималь­ной фоторе­алис­тичнос­ти; более высокие зна­чения в таких моделях соз­дают более глад­кие, «син­тетичес­кие» изоб­ражения.

info

Зна­чения CFG отно­ситель­ны, а опре­деле­ние «низ­ких» и «высоких» зна­чений CFG зависит от кон­крет­ной модели. В дис­тилли­рован­ных (Flux) и уско­рен­ных (Lightning, Turbo, Hyper, DMD2) моделях нор­мой счи­тают­ся зна­чения CFG от 1 до 1,5, и проб­лем с кон­трас­том это не вызыва­ет. Реже встре­чают­ся модели, рекомен­дующие зна­чения CFG поряд­ка 11 — и так­же не име­ющие проб­лем с кон­трас­том.

Все хорошо, но низ­кие зна­чения CFG при­водят к соз­данию кре­атив­ных и прек­расно сти­лизо­ван­ных изоб­ражений, которые выг­лядят блек­ло. Бороть­ся с этим помога­ют сем­пле­ры клас­са CFG++. Метод CFG++ (Manifold-Constrained Classifier-Free Guidance) помога­ет улуч­шить качес­тво выбор­ки и обес­печить более точ­ное сле­дова­ние зап­росу. Не вда­ваясь в тех­ничес­кие под­робнос­ти, ска­жу, что CFG++ помога­ет спра­вить­ся с арте­фак­тами (сма­зан­ные гра­ницы, иска­жения, неес­тес­твен­ные фор­мы объ­ектов). Нап­ример, метод может устра­нять проб­лемы, свя­зан­ные с некор­рек­тным рен­дерин­гом (двой­ные хвос­ты у живот­ных, руки с шестью и более паль­цами, вза­имоп­роника­ющие объ­екты и про­чее).

Все эти пре­иму­щес­тва дос­тига­ются при исполь­зовании сем­пле­ров клас­са CFG++ и при минималь­ных зна­чени­ях шка­лы CFG, в боль­шинс­тве слу­чаев мень­ших еди­ницы (в reForge шка­ла CFG по умол­чанию начина­ется с еди­ницы). Что­бы получить воз­можность исполь­зовать дроб­ные зна­чения в диапа­зоне от 0 до 1, нуж­но отре­дак­тировать файл webui\ui-config.json, най­дя параметр txt2img/CFG Scale/minimum и изме­нив его зна­чение с еди­ницы на ноль.

"txt2img/CFG Scale/minimum": 0,

Эти сем­пле­ры пере­опре­деля­ют шка­лу CFG; при их исполь­зовании чис­ло шагов сто­ит выс­тавить рав­ным 50, а зна­чение CFG выб­рать дроб­ным из про­межут­ка от 0 до 1. Вот так, нап­ример, выг­лядит изоб­ражение, сге­нери­рован­ное сем­пле­ром DPM++ 3M SDE CFG++ при зна­чении CFG = 0,7.

Для срав­нения: обыч­ный DPM++ 3M SDE отра­баты­вает с CFG = 4 сле­дующим обра­зом.

Впро­чем, раз­ные сем­пле­ры тре­буют раз­ных под­ходов. Так, модифи­кация сем­пле­ра Euler SMEA Dy CFG++ тре­бует уста­новить шка­лу CFG в зна­чение 1,5 или даже 3.

Для срав­нения — тот же сем­плер в стан­дар­тном исполне­нии (без CFG++), со зна­чени­ем шка­лы 7.

Об­рати вни­мание: сем­пле­ры CFG++ несов­мести­мы со мно­гими рас­ширени­ями. Нап­ример, на дан­ный момент не работа­ет SWG (Smoothed Windows Guidance), режим Warp Drive из AutomaticCFG.

Высокие значения CFG: точное следование запросу и детализация, сопровождаемые «выгоранием»

Спо­собов борь­бы с выгора­нием при исполь­зовании высоких зна­чений шка­лы CFG при­дума­но гораз­до боль­ше. Эти спо­собы очень раз­ные, и резуль­тат работы одно­го рас­ширения разитель­но отли­чает­ся от резуль­татов дру­гих. Какие‑то спо­собы сов­мести­мы, какие‑то кон­флик­туют меж­ду собой, а какие‑то не под­держи­вают некото­рые сем­пле­ры (в пер­вую оче­редь — сем­пле­ры клас­са CFG++, которые реша­ют схо­жую задачу). В резуль­тате однознач­но ткнуть паль­цем и ска­зать «исполь­зуй это» невоз­можно; для раз­ных ситу­аций под­ходят раз­ные спо­собы.

DynamicThresholding (CFG-Fix)

Встро­енное рас­ширение DynamicThresholding (CFG-Fix) Integrated ста­ло одним из пер­вых решений, огра­ничи­вающих негатив­ный эффект высоких зна­чений CFG. Исполь­зование это­го рас­ширения тре­бует пред­варитель­ной нас­трой­ки; рекомен­дую начать с тех зна­чений, которые показа­ны на скрин­шоте (за исклю­чени­ем парамет­ра Mimic Scale, который нуж­но менять в зависи­мос­ти от модели и зна­чения шка­лы CFG).

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

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

RescaleCFG

Сле­дующее рас­ширение — RescaleCFG for reForge — выг­лядит мак­сималь­но прос­то: единс­твен­ная нас­трой­ка муль­тип­ликато­ра CFG, и ничего более. Алго­ритм сжи­мает динами­чес­кий диапа­зон изоб­ражения, осно­выва­ясь на зна­чении муль­тип­ликато­ра. Если началь­ное зна­чение шка­лы CFG слиш­ком высокое, то в резуль­тате на выходе ты получишь типич­ный псев­до-HDR, что и демонс­три­рует изоб­ражение с CFG = 15 и муль­тип­ликато­ром RescaleCFG = 0,8.

Ес­ли же подой­ти к делу более акку­рат­но и исполь­зовать CFG = 7 с тем же муль­тип­ликато­ром, резуль­тат получит­ся нам­ного более естес­твен­ным.

На осно­ве ана­логич­ных методов реали­зова­ны фун­кции rescale в рас­ширени­ях, реали­зующих внут­реннее вни­мание; имей это в виду и не исполь­зуй отдель­ное рас­ширение RescaleCFG, если источник «выгора­ния» — фун­кция внут­ренне­го вни­мания.

AutomaticCFG

В рас­ширение AutomaticCFG for reForge встро­ено сра­зу нес­коль­ко методов огра­ниче­ния CFG: Simple CFG, Dynamic CFG, Warp Drive, Preset Loader (боль­ше полови­ны пре­сетов не работа­ет) и Post CFG Rescale. Автор рас­ширения — раз­работ­чик reForge, который пор­тировал метод из соот­ветс­тву­ющей но­ды для Comfy.

git clone https://github.com/Panchovix/reForge-AutomaticCFG.git

В прос­тей­шем слу­чае (режим Simple) чис­ло нас­тро­ек минималь­но.

В этом режиме рас­ширение заменя­ет шка­лу CFG таким обра­зом, что­бы при про­чих рав­ных выдавать кар­тинку, похожую на ту, которую усреднен­ная модель выдаст при CFG = 8 (это лич­ное пред­почте­ние раз­работ­чика, о чем он и пи­шет в докумен­тации). Соот­ветс­твен­но, те зна­чения, которые ты ука­жешь в поле CFG, будут учи­тывать­ся как твои пожела­ния к уров­ню насыщен­ности и кон­трас­та по отно­шению к «сред­нему» зна­чению 8. Начинать экспе­римен­ты нуж­но с ука­зания CFG = 8 — и даль­ше смот­реть, сто­ит ли менять этот параметр в сто­рону уве­личе­ния или умень­шения кон­трас­та и насыщен­ности кар­тинки. Ниже — при­мер с CFG = 8:

А теперь — вишен­ка на тор­те, офи­циаль­ная рекомен­дация раз­работ­чика AutomaticCFG, выведен­ная на самом вер­ху репози­тория: «Бро­сай­те вот это всё и айда сюда!» Куда имен­но «айда»? В пла­гин Skimmed CFG!

Warp Drive: ускорение генерации

В том же самом AutomaticCFG спря­тана еще одна вклад­ка — Warp Drive. Если ты вклю­чишь Warp Drive (все про­чие фун­кции рас­ширения, в том чис­ле Simple, дол­жны быть отклю­чены), то генера­ция уско­рит­ся на 160% при исполь­зовании шедуле­ра Align Your Steps (по край­ней мере, так утвер­жда­ет раз­работ­чик). Фак­тичес­кое уско­рение зависит от мно­жес­тва парамет­ров, но сок­ратить вре­мя генера­ции (вклю­чая hires.fix) с 40 до 30 секунд мне уда­лось. А чем при­ходит­ся пла­тить за ско­рость? Механизм про­пус­кает рас­чет пред­ска­зания uncond в боль­шей (в кон­фигура­ции 1/1/1) или мень­шей (в осталь­ных кон­фигура­циях) сте­пени, что однознач­но меня­ет кар­тинку — и далеко не всег­да в худ­шую сто­рону (точ­нее, в качес­тве uncond берет­ся некое ус­реднен­ное зна­чение пре­дыду­щего и текуще­го зна­чений cond). Так что эту фун­кцию мож­но поп­робовать; резуль­тат может порадо­вать или разоча­ровать, но он опре­делен­но будет отли­чать­ся.

Ре­зуль­тат как минимум ори­гиналь­ный. Сто­ит поп­робовать его и в дру­гих усло­виях.

Warp Drive с CFG = 12
Warp Drive с CFG = 12

info

Дру­гие фун­кции огра­ниче­ния CFG сов­мес­тно с Warp Drive не работа­ют. При­дет­ся выбирать: или одно, или дру­гое.

APG’s now your CFG

Для пос­тоян­ного исполь­зования рекомен­дую встро­енное в reForge рас­ширение с длин­ным наз­вани­ем “APG’s now your CFG” and Guidance Limiter for reForge. Оно исполь­зует механизм, опи­сан­ный в иссле­дова­нии Eliminating Oversaturation and Artifacts of High Guidance Scales in Diffusion Models. Авто­ры пред­лага­ют новый механизм работы CFG (Classifier-Free Guidance), который дол­жен устра­нить проб­лему выгора­ния изоб­ражений при высоких зна­чени­ях шка­лы. Идея в том, что­бы раз­делить CFG на парал­лель­ный и орто­гональ­ный ком­понен­ты, умень­шить вли­яние пер­вого (вызыва­юще­го выгора­ние) и уси­лить — вто­рого. Новый метод APG (Adaptive Projected Guidance) в теории сох­раня­ет пре­иму­щес­тва CFG, поз­воляя исполь­зовать повышен­ные зна­чения шка­лы и улуч­шая качес­тво генера­ции без замед­ления.

Силь­ное вли­яние на генера­цию ока­зыва­ет параметр APG Momentum. С нас­трой­ками по умол­чанию (APG Momentum = 0,5), как на скрин­шоте, APG мало вли­яет на «выгора­ние» кар­тинки, но качес­тво и детали­зация кар­тинки улуч­шают­ся при исполь­зовании сред­них зна­чений CFG. В об­сужде­нии на Reddit приш­ли к выводу, что нас­трой­ки по умол­чанию отлично работа­ют с нор­маль­ными для модели зна­чени­ями шка­лы CFG (обыч­но от 5 до 7). Я при­шел к такому же выводу незави­симо от авто­ра дис­куссии, и рас­ширение APG с нас­трой­ками по умол­чанию (APG Momentum = 0,5) у меня теперь пос­тоян­но вклю­чено.

CFG = 3 без APG (настройки по умолчанию, Momentum = 0,5)
CFG = 3 без APG (нас­трой­ки по умол­чанию, Momentum = 0,5)
С APG
С APG

Зна­чения по умол­чанию не помога­ют спра­вить­ся с высоким CFG.

Momentum = 0,5, CFG = 12
Momentum = 0,5, CFG = 12

В то же вре­мя отри­цатель­ные зна­чения APG Momentum (в про­межут­ке от –0,25 до –0,75) отлично помога­ют спра­вить­ся с выгора­нием на высоких зна­чени­ях CFG.

Сни­жение Momentum до –0,25 уже дает замет­ный эффект.

В качес­тве экспе­римен­та мож­но поп­робовать уста­новить APG Momentum в зна­чение –1, а CFG в про­межут­ке от 8 до 12.

На­конец, мож­но поп­робовать экс­тре­маль­ное зна­чение: APG Momentum в зна­чение –1, а CFG = 15.

Skimmed CFG

Так­же рекомен­дую рас­ширение Skimmed CFG. Оно тоже приз­вано сдер­живать «выгора­ние» кар­тинки при высоких зна­чени­ях CFG.

Ус­танав­лива­ем:

git clone https://github.com/Panchovix/reForge-SkimmedCFG.git

Из всех про­тес­тирован­ных рас­ширений кон­тро­ля выгора­ния это показа­лось мне самым инте­рес­ным. Во‑пер­вых, оно дей­стви­тель­но спо­соб­но сдер­жать негатив­ные эффекты от высоких зна­чений шка­лы CFG. Ниже — кар­тинка с CFG = 30 и линей­ной интерпо­ляци­ей Skimmed CFG = 3.

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

Высокое разрешение в один проход

Вре­мя от вре­мени хочет­ся соз­дать кар­тинку быс­тро, сра­зу в высоком раз­решении, не при­меняя мед­ленный hires.fix. У моделей SDXL, в отли­чие от SD 3.5 Large, нет архи­тек­турных огра­ниче­ний, зап­реща­ющих генери­ровать кар­тинки прак­тичес­ки в любом раз­решении; единс­твен­ное усло­вие — раз­мернос­ти сто­рон дол­жны быть крат­ны 64. В то же вре­мя боль­шинс­тво моделей обу­чались на изоб­ражени­ях в одном из пре­доп­ределен­ных стан­дар­тных раз­решений, и попыт­ка нем­ного «рас­тянуть» кар­тинку — хотя бы в пол­тора раза, до 1024 ✕ 1536, — может при­вес­ти к видимым иска­жени­ям. Вот так модель albedobaseXL_v31Large обра­бота­ет наш тес­товый зап­рос.

Пос­коль­ку исполь­зовалось нес­тандар­тное для SDXL раз­решение 1024 ✕ 1536, а у модели отсутс­тву­ет база, появ­ляют­ся иска­жения. На кар­тинке выше торс и шея лет­чицы вытяну­ты; изоб­ражение смот­рится неес­тес­твен­но.

Что­бы обой­ти эту проб­лему, была раз­работа­на тех­нология Kohya Deep Shrink. Метод прост: пер­вые X шагов изоб­ражение генери­рует­ся в понижен­ном раз­решении (во сколь­ко раз понижать раз­решение, зада­ется парамет­ром), соз­давая осно­ву; пос­леду­ющие шаги модель отра­баты­вает в пол­ном раз­решении, детали­зируя эту осно­ву. В теории такой под­ход поз­воля­ет избе­жать дуб­лирова­ния круп­ных деталей (нап­ример, чис­ла хвос­тов и лап у кошек), в то же вре­мя на пос­ледних шагах соз­давая деталь­ное изоб­ражение.

Пос­ле вклю­чения встро­енно­го в reForge рас­ширения Kohya HRFix Integrated с нас­трой­ками по умол­чанию получа­ется уже такая кар­тинка.

Об­рати вни­мание: жела­емое раз­решение ука­зыва­ется сра­зу в основных нас­трой­ках высоты и ширины кар­тинки, а hires.fix мож­но отклю­чить (если ты его вклю­чишь, то раз­решение будет повыше­но еще раз).

В то же вре­мя воз­можнос­ти это­го под­хода огра­ничен­ны; реалис­тичный пре­дел Kohya HRFix при генера­ции объ­ектов с узна­ваемы­ми про­пор­циями (люди, живот­ные) — полуто­рак­ратное повыше­ние раз­решения.

Поп­робуй уста­новить раз­меры изоб­ражения 1536 на 1152 (неваж­но, в пор­трет­ной или аль­бом­ной ори­ента­ции), вклю­чить Kohya HRFix и уста­новить парамет­ры Downscale Factor = 1,5, Start Percent = 0, End Percent = 0,65. В качес­тве сем­пле­ра мож­но уста­новить Euler DY CFG++ с соот­ветс­тву­ющим невысо­ким зна­чени­ем CFG, а в качес­тве шедуле­ра — Beta или Align Your Steps. Обыч­ный hires.fix мож­но отклю­чить вов­се или уста­новить в кон­серва­тив­ное зна­чение 1,5; для вто­рого про­хода име­ет смысл уста­новить аль­тер­натив­ный сем­плер DPM++ 3M DY (для более высокой детали­зации). Мно­гие модели с такими нас­трой­ками выдадут резуль­тат, пре­вос­ходящий по качес­тву генера­ции в стан­дар­тном раз­решении.

По­чему имен­но такое раз­решение? Потому что как сами циф­ры, так и резуль­тат их деления на 1,5 дол­жен быть крат­ным 64. Можешь поп­робовать и дру­гие подоб­ные вари­анты.

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

Рас­ширение уста­нав­лива­ется обыч­ным спо­собом:

git clone https://github.com/Panchovix/reforge_jankhidiffusion.git

Пос­ле переза­пус­ка reForge в интерфей­се появит­ся вклад­ка RAUNet/MSW-MSA for reForge. Акти­вируй основное рас­ширение, пос­ле чего вклю­чи нас­трой­ки RAUNet Simple Enabled (вклад­ка RAUNet Simple) и MSW-MSA Simple Enabled (вклад­ка MSW-MSA Simple). Вто­рое — не обя­затель­но; MSA может помочь уве­личить ско­рость генера­ции, но может и не помочь. Нас­трой­ки RAUNet показа­ны на скрин­шоте.

Выбираем SDXL и high (1536–2048)
Вы­бира­ем SDXL и high (1536–2048)
Изображение на выходе
Изоб­ражение на выходе

Ком­позиция и детали­зация замет­но отли­чают­ся и от генера­ции, не исполь­зующей Deep Shrink вооб­ще, и от резуль­тата Kohya HRFix. Сто­ит сге­нери­ровать нес­коль­ко изоб­ражений с раз­ными сюжета­ми, что­бы понять, какая тех­нология луч­ше. Мой выбор — в поль­зу RAUNet.

У RAUNet есть и ряд допол­нитель­ных нас­тро­ек, дос­тупных на вклад­ке Advanced. Преж­де чем вклю­чать рас­ширен­ную вер­сию метода, отклю­чи RAUNet Simple. На вклад­ке рас­ширен­ных нас­тро­ек мож­но менять слои, к которым при­меня­ется механизм, а так­же нас­тра­ивать начало и конец дей­ствия нас­тро­ек понижен­ного раз­решения.

Мож­но экспе­римен­тировать с нас­трой­ками механиз­ма Cross-Attention; инте­рес­ный резуль­тат иног­да мож­но получить, изме­нив CA Start Time на 0,45 и CA End Time на 0,65. Сле­дующая кар­тинка сге­нери­рова­на имен­но с такими нас­трой­ками.

Тех­нология RAUNet может исполь­зовать­ся и для генера­ции изоб­ражений свер­хвы­соко­го раз­решения — нап­ример, раз­мером 1536 на 2048 точек, что уже в три раза пре­выша­ет штат­ные воз­можнос­ти моделей SDXL. Не все модели спо­соб­ны работать в этом раз­решении, и далеко не всег­да резуль­тат получа­ется ожи­даемым. Луч­ше все­го в этом раз­решении работа­ют ани­ме‑модели (нап­ример, на базе Illustrious) и отно­ситель­но све­жие обу­чен­ные модели и их ремик­сы, соз­данные во вто­рой полови­не 2024-го.

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

info

Тех­нология RAUNet несов­мести­ма с моделя­ми CosXL и не всег­да хорошо работа­ет с моделя­ми v-pred (V-predition).

А теперь — все в одном

На­конец, вос­поль­зуем­ся получен­ными зна­ниями, что­бы соз­дать нес­коль­ко кар­тинок в сти­ле ани­ме в мак­сималь­но воз­можном качес­тве и раз­решении за минималь­ное вре­мя. Генери­ровать будем сра­зу в раз­решении 1536 ✕ 2048, уста­новив в WebUI соот­ветс­тву­ющие нас­трой­ки.

Мо­дель: мож­но выб­рать любую све­жую модель на осно­ве Illustrious с типом пред­ска­зания EPS (но не v-pred), нап­ример harmoniqmixEpred_v11.

В качес­тве сем­пле­ра вос­поль­зуем­ся одним из вари­антов CFG++; я выб­рал Euler DY CFG++, аль­тер­нативы — дру­гие сем­пле­ры, в наз­вании которых при­сутс­тву­ют обе час­ти — Dy и CFG++. Шедулер — Beta. Шка­лу CFG Scale подоб­рал экспе­римен­таль­но, для выб­ранной модели и нас­тро­ек CFG = 2,5. Hires.fix отклю­чен, так как мы сра­зу соз­даем кар­тинку в нуж­ном раз­решении. Чис­ло шагов уста­новил в 50 (мож­но и мень­ше, но эко­номят­ся счи­таные секун­ды).

Ито­го: Euler DY CFG++, Beta, 50 steps, CFG = 2,5.

Да­лее — рас­ширения:

Для начала — почему так важен выбор сем­пле­ра. Один и тот же зап­рос, раз­ные сем­пле­ры.

Euler DY CFG++ и Euler SMEA DY CFG++ похожи; мож­но поль­зовать­ся любым.

А вот DPM++ 2M DY CFG++ дает совер­шенно дру­гую кар­тинку, с боль­шей чет­костью и избы­точ­ной детали­заци­ей. Мне приш­лось сни­зить зна­чение CFG до 1,5, что­бы избе­жать появ­ления шума.

А в сле­дующей паре при­меров зап­рос был целиком иден­тичный; срав­ни резуль­тат (Euler DY CFG++ и DPM++ 2M DY CFG++ соот­ветс­твен­но).

И еще пара при­меров с теми же нас­трой­ками.

На­конец, в качес­тве демонс­тра­ции воз­можнос­тей модели — два изоб­ражения, «нарисо­ван­ных» раз­ными авто­рами.

Все расширения в одном файле

Ни­же при­водит­ся bat-файл, который мож­но запус­тить в пап­ке webui\extensions, что­бы уста­новить все рас­ширения, перечис­ленные в этой статье и в пре­дыду­щей.

REM Расширения пользовательского интерфейса
REM SD Webui Tabs Extension
git clone https://github.com/Haoming02/sd-webui-tabs-extension
REM Aspect Ratio Selection: выбрать одно из них
git clone https://github.com/altoiddealer/--sd-webui-ar-plusplus
REM git clone https://github.com/alemelis/sd-webui-ar
REM WebUI Agent Scheduler
git clone https://github.com/ArtVentureX/sd-webui-agent-scheduler
REM Config Presets
git clone https://github.com/Zyin055/Config-Presets
REM Civitai Helper
git clone https://github.com/zixaphir/Stable-Diffusion-Webui-Civitai-Helper
git clone https://github.com/DominikDoom/a1111-sd-webui-tagcomplete.git
git clone https://github.com/adieyal/sd-dynamic-prompts.git
REM Расширения для сегментации и детализации сегментов изображения
git clone https://github.com/Bing-su/adetailer.git
git clone https://github.com/wkpark/uddetailer
git clone https://github.com/pamparamm/sd-perturbed-attention.git
REM Расширения от разработчика reForge. Можно устанавливать пакетом или по отдельности
REM Forge Latent modifier:
git clone https://github.com/Panchovix/sd_forge_latent_modifier.git
REM Automatic CFG:
git clone https://github.com/Panchovix/reForge-AutomaticCFG.git
REM Skimmed CFG:
git clone https://github.com/Panchovix/reForge-SkimmedCFG.git
REM Differential Diffusion:
git clone https://github.com/Panchovix/reForge-DifferentialDiffusion.git
REM reForge HiDiffusion (Raunet, MSW-MSWA):
git clone https://github.com/Panchovix/reforge_jankhidiffusion.git
REM Расширения настроек изображений
REM Forge Couple
git clone https://github.com/Haoming02/sd-forge-couple
git clone https://github.com/hako-mikan/sd-webui-cd-tuner
git clone https://github.com/hnmr293/sd-webui-cutoff
git clone https://github.com/hako-mikan/sd-webui-prevent-artifact
git clone https://github.com/Haoming02/sd-webui-vectorscope-cc