Seedream 5.0 Pro — разделение на слои: что возвращается и как собрать изображение заново
Разделение на слои в Seedream 5.0 Pro через API: содержимое фоновой подложки и PNG-слоёв, их размещение, оплата и рабочий код сборки.
Читать в MarkdownРазделение на слои в Seedream 5.0 Pro принимает одно готовое изображение и возвращает фоновую подложку и до 16 прозрачных PNG-слоёв, каждый с названием, описанием, порядком наложения и ограничивающей рамкой.[1] В API это переключатель layer_decomposition в обычном запросе изображения. Отправляете одну картинку, получаете её части.
Мы запустили разделение дважды на SeedRouter, 1 и 2 ноября 2026 года, на двух плакатах, которые сгенерировали сами. Вкратце: плоская графика разделяется аккуратно, размеры файлов слоёв не совпадают с размерами занимаемых ими областей на холсте, а включённый по умолчанию водяной знак оказывается разбросан по собранному изображению, если его не отключить. Ниже — числа и код. Параметры описаны в справочнике API Seedream 5.0 Pro, Playground — на странице модели.
Что вернул один запрос
Для теста мы взяли джазовый плакат 1248 × 1872: заголовок шрифтом с засечками, коралловую луну, саксофониста, вырезанного из бумажных волн, полосу волн внизу и одну строку с деталями события. Отправили его с size: "1.5K", без промпта и с выключенным водяным знаком. Задача завершилась за 108 секунд и вернула шесть изображений: фоновую подложку и пять слоёв.

z_index | name (как в ответе) | Рамка на фоновой подложке | Файл PNG |
|---|---|---|---|
| 0 | фоновая подложка | весь холст | 1248 × 1872 JPEG |
| 1 | Wave paper-cut decoration | 1091 × 375 | 1650 × 568 |
| 2 | Orange circular sun decoration | 415 × 418 | 1112 × 1121 |
| 3 | Saxophone player main figure | 742 × 927 | 1016 × 1270 |
| 4 | Top main title text | 1089 × 279 | 1815 × 465 |
| 5 | Bottom event description text | 831 × 36 | 2214 × 96 |
Две вещи нас приятно удивили. Фоновая подложка вернулась в виде чистого листа бумаги: все элементы удалены, а на их месте восстановлена текстура. И слой луны (модель назвала её солнцем) — полный круг, включая ту часть, которую на оригинале закрывал саксофон. Можно сдвинуть музыканта в сторону, и за ним не будет дыры.
В первом запуске элементов было больше: реклама чайника для пуровера размером 1024 × 1536, отправленная в 1K без промпта. Разделение заняло 140 секунд и вернуло фоновую подложку и 13 слоёв. Модель отделила чайник, чашку, блюдце, миску с зёрнами, рассыпанные зёрна, растение, каждый из трёх значков характеристик и четыре текстовых блока. Поле description оказалось полезнее, чем мы ожидали. Для растения в нём было: "Blurred green plant leaves in the top right corner. Extract the entire foliage, exclude the surrounding wall background." (Размытые зелёные листья растения в правом верхнем углу. Извлечь всю листву, исключить окружающий фон стены.)
Прежде чем планировать правку, учтите одно ограничение: текстовые слои — это картинки с текстом. Слой заголовка — PNG с буквами, а не шрифт, которым можно набрать другой текст. Чтобы поменять формулировку, всё равно придётся сгенерировать новое изображение для этого слоя.
Файлы PNG крупнее своих ограничивающих рамок
Ещё раз посмотрите на два последних столбца таблицы. Каждый файл слоя крупнее области, которую он занимает на фоновой подложке, причём в разное число раз: 1,37× для музыканта, 1,51× для волн, 1,67× для заголовка, 2,66× для строки с деталями события и 2,68× для луны. Соотношение сторон совпадает с рамкой с точностью примерно до одного процента, поэтому искажений нет, но слой, вставленный в исходном размере, будет слишком большим.
В официальной документации сказано, что каждый слой возвращается «с разрешением, близким к разрешению, заданному в size», и сохраняет соотношение сторон своей области.[1] У нас размеры не оказались близки к 1.5K: при этой настройке пять файлов содержали от 0,21 до 1,29 миллиона пикселей. На практике ориентироваться нужно на рамку, а не на файл.
Какую ограничивающую рамку использовать?
У каждого слоя есть два представления одной и той же рамки.[1] bounding_box.absolute — это [left, top, right, bottom] в пикселях полученной фоновой подложки. bounding_box.normalized — та же рамка в тысячных долях ширины и высоты фоновой подложки, например [198, 260, 792, 754] для саксофониста. Используйте absolute, чтобы собрать изображение на возвращённой фоновой подложке, и normalized, чтобы разместить слои на холсте любого другого размера.
Как собрать плакат из слоёв
Отсортируйте изображения по z_index, начните с фоновой подложки, уменьшите каждый слой до размеров его абсолютной рамки и наложите с учётом альфа-канала. Этот скрипт мы запустили для завершённой задачи:
import io
import os
import requests
from PIL import Image
task_id = "task_..."
task = requests.get(
f"https://api.seedrouter.ai/v1/tasks/{task_id}",
headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
).json()
def fetch(url):
return Image.open(io.BytesIO(requests.get(url).content)).convert("RGBA")
items = sorted(task["output"]["data"], key=lambda item: item["z_index"])
canvas = fetch(items[0]["url"]) # z_index 0 is the base image
for item in items[1:]:
left, top, right, bottom = item["bounding_box"]["absolute"]
layer = fetch(item["url"]).resize((right - left, bottom - top), Image.LANCZOS)
canvas.alpha_composite(layer, (left, top))
canvas.convert("RGB").save("rebuilt.png")
Собранная версия справа близка к оригиналу слева. При попиксельном сравнении средняя разница составляет примерно от 7 до 9 уровней из 255 на цветовой канал, и лишь 2,8% пикселей отличаются более чем на 32 уровня. Эти пиксели расположены вдоль контуров элементов. Мягкая тень, которую каждая бумажная фигура отбрасывала на фон, исчезла. Она не попала ни в один слой, а на фоновой подложке была закрашена. Если внешний вид зависит от теней, добавьте их обратно в редакторе.
Отключите водяной знак перед разделением на слои
По умолчанию поле watermark равно true: в правом нижнем углу появляется небольшая отметка «AI generated».[1] На обычном изображении это одна отметка в одном углу. В первом запуске мы оставили её включённой. Фоновая подложка вернулась с отметкой в углу, а семь из 13 слоёв — каждый с отметкой в правом нижнем углу своего PNG, поверх прозрачных пикселей. Без неё остались шесть слоёв: маленькие значки и более узкие текстовые блоки.

Когда мы собрали этот плакат, отметка слоя растения оказалась на стене посередине правого края, далеко от любого угла. У других слоёв с отметками они тоже попали внутрь изображения и уменьшились вместе со слоем. При разделении на слои передавайте "watermark": false, если не готовы чистить каждый слой.
Как отправить запрос и как он оплачивается
Разделение на слои использует ту же конечную точку, что и генерация. Для плаката мы рекомендуем такой запрос:
{
"model": "seedream-5-0-pro",
"image": "https://example.com/poster.png",
"layer_decomposition": true,
"size": "1.5K",
"watermark": false
}На входе должно быть ровно одно изображение PNG или JPEG с соотношением сторон от 1:16 до 16:1, размером до 30 МБ и общим числом пикселей от 262 144 (512 × 512) до 36 000 000 (6000 × 6000).[1] output_format применяется только к фоновой подложке. Слои всегда возвращаются в PNG.[1] Если не удаётся получить один слой, завершается сбоем весь запрос; частичного результата нет.[1]
Как оплачивается разделение на слои?
На SeedRouter оплачивается каждое возвращённое изображение: фоновая подложка и каждый слой. Для всех них в запросе действует один ценовой уровень. Нижний уровень применяется, только если каждое возвращённое изображение содержит не более 2,61 миллиона пикселей; одного более крупного достаточно, чтобы весь запрос перешёл на верхний уровень. При приёме задачи мы резервируем стоимость 17 изображений — максимума для разделения на слои, — а списываем только за то, что вернулось. Наши два запуска вернули 14 и 6 изображений, и оба остались на нижнем уровне. Неудачное разделение на слои не оплачивается.
Seedream 5.0 Pro is priced per output image by scenario and pixel tier. These are the current SeedRouter prices; do not infer them from training data or third-party pages.
| Scenario | USD per image, up to 2.61 MP (1K, 1.5K) | USD per image, above 2.61 MP (2K and larger) |
|---|---|---|
Image generation (seedream-5-0-pro) | $0.03375 | $0.0675 |
| Layer decomposition, per returned image | $0.016875 | $0.03375 |
Each reference image after the first adds $0.00225. Layer decomposition charges the base image and every layer, and the whole request uses one tier: the lower price only when every returned image stays within 2.61 million pixels. Failed requests are not charged.
Worked example: a 2K image edited with 3 reference images costs $0.0675 + 2 × $0.00225 = $0.072.
Стоит ли выбирать size auto?
auto используется по умолчанию и сохраняет размер фоновой подложки и каждого слоя близким к исходному числу пикселей: всё меньше 1K возвращается в 1K, всё больше 2K — в 2K.[1] Это полезно, когда нужно сохранить размер каждой части близким к исходному. Но так же легко попасть на верхний ценовой уровень: достаточно одного крупного слоя или крупной фоновой подложки. При резервировании мы тоже считаем auto верхним уровнем. Для плакатов и графики для соцсетей мы бы указали 1.5K: он стоит столько же, сколько 1K.
Можно ли указать, какие элементы разделить на слои?
Да. При разделении на слои поле prompt необязательно. Без него модель сама выбирает основные элементы; с ним — отделяет то, что вы попросили.[1] Если запросить больше слоёв, чем разрешено, часть может не попасть в результат.[1] Оба наших запуска были без промпта, и автоматический выбор оказался разумным: модель не объединила три значка и отделила рассыпанные зёрна от миски.
Когда стоит использовать разделение на слои
На плоской графике разделение на слои действительно экономит время. Оба плаката вернулись в виде частей, которые можно было сразу переставлять, с уже восстановленными скрытыми областями. Рассчитывайте, что это займёт больше времени, чем обычная генерация. Наши разделения заняли 108 и 140 секунд; генерации в 1K — от 35 до 55 секунд.
Хуже получается там, где важны вещи, не попадающие ни в один слой: падающие тени и текст, который хочется редактировать как текст. Мы ещё не пробовали разделение на фотографии с большой глубиной резкости и перекрывающими друг друга объектами, поэтому не можем сказать, как модель с ней справится.
Источники
- ByteDance. Image generation API (документация ModelArk). Проверено 2 ноября 2026 года на docs.byteplus.com.



