До списку уроків
9 клас · Урок 7 з 16

Промпт-інженерія зображень і канон героя

виконано0%
Крок 1

Що робимо сьогодні

Модуль I · IT Skills (Cloud Services & Documents) · тема 4, урок 1 з 2 · 120 хвилин

Сьогодні ти робиш комікс на шість панелей. Складність не в тому, щоб отримати гарну картинку, — це ти вже вмієш. Складність у тому, щоб на всіх шести панелях був один і той самий герой.

У 8 класі ти вже розбирав, як модель перетворює текст на зображення. Звідти в тебе лишилися слова «шум», «денойзинг» і seed. Сьогодні ми цього не повторюємо.

Сьогодні задача починається там, де закінчується одна вдала картинка. Кілька зображень з тим самим героєм звуться серією.

Одна вдала генерація — це везіння. Шість генерацій з тим самим героєм — це вже робота за правилами. Правил три, і сьогодні ти опануєш кожне.

Перше: герой описаний на папері. Ти складаєш список ознак, за якими його впізнають, — це і є канон персонажа. Друге: цей опис іде в кожен промпт незмінним, слово в слово. Третє: якщо панель не вийшла, міняєш один параметр, а не всі одразу. Інакше не зрозумієш, що саме допомогло.

Жорстке правило модуля: зображення на сервер не йдуть Уся генерація відбувається на твоєму комп'ютері або в браузері. Панелі лишаються в локальній теці ~/local/comic/images/. По FTP у кабінет ти вантажиш рівно три текстові файли: comic/prompts.json, comic/character.md, comic/storyboard.md. Самі панелі вчитель дивиться очно, на твоєму екрані. Спробу залити .png у ~/www/comic/ сервер відхилить автоматично.

Після уроку ти вмієш

Хід уроку

ХвЩо робимо
10правило «медіа лишається локально», перевірка теки ~/local/comic/
20чому герой «пливе»: опис класу людей проти опису конкретної людини
20аркуш канону: вісім ознак, конструктор, сталий блок
15плани, ракурс, rule of thirds — керування кадром
15seed і серії: зміна по одному параметру
30практика: character.md, storyboard.md, 6 панелей, prompts.json
10здача по FTP, автоперевірка, показ панелей учителю

Заведи локальну теку просто зараз

Git Bash / macOS / Linux
$ mkdir -p ~/local/comic/images
Windows PowerShell
$ New-Item -ItemType Directory -Force "$env:USERPROFILE\local\comic\images"

У PowerShell 5.1 && не працює — команди дають окремими рядками. Це та сама пастка, що й у попередніх темах.

Крок 2

Чому модель щоразу малює іншу людину

Тут немає збою. Модель робить рівно те, про що її попросили, — просто просили не те, що ти думав.

Модель не має пам'яті між генераціями. Кожен запуск починається з нуля: новий шум, новий прохід, нове обличчя. Єдине, що переходить із генерації в генерацію, — текст, який ти написав. Усе, чого в тексті немає, модель домальовує сама, і щоразу по-новому.

Запис «гарна дівчина» — це не опис людини. Це опис класу людей. Під нього підходять мільйони облич, і модель щоразу бере з цього класу когось іншого. Тому питання «як змусити модель запам'ятати героя» — неправильне. Правильне: що я забув написати.

Запис у промптіЩо з цього виходить
a beautiful girl оцінка, а не ознака: намалювати «гарну» можна тисячею способів — і буде тисяча різних людей
a cool teenager те саме: «крутий» нічого не задає, бо це не видно оком
a 14-year-old girl уже ознака: звужує вік, але не звужує обличчя
short red bob haircut, freckles across the nose дві ознаки, які видно на малюнку: силует зачіски і фактура обличчя
a green jacket with a yellow lightning patch on the left sleeve найсильніша ознака в серії: колір + крій + унікальна деталь із указаним місцем

Робоче правило. Ознака годиться в канон, якщо двоє різних людей, прочитавши її, намалюють приблизно те саме. «Ластовиння на носі» — годиться. «Милий вигляд» — ні.

Питання

Панель 1 вийшла точно такою, як ти уявляв. Ти копіюєш той самий промпт для панелі 2, не міняючи жодного слова, — і на ній інша дівчина. Що насправді сталося?

Назвемо це прямо: дрейф героя — це різниця між тим, що ти уявляв, і тим, що написав. Модель заповнює цю різницю щоразу заново.

Питання

Однокласник каже: «я написав аж дванадцять ознак, і герой усе одно пливе». Дивишся його список — серед дванадцяти є «красиве обличчя», «крутий стиль», «модний одяг», «приємна усмішка». У чому проблема?

Крок 3

Аркуш канону: вісім ознак замість одного прикметника

У мультиплікації й коміксі це називають model sheet або character sheet — аркуш, за яким десяток різних художників малює того самого героя однаково. Твій аркуш буде не малюнком, а текстом.

Студія не покладається на те, що всі художники «уявляють однаково». Вона друкує аркуш: герой спереду, збоку, ззаду, пропорції, палітра, деталі костюма, типові вирази обличчя. Далі кожен художник звіряється з аркушем, а не з пам'яттю.

Модель — той самий десяток художників, тільки їх нескінченно багато і жоден нічого не пам'ятає. Отже, аркуш потрібен тим більше. Різниця лише в тому, що модель читає не малюнок, а слова, — тому кожну ознаку доводиться проговорити.

АРКУШ КАНОНУ · character sheet · вісім ознак, які тримають героя 1 2 3 4 5 6 7 8 1 хто і скільки років a 14-year-old girl 2 зачіска: довжина, форма, колір short red bob haircut 3 очі: колір і форма round green eyes 4 прикмета на обличчі freckles across the nose 5 одяг із деталлю і її місцем green jacket, yellow lightning patch on the left sleeve 6 статура й постава thin and tall, narrow shoulders, slightly hunched 7 характерна річ, яка завжди з ним a battered orange backpack 8 стиль малюнка — на весь кадр flat comic illustration, bold black outlines
Схема аркуша канону. Ознаки 2–7 прив'язані до частин фігури, ознака 1 описує героя цілком, ознака 8 (пунктирна рамка) стосується всього зображення, а не персонажа. Приклади англійською — саме в такому вигляді вони підуть у промпт.

Чому ознак саме вісім, а не три

Кожна ознака відрізає частину простору, з якого модель бере обличчя. Одна ознака відрізає мало. Вісім разом дають опис, під який випадково потрапити майже неможливо — і саме тому герой перестає «пливти».

Дуже важливо: ознака має бути видимою. «Любить котів» не малюється. «Значок із котом на лямці рюкзака» — малюється. Канон описує зовнішність, а не біографію; біографія піде в storyboard.md.

Питання

У твоєму каноні три ознаки, зате точні: «14 років», «руде каре», «зелена куртка». Ти кажеш: «мало, але влучно». Що буде на шести панелях?

Сталий блок і змінна частина

Промпт панелі складається з двох шматків, і плутати їх — найчастіша помилка на цьому уроці.

ЧастинаЩо туди йдеЧи змінюється між панелями
Сталий блок (канон) вісім ознак героя і стиль малюнка ніколи. Копіюється символ у символ
Змінна частина дія, місце, план, ракурс, композиція, світло щопанелі — саме заради цього й робиться комікс

Порядок теж має значення: канон іде першим. У більшості моделей слова на початку промпта важать більше за слова в кінці. А нам треба, щоб герой важив більше за фон.

Виняток описують явно, а не мовчки Якщо на панелі 6 герой у воді й куртки на ньому бути не може, ти не викидаєш рядок із канону — це зламає всю серію. Ти лишаєш канон і додаєш у змінну частину: the green jacket left on the bench behind him. Тоді куртка й далі в кадрі, і герой упізнаваний.
Питання

Панель 3 у тебе — герой біжить нічним дахом. Щоб не переписувати щоразу, ти дописав running across a rooftop at night просто в канон. На панелі 4 герой мав сидіти в класі — а знову опинився на нічному даху. Чому?

Крок 4

Конструктор канону

Заповни вісім полів — сторінка складе сталий блок англійською, покаже, скільки ознак зафіксовано, і видасть готові character.md та заготовку prompts.json на шість панелей.

Верхня частина конструктора — канон: він однаковий для всіх шести панелей. Нижня — змінна частина однієї панелі. Обери номер панелі й подивись, як той самий канон обростає різною дією і різним кадром.

Сталий блок — канон героя

Змінна частина — те, що відбувається саме на цій панелі

Негативний промпт

Натисни артефакти, які найчастіше псують саме твої панелі.

seed у заготовці — приклад. Заміни кожен на той, що реально дав добру панель, а model, tool і changed_after_first_try заповни своїми словами.
Заготовка — це заготовка Конструктор дає каркас, а не готову роботу. Дію, місце й реальні seed ти вписуєш свої, а поле changed_after_first_try заповнюєш тільки після того, як справді щось змінив і перегенерував. Чекер вимагає там не менше 40 символів, і «нічого не міняв» туди не влізе за змістом.
Крок 5

Кадр: план, ракурс, третини

Канон каже, хто в кадрі. План і ракурс кажуть, як близько і звідки ми на нього дивимось. Без цього шість панелей виходять шістьма однаковими портретами.

Кінематографісти й автори коміксів користуються тими самими трьома основними планами. Це не жаргон заради жаргону: кожен план виконує свою роботу в оповіді.

ПланАнглійськоюДля чого потрібен у коміксі
загальнийwide shot сказати читачеві, де ми і хто ще тут є. Перша панель майже завжди загальна
середнійmedium shot показати дію руками й позу: несе, відкриває, віддає. Робочий план діалогу
крупнийclose-up показати емоцію. Працює лише коли рідкісний: шість крупних поспіль нічого не підсилюють
детальextreme close-up одна річ у кадрі: записка, ключ, екран телефона. Сильний акцент, одна панель на комікс
загальний · wide shot середній · medium shot крупний · close-up тримають героя: силует, зачіска, крій і колір одягу, рюкзак не видно: очі, ластовиння тримають героя: зачіска, нашивка на рукаві, статура, рюкзак ластовиння ледь помітне тримають героя: колір і форма очей, ластовиння, вираз одяг видно лише коміром
Один канон, три плани. Ознаки працюють не всі одразу: на загальному плані героя тримає силует і колір одягу, на крупному — обличчя. Тому в каноні мають бути ознаки обох типів, інакше на одному з планів герой «розвалиться».
Питання

У твоїй розкадровці всі шість панелей — крупний план обличчя героя. Учитель просить переробити. Чому це проблема саме для коміксу?

Питання

На загальному плані герой — фігурка сантиметр заввишки. Ластовиння і колір очей там не видно взагалі. Які ознаки канону тримають героя упізнаваним саме на такій панелі?

Ракурс: звідки дивиться камера

Ракурс — окреме слово в промпті, і він змінює не картинку, а сенс панелі.

Не став героя посередині кадру

Уяви, що кадр розкреслили на дев'ять однакових частин — як поле для хрестиків-нуликів. Ділять його дві вертикальні лінії і дві горизонтальні. Героя ставлять не в центральну клітинку, а на одну з ліній або в перетин.

Тоді збоку лишається «повітря» — порожнє місце, куди герой дивиться або йде. Це і є правило третин, англійською rule of thirds. Саме цими словами його розуміє модель.

Але тільки якщо сказати конкретно. «Гарна композиція» не працює. Працює ось таке: rule of thirds, subject on the left third, empty corridor filling the right two thirds.

по центру: читач не знає, куди дивитись далі третини: праворуч лишилось «повітря» порожньо порожньо коридор, куди він піде далі
Ліворуч герой стоїть по центру, і обидві половини кадру порожні однаково. Праворуч він на лівій третині — дві третини кадру працюють на оповідь. Пунктир — уявні лінії третин, у промпті вони існують тільки як слова rule of thirds, subject on the left third.
Питання

Потрібна панель, де герой стоїть скраю і дивиться в довгий порожній коридор, куди піде на наступній панелі. Що написати в промпті?

Крок 6

Seed і серії: змінюй по одному

Seed ти вже знаєш: це число, з якого починається стартовий шум. Сьогодні важливе інше — навіщо він потрібен, коли картинок шість, а не одна.

Головна властивість seed: однаковий seed + однакові промпт, модель і параметри = однакове зображення. Це не магія, а звичайна псевдовипадковість. Генератор випадкових чисел стартує з того самого місця й видає ту саму послідовність.

Саме тому seed — не «кнопка схожості героя», а інструмент експерименту. Він дає змогу зафіксувати все, окрім однієї речі, і чесно побачити, що робить саме ця річ.

Чого seed не робить Фіксований seed не робить героя однаковим на різних панелях: щойно ти змінив промпт (а ти його змінюєш — інша дія, інший план), результат теж міняється. Однаковим героя робить сталий блок канону. Seed лише робить кожну окрему панель відтворюваною й дає змогу порівнювати ітерації чесно.
ітерація 1 ітерація 2 ітерація 3 seed 4471 не змінюється, у промпті — одне слово контрольований експеримент green jacket базовий промпт + yellow patch поза та сама, + нашивка + orange backpack поза та сама, + рюкзак seed щоразу новий, промпт той самий порівняти нічого не можна seed 4471 інша поза, загальний seed 9052 інша поза, інший масштаб seed 1187 узагалі крупний план
Схема, а не реальні генерації: фігури намальовані вручну, щоб показати механіку. Угорі seed зафіксовано, і кожна зміна промпта видно окремо. Унизу seed змінюється — і зрозуміти, від чого змінилась картинка, уже неможливо.

Порядок роботи над однією панеллю

  1. Складаєш промпт: канон + дія + місце + план + ракурс + композиція.
  2. Генеруєш 4 варіанти з випадковим seed, вибираєш найкращий.
  3. Записуєш його seed — далі він фіксований.
  4. Міняєш одну річ і генеруєш ще раз із тим самим seed.
  5. Якщо стало краще — лишаєш, ні — повертаєш назад. І тільки тоді наступна зміна.
  6. Що саме змінив і що з цього вийшло — пишеш у changed_after_first_try.
Дрібним шрифтом про відтворюваність Однаковий seed дає однакову картинку, поки однакові всі інші умови: та сама модель тієї самої версії, той самий семплер, ті самі кроки, той самий розмір. На іншому комп'ютері або в іншій версії програми той самий seed може дати трохи іншу картинку — це нормально й не є твоєю помилкою. У багатьох веб-генераторах seed узагалі не показують; тоді єдиний важіль у тебе — текст канону, і він стає ще важливішим.
Питання

На четвертій панелі герой раптом став блондином, хоча промпт ти не міняв. Що перевіряєш першим?

Питання

Панель майже вийшла: поза добра, але куртка синя замість зеленої і кадр занадто широкий. Ти одразу міняєш колір, план і seed — і отримуєш зовсім інше зображення. Як треба було?

Крок 7

Негативний промпт і діагностика дрейфу

Позитивний промпт каже, що має бути. Негативний — чого бути не повинно. Це різні інструменти, і плутанина між ними псує серію.

Негативний промпт прибирає ознаку цілком. Він не вміє «трохи підправити»: якщо написати туди green jacket, зникне не відтінок, а вся куртка. Виправлення відтінку — робота позитивного промпта: muted olive-green jacket.

Що псує панельЩо писати в негатив
шість пальців, зламані кистіextra fingers, deformed hands, fused fingers
нерозбірливі літери на вивісках і футболкахtext, letters, watermark, signature, logo
у кадрі раптом двоє однакових героївtwo heads, duplicated character, twins
голову зрізало краєм кадруcropped head, out of frame
підліток виглядає на тридцятьadult face, aged skin, heavy makeup
каша й шум замість деталейblurry, low quality, jpeg artifacts

Не в кожному інструменті негатив є окремим полем: у частини веб-генераторів його немає взагалі, у Midjourney роль негатива грає параметр --no. У prompts.json поле negative_prompt заповнюють у будь-якому разі — якщо поля в інструменті немає, пиши, чого ти намагався уникнути іншими словами.

Що перевіряти, коли герой «поїхав»

Порядок важливий: перші три пункти закривають більшість випадків, і жоден із них не потребує перегенерації.

  1. Звір сталий блок символ у символ. Найчастіша причина — рядок скопійовано не повністю: обірвався на переносі, зник хвіст після коми. «Я нічого не міняв» майже завжди означає «я не помітив, що змінив».
  2. Перевір модель і її версію. Переключився на іншу модель або інший чекпойнт — герой змінився законно, промпт тут ні до чого.
  3. Перевір розмір і співвідношення сторін. Зміна з квадрата на вертикаль перебудовує композицію, а разом із нею й обличчя.
  4. Перевір, чи не потрапила ознака в негатив. Класика: red hair у негативі «щоб не було надто рудим» — і герой русявіє на всіх панелях.
  5. Порахуй ознаки. Якщо в каноні їх менше п'яти, дрейф не аномалія, а норма: ти просто не описав героя.
  6. І тільки після цього — міняй steps, семплер і решту параметрів. Вони майже ніколи не є причиною.
Питання

На одній панелі куртка вийшла отруйно-салатовою. Ти дописав green jacket у негативний промпт — і тепер на всіх панелях куртки немає взагалі. Що зробити натомість?

Етика: героя вигадуєш ти Персонаж коміксу — вигаданий. Промпти з іменами реальних людей — учителів, однокласників, блогерів, акторів — на цьому уроці заборонені, як і спроби відтворити чиєсь конкретне обличчя. Це не формальність: згенеровані зображення реальних людей — окрема правова й етична історія, і вона не входить у навчальний комікс. Позначку «зображення згенеровано AI» ти додаси на наступному уроці, коли верстатимеш сторінку.
Крок 8

Три текстові файли, які їдуть на сервер

Панелі лишаються в тебе. На сервер їде опис того, як вони зроблені, — і саме він доводить, що робота твоя і що її можна повторити.

prompts.json — один сталий блок, шість змінних частин CANON · сталий блок a 14-year-old girl, short red bob haircut, round green eyes, freckles across the nose, green jacket with a yellow lightning patch, thin and tall, hunched, battered orange backpack, flat comic illustration копіюється в кожен із шести промптів символ у символ, і завжди першим "file": "panel-1.png", "seed": 4471 wide shot · eye level · «стоїть біля шкільної брами в тумані» "file": "panel-2.png", "seed": 8103 medium shot · eye level · «читає складену записку» "file": "panel-3.png", "seed": 2290 close-up · low angle · «очі розширюються, вона зрозуміла» "file": "panel-4.png", "seed": 6614 wide shot · high angle · «біжить порожнім коридором» "file": "panel-5.png", "seed": 1187 medium shot · over-the-shoulder · «штовхає важкі двері» "file": "panel-6.png", "seed": 9052 close-up · eye level · «усміхається, задихана»
Ліворуч — канон, який ніколи не змінюється. Праворуч — шість записів, у кожного свій файл, свій seed і своя змінна частина. Seed різні, бо їх обирали окремо для кожної панелі; сталим лишається текст канону, а не число.

1 · character.md — канон словами

Не менше 400 символів. Це не твір: це аркуш ознак плюс готовий сталий блок англійською, який ти справді вставляєш у промпти. Конструктор вище складає цей файл сам.

Чому чекер звіряє character.md з промптами Автоперевірка бере найчастіші іменники з character.md і шукає їх у промптах: вони мають зустрітися щонайменше в п'яти записах із шести. Так консистентність героя доводиться машинно, без жодної картинки. Якщо ти писав канон окремо, а промпти окремо, перевірка це помітить.

2 · storyboard.md — шість панелей словами

По одному пункту на панель: план, дія, репліка. Щонайменше три різні плани на шість панелей — це вимога перевірки і водночас просто здоровий глузд.

storyboard.md — фрагмент
## Панель 1 — загальний план (wide shot) Марта стоїть біля шкільної брами в ранковому тумані, спиною до нас. Репліка: «Знову я перша.» ## Панель 2 — середній план (medium shot) Розгортає складену вчетверо записку, брови зведені. Репліка: «Хто це взагалі підкинув?» ## Панель 3 — крупний план (close-up), ракурс знизу Очі розширюються: вона впізнала почерк. Репліка: думка, без бульбашки

3 · prompts.json — один запис на панель

prompts.json — структура одного запису
{ "file": "panel-3.png", "prompt": "a 14-year-old girl, short red bob haircut, round green eyes, freckles across the nose, an oversized green jacket with a yellow lightning patch on the left sleeve, thin and tall, narrow shoulders, always carrying a battered orange backpack, flat comic illustration, bold black outlines, limited palette, eyes widening as she recognises the handwriting, empty school corridor, cold morning light, close-up, low angle, rule of thirds, subject on the right third", "negative_prompt": "extra fingers, deformed hands, text, watermark, adult face, blurry", "seed": 2290, "steps": 30, "model": "SDXL 1.0", "tool": "ComfyUI, локально", "changed_after_first_try": "перша спроба була medium shot і емоції не читалось; змінив тільки план на close-up, seed лишив 2290" }

Поля model і tool заповнюй чесно тим, чим справді користувався. Якщо інструмент не показує steps — став 0 і напиши в changed_after_first_try, що цей параметр недоступний. Вигадане число гірше за чесний нуль.

Кодування: найчастіша причина «невалідного JSON» Зберігай prompts.json у нормальному редакторі як UTF-8 без BOM. У Windows PowerShell 5.1 echo … > prompts.json дає файл у UTF-16, а Out-File -Encoding utf8 — UTF-8 із BOM: у першому випадку чекер бачить кашу, у другому спотикається на невидимому символі перед першою дужкою. Дужки при цьому на місці, і шукати помилку можна довго.

Куди це кладеться

що де лежить
~/local/comic/images/ ← панелі. Лишаються на твоєму комп'ютері ~/local/comic/images/panel-1.png … panel-6.png ~/www/comic/prompts.json ← по FTP ~/www/comic/character.md ← по FTP ~/www/comic/storyboard.md ← по FTP

Порядок здачі той самий, що й у попередніх темах. Відкриваєш FileZilla або WinSCP. Логін і пароль — ті самі, що й по SSH. Файли кладеш спершу в ~/upload/, а звідти переносиш у ~/www/comic/. Хто вже звик до термінала — кладе одразу по SSH.

Питання

Ти згенерував шість панелей на уроці, а prompts.json заповнив увечері вдома по пам'яті. На очній здачі вчитель відкриває panel-3.png і питає, який у неї seed. Чому це провал, навіть якщо JSON валідний?

Питання

Ти хочеш, щоб учитель побачив панелі зі свого місця. Тому заливаєш шість PNG по 1,2 МБ у ~/www/comic/. Що станеться?

Крок 9

Практика: канон, розкадровка, шість панелей

Кроки 1–8 — у тебе на комп'ютері, кроки 9–11 — здача на сервер. Галочки зберігаються, сторінку можна закрити.

Межа, яку не переходимо Усе, що з'являється в ~/local/comic/images/, — твоє й лишається в тебе. На сервер піднімаються рівно три текстові файли: prompts.json, character.md, storyboard.md.
Крок 10

Автоперевірка

Чекер не бачить жодної картинки. Він перевіряє, чи твій опис узгоджений сам із собою — і промпти, зібрані навмання, тут не сходяться. Спроби не обмежені.

Демонстраційний режим: результат згенеровано для показу. На сервері ця кнопка викликає POST /api/check, який запускає check 07 від імені учня.

Що вчитель дивиться на твоєму екрані

Крок 11

Шкала виконання

Це те, що бачить учитель, коли виставляє оцінку.

СкладникВагаРезультат
Виконано
0%
Рекомендований бал за 12-бальною

Чотири речення, які варто запам’ятати

Де найчастіше помиляються

Домашнє завдання

Догенеруй панелі, яких бракує. Далі заповни поле changed_after_first_try у кожному з шести записів: що змінив, чому і що вийшло. Одне речення на запис, але конкретне.

«Покращив промпт» — так не годиться. А от так годиться: «на першій спробі рюкзак зникав на середньому плані. Переніс його з кінця канону ближче до початку, seed лишив 8103».

На наступному уроці ці самі три файли стануть основою верстки. З них виросте index.html: панелі, бульбашки текстом у DOM і позначка про AI. Якщо prompts.json зроблено чесно, наступний урок буде вдвічі коротшим.

Джерела

Звідки взяті терміни й формулювання

Усе на цій сторінці — з відкритих джерел: документації інструментів, довідників з кіномови й стандартів. Перевіряти дозволено й корисно.

Повний список із поясненнями, що звідки взято, — у файлі urok-07-джерела.md поруч із цією сторінкою.