March 13

Stable Diffusion XL. Генерируем картинки нейросетью на своем компьютере

  1. Приступаем
  2. Stable Diffusion XL в облаке
  3. Локальные дистрибутивы Stable Diffusion
  4. Первый запуск
  5. Как составить запрос
  6. Продвинутые возможности
  7. Недостатки Fooocus
  8. Достоинства
  9. Продолжение следует

Ты, навер­ное, уже нас­лышан о ней­рон­ке Stable Diffusion, рису­ющей кар­тинки локаль­но на тво­ем компь­юте­ре без вся­ких сер­висов с плат­ными токена­ми. Недав­но выш­ла новая вер­сия — SDXL, то есть «Extra Large». В этой статье мы с тобой уста­новим ее и пос­мотрим, как она генери­рует кар­тинки.

ПРИСТУПАЕМ

Что­бы гонять SDXL локаль­но, нам пот­ребу­ется виде­окар­та отно­ситель­но све­жего поколе­ния и хотя бы 6 Гбайт виде­опа­мяти, так­же подой­дет «мак» с чипом серии M. Одна­ко я буду все делать в Windows на машине с кар­той Nvidia.

Ус­танов­щик будет качать и ста­вить мно­гочис­ленные модули общим объ­емом 10–15 Гбайт, так что пред­лагаю про­мотать статью вниз и сра­зу запус­тить про­цесс, что­бы все успе­ло ска­чать­ся, пока ты чита­ешь статью.

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

Ус­тановив Python, ска­чай при­ложе­ние Fooocus со стра­ницы про­екта на GitHub. Рас­пакуй архив в пап­ку, куда будет уста­нов­лено при­ложе­ние, и запус­ти уста­нов­щик одной из команд:

  • run.bat — будет ска­чана модель обще­го наз­начения;
  • run-realistic.bat — будет ска­чана фоторе­алис­тичная модель;
  • run-anime.bat — ска­чает модель, которая будет генери­ровать изоб­ражения в сти­ле ани­ме.

Пов­торюсь, вре­мени это зай­мет мно­го — про­ект исполь­зует сот­ню с неболь­шим пакетов, а для его работы понадо­бит­ся ска­чать файл модели SDXL раз­мером в 6,5 Гбайт. Пока это про­исхо­дит, раз­берем­ся, что это за Fooocus такой и какое отно­шение он име­ет к Stable Diffusion.

STABLE DIFFUSION XL В ОБЛАКЕ

По­ка ска­чива­ются необ­ходимые для работы Fooocus фай­лы, Stable Diffusion XL мож­но опро­бовать быс­тро и совер­шенно бес­плат­но, вос­поль­зовав­шись DreamStudio — офи­циаль­ным облачным сер­висом, соз­данным в Stability AI.

Ин­терфейс прос­той: стро­ка вво­да, выбор соот­ношения сто­рон и количес­тва генери­руемых изоб­ражений. Сис­тема даже под­ста­вит слу­чай­ный зап­рос — в моем слу­чае это «a woman holding a gun stands in a desert 1800’s America Western town». Зап­рос не хуже дру­гих, будем и даль­ше отталки­вать­ся от него.

Жму на кноп­ку, через нес­коль­ко секунд изоб­ражения готовы. Их мож­но ска­чать «как есть», в раз­решении 1024 на 1024, или вос­поль­зовать­ся умным алго­рит­мом повыше­ния раз­решения ESRGAN.

На пер­вый взгляд кар­тинки выг­лядят сим­патич­но, при­ятная цве­товая гам­ма в духе ста­рых фотог­рафий.

Од­нако сра­зу бро­сают­ся в гла­за извес­тные боляч­ки ней­росетей: лица и конеч­ности. Лицо, кис­ти рук — извечная беда Stable Diffusion. И если с кис­тями рук все не так однознач­но (слиш­ком гиб­кие, слиш­ком мно­го воз­можных положе­ний), то лица ней­росеть дол­жна генери­ровать иде­аль­но — но толь­ко если у нее дос­таточ­но прос­транс­тва для работы.

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

ЛОКАЛЬНЫЕ ДИСТРИБУТИВЫ STABLE DIFFUSION

Са­ма по себе Stable Diffusion работа­ет через коман­дную стро­ку и тре­бует опре­делен­ных навыков для уста­нов­ки и исполь­зования. Делать это вруч­ную нет никакой необ­ходимос­ти: в сети дос­таточ­но готовых сбо­рок, где к ней­росети прик­ручен локаль­ный веб‑интерфейс (а иног­да и не веб; есть сбор­ки, в которых вза­имо­дей­ствие с сетью сде­лано в виде отдель­ного при­ложе­ния, обыч­но для Windows). Новому поль­зовате­лю разоб­рать­ся во всех этих сбор­ках и отли­чиях меж­ду ними неп­росто.

По­жалуй, самая популяр­ная сбор­ка для обла­дате­лей карт Nvidia — это Stable Diffusion web UI, она же — AUTOMATIC1111. Одна­ко не так прос­то будет с нуля разоб­рать­ся во всех парамет­рах генера­ции, а пер­вые резуль­таты, веро­ятно, не поразят качес­твом. Более того, сам про­цесс генера­ции на сла­бой виде­окар­те может ока­зать­ся нас­толь­ко мед­ленным, что ты можешь подумать, что вся эта воз­ня не для тебя. Все это впол­не реша­емо, и AUTOMATIC1111 не зря самая популяр­ная сбор­ка. Тем не менее начинать работать со Stable Diffusion я рекомен­дую с чего‑то более прос­того, и Fooocus для это­го под­ходит иде­аль­но.

Какие вообще бывают сборки?

Сбо­рок Stable Diffusion мно­жес­тво, я упо­мяну толь­ко те, что меня заин­тересо­вали боль­ше дру­гих.

  • Fooocus — иде­аль­на для начина­ющих, сра­зу выда­ет кар­тинки отлично­го качес­тва, хорошо работа­ет как на сла­бых, так и на мощ­ных виде­окар­тах. В то же вре­мя серь­езно огра­ничи­вает поль­зовате­ля.
  • AUTOMATIC1111 — один из наибо­лее популяр­ных про­ектов. Здесь есть огромные воз­можнос­ти для рас­ширения через под­клю­чаемые модули. Но здесь доволь­но высокий порог вхож­дения. Как пра­вило, если появ­ляет­ся какое‑нибудь новое инте­рес­ное решение для Stable Diffusion, то в пер­вую оче­редь оно офор­мля­ется в виде рас­ширения для A1111.
  • Форк AUTOMATIC1111 за авторс­твом vladmandic — тут еще более широкие воз­можнос­ти, но и еще более высокий порог вхож­дения по срав­нению с ори­гина­лом. Мно­гие полез­ные рас­ширения, которые в A1111 нуж­но искать и уста­нав­ливать самос­тоятель­но, уже вхо­дят в сбор­ку, но мне уда­лось добить­ся ста­биль­ной работы лишь с треть­ей попыт­ки.

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

  • InvokeAI — еще один инте­рес­ный про­дукт. Син­таксис отли­чает­ся, а поль­зователь­ский интерфейс отли­чает­ся очень силь­но.
  • ComfyUI — про­ект с уни­каль­ным интерфей­сом, наз­вание которо­го, впро­чем, не дол­жно тебя обма­нуть: ничего осо­бен­но ком­фор­тно­го тут нет. Что­бы сге­нери­ровать кар­тинку, нуж­но соз­давать узлы и соеди­нять их стре­лоч­ками, как это делалось в ста­родав­ние вре­мена на блок‑схе­мах, которые изу­чались на уро­ках информа­тики.
  • nod.ai SHARK — про­ект, опти­мизи­рован­ный для карт AMD. Дру­гие про­екты могут работать с кар­тами AMD, но у SHARK это получа­ется нам­ного луч­ше.

ПЕРВЫЙ ЗАПУСК

Ког­да уста­нов­ка Fooocus завер­шится, мож­но запус­кать. В зависи­мос­ти от того, какой файл ты запус­тишь, прог­рамма исполь­зует пре­дус­танов­ленные нас­трой­ки для генера­ции изоб­ражений одно­го из перечис­ленных типов. При пер­вом запус­ке соот­ветс­тву­юще­го фай­ла нуж­ная модель (раз­мером 6,5 Гбайт) будет ска­чана авто­мати­чес­ки. В бра­узе­ре откро­ется пус­тое окно с полем вво­да и боль­шой кноп­кой Generate.

Вво­дим зап­рос:

a woman holding a gun stands in a desert 1800's America Western town

Че­рез нес­коль­ко секунд получа­ем пару изоб­ражений.

Вы­берем одно из сге­нери­рован­ных изоб­ражений. Вот оно в ори­гиналь­ном раз­решении.

С руками все пло­хо, лицо... поп­робу­ем улуч­шить. Фун­кции пос­тобра­бот­ки откро­ются, если пос­тавить галоч­ку Input Image. Для начала уве­личим раз­решение кар­тинки: дос­таточ­но прос­то перета­щить толь­ко что сге­нери­рован­ную кар­тинку вниз, на область, помечен­ную над­писью Drag above image to here.

Нас инте­ресу­ет вари­ант удво­ения раз­решения. Пос­ле того как фун­кция отра­бота­ет, получим такую кар­тинку.

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

Термины

Inpaint — добав­ление, изме­нение или уда­ление объ­ектов внут­ри кар­тинки без изме­нения ее раз­меров или раз­решения.

Outpaint — изме­нение раз­меров или соот­ношения сто­рон кар­тинки; «дорисо­выва­ние» по кра­ям изоб­ражения. Недос­тающие области будут дорисо­ваны при помощи исходной модели и вве­ден­ного изна­чаль­но зап­роса. В иде­але такая «рас­ширен­ная» кар­тинка будет сос­тыкова­на с ори­гина­лом совер­шенно бес­шовно.

На кар­тинке удво­енно­го раз­решения лицо уже поч­ти как нас­тоящее. Поп­робу­ем еще улуч­шить его встро­енной в Fooocus фун­кци­ей Inpaint. Для это­го толь­ко что уве­личен­ную кар­тинку нуж­но перета­щить в область Inpaint or Outpaint, пос­ле чего кис­точкой выб­рать лицо.

Оп­циональ­но мож­но добавить допол­нитель­ные клю­чевые сло­ва в поле Inpaint additional prompt. Нап­ример, highly detailed face (но мож­но и что‑то дру­гое, нап­ример что­бы изме­нить цвет глаз или еще какие‑то чер­ты). Жмем Generate.

По­луча­ется при­мер­но так.

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

Ори­гинал
Пос­ле уве­личе­ния раз­решения
Пос­ле работы улуч­шай­зера

Те­перь про­дела­ем то же самое с руками.

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

В ито­ге получа­ется такая кар­тинка.

КАК СОСТАВИТЬ ЗАПРОС

О сос­тавле­нии зап­росов к ней­росети мы погово­рим под­робнее в сле­дующих стать­ях. В Fooocus под­держи­вает­ся стан­дар­тный син­таксис при­ори­тетов, сов­мести­мый с AUTOMATIC1111. В час­тнос­ти, обо­рачи­вание сло­ва из зап­роса в оди­нар­ные скоб­ки уве­личи­вает его весовой коэф­фици­ент в 1,1 раза; если обер­нуть в двой­ные, то в 1,2 раза. Даль­нейшее изме­нение весов зада­ется, нап­ример, так: (token:1.3).

Од­нако вруч­ную задавать веса нет необ­ходимос­ти, дос­таточ­но выделить клю­чевое сло­во (или нес­коль­ко слов, раз­делен­ных запяты­ми) и нажать Ctrl-вверх для повыше­ния веса или Ctrl-вниз для пониже­ния.

Stable Diffusion обра­баты­вает зап­росы пач­ками по 75 токенов, при­чем наиболь­ший вес име­ют токены в начале пакета. Если исполь­зует­ся длин­ный зап­рос или рас­ширение в виде сти­ля, то сис­тема может раз­бить его на нес­коль­ко пачек в совер­шенно неожи­дан­ном для тебя мес­те, и повышен­ный вес незас­лужен­но получит какой‑нибудь нез­начитель­ный модифи­катор. О том, как с этим бороть­ся, я рас­ска­жу в одной из сле­дующих ста­тей, ког­да будем раз­бирать­ся с AUTOMATIC1111 (в Fooocus таких воз­можнос­тей все рав­но по­ка нет).

На­конец, важ­ный момент: Fooocus по умол­чанию исполь­зует локаль­ное GPT-подоб­ное рас­ширение зап­росов, что­бы получить более кра­сивое изоб­ражение (это мож­но отклю­чить в рас­ширен­ных нас­трой­ках, сняв галоч­ку со сти­ля Fooocus V2). Пос­мотреть, какой имен­но зап­рос был нап­равлен на генера­цию, мож­но в фай­ле log.html (он соз­дает­ся в выход­ной пап­ке; его мож­но так­же открыть из вклад­ки Advanced → History Log).

Вот, нап­ример, как в реаль­нос­ти выг­лядел наш зап­рос:

Original Prompt: a woman holding a gun stands in a desert 1800's America Western townNegative Prompt: unrealistic, saturated, high contrast, big nose, painting, drawing, sketch, cartoon, anime, manga, render, CG, 3d, watermark, signature, labelFooocus V2 Expansion: a woman holding a gun stands in a desert 1800's America Western town, highly detailed, magic mystical, dramatic light, cinematic, intricate, beautiful, sharp focus, extremely professional composition, elegant, very inspirational, special color, stunning, excellent, winning, modern, artistic, perfect, new classic, best, creative, positive, cute, spiritual, vibrant, iconic, rationalStyles: ['Fooocus V2', 'Fooocus Photograph', 'Fooocus Negative']

Ней­росети ушел зап­рос Fooocus V2 Expansion с негатив­ными клю­чевы­ми сло­вами из Negative Prompt. А сле­дующая за ней кар­тинка была уже с дру­гим зап­росом:

Fooocus V2 Expansion: a woman holding a gun stands in a desert 1800's America Western town, still, cinematic, dramatic ambient, intricate detailed, sharp focus, elegant, highly detail, polished, extremely scientific, magical, mystical, historic royal, full color, artistic, deep aesthetic, very inspirational, original, holy, scenic, fascinating, epic, great creative, thought, fancy, iconic

Та­ким обра­зом, с нас­трой­ками по умол­чанию Fooocus самос­тоятель­но модифи­циру­ет твои зап­росы по алго­рит­му, похоже­му на тот, что исполь­зует­ся в ком­мерчес­ких онлай­новых ней­росетях. Если тебя не устра­ивает такое поведе­ние, то мож­но отклю­чить стиль Fooocus V2 из вклад­ки Advanced → Styles.

ПРОДВИНУТЫЕ ВОЗМОЖНОСТИ

В Fooocus есть и допол­нитель­ные воз­можнос­ти, дос­тупные, если отме­тить галоч­ку Advanced.

На вклад­ке Settings мож­но выб­рать жела­емое соот­ношение сто­рон и раз­решение (впро­чем, есть рекомен­дован­ный раз­работ­чиками Stable Diffusion на­бор).

  • Speed — это количес­тво ите­раций алго­рит­ма. Чем боль­ше шагов, тем более деталь­ным может получить­ся изоб­ражение.
  • Image Number — чис­ло генери­руемых в пакете вари­антов изоб­ражения. По умол­чанию генери­рует­ся две кар­тинки, мож­но задать от 1 до 32.
  • Negative Prompt — уже запол­ненное поле с отри­цатель­ными клю­чевы­ми сло­вами. Обра­ти вни­мание, что Fooocus уже запол­няет это поле за тебя. Не зай­дя на вклад­ку Advanced, ты об этом, ско­рее все­го, и не узнал бы.

Как использовать негативные ключевые слова?

Цен­ность негатив­ных клю­чеви­ков несом­ненна, но их очень час­то понима­ют и исполь­зуют неп­равиль­но, без нуж­ды засоряя зап­рос сло­вами вро­де bad hands, bad anatomy, ugly, deformed. Stable Diffusion совер­шенно не инте­рес­но спе­циаль­но соз­давать bad hands и bad anatomy, и их перечис­ление в спис­ке клю­чевых слов в боль­шинс­тве моделей бес­полез­но: все подоб­ные вхож­дения дав­но име­ют отри­цатель­ный вес в самой модели. Да, их упо­мина­ние может (слу­чай­но) изба­вить от проб­лемы в кон­крет­ном изоб­ражении — но, во‑пер­вых, та же проб­лема может воз­никнуть вновь в дру­гих кар­тинках, а во‑вто­рых, такого же слу­чай­ного эффекта мож­но добить­ся неболь­шим изме­нени­ем любого дру­гого парамет­ра.

Не­гатив­ные клю­чевые сло­ва сто­ит исполь­зовать, в точ­ности понимая зачем. Один слу­чай — ког­да нуж­но допол­нитель­но уси­лить задан­ный в основном зап­росе стиль (нап­ример, при фоторе­алис­тичном зап­росе заб­локиро­вать anime, cg, render). Дру­гой — ког­да нуж­но убрать какую‑то кон­крет­ную деталь или объ­ект, который в про­тив­ном слу­чае будет при­сутс­тво­вать в изоб­ражении. Прос­той при­мер: при исполь­зовании сти­ля Midjourney в кар­тинках воз­ника­ет избы­ток бирюзо­вого цве­та; его мож­но лег­ко убрать, добавив сло­во teal в негатив­ный зап­рос.

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

На­конец, под полем Negative Prompt при­таилась малоза­мет­ная галоч­ка с под­писью Random. По умол­чанию она выб­рана. Если ее снять, появит­ся воз­можность выб­рать не слу­чай­ный, а фик­сирован­ный сид (seed). Это может понадо­бить­ся в двух слу­чаях: если ты хочешь в точ­ности вос­создать ранее сге­нери­рован­ное изоб­ражение (его сид всег­да дос­тупен в фай­ле log.htm) и если ты хочешь изу­чить, как пов­лияет на финаль­ную кар­тинку изме­нение тек­сто­вого зап­роса (в этом слу­чае не забудь отклю­чить стиль Fooocus V2: этот стиль динами­чес­кий, он будет менять­ся от зап­роса к зап­росу). По окон­чании экспе­римен­тов не забудь вер­нуть сид в слу­чай­ное зна­чение.

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

НЕДОСТАТКИ FOOOCUS

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

До опре­делен­ного момен­та изоб­ражения как бы не сущес­тву­ет; весь про­цесс «дис­тилля­ции» про­исхо­дит в латен­тном прос­транс­тве. «Вытащить» отту­да изоб­ражение озна­чает перевес­ти его из латен­тно­го прос­транс­тва в прос­транс­тво пик­селей. Как толь­ко изоб­ражение «вытащи­ли» в прос­транс­тво пик­селей, новых деталей в нем уже не появит­ся: их мож­но толь­ко «додумать», осно­выва­ясь на том, что уже есть, — самом изоб­ражении, тек­сто­вом зап­росе и модели.

На этом прин­ципе осно­ваны все «интеллек­туаль­ные» сис­темы повыше­ния раз­решения — такие как мощ­ный инс­тру­мент chaiNNer или ори­енти­рован­ный на рисован­ные изоб­ражения (и даже ани­мации!) Waifu2x Extension GUI. На этом же прин­ципе работа­ет апскей­лер в Fooocus: уже готовое пик­сель­ное изоб­ражение заг­ружа­ется в пост­про­цес­сор (img2img), в котором и про­исхо­дят пос­леду­ющие манипу­ляции.

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

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

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

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

ДОСТОИНСТВА

С дру­гой сто­роны, Fooocus исклю­читель­но прост в исполь­зовании, а его сис­тема рас­ширения зап­роса офлай­новым GPT-подоб­ным ал­горит­мом (стиль Fooocus V2) уни­каль­на сре­ди подоб­ных про­ектов и впол­не спо­соб­на соз­дать кон­курен­цию Midjourney.

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

А вот ког­да ты уже понял, чем основная модель отли­чает­ся от рефай­нера, для чего нуж­ны LoRA и чем они отли­чают­ся от сти­лей, что такое seed и на что вли­яет параметр CFG, — тог­да мож­но запус­тить AUTOMATIC1111 и не потерять­ся в оби­лии парамет­ров.

Как дела с законностью?

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

Ли­цен­зия самого Stable Diffusion дает тебе доволь­но широкие пра­ва, как и лицен­зии мно­гих сбо­рок. У Fooocus и AUTOMATIC1111 лицен­зия GPL 3.0, у дру­гих про­дук­тов нуж­но смот­реть отдель­но. У боль­шинс­тва моделей SDXL с Civitai — лицен­зия CreativeML Open RAIL++-M, которая так­же дает дос­таточ­но широкие воз­можнос­ти. У некото­рых моделей лицен­зии более жес­ткие, так что нуж­но про­верять.

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

Га­ран­тирован­но лицен­зион­но чис­тые изоб­ражения сво­им поль­зовате­лям пред­лага­ют соз­давать все круп­ные фотобан­ки, обу­чив­шие генера­тив­ные модели на изоб­ражени­ях, на которые у них точ­но есть необ­ходимые пра­ва. Shutterstock за­явля­ет, что фотог­рафам за исполь­зование их изоб­ражений будет вып­лачивать­ся ком­пенса­ция. С ана­логич­ным пред­ложени­ем выш­ла на рынок и Getty Images.

ПРОДОЛЖЕНИЕ СЛЕДУЕТ

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

В зап­ланиро­ван­ном про­дол­жении я собира­юсь написать о том, какие быва­ют базовые модели, где их брать и на какие обра­тить вни­мание в пер­вую оче­редь; о том, для чего нуж­ны рефай­нер (refiner) и LoRA и как их исполь­зовать; как работа­ют сти­ли и чем они отли­чают­ся от LoRA; наконец, о том, на что вли­яют парамет­ры Guidance Scale (он же — CFG value) и Image Sharpness (это не о кон­турной рез­кости). Кто зна­ет, воз­можно, в будущем я напишу о раз­нице меж­ду оран­жевой кош­кой, кош­кой и апель­сином, кош­копель­сином и кош­кой‑апель­сином. Не про­пус­ти!