Мені здається що підтримка wildcards в Forge та Fooocus то найкраща фіча яка вже ніколи не з'явиться в інших GenAI інструментах. Я можу таку функціональність реалізувати в Pixel AI Studio, але вона швидко використає ваші кошти на АРІ-запити.((
То ж в мене всі карти знаходяться на сервері в окремій теці на які зроблені посилання:
- /wildcards/ for Foooocus (config.txt)
- /wildcards/ by symlink for Forge (Dynamic Prompts extension)
Згадав я про мегапак від в'єтнамських шанувальників wildcards, де промпт з wildcard посилається на інший wildcard і так далі. Як то виглядає?
Можливо так:
masterpiece,ultra realistic,32k,extremely detailed CG unity 8k wallpaper, best quality,({summer day | autumn day | winter day | spring day }),lady ,necklace ,eardrop, __*/city__, ( __*/colors__ __*/mixwear__ ) , __*/haircolor__ hair __*/hairstyle__ ,
або навіть так:
Уявіть, і це працює!))
Питання 1: мені треба в промті використати двічі myword, але в цьом випадку з карти myword випадають різні значення, а мені треба щоб воно співпало в одному промпті.
Це класична проблема роботи з вайлдкардами (wildcards). За замовчуванням кожен виклик __myword__ — це незалежний кидок кубика, тому вони й видають різні результати.
Щоб "зафіксувати" значення і використати його кілька разів в одному промпті, потрібно використати механізм змінних.
Рішення для Forge (та Fooocus, якщо встановлено Dynamic Prompts)
У більшості систем, які базуються на Stable Diffusion (як Forge, A1111), за роботу з вайлдкардами відповідає розширення Dynamic Prompts. Воно підтримує синтаксис змінних.
Тобі потрібно:
- При першому згадуванні присвоїти значення вайлдкарда змінній.
- При другому згадуванні викликати цю змінну.
Синтаксис виглядає так: ${змінна=__wildcard__}.
Приклад:
Припустимо, у файлі colors.txt є кольори (red, green, blue).
Неправильно (будуть різні кольори):
A __colors__ car and a __colors__ bike.
(Результат: A red car and a blue bike)
Правильно (буде однаковий колір):
A ${val=__colors__} car and a ${val} bike.
(Результат: A red car and a red bike)
Як це працює:
${val=__colors__} — система бере випадкове слово з файлу (наприклад, "red") і запам'ятовує його під іменем val.
${val} — система просто підставляє те, що запам'ятала раніше ("red").
Нюанс щодо Fooocus
Fooocus прагне до простоти та мінімалізму.
Якщо ви використовуєте Fooocus-MRE або форк з підтримкою Dynamic Prompts, метод вище ${val=...} спрацює ідеально. Якщо це "чистий" стандартний Fooocus, він може мати спрощений парсер вайлдкардів, який не розуміє змінні ${}.
Тому для Fooocus гарного рішення немає.(
Питання 2: в Fooocus є штатна опція щоб вичитувати карту послідовно, а як з цим в Forge?
У WebUI Forge вбудована робота з вайлдкардами базова, тому для просунутих функцій, таких як послідовне читання, майже завжди використовується розширення Dynamic Prompts. Воно, як правило, вже встановлене або його легко додати. Щоб змусити Forge брати слова з файлу по порядку (1-ше, 2-ге, 3-тє...), а не випадково, потрібно використати режим Combinatorial Generation (Комбінаторна генерація).
Ось як це зробити:
Відкрийте вкладку/секцію Dynamic Prompts (зазвичай вона внизу ліворуч, під налаштуваннями розміру зображення).
Знайдіть і поставте галочку на Combinatorial generation.
Важливий момент з кількістю (Batch Count):
Коли увімкнено цей режим, Forge ігнорує звичайний рандом і намагається створити всі можливі варіанти.
Якщо у вашому файлі __myword__ 10 слів, він створить 10 картинок (по одній на кожне слово по порядку).
Якщо ви хочете лише перші 5 слів зі списку — встановіть у налаштуваннях Dynamic Prompts ліміт Max generations (або просто зупиніть генерацію вручну).
Якщо потрібно просто "циклічно" брати слова, не генеруючи всі комбінації одразу:
У Dynamic Prompts це працює трохи складніше, ніж у Fooocus. Але комбінаторний режим — це саме той аналог.
Приклад - у вас у файлі colors.txt:
red
blue
green
Ви пишете промпт: A __colors__ car.
Вмикаєте Combinatorial generation.
Натискаєте Generate.
Forge створить чергу з 3 зображень:
A red car
A blue car
A green car
Як бути, якщо у вас кілька вайлдкардів?
Якщо у вас промпт A __color__ __animal__ (3 кольори, 3 тварини), і увімкнено Combinatorial generation, Forge згенерує 3 × 3 = 9 зображень (усі можливі пари). Це найпотужніша фішка цього режиму, якої часто бракує у Fooocus.
Тому ще раз і чому таке налаштування важливе:
Combinatorial generation - змушує систему пройтися по всіх варіантах зі списку.
Disable sorting - ще один ключовий момент. За замовчуванням програма може відсортувати твій список за алфавітом, перш ніж почати генерувати.
- Без галочки: Якщо у файлі перший рядок "Zebra", а другий "Apple", система почне з "Apple" (бо A перша).
- З галочкою (Disable sorting): Система піде чітко: 1-й рядок файлу, 2-й рядок, 3-й... незалежно від літери.
Тож так, це ідеальний рецепт для суворого послідовного перебору карток у Forge:
Batch count: 1
Dynamic Prompts -> Combinatorial generation: ✅ ON
Settings (Dynamic Prompts) -> Disable sortings of wildcards: ✅ ON
Ось тепер ти маєш повний контроль над тим, що і в якому порядку генерується! 🔥
Успіхів.


No comments:
Post a Comment
А что вы думаете по этому поводу?