Сегодня 09 ноября 2026
18+
MWC 2018 2018 Computex IFA 2018
реклама
Мастерская

Мастерская локальных ИИ: FLUX 3 Image Klein — рамки под контролем

⇣ Содержание

В объективно недолгую начальную эпоху локальной генерации картинок по текстовым подсказкам (T2I, text-to-image) преобразователи этих самых подсказок в токены представляли собой достаточно простенькие малые нейросети. Тогда были крайне распространены довольно изощрённые средства контроля композиции готового изображения — ControlNet, например; мы в своё время довольно подробно его рассматривали ещё для Stable Diffusion 1.5. Суть такого рода средств в том, чтобы сперва указать модели нетекстовыми способами, где именно в кадре какие ключевые элементы изображения поместить, а затем уже предоставить ей свободу действий в ограниченных подсказкой рамках. Да, можно в самой подсказке давать некие общие указания — «один персонаж стоит в левой трети поля изображения и замахивается направо, другой ближе к центру и целится вверх» и т. д., — но всё опять-таки упиралось в скудость возможностей встроенного преобразователя текста в токены CLIP.

Ситуация изменилась с пришествием нового поколения моделей, у которых CLIP дополнен «нейротолмачом» T5. Эта субмодель преобразует фразы на естественном языке в адекватный набор ключевых слов, которые затем уже исправно трансформируются в цепочки токенов. Первой в ряду реализовавших связку CLIP+T5 стала ещё в конце 2022 г. исследовательская T2I-модель eDiff-I разработки Nvidia — с закрытыми, правда, весами, так что подлинно локальной её считать нельзя. За ней позже последовали Kandinsky 2.0 с поддержкой многоязычных подсказок, Stable Diffusion 3 и семейство FLUX.1.

 На что был способен T5 в 2022 году (источник: BLF)

На что был способен T5 в 2022 году (источник: BLF)

Следующим логичным шагом стало применение полноценной локальной языковой модели для кодирования исходного текста подсказки: так, в 2024 г. последовательно вышли Lumina-T2X с LLaMA-7B в качестве привлечённого перекодировщика и Sana с Gemma-2-2B, а в 2025-м — Qwen-Image, что полагалась для той же цели на Qwen2.5-VL-7B. Как мы упоминали уже в прошлой «Мастерской», германские разработчики из Black Forest Labs (BFL) сочли за лучшее последовать примеру китайских товарищей — и для своей FLUX 3 Image Klein подрядили перекодировать текст в токены сразу две модели семейства Qwen3, несколько их доработав (благо те распространяются по лицензии Apache 2.0): собственно перекодировщик и обогатитель (upsampler). Таким образом, рассматриваемая нами модель исходно наделена весьма обширными возможностями текстовой компоновки кадра — что если не делает ConrolNet и прочие подобные инструменты совсем уж никчёмными, то по крайней мере обеспечивает оператору куда более серьёзный контроль над композицией создаваемого ИИ изображения. Поясним предметно, что тут имеется в виду.

⇡#В рамочку!

Простейшая — в наши дни, не в эпоху Stable Diffusion 1.5, — задача: сгенерировать картинку, которая содержала бы внятный текст. Это может быть обложка самиздатовского романа для выкладки на онлайн-платформе (с названием произведения), или рекламирующее некий товар изображение (с наименованием самого этого продукта и кратким его описанием), или, наконец, мем — смешная (ну хотя бы ироничная) картинка с уместной подписью. Да, картинку никто не запретит нарисовать отдельно, а затем наложить текст в GIMP либо ином графическом редакторе, но нейросети-то на что? Уже FLUX.1 [dev] недурно генерировала текст, а современные модели и подавно справляются с подобными задачами на ура, даже локальные. Одна лишь тонкость: текст трудно заставить появиться на точно указанном участке кадра. Общие указания вроде «в верхней трети изображения» или «справа от описанного только что объекта» работают, но всё равно получение именно задуманной изобразительно-текстовой композиции продолжает оставаться лотереей.

 Задачу создать плакат в помощь изучающим русский алфавит дошкольникам (вот именно в такой лапидарной формулировке, без конкретизации, какую букву где располагать и чем иллюстрировать) модели поколения FLUX.1 вряд ли осилили ли бы, но и нынешние проприетарные онлайн-творения сумрачных нейросетевых гениев — в данном случае из экстремистский Meta<a href=✴* — не то чтобы идеально с нею справляются. Ыйщо не белочь! (Источник: ИИ-генерация на основе модели Grok Imagine 1.5) " height="450" width="800" />

Задачу создать плакат в помощь изучающим русский алфавит дошкольникам (вот именно в такой лапидарной формулировке, без конкретизации, какую букву где располагать и чем иллюстрировать) модели поколения FLUX.1 вряд ли осилили ли бы, но и нынешние проприетарные онлайн-творения сумрачных нейросетевых гениев — в данном случае из экстремистской Meta✴* — не то чтобы идеально с нею справляются. Ыйщо не белочь! (Источник: ИИ-генерация на основе модели Grok Imagine 1.5)

В BFL сочли за лучшее подойти к проблеме радикально, сразу же натренировав FLUX 3 Image Klein иметь дело с предварительно размеченным холстом. Официальное руководство по применению координатных рамок (bounding box, bbox) прямо говорит, что для задания границ элементов изображения не требуются какие бы то ни было дополнительные инструменты и настройки. Достаточно поместить описания этих рамок (в виде массива в формате JSON — с указанием для каждой её идентификатора, намеченных границ и содержимого) прямо в текстовую подсказку. С координатами тоже всё просто: каким бы ни был исходный холст, каждая из сторон образующего тот прямоугольника размечена от 0 до 1000, начало отсчёта помещено в левый верхний угол, и последовательность координат задаётся перечислением через запятую в квадратных скобках позиций двух задающих прямоугольную же рамку точек — верхней левой и нижней правой. То бишь у заданной как [0, 0, 500, 500] рамки координаты верхней левой точки — [0, 0] (совпадает с началом отсчёта), а правой нижней — [500, 500]; это центр холста. Получается, приведённая в пример рамка занимает левую четверть всего доступного для рисования пространства, каким бы то ни было — квадратным, альбомной либо книжной ориентации, и произвольного соотношения сторон. В целом же задание каждой рамки в формате массива JSON выглядит примерно так (пример из официального руководства BFL, ссылка на которое дана в начале абзаца):

[{"id": "background_1", "bbox": [0, 0, 1000, 1000], "desc": "A flat field of neon yellow-green with a subtle paper texture and fine, organic grain."}, {"id": "silhouette_1", "bbox": [150, 150, 850, 850], "desc": "A black silhouette of a person in motion, made of dense stippled ink."}]

 Примерно так, надо полагать, должна в идеале выглядеть и работать нода «Bounding Boxes (Optional)», о которой пойдёт речь чуть ниже (источник: скриншот сайта docs.bfl.ai)

Примерно так, надо полагать, должна в идеале выглядеть и работать нода «Bounding Boxes (Optional)», о которой пойдёт речь чуть ниже (источник: скриншот сайта docs.bfl.ai)

Следует оговориться, что FLUX 3 Image Klein — не монополист по части применения координатных рамок «из коробки», с интеграцией в саму рисующую модель навыков обращения с ними. Тренд этот задала выпущенная ещё в июне 2026 г. Ideogram 4.0 с 9,3 млрд параметров; творение BFL, которое стало доступно публике 15 октября, лишь подхватило это начинание, а далее последовали MOSS-Image (5 млрд параметров, анонс — 16-го числа того же месяца) и FIBO 2.0 (8 млрд параметров, 22 октября). Тенденция эта, по нашему мнению, продолжится и впредь: очень уж удобно работать с JSON-массивами, позиционируя текст и любые иные элементы композиции ровно там, где задумано. Есть, конечно, оговорки: диффузионная T2I-модель выуживает картинки из латентного пространства, задействуя изрядную долю стохастики, так что координатные рамки — лишь общие указания (soft guides)для ИИ-рисовальщика, а не жёсткий запрет выходить за пределы указанного bbox, если внутренняя логика изображения того требует. И всё же это куда более тонкий (и ещё раз подчеркнём — интегрированный в саму T2I-модель и не требующий никаких дополнений) инструмент для куда более детального, чем прежде, задания композиции.

Разумеется, есть у такого подхода и оборотная сторона: оператор, применяя bbox, заведомо лишает себя возможности свалить на ИИшенку грубые композиционные просчёты в готовой работе. Зато перед людьми с художественным/дизайнерским образованием, познавшими законы этой самой композиции, модели с интегрированной интерпретацией JSON-массивов открывают поистине новые горизонты — а куда менее сведущих в этих высоких материях нас побуждают усерднее заниматься самообразованием. Не в этом ли, если задуматься, всемирно-историческая роль искусственного интеллекта в целом?

 Слева — фрагмент внутреннего устройства свёртки «Diffusion (FLUX 3 Klein)» с нодой «VAE Decode» на своём законном месте; справа — после замены последней на «VAE Decode (Tiled)»

Слева — фрагмент внутреннего устройства свёртки «Diffusion (FLUX 3 Klein)» с нодой «VAE Decode» на своём законном месте; справа — после замены последней на «VAE Decode (Tiled)»

Итак, обратимся к той самой картинке с котом и крысой, которую FLUX 3 Image Klein изображала для нас в прошлый раз, и попробуем выдать модели более детализированное задание на отрисовку той ж самой сценки — но с учётом новых (для данного семейства) возможностей текстового позиционирования изобразительных элементов. Для начала чуть отъюстируем опорную циклограмму flux3_klein_int8_t2i.json из каталога с примерами, который содержит официальная страничка проекта на Hugging Face. В прошлый раз мы уже показывали, как в свёрнутой ноде «Diffusion (FLUX 3 Klein)» вместо модели в кодировке INT8 организовать вызов её GGUF-версии, деактивировав соответствующую ноду «Load Diffusion Model» и на её место поставив «Unet Loader (GGUF/Advanced)» из пакета comfyui-gguf-reboot.

Теперь в той же самой свёрнутой «Diffusion (FLUX 3 Klein)» есть смысл заменить стандартную опять-таки ноду «VAE Decode» на «VAE Decode (Tiled)». Делать это не обязательно, но мы в рамках настоящей «Мастерской» генерируем с FLUX 3 Image Klein достаточно крупные — 4-Мпикс — картинки. И потому базовому вариационному автокодировщику (VAE) недостаёт доступной на нашей картофелине оперативной памяти, чтобы целиком загрузить в неё обрабатываемые данные. Рабочая среда ComfyUI давно умеет справляться с такой напастью сама: она вовремя фиксирует переполнение памяти и, не допуская вылета уже почти завершённой циклограммы, автоматически переключает VAE на обработку картинки по фрагментам, тайлам (tiles). Но, поскольку изображения мы собираемся выпекать заведомо большие, стоит сразу же на место «VAE Decode» поставить в циклограмме «VAE Decode (Tiled)», чтобы не тратить время на первичную попытку обработать картинку целиком.

 Привычные ноды при активном режиме «Nodes 2.0» в ComfyUI выглядят более современными, что ли

Привычные ноды при активном режиме «Nodes 2.0» в ComfyUI выглядят более современными, что ли

⇡#Тут (не) надо графически

Теперь всё окончательно готово; посмотрим же, насколько широкие возможности открывают перед нами пресловутые рамки. Для начала — переформулируем исходную (короткую) подсказку в соответствии с рекомендациями BFL по части использования bbox. Было в прошлый раз, напомним:

Кот в сапогах, в сбитой на затылок широкополой шляпе, с воздетой к небу шпагой заступает путь исполинской, нависающей над ним трёхголовой крысе в горностаевой мантии и с золотыми коронами на каждой из голов. Мастерски выполненный рисунок цветными мелками на фактурной бежевой бумаге.

Теперь, действуя по инструкции разработчиков, добавим явные указания на то, что каждому из значимых объектов в кадре должна отводиться своя область (ограниченная той самой рамкой — bbox). Просто укажем наименования трёх таких областей — фона, кота и крысы, — заодно добавив в подсказку некоторые конкретизирующие композицию детали:

Мастерски выполненный рисунок цветными мелками. Композиция выстроена на однородном фоне, изображающем фактурную бежевую бумагу <background_1>. На переднем плане Кот в сапогах <cat_1>, показанный в полный рост, стоит спиной к зрителю в динамичной позе, держа в правой передней лапе воздетую вверх шпагу. Он в коричневых высоких ботфортах и в широкополой шляпе с пышным белым пером; он загораживает дорогу наступающей на него исполинской трёхголовой крысе, частично перекрывая её фигуру. Эта крыса <rat_1> замерла в угрожающей позе на заднем плане. Она облачена в горностаевую мантию, на шее её - тяжёлая золотая цепь, на каждой из трёх голов - небольшая золотая корона.

Поскольку bbox, как настоятельно подчёркивают в BFL, не догма, а руководство к действию, рамки для разных объектов прекрасно могут перекрываться, если авторский замысел такое предусматривает. Что мы в данном случае и оговорили особо: кот должен явно накладываться на крысу, и они вдвоём, разумеется, на фон (который в нашем случае однородный, просто фактурная тонированная бумага, но может быть и сколь угодно сложным — это мы продемонстрируем ближе к финалу). Теперь надо лишь удостовериться, что переключатель «enable upsampler» в составе свёртки «Prompt Upsampler» активирован, и запустить на исполнение приведённую выше подсказку.

 Обратите внимание, насколько при активном режиме «Nodes 2.0» (справа) заметнее переключатель «enable upsampler»

Обратите внимание, насколько при активном режиме «Nodes 2.0» (справа) заметнее переключатель «enable upsampler»

«Но погодите-ка, — заметит здесь вдумчивый читатель, особенно если перед ним на локальном компьютере как раз открыт веб-интерфейс рабочей среды ComfyUI с загруженной в него рабочей циклограммой flux3_klein_int8_t2i.json, — ведь прямо под окошком для ввода текстовой подсказки есть ещё одна нода, «Bounding Boxes (Optional)», и в ней явно можно просто вручную нарисовать все необходимые рамочки, чтобы передать затем их координаты модели для обработки! Если уж мы налаживаем контроль над композицией всерьёз, для чего оставлять на откуп нейросети размещение просто поименованных в подсказке bbox на холсте?»

 Просто сдвиньте в настройках самый первый ползунок

Просто сдвиньте в настройках самый первый ползунок

О, это вопрос просто не в бровь, а в глаз, и получить ответ на него (на нашей-то картофелине) удалось не сразу. Давайте по порядку: «Bounding Boxes (Optional)» — нода, честно помеченная как «Beta», и работает она, прямо скажем, не совсем так, как интуитивно ожидал бы от неё наивный оператор.

 Одна и та же нода «Bounding Boxes (Optional)» при включённом (справа) и отключённом режиме «Nodes 2.0»

Одна и та же нода «Bounding Boxes (Optional)» при включённом (справа) и отключённом режиме «Nodes 2.0»

Для начала, чтобы эта нода в принципе активировалась, необходимо переключиться в режим «Nodes 2.0» в настройках самой ComfyUI — сдвигом одного-единственного ползунка в окошке, открывающемся по нажатию изображения шестерёнки в интерфейсе рабочей среды. Никакой перезагрузки веб-страницы или иных действий после этого не потребуется; просто ноды на рабочем столе приобретут несколько иной вид, а в самой «Bounding Boxes (Optional)» обнаружится интерактивное окошко для рисования пресловутых рамочек, а под ним — поля для ввода названий и описаний содержимого каждого из нарисованных вручную bbox.

Как следует из инструкций самой BFL по работе с рамочками, представлять в bbox требуется решительно всё, начиная с фона. Поэтому изобразим три таких рамки — для фона, кота и крысы — интуитивно понятным способом: подводим курсор туда, где должен быть левый верхний угол будущей рамки, зажимаем левую кнопку мыши, тянем вниз и вправо и отпускаем; затем можно перемещать готовый bbox как целое, нажав на любую точку внутри него, и растягивать/сжимать за уголки. Логично будет сперва просто расставить три рамки в случайных позициях поля для рисования, затем озаглавить их и подписать, а потом уже расположить крупную <rat_1> справа, <cat_1> сделать поменьше и поместить с частичным наложением левее, а уже в самом конце передвинуть <background_1>, уперев её левый верхний угол в нулевую координатную позицию и растянув за правый нижний на весь холст.

Теперь переработаем общую подсказку (которая пойдёт в привычную ноду «Prompt» вместо прежней) и создадим ещё три — для каждого из новоявленных bbox. Общая подсказка будет такой:

Кот в сапогах <cat_1> заступает путь исполинской крысе <rat_1>. Мастерски выполненный рисунок цветными мелками на бумаге <background_1>.

А дальше для каждой из рамок зададим её заголовок (раздел «obj» под полем для рисования внутри ноды «Bounding Boxes (Optional)») и описание размещаемого там объекта (раздел «text»):

<cat_1>

Кот в сапогах стоит спиной к зрителю в динамичной позе, держа в правой передней лапе воздетую к небу шпагу. Он в коричневых высоких ботфортах, его широкополая шляпа с пышным белым пером сдвинута на затылок.

<rat_1>

Исполинская трёхголовая крыса в горностаевой мантии и с золотыми коронами на каждой из голов, с тяжёлой золотой цепью на шее, замерла в угрожающей позе.

<background_1>

Фактурная бежевая бумага.

В самом низу окошка «Bounding Boxes (Optional)» на этапе ввода описания очередного bbox появляется дополнительная опция «Color palette», — она должна задавать предпочтительную цветовую гамму для содержимого данной рамки. Но эту возможность мы даже не принимались исследовать, и вскоре станет понятно почему.

⇡#Крыса, знай своё место!

Убеждаемся, что в ноде «Resolution selector» выставлены соотношение сторон 1:1 и разрешение 4 Мпикс, а в свёртке «Prompt Upsampler» активирован переключатель «enable upsampler», и отправляем циклограмму на исполнение. После того как отработает интегрированный в циклограмму обогатитель подсказки — а в его качестве, напомним, BFL использует особым образом дотренированный клон Qwen3.5-9B, — в окошке ноды «Upsampled prompt» отобразится результат этого самого обогащения, который, собственно, корневая модель FLUX 3 Image Klein и принимает (в преобразованном в токены виде, само собой) за руководство к непосредственно извлечению картинки из латентного пространства. Что же в нашем случае вышло, когда базовую (теперь совсем короткую) подсказку циклограмма скомбинировала с тремя описаниями отдельных bbox с заданным явно позиционированием и обогатила? А вот что:

A colored-chalk illustration on textured beige paper <background_1>, showing a cat in boots <cat_1> stepping into the path of an enormous rat <rat_1>. The cat stands with its back to the viewer near the center-left, holding a raised sword <sword_1> as it advances toward the rat across a winding road <road_1> that fills the lower half of the composition. [{"id":"background_1","bbox":[0,0,1000,1000],"desc":"Textured beige drawing-paper background with visible chalk grain, scattered pigment specks, and uneven warm tan fibers."},{"id":"cat_1","bbox":[219,31,574,486],"desc":"A stylized anthropomorphic cat seen from behind, drawn in colored chalk with a compact feline body, striped orange-brown fur, and a dynamic forward-stepping pose. The cat wears tall brown leather riding boots reaching above the knees and a broad dark hat tilted over the hindquarters; a wide-brimmed hat with a large plume of white feathers sits pushed back against the neck. Its right front paw grips a weapon while the other legs brace against the advancing step."},{"id":"sword_1","bbox":[105,245,430,500],"desc":"A long ceremonial sword held high overhead, with a pale steel blade, a pointed tip, and a dark hilt, rendered with firm cream-white and blue-gray chalk strokes."},{"id":"rat_1","bbox":[31,172,438,970],"desc":"An enormous three-headed giant rat facing the approaching cat, drawn in colored chalk. Its gray body has a heavy torso, thick forelegs planted apart, and a stern threatening posture. Each head has long whiskers, pointed ears, and a gold crown set with red and green stones. All three heads wear ornate royal ermine mantles with black-and-white fur trim, and a massive gold chain hangs around the neck."},{"id":"road_1","bbox":[350,180,1000,1000],"desc":"A winding ochre-colored road crossing the foreground beneath both figures, formed by broad chalk strokes with irregular edges, scattered pebble marks, and compressed shadows under the characters' feet."}]

 Слева — результат исполнения нашей составной подсказки с пропусканием её через обогатитель на локальной картофелине моделью FLUX 3 Image Klein. Справа — то, что получилось, когда мы приведённую только что обогащённую подсказку с множественными bbox прогнали через FLUX 3 Image (уже не Klein, а полноценную облачную версию), доступную на портале CivitAI. Число параметров для полноценной модели BFL не разглашала, но, судя по тому, насколько тут выше качество, их там больше раза в два

Слева — результат исполнения нашей составной подсказки с пропусканием её через обогатитель на локальной картофелине моделью FLUX 3 Image Klein. Справа — то, что получилось, когда мы приведённую только что обогащённую подсказку с множественными bbox прогнали через FLUX 3 Image (уже не Klein, а полноценную облачную версию), доступную на портале CivitAI. Число параметров для полноценной модели BFL не разглашала, но, судя по тому, насколько тут выше качество, их там больше раза в два

Сразу же бросается в глаза умножение сущностей: модель-обогатитель по собственной воле предложила и описала bbox для шпаги <sword_1> (которую, разумеется, FLUX 3 Image Klein всё равно изобразила как меч, — эту деталь мы отмечали ещё в прошлый раз) и для дороги <road_1>, буквалистски интерпретировав выражение «заступать путь» как «препятствовать передвижению по дороге». Само по себе это вроде бы и неплохо, но явственно затруднит последующее редактирование картинки. Ведь если, к примеру, нам захочется от квадратного холста перейти к прямоугольному в альбомной ориентации и отодвинуть кота левее, а крысу сместить направо, дорога-то навряд ли пострадает: координаты отведённой ей рамки [350, 180, 1000, 1000] подразумевают, что она простирается вдоль почти всего холста. А вот меч — его bbox расположен в квадрате [105, 245, 430, 500] — должен оставаться у кота в лапе; сам же кот сидит внутри рамки [219, 31, 574, 486]. Всё логично: шпага поднята над головой кота, значит, её bbox выступает за его рамку вверх и вправо. Но в этом-то и проблема!

Подчеркнём ещё раз, что поле для рисования в составе ноды «Bounding Boxes (Optional)» — не абсолютное, а относительное; каждая из сторон заданного им прямоугольника делится на 1000 частей вне зависимости от соотношения этих сторон. Выходит, мы уже не можем с лёгкостью оперировать заданными bbox объектами, экономя время на генерацию за счёт отключения «enable upsampler» и простого изменения границ рамок, которые определила для нас автоматически нода «Bounding Boxes (Optional)». Ведь если просто сдвинуть bbox <cat_1> левее — всего лишь вычтя некое число из горизонтальной координаты правого нижнего угла описывающей его рамки, чтобы вместо исходных [219, 31, 574, 486] стало, скажем, [219, 31, 574, 286], — оставить обогащённую подсказку прежней и запустить циклограмму на исполнение, кот-то сдвинется, а шпага нет: либо она повиснет в воздухе, либо держащая её лапа неестественно вытянется. И хорошо ещё, что в этом случае модель-обогатитель добавила в итоговую подсказку всего два новых bbox. Когда мы ещё раз запустили на исполнение опорную циклограмму с теми же параметрами, но с другим значением seed, в обогащённой подсказке уже отсутствовала <road_1>, зато имелись рамочки для каждой из трёх крысиных корон — <crown_1>, <crown_2> и <crown_3>! Каждая со своими координатами и описанием, разумеется. Корректировать такой насыщенный JSON, да ещё без адекватного отображения всех его элементов в «Bounding Boxes (Optional)», — задача не самая приятная.

 Никаких рамочек с коронами в «Bounding Boxes (Optional)» мы не рисовали; она сама!

Никаких рамочек с коронами в «Bounding Boxes (Optional)» мы не рисовали; она сама!

⇡#Галлон онлайновых духов

Обратив внимание на порождение новых рамочных сущностей на этапе обогащения подсказки, вернёмся к тому, как функционирует сама нода «Bounding Boxes (Optional)». Увы, приходится констатировать, работает она откровенно спустя рукава. Кот на полученной картинке вовсе не внизу и слева, где мы расположили его bbox; крыса тоже не занимает всю отведённую её рамкой вертикаль. Как мило: хотя обозначенные для неё координаты — [31, 172, 438, 970], то бишь её фигура должна простираться от верха (172) до почти самого низа (970 из 1000) холста, на деле — «спасибо» нагаллюцинированной локальным обогатителем дороге — ей пришлось умоститься лишь на половине отпущенного пространства. Мы, кстати, не уверены, что винить в этом следует одну только экспериментальную (недаром она помечена как «Beta») ноду «Bounding Boxes (Optional)»: вполне вероятно взаимное влияние её несовершенств и избыточной склонности к домыслам модели Qwen3.5-9B, которая в данном случае трудится обогатителем подсказки. Энтузиасты давно подметили, что именно эта разновидность Qwen3 частенько принимается чрезмерно рассуждать, — даже если режим reasoning в настройках её вызова отключён.

 Ключевой фрагмент внутренностей свёртки «Prompt Upsampler»

Ключевой фрагмент внутренностей свёртки «Prompt Upsampler»

А он у нас как раз по умолчанию не активен, — достаточно заглянуть в свёртку «Prompt Upsampler» и удостовериться, что в ноде «Prompt upsampler» внутри неё ползунок «thinking» находится в неактивном положении. Кстати, когда мы в рамках «Мастерской» сравнительно недавно разбирались с локальными версиями Qwen3.8, тягу этой наследницы Qwen3.5-9B к сваливанию в «бесконечный цикл» самопроверок с самоопровержениями тоже отметили. Нет, понятно, что в той же ноде «Prompt upsampler» можно поиграть настройками обогащающей модели — top_p, reperition_penalty и проч., — чтобы попробовать избавить вспомогательную нейросеть от излишней ретивости, но ведь решительно не факт, что после этого она не станет хуже обогащать короткие подсказки. Получается, резонов избегать как «Bounding Boxes (Optional)», так и локальной модели-обогатителя у нас теперь ещё больше, чем к финалу первой серии знакомства с FLUX 3 Image Klein. Значит, пора снова призвать на помощь поддержку из облака!

Внутри свёртки «Prompt Upsampler», напомним, одна над другой расположены две ноды с системными подсказками для модели-обогатителя. Содержимое первой, «System prompt: plain (t2i)», мы уже извлекали и использовали для порождения обогащённых подсказок в прошлый раз. Теперь пришёл черёд нижней, «System prompt: bounding boxes (t2i_bbox)», которая активизируется, если в короткой исходной подсказке упоминаются рамки (точнее, если приведены указания на них в формате <name_number>). Эта системная подсказка тоже очень длинна и исчерпывающа; приводить её целиком мы тут не станем, любому желающему она доступна непосредственно из файла с официальной T2I-циклограммой flux3_klein_int8_t2i.json.

 Нода «Resolution Selector» позволяет с удобством задавать желаемое соотношение сторон холста

Нода «Resolution Selector» позволяет с удобством задавать желаемое соотношение сторон холста

Действуем так же, как и в прошлый раз: копируем системную подсказку (только теперь — вторую, объясняющую, как обращаться с рамочками), добавляем после финальной её фразы «Output only the caption and the table» указание, что «The mentioned short request is here: []», вставляем в квадратные скобки ту самую первую в настоящей «Мастерской» расширенную подсказку, где фигурируют <background_1>, <cat_1> и <rat_1>, дополнив её (по желанию) прямым указанием на выбранное соотношение сторон холста, чтобы онлайновой модели сподручнее было выстраивать приемлемую композицию. После чего скармливаем получившуюся стену текста, например, Claude 4.5 Haiku с активированными режимами «Thinking» и «Web search» через веб-интерфейс Duck.ai. Получается вот что:

Skillfully rendered horizontal colored chalk drawing on textured beige paper <background_1> showing a dynamic confrontation in a 16:9 composition. Puss in Boots <cat_1> stands in the foreground with his back to the viewer in an action pose, sword raised high in his right front paw, wearing brown tall boots and a wide-brimmed hat crowned with a flowing white feather. Behind and partially obscured by the cat looms an enormous three-headed rat <rat_1> frozen in a menacing stance, draped in an ermine mantle with a heavy gold chain around its neck and small gold crowns adorning each of its three heads. The cat's defiant stance blocks the rat's advance, creating a dramatic moment of confrontation rendered in warm earth tones and subtle highlights.

[{"id": "background_1", "bbox": [0, 0, 1000, 1000], "desc": "Textured beige paper forming a uniform background with visible grain and slight variations in tone creating a handmade surface quality."}, {"id": "cat_1", "bbox": [200, 150, 900, 500], "desc": "Orange and tan striped cat standing on hind legs with back to viewer, muscular feline build. Wearing brown tall boots reaching to thighs, a wide-brimmed hat with an ornate gold band and a prominent white feather curving upward. Right front paw raised high gripping a silver sword blade angled upward, left paw lowered. Alert posture with tail curved dynamically, rendered in warm chalk tones."}, {"id": "rat_1", "bbox": [150, 400, 850, 950], "desc": "Colossal rat with three distinct heads each showing whiskers and beady eyes in threatening expression. Mottled gray and brown fur covering the massive body. Draped in a flowing ermine mantle with white fur and dark spots across the shoulders. Around the neck hangs a thick gold chain with large links. Each of the three heads wears a small but ornate gold crown catching light. Front claws visible in an aggressive stance, partially obscured by the cat's positioning."}]

 Вот что выходит, если пропустить обогащённую онлайн подсказку через локальную циклограмму для FLUX 3 Image Klein (с деактивированным самообогащением, конечно же)

Вот что выходит, если пропустить обогащённую онлайн подсказку через локальную циклограмму для FLUX 3 Image Klein (с деактивированным самообогащением, конечно же)

Никаких галлюцинаций, заметьте: тут фигурируют в описательной части и детализированы далее в формате JSON только те bbox, что заданы упомянутыми в короткой подсказке названиями рамок в треугольных скобках. Результат тоже говорит сам за себя: полученная по обогащённой через облако подсказке в ходе локальной генерации картинка — на наш взгляд — ощутимо привлекательней целиком и полностью обработанной на нашей картофелине. Ничего лишнего не прибавлено; заданная композиция в целом выдержана.

 Другое значение затравки (seed), разные соотношения сторон: слева — 1:1, справа — 3:2

Другое значение затравки (seed), разные соотношения сторон: слева — 1:1, справа — 3:2

Теперь покажем, как эту обогащённую подсказку можно применять для изменения композиции кадра. Кот у нас в данном случае располагается в рамочке, заданной координатами [200, 150, 900, 500], и, если вместо квадратного холста взять прямоугольный (3:2, скажем), оставив подсказку без изменений, он так и будет занимать почти всю левую половину кадра (горизонтальная координата правой границы его рамки — 500). Сдвинем его левее, оставив обогащённую подсказку целиком прежней и изменив только координаты bbox кота: вместо [200, 150, 900, 500] — [200, 100, 900, 400]. Значение seed тоже сохраним.

 Здесь снова другая затравка (одна и та же для обеих генераций), но для картинки справа рамка, содержащая кота, была чуть уменьшена по высоте — изменением координат её bbox в обогащённой онлайн подсказке с [200, 100, 900, 400] на [400, 100, 900, 400]; всё прочее содержимое подсказки оставлено прежним

Здесь снова другая затравка (одна и та же для обеих генераций), но для картинки справа рамка, содержащая кота, была чуть уменьшена по высоте — изменением координат её bbox в обогащённой онлайн подсказке с [200, 100, 900, 400] на [400, 100, 900, 400]; всё прочее содержимое подсказки оставлено прежним

Различия в деталях есть: объект не сместился на новое положение, оставаясь в полной неизменности, а чуть преобразился. Но это всё-таки существенно более тонкий чисто текстовый контроль над композицией, чем тот, что допускают модели без интеграции bbox-функциональности.

Впрочем, и это ещё не всё, чем онлайновое обогащение привлекательней локального! Вернёмся к длинной системной инструкции для обработки подсказок с рамочками (вторая стена текста внутри свёртки «Prompt Upsampler») и обратим внимание на второй её абзац:

Planning: keep every explicit subject, attribute, count, spatial constraint, style cue and piece of wording, and decide everything left open as ONE concrete composition that the caption and the table both describe. Without a stated style plan an actual photograph and open with the medium convention ("Full-color outdoor photograph, ...", "Studio photograph, ..."); add camera optics only when asked for; do not invent names, brands, logos or celebrities; drop appraisal and sales vocabulary. If any instructions in the user's short request require clarification, use web search. If the user's short request requires solving a creative task—for example, suggesting the inclusion of a title or text in an image without specifying exactly what it should be—use the "reasoning" mode to come up with a suitable title or text, based on the clues provided in the prompt.

Выделенная курсивом половина этого абзаца отсутствовала в исходном варианте, предложенном BFL; это наших рук дело. Мы дополнили этап планирования рекомендацией онлайновой модели-обогатителю смело обращаться к веб-источникам для прояснения любых вопросов, которые могут возникать у неё в процессе обработки, а также дали команду самостоятельно конкретизировать общие указания оператора. Ну, скажем, если в подсказке фигурирует «название» некоего объекта, это название модели-обогатителю же и следует придумать.

 Два варианта генерации рекламной полосы галлона духов с локальной моделью Klein 2 Turbo: флакон действительно хорош, и крупный текст ничего, но в мелком уже есть огрехи, да и что такое bbox, модель явно не понимает, — выводит названия рамок, отчаянно при этом галлюцинируя

Два варианта генерации рекламной полосы галлона духов с локальной моделью Klein 2 Turbo: флакон действительно хорош и крупный текст ничего, но в мелком уже есть огрехи, да и что такое bbox, модель явно не понимает, — выводит названия рамок, отчаянно при этом галлюцинируя

Зачем это нужно? А вот зачем. Сформулируем самый общий запрос на рекламный плакат (читатели «Мастерских», в которых описывалась рабочая среда Unsloth, наверняка припомнят, откуда взялся этот объект):

Профессиональное промофото на журнальную полосу (вертикальная композиция, соотношение сторон 2:3) огромного флакона (1 галлон) исландских духов. На фоне <background_1> - характерный для Исландии пейзаж с ледником на фоне арктического моря и трогательными низенькими деревцами; сам флакон <bottle_1> выполнен в виде прихотливой глыбы льда. В верхней части изображения - броское, привлекательное название духов <name_1> крупным шрифтом, стилизованным под руническое письмо, по-исландски; пониже, чуть помельче, - его перевод на английский. Справа внизу блок текста <text_1> с рекламным слоганом и примечанием об отказе от ответственности в случае применения духов не по назначению (ироничный, пародийный тон).

Это вам не «жёлтый кубик на красном щарике у зелёной стены»; тут перед генеративной моделью ставится задача самостоятельно предложить название продукта и его слоган, подобрать подходящий шрифт, да ещё и составить небольшое описание — не говоря уже о том, что ей бы, по-хорошему, стоило и к реальным фото Исландии обратиться, чтобы изобразить фон запрошенной картинки должным образом. Как с этой задачей справилась бы локальная Qwen3.5-9B, да ещё при отключённом «reasoning» и без доступа к Сети, мы даже проверять не станем. А вот что предложила GPT-6 Luna, когда ей скормили обогатительную инструкцию с расширенным абзацем «Planning» и с той короткой подсказкой, что приведена выше:

Professional promotional photograph for a magazine page in a vertical 2:3 composition, with a monumental one-gallon perfume bottle <bottle_1> shaped like an intricate block of ice against an Icelandic landscape <background_1> of glacier, Arctic sea, and low-growing trees. Cool northern light brings out the bottle’s crystalline facets. Across the top, a bold Icelandic perfume name <Is_Text_1> appears in large rune-inspired lettering, with its English translation <En_Text_1> just below in smaller type. A compact advertising copy block <En_Text_2> sits at the lower right, combining an ironic slogan and misuse disclaimer.

[{"id":"background_1","bbox":[0,0,1000,1000],"desc":"Icelandic landscape with a glacier of blue-white ice, a dark Arctic sea, rocky shore, and scattered low, hardy trees with muted green and brown foliage beneath a pale overcast sky."},{"id":"bottle_1","bbox":[220,300,790,780],"desc":"Monumental one-gallon perfume bottle shaped as an intricate, irregular block of translucent ice, with curling crystalline ridges, sharp facets, frosted edges, and pale blue-white highlights; a sculptural glass stopper echoes the jagged ice form."},{"id":"Is_Text_1","bbox":[75,65,170,925],"desc":"Large, prominent Icelandic title text reading \"Andi jökulsins\", set in bold, angular rune-inspired lettering in deep charcoal, with clear legible letterforms."},{"id":"En_Text_1","bbox":[270,175,325,730],"desc":"Smaller English translation text reading \"Spirit of the Glacier\", set in clean, restrained sans-serif lettering in deep charcoal."},{"id":"En_Text_2","bbox":[775,700,955,965],"desc":"Compact advertising copy in small but readable sans-serif type, with the exact wording: \"A little frost. A lot of presence.\\nFor external use only. Do not drink, bathe in it, or attempt to summon a glacier. We accept no liability for misuse.\" "}]

 Первые две картинки сгенерированы локально FLUX 3 Image Klein с разными затравками: видно, модель старается, но стилизовать шрифт заголовка под руны никак не хочет. Справа же — онлайн-генерация по всё той же обогащённой GPT-6 Luna подсказке, но созданная GPT Images 2.5 Sumburst: эта модель с bbox тоже умеет работать

Первые две картинки сгенерированы локально FLUX 3 Image Klein с разными затравками: видно, модель старается, но стилизовать шрифт заголовка под руны никак не хочет. Справа же — онлайн-генерация по всё той же обогащённой GPT-6 Luna подсказке, но созданная GPT Images 2.5 Sumburst: эта модель с bbox тоже умеет работать

Название на обоих языках, слоган, ироничное примечание — всё на месте! Не уровень прожжённых акул маркетинга, быть может, но уж точно куда больше впечатляет, чем то, на что способна полностью локальная модель. У той может быть масса своих достоинств, это факт, — но в преобразованиях text-to-image онлайновые нейросети со всей очевидностью дают исполняемым на ПК энтузиастов сто очков вперёд.

Впрочем, пока не время окончательно сбрасывать FLUX 3 Image Klein со счетов: у неё ведь, как заявляет разработчик, имеются ещё и богатейшие возможности image-to-image — редактирования и комбинирования уже готовых изображений. Вот с ними в следующий раз и разберёмся!

Было интересно? Скажите об этом Google, чтобы чаще получать ссылки на наши новости про мастерская
 
 
⇣ Содержание
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
⇣ Комментарии
Прежде чем оставить комментарий, пожалуйста, ознакомьтесь с правилами комментирования. Оставляя комментарий, вы подтверждаете ваше согласие с данными правилами и осознаете возможную ответственность за их нарушение.
Все комментарии премодерируются.
Комментарии загружаются...

window-new
Soft
Hard
Тренды 🔥
«Лаборатория Числитель» выпустила платформу «Штурвал ML/AI» для ML- и AI-нагрузок в Kubernetes 29 мин.
Роботов с ИИ оказалось легко обмануть: искажённая картинка заставляет их легко выполнять опасные команды 4 ч.
Тестирование шутера Fragmentary Order от создателя Escape from Tarkov стартует в декабре — раскрыты системные требования альфа-версии 24 ч.
Новая статья: Cairn — госпожа горных дорог. Рецензия 24 ч.
Новая статья: Gamesblender № 801: песчаная TES VI: Sentinel, новый шутер Джона Ромеро и Xbox в крокодиле 07-11 23:37
У клавиатуры iPhone нашёлся список из 100 тыс. запретных слов — но набирать их всё равно можно 07-11 15:14
Просто деньги очень нужны: Anthropic не откажется от IPO на фоне биржевого обвала 07-11 15:06
Китайский ИИ почти догнал секретную модель OpenAI во взломе сетей — и оказался дешевле 07-11 13:59
Ноябрьские игровые релизы грозят опустошить офисы — сотрудники массово берут выходные 07-11 09:47
Новая статья: Stygian: Outer Gods — лавкрафтианский кошмар. Опять. Рецензия 07-11 00:07
Nokia: к 2035 году на долю ИИ придётся почти половина мирового сетевого трафика 4 мин.
К европейской суперкомпьютерной программе EuroHPC JU присоединилась Канада 12 мин.
Старые, неэкологичные авиадвигатели всё более востребованы для электропитания ИИ ЦОД в США 07-11 23:42
Расследование показало, что США разрешили закупать чипы Nvidia несуществующим китайским компаниям 07-11 21:41
Synology выпустила двухконтроллерную СХД PAS3600 на 12 накопителей SATA 07-11 16:04
Huawei представила насквозь китайский ПК — от процессора до блока питания и ОС 07-11 13:39
Дорогая память не помогла: биржевой обвал спутал планы китайской YMTC по IPO 07-11 13:28
Умные очки Samsung и Warby Parker будут доступны для предзаказа с 12 ноября 07-11 13:22
CPS PCCooler — семейство кулеров, СЖО, корпусов и БП для самых мощных рабочих станций 07-11 11:19
Конкурент Starlink анонсировал собственную ракету — первый запуск намечен на 2028 год 07-11 10:33