Проблема: Цветовой коллапс при масштабировании
Стандартное декодирование через PiD (Pixel Diffusion Decoder) обучено на диапазоне 1024→4096 пикселей. Попытка пропустить через него латент большего размера (например, 2 МП) приводит к «схлопыванию» средних тонов: белые области приобретают розовый оттенок, а хрома-шум заполняет всё изображение. Это не баг модели, а выход за пределы её «контракта» обучения.
Существующие обходные пути (тайлинг уже декодированных пикселей с последующим обратным кодированием в латент) создают потерю качества из-за двойного преобразования. Новый узел ComfyUI-Latent-Tiled-PiD предлагает иной подход: он разрезает именно генерационный латент на перекрывающиеся тайлы, декодирует каждый как самостоятельное изображение в пределах обученного диапазона, а затем мягко смешивает (feather-blend) пиксели.
Решение: Нативное тайловое декодирование
Архитектура узла гарантирует глобальную когерентность за счет:
- RoPE (Relative Positional Encoding): Так как позиционное кодирование относительно, обрезанный латент декодируется так же, как нативное изображение такого размера.
- Sigma-gated LQ injection: Поддерживает согласованность между тайлами.
- Raised-cosine feather blending: Весовые коэффициенты в зоне перекрытия суммируются ровно в 1.0. worst measured seam gradient ratio составляет 0.77–1.04, что статистически незаметно для глаза.
Производительность и метрики
Тестирование проводилось на NVIDIA RTX 5090 (32 GB) с использованием модели Krea 2 Turbo (qwen-family) и чекпоинта PiD pid_qwenimage_1024_to_4096_4step_bf16.safetensors. Масштабирование стоимости происходит линейно: примерно 1 МП готового вывода в секунду.
| Размер латента | Количество тайлов | Разрешение выхода | Мегапиксели | Статус QA |
|---|---|---|---|---|
| ~0.5 МП (1024x1024) | 1 | 4096x4096 | ≤ 16.8 | Pass |
| ~2 МП (1920x1088) | 4 (2x2) | 7680x4352 | 33.4 | Pass |
| ~3.7 МП (2560x1440) | 6 (3x2) | 10240x5760 | 59.0 | Pass |
| ~6.7 МП (3456x1944) | 8 (4x2) | 13824x7776 | 107.5 | Warning* |
* На разрешении 107 МП зафиксирован небольшой «зеленый сдвиг» в тенях (shadow green-bias delta +3.9), что чуть превышает порог нормы (±3), но визуально приемлемо. Все тесты до 59 МП проходят проверку чисто.
Как это работает в ComfyUI
Пользователю не нужно вручную рассчитывать размер тайлов. Узел Latent-Tiled PiD Size Picker содержит 53 пресета для 9 соотношений сторон. Пользователь выбирает целевое разрешение, и узел автоматически определяет количество тайлов и размер латента.
Ключевые параметры узла декодирования:
- max_tile: 1024 (граница обученного диапазона). Снижение экономит VRAM, но не меняет выходное разрешение.
- overlap: 64 пикселя (в латенте), что дает 256 пикселей перекрытия на выходе для плавного смешивания.
- degrade_sigma: 0.0 для чистых латентов. Используется только для намеренно «шумных» (early-exit) латентов.
Установка и совместимость
Решение требует ComfyUI ≥ 0.28 (лучше 0.30.1) и чекпоинты PiD от NVIDIA (лицензия: некоммерческое исследование/оценка). Python-зависимостей нет, кроме базовых библиотек ComfyUI.
Установка:
cd ComfyUI/custom_nodes
git clone https://github.com/BennyDaBall930/ComfyUI-Latent-Tiled-PiD
Для валидации качества рекомендуется использовать встроенный узел Latent-Tiled PiD QA, который сравнивает результат с обычным VAE-декодированием и выдает метрику midtone chroma delta (норма 10–15, коллапс ~30, флаг >20).
Источник: Github ↗
