Вы когда-нибудь пытались прогнать 40-мегапиксельный портрет через диффузионную модель и получили на выходе не шедевр, а лоскутное одеяло? Знакомо. Видеокарта задыхается, память заканчивается на 18-м слое, и единственный выход — резать исходник на тайлы. А потом на стыках вылезают эти проклятые швы: то полоска артефакта, то резкий перепад яркости, то текстура разъезжается, будто фото склеили из разных миров.
Проблема стара как мир, но с приходом генеративных моделей она обострилась до предела. Если старые методы (простое усреднение пикселей на границе) работали с классическими алгоритмами, то диффузия плодит абсолютно новые текстуры в каждом тайле — склеить их незаметно становится квестом.
Я перепробовал всё: от костылей в Photoshop до самописных скриптов. И да, я тот самый человек, который учил нейросеть физике плёнки, а не просто размывать шум. Поэтому когда дело доходит до тайлов, я знаю, о чём говорю. Сегодня разберём три подхода, которые реально работают. Никакой магии — только алгоритмы.
Подход первый: Feathering с перекрытием 30% и маской прозрачности
Самый очевидный, но дьявол в деталях. Идея: нарезать тайлы с перекрытием (overlap), обработать каждый, а потом смешать в зоне перекрытия с весовой маской, которая плавно уводит в ноль на краях. Проблема в том, что диффузионные модели ненавидят резкие границы — если маска сделана топорно, шов останется, просто станет размытым.
Правильный feathering — это когда ты не просто линейно интерполируешь, а используешь синусоидальную или гауссову функцию спада. Ещё важнее: обрабатывай каждый тайл с дополнительным контекстом за пределами области, которая войдёт в финальное изображение. Профессионалы называют это "расширенной областью интереса" — я называю "дать нейросети подышать".
На практике: если тайл 512x512, бери перекрытие 128 пикселей (примерно 30%) и маску с плавным переходом шириной 64 пикселя. Только так граница перестаёт быть заметной. Кстати, именно этот принцип я использовал, когда восстанавливал старые фотографии через RealRestorer — без нормального перекрытия модель начинала галлюцинировать на стыках.
Ловушка: если перекрытие меньше 20%, никакой feathering не спасёт — нейросеть не успеет "запомнить" контекст, и на границе возникнет разрыв смысла. Проверено на собственных шишках.
Подход второй: Context-aware padding с динамическим оффсетом
Это уже хардкор. Идея в том, чтобы перед тем, как скормить тайл нейросети, дорисовать ему недостающий контекст вокруг — не просто отзеркаливанием (это даёт артефакты на краях), а с помощью лёгкой предобработки самой диффузионной моделью. Ты как бы "наращиваешь" границы, используя ту же модель, но с меньшим шагом.
Звучит как колдунство, но работает. Берёшь тайл, обрабатываешь его с небольшим увеличением (скажем, 110% от размера), потом возвращаешься к исходному кадрированию, но уже с плавным контекстом. Многие библиотеки вроде diffusers в версии 0.32+ (на апрель 2026 — это уже стабильный релиз с кучей фиксов) поддерживают аргумент padding_mode, который как раз отвечает за такую вещь. Жаль, что по умолчанию там стоит "zero" — и получаются чёрные рамки, которые нейросеть интерпретирует как часть изображения. Переключи на "reflect" или "circular" — уже легче, но лучше всего — "replicate" с последующим feathering.
Я лично использую комбинацию: сначала padding с отражением, затем на каждый тайл добавляю случайный сдвиг (динамический оффсет) в пределах нескольких пикселей. Это ломает периодичность швов и делает их визуально незаметными. Метод подсмотрел у ребят из Photoroom, которые тренировали text-to-image модели с нуля — у них ablation-исследования показали, что даже 2-3 пикселя джиттера на границах тайлов радикально снижают заметность стыков.
Подход третий: Multi-pass consistency через усреднение разных seed
Самый радикальный и одновременно самый надёжный. Вместо того чтобы обрабатывать каждый тайл один раз и трястись над швами, ты прогоняешь всё изображение целиком... нет, не целиком — тайлами, но несколько раз с разными начальными шумами (seeds) и разными оффсетами сетки тайлов. Потом усредняешь результаты.
Почему это работает? Потому что каждый проход создаёт артефакты в своих местах — швы случайным образом смещаются. При усреднении 3-5 проходов швы просто теряются в шуме, а стабильные детали (лицо, текстура ткани) остаются. Единственный минус — время. Пять проходов по 512x512 тайлам на 40-мегапиксельном снимке — это час работы на RTX 4090. Но если качество важнее скорости, терпите.
Кстати, это отличный пример того, как работает механика RepE — хак активаций нейросети для подавления галлюцинаций. Только здесь мы хакерм не активации, а пространственную когерентность через множество семплов. Если добавить к этому ещё и feathering из первого подхода — результат будет близок к коммерческому качеству студийной ретуши.
| Подход | Сложность реализации | Время обработки (40 Мп) | Качество устранения швов | Рекомендуемый overlap |
|---|---|---|---|---|
| Feathering + маска | Средняя | ~15 мин | Хорошо (видно при зуме 200%+) | 30% |
| Context-aware padding + оффсет | Высокая | ~20 мин | Отлично (почти незаметно) | 15-20% |
| Multi-pass consistency | Очень высокая | ~1 час (3-5 проходов) | Превосходно (швы отсутствуют) | 25% (можно меньше) |
Лично я для коммерческих заказов использую третий подход, но с одним твиком: вместо полного усреднения беру медиану по 3 проходам — она отсекает выбросы (вдруг в одном проходе нейросеть нарисовала лишнюю родинку на носу). Медиана сохраняет детализацию даже лучше, чем среднее арифметическое. Об этом мало кто говорит, но я заметил это случайно, когда разбирался с детектором AI-фото от Wildberries — медианный фильтр на удивление хорошо отличает реальные текстуры от сгенерированных.
А что насчёт железок?
Все подходы требуют как минимум 16 ГБ VRAM для работы с тайлами 1024x1024. На 40-мегапиксельных фото (примерно 7300x5500 пикселей) оптимальный размер тайла — 1024x1024 с перекрытием 256 пикселей. Если у вас 12 ГБ — придётся резать на 768x768, но качество может пострадать. Кстати, модели на базе FLUX, например FLUX.2-dev-Turbo за 8 шагов, отлично работают с тайлами — турбо-версии меньше галлюцинируют на границах из-за сокращённого числа шагов денойзинга.
Ещё один лайфхак: перед тайловой ретушью сожмите фото до 20-25 Мп, обработайте, а потом наложите результат на оригинал с помощью AI-апскейла. Так вы сэкономите время, а швы будут только на промежуточном слое, который легко маскируется. Но это уже не про чистую нейросеть, а про гибридный пайплайн — выбор инструмента для генерации тут решает всё.
Бонус-совет от старого ретушёра: если после всех ухищрений шов всё ещё виден — не надо лепить на него шум или размытие. Просто сделайте content-aware fill на границе, но не в самом Photoshop, а с помощью той же нейросети, только с промптом "remove seam, smooth transition". Работает в 90% случаев.
В любом случае, запомните главное: ни один алгоритм не заменит правильного исходного промпта или предварительной подготовки. Если вы скармливаете модели пережатый JPEG с артефактами — швы будут последним, о чём стоит беспокоиться. Сначала доведите до ума сам исходник, а потом уже боритесь со стыками.
Вместо заключения: дерзкий прогноз
Через год-два проблема швов исчезнет сама собой — модели научатся работать с произвольным разрешением без тайлов (уже есть наработки вроде Infinite Context в Imagen 4). Но пока этого не случилось, осваивайте multi-pass и не забывайте про оффсет. А если всё надоело — просто снимите на среднеформатную камеру с разрешением 100 Мп и забудьте про нейросети. Шутка. Или нет?