ІнтернетПрограмування

Stable Diffusion. Технологія генерації зображень за текстом

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

Для генерації зображень потрібна відеокарта Nvidia з обсягом пам’яті від 4 ГБ (краще 6 або 8 ГБ). Якщо у вас відеокарта AMD, для генерації знадобиться Linux і певний досвід роботи з ним.

Для навчання нейромереж на власних зображеннях потрібна відеокарта від 8 ГБ (але цього дуже мало, тож доведеться добре попрацювати над вибором параметрів і методу). Комфортне навчання нейромереж починається з 12 ГБ відеопам’яті.

Є також варіант запуску на потужностях Google Colab, але він підійде не всім: безкоштовно доступно лише кілька годин на добу. Доведеться щоразу налаштовувати все з нуля й завантажувати потрібні файли, а потім зберігати результат, оскільки Google може без попередження перервати роботу, просто вимкнувши сеанс.

Різні версії та архітектури моделей нейромереж

Stable Diffusion (SD) 1.5, 2.0, 2.1 Наразі найпопулярніша модель — 1.5, базовий розмір зображення для неї становить 512 × 512. Для 1.5 створено багато користувацьких інтерфейсів, методів навчання тощо. За численними тестами ця версія досі не поступається наступним за креативністю чи якістю, а до того ж має величезну базу готових моделей, доповнень та інструментів. У версіях 2.0 і 2.1 базовий розмір зображення, на відміну від 1.5, становить 768 × 768 пікселів. Вони несумісні з 1.5: не можна використовувати гіпермережі, LORA та Embedding із версії 1.5.

ControlNet створено для кращого керування генерацією у Stable Diffusion. Він дає змогу спрямовувати процес різними способами: задавати контури, позу, карту глибини або нормалей. Це набір додаткових нейромереж, які працюють разом із SD як доповнення, а не як окрема архітектура. Для Automatic1111 є розширення sd-webui-controlnet.

Midjourney — закрита архітектура, доступна для ознайомлення та платного використання. Основний спосіб доступу — через Discord. Вона дає якісні результати, і певний час відкрита Stable Diffusion намагалася її наздогнати. Однак завдяки відкритості та масовій розробці нових моделей спеціалізовані моделі часто дають змогу досягти кращого результату у своїй галузі.

DALL-E — нейромережа OpenAI, створена за фінансової підтримки Microsoft. OpenAI також відома розробками текстових нейромереж GPT-3 і чатботом на її основі.

Словник загальних термінів

prompt, промпт — набір слів на вході, на основі якого створюється зображення. Є також негативний промпт, у якому можна зазначити, чого ви НЕ хочете бачити в результаті. У деяких інтерфейсах генерації зображень негативний промпт може бути відсутній.

чекпойнт, .ckpt, .safetensor, model, модель — по суті, синоніми готової навченої нейромережі, збереженої в одному файлі з розширенням .ckpt (чекпойнт) або .safetensor. Другий формат безпечніший, оскільки містить лише дані й не містить додаткових скриптів, на відміну від .ckpt. Тому, якщо ви завантажили .ckpt із неперевіреного джерела, пам’ятайте, що його використання може бути небезпечним; краще конвертувати файл у safetensor. Розмір файлу зазвичай становить від 2 до 8 ГБ — залежно від розрядності/точності fp16 або fp32, а також від наявності додаткових елементів, наприклад VAE.

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

Hypernetwork, гіпермережа — спочатку цей підхід задумувався як додатковий стиль, який можна навчити на власних фотографіях і накладати на початкову модель. Файл має розмір у десятки мегабайт.

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

Textual inversion, Embedding, ембеддинг — певний набір вагових коефіцієнтів, який додається під час перетворення початкового текстового промпта на матрицю вагових коефіцієнтів, також відому як Embedding (розмірність 77 × 768). Ембеддинги, як і Dreambooth та LORA, навчають на користувацьких фотографіях. Їхня перевага — дуже малий розмір: лише десятки кілобайт. Вони сильно залежать від початкової моделі. Якщо застосувати ембеддинг до іншої моделі, а не тієї, на якій його навчали, результат часто буде далеким від очікуваного, хоча бувають винятки.

VAE (variational autoencoder) — одна зі складових моделі SD, яка може бути відсутньою. VAE перетворює вхідне піксельне зображення на латентний простір нейромережі й, навпаки, формує вихідне зображення з внутрішнього представлення.

Програми та інтерфейси для використання Stable Diffusion

Automatic1111 (автоматик), InvokeAI — користувацькі інтерфейси для генерації зображень. По суті, це програми-оболонки, які вміють використовувати моделі Stable Diffusion. Їх написано мовою Python, завантажити їх можна з GitHub. Серед розширень варто встановити: sd-webui-controlnet і openpose-editor (для ControlNet), stable-diffusion-webui-model-toolkit (для перегляду складу моделі, її скорочення або вилучення частин), sd-webui-model-converter (конвертація у fp16, safetensor), stable-diffusion-webui-dataset-tag-editor (створення підписів під час підготовки датасету до навчання), embedding-inspector (допомагає знаходити пов’язані теги та синоніми).

painthua.com — зовнішній інтерфейс для генерації зображень на безмежному полотні. Підключається до Automatic1111 через API.

Словник термінів, які використовують в інтерфейсах генерації зображень

prompt — текст, який задає генерацію зображення.

Negative prompt — слова й теги, які задають те, чого не має бути на вихідному зображенні.

Sampling Steps — кількість кроків генерації зображення. Зазвичай прийнятні результати починаються від 20 кроків.

Sampling method — існує багато різних семплерів (Euler, Euler a, LMS, Heun, DPM2, DPM2 a, DPM fast, DPM adaptive, LMS Karras, DDIM, PLMS та інші). Вони часто дають різні результати й по-різному впливають на швидкість.

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

img2img — створення зображення на основі іншого зображення.

txt2img — створення зображення на основі текстового промпта (prompt).

Inpaint — дає змогу накласти маску на ділянку зображення (зафарбувати частину) й згенерувати щось лише в ній, не зачіпаючи решту малюнка. Маску можна інвертувати — малювати всюди, крім замаскованої ділянки (Inpaint not masked).

Face restoration, Restore Faces, CodeFormer — опція покращення облич на вихідному зображенні за допомогою окремої моделі CodeFormer. Є в інтерфейсі Automatic1111.

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

PNG info — результуюче зображення зазвичай має формат PNG, у файл записуються параметри генерації. За допомогою цього інструмента їх можна переглянути й повернутися до початкових налаштувань.

Посилання на різні інструменти й ресурси

Конвертер моделей Hugging Face — підтримує багато різних форматів.

https://civitai.com/ — велика база моделей SD, LORA та Embedding на різні теми, практично без обмежень.

btdig.com — пошук моделей SD у торентах.

aqualxx.github.io ranker.mr4erk.ru dezgo.com — різні онлайн-сервіси для генерації зображень.

RentrySD — збірка посилань і файлів на тему Stable Diffusion.

Залишити коментар

Вашу електронну адресу не буде оприлюднено. Обов’язкові поля позначено *