Модуль I · IT Skills (Hardware & Multimedia) · Тема 7, урок 2 з 2 · 120 хвилин
Минулого уроку ти зробив одну картинку — gen-1.png.
І розібрався, звідки вона береться: дифузія, seed, сім блоків промпта.
Сьогодні ми це не повторюємо. Сьогодні ми цим користуємось.
З одного задуму ти зробиш чотири спроби поспіль. Усі чотири підуть на сторінку-галерею.
Під галереєю чесно напишеш, що зробила людина, а що — модель.
Той самий підпис командою exiftool заїде всередину самих файлів.
А наприкінці — тест по всіх семи темах модуля.
.png;Слова «метадані», «XMP» і «атрибуція» поки нічого не означають. Розберемо їх по черзі.
| Етап | Хв | Що робимо |
|---|---|---|
| Перевірка ДЗ | 10 | Три версії промпта з паперу |
| Ітерації 2—4 | 30 | Одна зміна за раз, локально |
| Перерва | 10 | — |
Метадані й exiftool | 15 | Що файл знає про себе і як це підписати |
| Галерея й критика | 20 | Чотири підписи, атрибуція, розбір артефактів |
| Очна здача | 15 | Чотири зображення поруч на твоєму екрані |
| Тест модуля | 15 | 12 питань по темах 1—7 |
| Підсумок і ДЗ | 5 | Анонс теми 8 |
| Разом | 120 |
prompts.json, exif.txt і index.html
з розміткою галереї. Жодне зображення туди не завантажується.
Ані повнорозмірне gen-*.png, ані зменшене прев'ю.
Чотири картинки вчитель дивиться очно, на твоєму екрані,
у локальній теці media/lesson-07/.
Тому не видаляй їх до перевірки.lesson-07.
Так в усіх темах модуля.Ітерація — це зміна, про яку ти можеш сказати, навіщо вона
Найчастіша помилка тут така. Учень чотири рази тисне «Generate» з тим самим промптом. Отримує чотири різні картинки і здає їх як ітерації.
Це не ітерації. Це просто чотири різні seed — те саме, що ти бачив минулого уроку на схемі з трьома стартовими шумами.
Ітерація виглядає інакше. Ти сам вирішив, що не так. Змінив одну річ. Подивився, чи стало краще.
Саме одну — щоб знати, що подіяло. Зміниш три блоки за раз і отримаєш кращий кадр — а який блок спрацював, уже не скажеш.
| Не ітерація | Ітерація | |
|---|---|---|
| Що змінилося | нічого, крім seed | рівно один блок промпта або один параметр |
| Навіщо | «може, вийде краще» | усунути конкретну ваду попереднього кадру |
| Можна пояснити | ні | так: «фон з'їдав увагу — додав неглибоку глибину різкості» |
| Що записуєш | нічого | changed і verdict |
Нижче — чотири кроки однієї роботи. Кожна стрілка підписана двічі:
що змінили і що з цього вийшло. Саме ці два речення потім і лягають
у поля changed та verdict.
Ти згенерував чотири картинки одним і тим самим промптом, просто натиснувши «Generate» чотири рази. Чому чекер не зарахує це як чотири ітерації?
Записувати як є. Поле verdict — це оцінка, а не реклама.
Запис «стиль з'їв обличчя, наступного разу поверну фотореалізм» коштує дорожче, ніж чотири «вийшло гарно».
На очній здачі вчитель звіряє саме це. Чи збігається написане з тим, що видно на екрані.
Третя ітерація вийшла явно гіршою за другу. Що писати в полі
verdict запису № 3?
prompts.json: журнал роботи, який можна перевіритиСім ключів на запис, чотири записи на роботу
Минулого уроку ти завів цей файл з одним записом. Сьогодні в ньому має бути рівно чотири — по одному на ітерацію.
Це не формальність. Самих зображень чекер не бачить. Хід твоєї роботи він відновлює саме за цим файлом.
Зовні — квадратні дужки. Усередині чотири записи через кому. Після останнього коми немає. Саме зайва кома в кінці й дає найчастіше «невалідний JSON».
> у PowerShell
Windows PowerShell 5.1 пише такий файл у UTF-16.
Програма jq на сервері падає на першому ж байті.
Ти бачиш «невалідний JSON», хоч текст на вигляд правильний.
Пиши файл у редакторі й зберігай як UTF-8. А якщо вже формуєш
його командою — тільки через
Out-File -Encoding utf8 prompts.json.Заповни поля — унизу з'явиться готовий запис. Перенеси його у свій файл кнопкою «копіювати». Так не загубиш ані ключа, ані коми.
У твоєму prompts.json чотири об'єкти, але в усіх чотирьох поле
prompt однакове, а params різняться тільки seed.
Що скаже чекер?
Пікселі — це не весь файл. Поруч із ними живе текст
Зображення на диску — це не тільки картинка. Поруч зі стисненими пікселями у файлі лежить звичайний текст. Це записи про те, чим і коли файл зроблено. Звуться вони метадані.
У фотографії з телефона там модель камери, витримка, іноді координати. А у згенерованого зображення там часто лежить дещо цікавіше — увесь твій промпт.
Файл PNG складається з підпису на 8 байтів і низки блоків. У кожного блока чотирилітерне ім'я і власний вміст. Такі блоки звуться чанки.
Пікселі лежать у чанках IDAT.
А текст — у tEXt, zTXt та iTXt.
parameters показано так, як його пише інтерфейс
AUTOMATIC1111 до Stable Diffusion. Інші програми пишуть по-своєму.Одна команда показує все, що є у файлі. Ключ -G1 дописує,
звідки взято запис. Ключ -s дає короткі імена.
Ключ -a не ховає повтори.
Вивід ілюстративний — у тебе будуть свої числа й свій рядок
Parameters. Що там точно буде, залежить від програми, у якій ти
генерував.
Ніякої магії тут немає. Генератор пише їх туди сам, щоб результат можна було повторити. Різні програми роблять це по-різному.
| Програма | Куди пише | Що видно в exiftool |
|---|---|---|
| AUTOMATIC1111 (Stable Diffusion WebUI) | чанк tEXt, ключ parameters | один довгий рядок Parameters: промпт, негатив, Steps, Sampler, CFG scale, Seed, Size, Model |
| ComfyUI | чанки tEXt, ключі prompt і workflow | JSON усього графа вузлів — увесь ланцюжок обробки |
| Веб-сервіси | переважно нічого або C2PA-маніфест | часто порожньо: сервіс зрізає метадані на видачі |
Твій exiftool | чанк iTXt, XMP | Creator, Credit, Description, DigitalSourceType |
exiftool -all= gen-1.png прибирає їх повністю.
Більшість соцмереж зрізає метадані сама, під час завантаження.
Тому підпис усередині файлу — це чесність і зручність, а не захист.
Видимий підпис на сторінці поруч із зображенням потрібен у будь-якому разі.Ти згенерував ілюстрацію і надіслав .png другові, нічого не
чистивши. Що він зможе дізнатися однією командою?
exiftoolЩоб підпис їхав разом із файлом, а не лишався на сторінці
Метадані бувають різні, і кожна програма могла б писати їх по-своєму. Щоб цього не сталося, домовилися про спільний набір полів з іменами. Цей набір зветься XMP.
Він працює однаково в PNG, JPEG, TIFF і PDF. Саме туди прийнято писати авторство. Нам знадобиться п'ять полів.
| Поле XMP | Що означає | Що пишемо |
|---|---|---|
dc:Creator | автор — людина, яка створила роботу | твоє ім'я: промпт і добір кадру — твої |
photoshop:Credit | кому належить заслуга, «звідки це» | AI-generated — рядок, який шукає чекер |
xmp:CreatorTool | чим саме зроблено | назва і версія моделі |
dc:Description | опис вмісту | повний промпт цієї ітерації |
Iptc4xmpExt:DigitalSourceType | машиночитний тип джерела зі словника IPTC | trainedAlgorithmicMedia — «зроблено генеративною моделлю» |
Останнє поле — не наша вигадка. Значення для нього беруть із готового словника IPTC. Тим самим словником користуються новинні агенції. Так вони відрізняють зняте камерою від згенерованого — і роблять це автоматично.
Промпт у кожної ітерації свій. Тому команд буде чотири — по одній на файл. Кожна пишеться в один рядок.
-overwrite_original програма лишає поруч копію
gen-1.png_original. За чотири файли назбирається чотири зайві,
і тека перестане збігатися зі звітом."-XMP:Credit=AI-generated", а не -XMP:Credit="AI-generated".
Інакше PowerShell розріже рядок із пробілами на кілька аргументів.creator.txt в UTF-8 і візьми форму
"-XMP-dc:Creator<=creator.txt".Читати назад обов'язково. «Команда не лаялася» — ще не доказ.
Якщо поле формату не підходить, exiftool напише
0 image files updated. Цей рядок легко пропустити.
exif.txt — це те, що їде на серверОдна команда по всіх чотирьох файлах. Зображення лишаються вдома, а на сервер їде тільки цей текст.
По ньому чекер і звіряє два записи. Поле Description
кожного файлу має збігатися з полем prompt тієї самої ітерації
в prompts.json.
Усередині exif.txt файли розділені рядком із вісьмох знаків
«дорівнює». Так exiftool позначає перехід до наступного файлу:
Вивід ілюстративний: імена, промпти й кількість рядків у тебе
будуть свої. Незмінне одне — Credit має бути в усіх чотирьох
блоках, а Description має дослівно збігатися з prompt
тієї самої ітерації.
exiftool запис XMP у PNG не спрацьовує.
Команда відповідає 0 image files updated.
Тоді пересохрани зображення в JPEG:
magick gen-1.png gen-1.jpg. Підписуй уже JPEG —
у ньому XMP працює скрізь. Імена .jpg тоді пиши
і в prompts.json, і в галереї.
Звіт має збігатися з тим, що лежить на диску.Ти виконав команду маркування, exiftool відповів
0 image files updated і жодної помилки не показав.
Що це означає?
Чотири речі, без яких підпис не працює
Підпис під роботою відповідає на питання «хто це зробив». Такий підпис зветься атрибуція.
Зі згенерованим кадром відповідь подвійна. Щось зробила людина, щось — модель. Чесний підпис показує обидві частини, а не ховає одну з них.
| Складник | Навіщо | Приклад |
|---|---|---|
| Назва моделі й версія | без версії результат не відтворити: моделі оновлюються | Stable Diffusion 1.5 |
| Дата | та сама модель через півроку дає інше; дата фіксує момент | 2 вересня 2026 |
| Що зробила людина | це і є твій реальний внесок — не применшуй його | задум, промпт, 4 ітерації, добір фінального кадру |
| Що зробила модель | щоб ніхто не подумав, що ти це намалював | усі пікселі зображення |
«Моя ілюстрація до проєкту. Автор — Олена Петренко.»
Прямий обман: читач вирішить, що ти це намалювала.
«Зроблено за допомогою ШІ.»
Не названо модель. Немає дати. Незрозуміло, що зробив ти. «За допомогою» означає будь-що — від генерації до підбору кольору.
«Зображення згенеровано ШІ: модель Stable Diffusion 1.5, 2 вересня 2026. Промпт, чотири ітерації й добір фінального кадру — Олена Петренко. Жоден піксель не намальований людиною.»
Модель, дата, внесок людини, внесок моделі. Чотири складники — і жодних питань після.
.ai-disclosureЦе той самий блок, який ти завів минулого уроку. Сьогодні він оновлюється: ітерацій уже чотири, і це має бути в тексті.
Поки блока немає, чекер тему не зарахує. Це не строгість заради строгості, а правило всього модуля.
Однокласник підписав свою роботу: «зроблено за допомогою нейромережі». Чого не вистачає в цьому підписі?
Чотири блоки <figure>. У кожному підпис не коротший
за 40 символів, і всі чотири підписи різні.
Підпис відповідає на два питання. Що змінено в цій ітерації. І що з цього вийшло.
gen-*.png, ані прев'ю.
Тому замість <img> у кожній фігурі стоїть блок
class="shot". У ньому ім'я файлу, розмір і параметри.
Чотири зображення вчитель дивиться очно, на твоєму екрані,
і звіряє з підписами. Сторінка при цьому лишається зрозумілою:
з неї видно, що саме де лежить.Разом чотири такі фігури підряд. Ось як це виглядає на готовій сторінці. Саме так вона й виглядатиме у твоєму кабінеті:
Приклад блока .ai-disclosure
Чотири кадри в цій галереї — вигадані приклади для уроку.
У твоїй роботі тут буде інше: слова згенеровано ШІ,
назва й версія моделі, дата і те, що саме зробив ти.
Чому в підпис доречно вписувати не тільки «що змінив», а й «що з цього вийшло», навіть коли вийшло гірше?
Блок id="critique" — не менше 250 символів
«Мені не подобається» — це не критика, це настрій.
Критика згенерованого складається з трьох частин. Де ти дивишся. Що там не так. І чому модель це зламала.
| Зона | Що шукати | Чому ламається |
|---|---|---|
| Кисті рук | кількість пальців, зайвий суглоб, друга долоня | модель відтворює форму, а не будову; рахувати вона не вміє |
| Текст і написи | літери, схожі на літери, але не складаються в слово | текст — це послідовність символів, а для моделі це просто візерунок |
| Дрібна симетрія | вуха, очі, вушка чашки, спиці колеса | дві половини малюються незалежно й не звіряються між собою |
| Тіні й відбиття | тінь падає не в той бік, у дзеркалі інша поза | у моделі немає джерела світла — є лише статистика «як зазвичай виглядає тінь» |
| Стики предметів | ремінець зникає під рукою, гілка проходить крізь стовбур | ділянки узгоджуються локально, а цілісність об'єкта не перевіряється |
id="critique"«У gen-3.png на камені під лапою є напис із чотирьох
«літер». У слово вони не складаються. Це типовий артефакт тексту:
модель відтворює форму літер, а не їхній зміст.
У gen-2.png ліва передня лапа розпливається,
пальці зливаються в одну пляму. У всіх чотирьох кадрах тінь від каменя
падає ліворуч, хоча світло в промпті задане ззаду. Модель бере тінь
зі статистики, а не будує її. Фінальний gen-4.png
цих трьох вад не має. Але хвіст на кінці обрізаний рамкою.»
Чотири конкретні зауваження. У кожному є назва файлу, зона і причина. Ані слова «гарно» чи «не подобається».
У згенерованому портреті одне вухо помітно вище за друге, а сережки різні. Як це пояснити в критиці?
Кроки 1—9 — у себе на комп'ютері, кроки 10 і 11 — у кабінеті на сервері. Галочки зберігаються, сторінку можна закрити.
gen-1.png … gen-4.png лишаються в локальній
теці media/lesson-07/. Прев'ю цього разу теж
не робимо і не заливаємо. На сервер їде лише prompts.json,
exif.txt і index.html.
Чекер окремо шукає будь-які зображення у ~/www/
та ~/upload/. Якщо знайде, критерій nomedia не пройде.Чекер читає три текстові файли й звіряє їх між собою. Спроби не обмежені.
Демонстраційний режим: результат згенеровано для показу. На сервері
ця кнопка викликає POST /api/check, який запускає
check 07 від імені учня.
Чекер бере два рядки. Поле Description файлу з exif.txt.
І поле prompt того самого запису з prompts.json.
Далі він прибирає зайві пробіли, зрівнює регістр і порівнює. Не збіглося — значить, звіт і файли розійшлися.
Причин зазвичай дві. Або промпт правили вже після маркування. Або підписали не той файл. Це і є технічна перевірка чесного підпису.
media/lesson-07/, у ній чотири
зображення однієї ідеї, а не чотири різні картинки;changed;exiftool gen-3.png і звіряє
Description з prompts.json;id="critique";.ai-disclosure і пояснює,
що в ньому зробила людина, а що модель.12 питань по всіх семи темах: залізо, мережі, звук, зображення, відео, формати, ШІ
Питання зі сторінок уроків тут не повторюються — усі ситуації нові. Відповідь зараховується одразу, змінити її не можна. Тому читай умову до кінця.
Там, де є числа, рахуй на папері. Таких питань три з дванадцяти.
~/.progress/module-test.json.Гра вимагає 12 ГБ оперативної пам'яті, у ноутбуці — 8 ГБ. Гра запускається, але страшно гальмує й підвисає ривками. Що відбувається?
На коробці SSD написано 1 ТБ, а система показує 931 ГБ. Тебе обманули?
Треба з'єднати комп'ютер із роутером у сусідній кімнаті — 15 метрів, потрібна стабільна швидкість близько 1 Гбіт/с і мінімальна затримка. Що тягнеш?
Канал 100 Мбіт/с завантажений тільки тобою. Скільки приблизно триватиме передавання файлу на 900 МБ?
Записуєш нестиснений WAV: 48 кГц, 24 біти, стерео, 30 секунд. Який приблизно розмір файлу?
Тобі прислали пісню в MP3 128 kbps. Ти перегнав її у FLAC, щоб «повернути якість». Що насправді вийшло?
Ти зберіг у JPEG скріншот сторінки з дрібним текстом — навколо літер з'явився сірий «бруд». Як це виправити?
Логотип школи треба надрукувати на банер 3×2 метри. Який файл несеш у друкарню?
Файл film.mp4 не відкривається в старому плеєрі.
ffprobe показує: контейнер mov,mp4,
відеопотік hevc. У чому річ?
Нестиснене відео 1920×1080, 25 кадрів за секунду, 3 байти на піксель. Скільки даних це дає за одну секунду?
Ти перейменував photo.png на photo.jpg.
На сервері команда file photo.jpg відповідає
PNG image data. Чому?
У згенерованому PNG exiftool показує рядок
Parameters з повним промптом і seed. Ти збираєшся викласти
цей файл у мережу. Що це означає?
Відповідай по черзі — лічильник рахує сам.
Це те, що бачить учитель, коли виставляє оцінку за тему 7.
| Складник | Вага | Результат |
|---|
exiftool.
Прочитати це може будь-хто. І стерти теж будь-хто.Description у метаданих
і prompt у prompts.json — один і той самий текст.
На цьому тримається вся перевірка.Придумай ідею власної гри для теми 8. Опиши її одним реченням: жанр, ціль гравця й головна механіка.
Наприклад: «головоломка від першої особи, де гравець вимикає світло в кімнатах, щоб проходити крізь тіні».
Саме з цього речення на уроці 15 почнеться твій прототип.
Специфікації форматів, документація інструментів, словники метаданих і тексти законів. Перевіряти дозволено й корисно.
-overwrite_original, -G, -s,
-a і форма -TAG<=FILE.
exiftool.org/exiftool_pod.htmlXMP-dc:Creator,
XMP-photoshop:Credit, XMP-xmp:CreatorTool,
XMP-iptcExt:DigitalSourceType.
exiftool.org/TagNames/XMP.htmlexiftool читає й пише
tEXt, zTXt, iTXt і куди кладе XMP
у PNG.
exiftool.org/TagNames/PNG.htmlIHDR, IDAT, IEND і текстових чанків.
w3.org/TR/png-3trainedAlgorithmicMedia для повністю згенерованого зображення.
cv.iptc.org/newscodes/digitalsourcetypetEXt
з ключем parameters.
github.com/AUTOMATIC1111/stable-diffusion-webuiprompt і
workflow з повним графом вузлів.
github.com/comfyanonymous/ComfyUIПовний список із поясненнями, які саме числа звідки взяті, що
є ілюстративним і як перевірити арифметику з тесту, — у файлі
urok-14-джерела.md поруч із цією сторінкою.