Як працює генеруюча мережа
Основні поняття
ШІ (AI) — штучний інтелект
МН (ML) — машинне навчання
NN — нейромережі
Stable diffusion — конкретна архітектура нейромережі, добре придатна для створення картинок
NLP — методи обробки природної мови
GPT-3 — модель перетворення речень (запитів, prompts) в векторне представлення, зрозуміле для комп'ютера
Для написання працюючих запитів необхідно мати мінімум знань про те, як працює алгоритм створення text-to-image. По-перше, система складається з двох частин — один модуль перетворює написаний людиною текст в зрозумілу для комп'ютера векторну форму, а інший — створює картинку, в певному сенсі відповідну цьому вектору.
Що таке векторна форма? Давайте трохи напружимо пам'ять, хто забув, але вектор — це просто набір чисел. По «шкільному» його можна уявляти направленим відрізком в просторі, де числа — координати кінця стрілочки. Чому це важливо? Справа в тому, що в мові присутні синоніми, різні конструкції реченнь, різні способи вираження однієї і тої самої думки, неоднозначність, яку не можна описати набором правил.
Якщо нас просять намалювати «стіл з пляшкою в кімнаті і стілець» швидше за все ми уявимо порожній стіл з нашої пам'яті, пляшку на ньому, все це в кімнаті і стілець мабуть теж буде стояти поруч зі столом. Нам не треба пояснювати зв'язки між цими предметами, ми розуміємо, що пляшка має (можливо, насправді ми додумуємо в умовах неоднозначності вхідної інформації) саме стояти на столі, бо так логічніше. А стілець має бути не поруч з кімнатою, а логічно додати його до столу.
Звісно в мові присутня велика кількість неоднозначних сенсів, тому за бажання можна зобразити стіл, пляшку і кімнату окремо а поруч домалювати стілець і загалом це теж буде підходити, якщо зрозуміти задачу навмисно буквально. В цьому і полягала проблема генерування — у комп'ютерного алгоритма немає нашого «досвіду» і він не може зрозуміти чому одне прочитання опису має бути краще за інше і жоден набір правил не міг це поправити.
Вихід знайшовся в «векторизації» слів. Скажімо у нас є фрази:
Він сидить за столом
Стіл стояв в кімнаті
Стіл і стільці можна купити в магазині
Для слова «стіл» ми порахуємо всі можливі слова які вживаються перед і після нього. І так зробимо для величезного масиву текстів де взагалі вживається це слово. Звісно, людям таке зробити не під силу, але комп'ютеру — просто. Для кожного слова, яке може трапитись до або після нашого слова ми зарезервуємо окремий вимір і кількість (або, якщо ми нормалізуємо — частота) буде числовим значенням для цього виміру. Найбільш вживаних слів в мові — декілька сотень тисяч, тому ці вектори будуть величезні для людини, але не для комп'ютерів.
В результаті у нас для слова стіл є вектор, де закодована вся інформація про його контекст вживання. Ми можемо побачити, що за столом часто сидять або їдять, що стільці досить часто вживаються поруч і т.д. І тепер комп'ютер може обчислити контекст для кожного слова. Більше того, виявляється, що вектори слів мають дивовижні властивості, які, власне, відображують їх вживання.
Наприклад, якщо додати стіл + школа, то має вийти щось близьке до парта. Тобто тепер можливо комбінувати різні контексти і утворювати загальний вектор фрази або опису. Виявляється віднімання теж працює: Король — корона = чоловік.
Щоб завершити це довге пояснення ось конкретна ілюстрація цієї ідеї. Спочатку я згенерував картинку по запиту «радіолярії», потім «зимовий ліс». Оригінальні запити були дещо більші, але суть була така. Потім я об'єднав два запита в один. Результатом, як ви бачите, стало певне комбінування першої і другої картинки.
Отже, перша мережа відпрацювала і сформувала вектор, який описує те, що ми хочемо зобразити. Тепер починає роботу наступний компонент — стійка дифузія. Я розкажу на прикладі цієї конкретної мережі, інші працюють за схожими принципами. Важливо зрозуміти саму ідею, що не дивуватись потім чому у людей по три руки і дві голови.
На першому етапі мережа навчалась на великій кількості картинок (сотнях мільйонів), деякі з них були розмічені — тобто мали підписи, описи, метадані (якщо це фотографія, то тип фотоапарату і інші дані). Частину мережа дорозмітила сама на основі тих даних, що в неї були, пам'ятаєте, що кожна мережа — це дуууже багато часу роботи потужних процесорів, в неї є час на розмітку.
Тобто, з кожною картинкою можна співвіднести вектор опису — хто малював, що зображено, як саме, які деталі, які кольори, стиль і т.д.
Як малює художник? Ну, наскільки я розумію зі свого невеликого досвіду, це відбувається в голові. Формується образ того, що хотілось би намалювати, а потім це переноситься на папір відповідно до рівня майстерності. Можна розбивати задачу на декілька, формувати спочатку грубо композицію — але ми не можемо намалювати те, що не можемо уявити. Потрібно, щоб ми щось таке бачили або пам'ятали.
Мережа працює дещо навпаки, вона намагається «знайти» картинку, що максимально б відповідала опису (це ж вектори — пам'ятаєте, відстань між ними можна порахувати). Звісно, вона не шукає картинки в існуючих — це було б не цікаво, вона шукає неіснуючі картинки, і таким чином їх створює!
Як це відбувається? Мережу навчають таким чином:
- Беруть певну відому картинку
- Спотворюють її «дифузією» — розмивають, додають шум і т.д.
- Змушують мережу по спотвореній картинці відновити відому.
- Так роблять довго довго, поки мережа не натреновується «знімати» шум.
Далі мережа генерує початковий шум — просто випадкову картинку, і пробує «знімати шум» так, щоб результат став ближче до вектора запиту. Тобто ми змушуємо мережу шукати «оригінальну» картинку, якої насправді нема. Математик би тут міг багато що сказати про пошуки розв'язку в задачах, де його не існує, але тут це працює. Ось ілюстрація як з різних шумів отримуються конкретні картинки.
Звісно, іноді може вийти якась мішанина, яка не дуже компонується — для розв'язання цієї задача мережа насправді генерує тисячі або і більше варіантів одночасно, а потім вибирає з них найбільш «перспективні».
Підсумовуючи, давайте зафіксуємо загальну схему створення картинки.
- Формується текст запиту, який буде переведений в векторну форму. Це важливо розуміти при його написанні — якщо ви додасте занадто мало деталей, то опис буде дуже загальний і до нього будуть підходити багато картинок, якщо деталей буде надто багато, вийде ситуація, коли об'єднання окремих векторів знов таки дасть загальний вектор, якому буде підходити майже будь-що.
- Задаються параметри для алгоритму генерації (їх називають гіперпараметрами) — це параметри, які визначають «відбір кандидатів» в процесі генерації. Оскільки ми, як правило, не можемо запускати алгоритм необмежено це важливо для отримання якісних результатів.
- Замість шуму можна задати алгоритму початкову картинку. Це має величезний вплив, оскільки мережа тепер має певні «лекала», в яких вона шукає варіації.
Наявні засоби генерації
На сьогодні вже існує багато різних можливостей генерації MidJourney мабуть найвідоміша з них. В цьому мануалі я опишу іншу з наявних можливостей — nighcafe.studio. Мені подобається простота інтерфейсу (зараз вже трохи зіпсувалась), якість результатів, можливість генерувати безкоштовно в певних межах та наявність елементів соцмережі, які дозволяють ділитись і обговорювати ідеї. Звісно, алгоритми більш-менш однакові і тому всі ідеї, які я буду розказувати можна використати і в інших системах, однак результати можуть відрізнятись.
Для мене найважливішим плюсом nighcafe.studio є відтворюваність результатів, тобто однакові параметри мають призводити до однакових результатів, навіть якщо запустити їх через, скажімо, місяць.
Перейшовши за лінком https://creator.nightcafe.studio/login ви потрапляєте на сторінку, де потрібно зареєструватись будь-яким зручним способом.
Після реєстрації ви отримуєте бонусні кредити, які можна використовувати для створення картинок. Зрозуміло, що кредитів рівно стільки, щоб вам сподобалось, але мало. Є чотири способи отримання кредитів:
- Купити
- Чекати і накопичувати. Кожен день ви отримуєте 5 кредитів + ще 2 можна отримати за голосування в челенджах (ви маєте оцінити 20 робіт, це десь 1–2 хвилини).
- Отримати одноразові бонуси (бейджі). Для заохочення учасників є багато одноразових бонусів: створити генерацію, опублікувати генерацію, прокоментувати або оцінити роботи інших, отримати коментарі і оцінки. Все це дозволяє набрати десь під сотню кредитів. Цілком досить щоб награтись, якщо генерувати з розумом.
- Приймати участь в щоденних челенджах. Це для тих, хто має ідеї і створює незвичні роботи. Потрапити в топ 20%, 10%, 5% або перші 3 місця отримують бонусні кредити. Звісно перші місця це дуже конкурентно, але потрапити в топ 20% цілком реально.
До речі, створювати декілька акаунтів не заборонено, але перекидати кредити з одного на інший можна лише за оформлення регулярної підписки.
Після реєстрації ви потрапляєте на сторінку з великою кнопкою Create(створити) і далі вам пропонують метод створення картинки. Щоб не вдаватись сильно в деталі я коротко опишу кожен і далі ми будемо працювати з найбільш стійким і надійним методом.
Style transfer — це по суті стилізація, а не генерація. На вхід подається фото (ваше наприклад) та інша картинка, скажімо пейзаж ван гога, і алгоритм створює ваше фото в стилі ван гога.
Artistic — видає надзвичайно «креативні» роботи де може трапитись абсолютно що завгодно. Як правило без композиції і реалізму. Але її можна використовувати як стартову картинку для інших алгоритмів, хоча декому вдається робити красу і з цим алгоритмом.
Coherent — це більш продвинутий алгоритм, який дозволяє створювати дійсно складні і красиві роботи, особливо якісно в нього виходять потоки диму, блискавки, водоспади, такий стиль яскравого імпресіонізму. Значна більшість вдалих робіт тут — пейзажі. Особливість методу, що для генерації якісного результату потрібна якась позамежна кількість кредитів. Тобто базова генерація коштує невелику кількість, але без підключення додаткової деталізації і збільшення розмірності нічого путного не виходить.
Dall-E 2 — відкритий варіант відомої (першої?) мережі, яка почала генерувати зображення на якісно новому рівні. Цей метод був доданий відносно нещодавно. Генерує гарно, але при цьому використовує менше гіперпараметрів, тобто мережа більше вирішує що саме зобразити і на це складно вплинути. З мого досвіду потрібне точне розуміння як робити запити або генерувати «по площам», тобто робити відразу декілька картинок одночасно. Іноді вийде шедевр… або ні.
Нарешті Stable Diffusion — головна робоча конячка, про цей алгоритм ми і поговоримо докладніше. Основну ідею алгоритму ми вже зрозуміли, спробуємо тепер використати теоретичні знання для практики.
По-перше, потрібно придумати запит (prompt), запитів може бути декілька, з різними вагами, але, щоб не потонути в деталях припустимо, що запит вже якийсь є. З досвіду було виявлено, що деякі слова покращують результати, і тому вони присутні в шаблонах. Про це ми також поговоримо пізніше, в розділі Анатомія запиту.
Другий елемент — початкова картинка. Ми можемо вибрати її з готової бібліотеки вільних картинок, або завантажити свою. Початкова картинку дуже важлива, вона визначає і кольорову гамму і складність зображенні і композицію. В мене є декілька «суперсильних» початкових картинок, які регулярно допомагають створювати шедеври.
Наступна частина — гіперпараметри. Тут багато всього на перший погляд, але розібратись не складно.
Seed, або зерно — це число, яке визначає випадковість процесу. Як ви знаєте випадкові послідовності чисел в комп'ютерах насправді псевдовипадкові і отримуються за певним алгоритмом. Це важливо для відтворюваності — щоб ми могли повторити результати роботи програми. Тобто, різний seed генерує різні картинки, але «одним способом». В ідеалі картинки з однаковим значенням seed мають бути однакові, або дуже схожі. На практиці ще є шум початкової картинки, але без нього все так і працює.
Aspect ration — як не дивно впливає досить суттєво. Не зовсім розумію як це відбувається на рівні мережі, але квадратні картинки працюють найліпше. Якщо потрібно зегенерувати щось незвичне, можна використовуати інші формати, але потрібно більше працювати над запитом.
Overall prompt weight. Теж важливий параметр — вага з якою мережа намагається наблизитись до запиту. На перший погляд має бути максимальною, але досить часто 50% дає найкращий результат. Справа в тому, що розуміння що таке «ідеальна» картинка, яка на 100% відповідає запиту немає навіть у вас. Бо є безліч різних способів намалювати одне й те саме, мова допускає двозначні трактовки і, насправді, вам не потрібна точна відповідність, вам потрібна красива картина. Тому з мого досвіду дати мережі свободу дій є досить практичним рішенням.
З іншого боку, якщо у вас є величезний багатокомпонентний запит і ви точно знаєте що вам потрібно саме це — можна задати 100% відповідності і отримати класний результат.
Якщо ви додаєте початкову картинку, то інтерфейс трохи змінюється — додається вага шуму. Ідея має бути зрозуміла — до початкової картинки додаються випадкові збурення, які дозволяють запустити процес дифузії у «менш визначений» спосіб.
Number of images — з шуму і способу генерування випливає наступний параметр — кількість згенерованих картинок. Уявіть собі, що ви випадково дістаєте кульку з мішка, в якому є красиві і потворні кульки. Процес випадковий, але якщо ви можете дістати декілька — йомвірність того, що хоч одна буде гарна різко збільшується. Більше картинок коштує більше кредитів, але з мого досвіду 4 картинки — це такий оптимум кількість-вартість.
Model — коли модель була одна було набаго простіше, але з часом цей параметр сильно ускладнили. Я рекомендую поки використовувати версію 1.5, яка стоїть за замовчанням. Це найбільш стабільна модель, яка якісно працює. Потім ви можете експерементувати і з іншими, більш новими моделями. Зовсім нещодавно з'явилась можливість виділяти області і догенеровувати картинки лише в них (наприклад в окуляри догенерувати всесвіт), але це вже наступний рівень.
CLIP guidance — це параметр, що сприяє реалістичності картинок. Якщо ви генеруєте щось з реального світу і вам не потрібні галактики в чашці кави — це непоганий спосіб. Вибір значення цього параметру SIMPLE або FAST фіксує наступний параметр (семплювання). Якщо ми хочемо мати свободу вибору методу семплювання, то лишаємо CLIP guidance = NONE
Sampling method — як вже зазначлось дифузія працює приблизно так:
Зображення з попереднього кроку, яке вважається «зашумленим» піддається «зняттю шуму» в напрямку цільового вектору запиту. Тобто мережа застосовує до картинки різні методі зняття шуму, яким вона навчилась раніше і з результатів намагається вибрати той, що ближче до запиту.
Але на кожному кроці таких знешумлених картинок може бути багацько, тому кандидатів треба якось вибирати — метод відбору кандидатів для перевірки і визначається семплюванням. Конкретні назви мають якісь значення, і їх тепер там стало дуже багато, але я просто скажу пр освій досвід.
Десь 50% всього я генерував з методом, який стоїть за замовчанням K_LMS.
K_HEUN — дає більш кольорові і артистично розмазані результати.
EULER та DPM і їх варіації — не відчув особливої різниці, але іноді отримував від них «епічні пейзажі» .
Runtime — це час роботи мережі. Для стійкої дифузії, як мені здається, найкраща стратегія — це генерувати невеликими порціями, вибираючи найкращий проміжний варіант, який потім використовувати як початкову картинку для наступного кроку. За 2–3 кроки мережа досягає «оптимуму» для заданого запиту і потрібно щось змінювати.
Output resolution — теж важливий параметр. Іноді ви отримуєте красиву картинку (яку потім важко повторити, бо присутні випадковості, пов'язані з шумом), яка не ідеальна: нечітка, кольори не дуже яскраві тощо. Є спосіб її покращити вже після — збільшити розмірність. Алгоритм розтягує картинку в декілька раз, намагаючись зберегти текстури і деталі. І ось тут розмірність виходу має значення, бо маленьку картинку важко сильно збільшити не погіршивши якість. Але у всього є вартість — це збільшує кількість кредитів вдвічі. Тому для навчання і експериментів можна генерувати картинки в мінімальний розмірності, а от якщо ви створили цікавий промпт — то вже в більшій. Максимальну використовувати не рекомендую, з мого досвіду краще результат не стає.
Отже, резюме що власне робити:
- Придумати промпт (про це в наступному розділі).
- Згенерувати 4 картинки з мінімальною розмірністю просто щоб глянути що виходить. Решту параметрів лишити як є.
- Вибрати одну з картинок як початкову і догенерувати з тим самим промптом (для цього при перегляді картинки є опції copy та evolve). Можна змінювати seed та sampling method — це сприяє кращим результатам.
- Змінити промпт, якщо щось не подобається в результаті.
- Найкращий результат збільшити в 2–3 рази.
- Насолоджуватись, запостити в соцмережі, розіслати всім друзям і т.д.
Анатомія запиту
При написанні запиту важливо тримати в фокусі дві ідеї:
- скудний загальний запит поганий, бо йому відповідають дуже багато можливих картинок, тому у алгоритму не буде можливості виділити щось цікаве.
- занадто складний, деталізований запит теж погано, бо жодна можлива картинка не буде відповідати йому в повній мірі і алгоритму доведеться «скліювати» з різних підходящих частин.
Оскільки варіацій можливих картинок занадто багато щоб якось їх оглянути нам потрібно звузити можливі результати, придумати запит, який би був досить простим, щоб створювати зрозумілі і очікувані для людини результати. Таким запитом виявилось
"Minimalistic colorful owl sitting on the branch" (мінімалістична кольорова сова, яка сидить на гілці).
Дві картинки з ідентичними запитами і перервою в місяць. Як бачтите з поправкою на шум, досить схожі. Зауважте, що я не просив саме паперову сову, мережа зрозуміла це сама. Цей запит цікавий ще тим, що навіть на зовсім інших мережах цей запит теж дає схожий результат, що дивовижно.
Спробуємо піддати цю сову різним експериментам. Взагалі запит можна розділити на декілька логічних частин (вони в запиті можуть переплітатись)
- Що має бути зображено? Хто головні актори, де і що вони роблять? Це головна частина запиту і бажано, щоб вона була сформульована лаконічно. Забагато сутностей, які складно взаємодіють можуть призвести до мішанини в картинці. У нас це — owl sitting on the branch.
- Опис зображень. Прикметники, які характеризують картину, деталі, які мають бути на картинці. У нас це Minimalistic colorful.
- Модифікатори. Це все, що стосується виконання роботи:
Освітлення. Soft, ambient, ring light, neon
Середовище. Indoor, outdoor, underwater, in space
Кольорова гама. Vibrant, dark, pastel
Кут зору. Front, Overhead, Side
Фон. Solid color, nebula, forest
Особливий арт стиль? 3D render, studio ghibli, movie poster
Технічне виконання? Macro, telephoto, fisheye
4. Митці. Набір художників — має надзвичайний вплив на результат. Якщо мережа вибирає частинки з елементів картин художників і потім «зварює» їх в одне, робота отримує неповторний стиль. Підбір митців для запиту — це справді творче завдання.
5. Початкова картинка. Як вже зазначалось задає певні лекала для алгоритму і сильно змінює результат.
6. Пресети. В night.cafe реалізовані готові набори слів для різних завдань (аніме, портрет, фотопейзаж, сучасне мистецтво, фентезі…), які можна додати в запит до змістовної частини. Також реалізовано стандартний negative prompt. Це запит, який можна активізувати під вашим запитом (там є маленький ричажок), який містить слова на кшалт нечітки, розмитий, негарний тощо. Включення цього запиту з від'ємною вагою означає, що серед можливих картинок алгоритм буде обирати ті, які подалі від ціього запиту. Є також міні словник різних стилей, художників, технік з якого можна додавати по одному слову.
Спробуємо на практиці модифікувати нашу сову. Припустимо ми хочемо створити картину пензлем або картину олією або рисунок олівцем з "Minimalistic colorful owl sitting on the branch".
Модифікаторів можна придумати дуже багато, особливо якщо ви маєте професійні знання з цієї області. Ось приклади деяких з них.
Маю сказати, що комбінації trending on Artstation та Unreal Engine працюють так добре, що додаю їх досить часто
Як бичите поки що зміни досить мінімальні і їх можна передбачити. Це тому, що ми додаємо один елемент за раз і не змінюємо більше нічого. В реальності варіабельність дуже значна і тому важливо «готувати» запит ретельно.
Наступний напрям — митці. Думаю всі зрозуміють які художники тут використовувались.
Поєднання різних елементів вже дає несподівані комбінації, наприклад ось результат запиту "A very very very beautiful minimalistic colourful owl sitting on branch trending on artstation by Ivan Marchuk". Зауважте, що наявність "very very very beautiful" має посилити ефект.
Думаю ви зрозуміли ідею. І тут на мою думку є дві стратегії. Перша, це ретельно підбирати елементи запиту, поєднувати стилі художників, додавати різні слова, що посилюють ефекти, шукати початкові картинки. Другий — просто звалити в один запит побільше різноманітних, слів, які в житті не вживаються разом і запускати в надії, що алгоритм щось там та і знайде. Обидві стратегії працюють.
Спробуємо тепер додати стандартні пресети. Це можна зробити відкривши блок Modifiers під текстом запиту та обравши вкладку Presets.
Dark fantasy
minimalistic colourful owl sitting on branch a masterpiece, 8k resolution, dark fantasy concept art, by Greg Rutkowski, dynamic lighting, hyperdetailed, intricately detailed, Splash screen art, trending on Artstation, deep color, Unreal Engine, volumetric lighting, Alphonse Mucha, Jordan Grimmer, purple and yellow complementary colours
Anime
minimalistic colourful owl sitting on branch Studio Ghibli, Anime Key Visual, by Makoto Shinkai, Deep Color, Intricate, 8k resolution concept art, Natural Lighting, Beautiful Composition
Artistic portrait
minimalistic colourful owl sitting on branch head and shoulders portrait, 8k resolution concept art portrait by Greg Rutkowski, Artgerm, WLOP, Alphonse Mucha dynamic lighting hyperdetailed intricately detailed Splash art trending on Artstation triadic colors Unreal Engine 5 volumetric lighting
Вплив початкової картинки. Взявши початковий запит про мінімалістичну сову та додавши незвичну початкову картинку можна отримати цікаві результати.
Або ось такий (запит і параметри ті самі!)
Припустимо, що нам потрібно зобразити надзвичайну сову на гілці. Точні вимоги замовника невідомі, треба створити різні варіанти. Добре, для розминки ми використаємо наш запит з найбільш популярними митцями та стандартний негативний запит.
A very very very beautiful minimalistic colourful owl sitting on branch by Alphonse Mucha Dan Mumford Gustav Klimt James Gurney Thomas Kinkade Zdzisław Beksiński" Weight: 1
"ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, blurry, bad anatomy, blurred, watermark, grainy, signature, cut off, draft" Weight: -0.3
Досить непоганий результат, але хотілось би більшої варібельності. Витратимо додаткові кредити і зробимо генерацію з дев'ятьма картинками. Так ми зможемо знайти щось незвичайне, яке потім можемо розвинути. Надалі негативний запит не додаю, вважаємо його увімкненим.
Ось тут можна придивитись чим відрізняються різні методи семпювання.
A very very very beautiful minimalistic colourful owl sitting on branch by Alphonse Mucha Dan Mumford Gustav Klimt James Gurney Thomas Kinkade Zdzisław Beksiński
Метод K_HEUN
A very very very beautiful minimalistic colourful owl sitting on branch by Alphonse Mucha Dan Mumford Gustav Klimt James Gurney Thomas Kinkade Zdzisław Beksiński
Метод K_LMS
A very very very beautiful minimalistic colourful owl sitting on branch by Alphonse Mucha Dan Mumford Gustav Klimt James Gurney Thomas Kinkade Zdzisław Beksiński
Метод K_DPM_2_ANCESTRAL
Нарешті застосуємо "важку артилерію", спеціально розроблений мною запит для отримання супердеталізованих картинок. Запит можете вільно використовувати або модифікувати :).
Molecular liquid tripophobic intricately detailed owl on branch incrusted with spirals, gems, flowers, leaves, trending in artstation, highly hyperdetailed artwork by Jean Baptiste Monge, Alberto Seveso, Camilla D"Errico, Igor Sava, Jamie Hewlett, Josan Gonzalez, Karol Bak, Michael Divine, Ivan Marchuk
Власне цей мануал вже розрісся до значних розмірів, тому я буду завершувати і, можливо, пізніше доповню його другою частиною з описом конкретних кейсів побудови цікавих запитів.
Заключення
Тепер ви цілком можете реалізовувати свої ідеї та генерувати картинки. Наприкінці дозвольте додати ще декілька тез.
- Експерименти і творчість. Генеруюча мережа дає нескінчений простір для творчості. Ви можете використовувати будь-яку область знань для генерації. Мінерали і каміння, космічні галактики і туманності, макрофото, фотографія, техніки малювання, мозаїки і багато всього іншого.
- Дивні поєднання слів (рідкий вогонь, мармурова вода, вугільний ліс) дають іноді цікаві результати.
- Абстрактні концепції генеруються найгірше, спробуйте "обгорнути" їх у реальні ситуації.
- Навчайтесь в інших. На тому ж сайті nightcafe.studio є вкладка explore, де ви можете шукати найкращі роботи інших учасників. Частина з них дозволяє бачити запити (це можна відсортувати за фільтром Settings Open) і ви можете вільно їх відтворювати та покращувати.
Джерела