Mask
mask — карта области и силы локальной операции
Mask — одноканальная карта, которая задаёт, где операция действует полностью, частично или совсем не действует. В inpainting маска ограничивает область перерисовки, в regional conditioning — область влияния условия. Значения, полярность и способ смешивания зависят от конкретного инструмента.
Коротко
Mask — это карта области и силы операции. В одном месте она разрешает полную правку, в другом защищает изображение, а промежуточными значениями создаёт плавный переход. Часто белое означает «изменять», а чёрное — «сохранять», но некоторые инструменты используют обратную полярность.
На инфографике рядом с девушкой и котом стоит оранжевая лейка. Белый силуэт маски покрывает только её. После локальной генерации на том же месте появляется корзина цветов, а остальной кадр сохраняется. Маска не описывает, что нарисовать; она говорит, где и насколько сильно действует правка.
Как устроена маска
В простом случае маска — одноканальное изображение с теми же шириной и высотой, что у исходника. Каждый пиксель хранит управляющее значение. Некоторые операции используют его как вес, другие сначала превращают карту в бинарную.
0.0 — операция не действует
0.5 — промежуточный вес, если операция поддерживает мягкую маску
1.0 — операция действует полностью
Файл может показывать эти значения как чёрный, серый и белый. В памяти маска чаще представлена тензором с числами в диапазоне от нуля до единицы. Конкретная форма тензора зависит от библиотеки и наличия batch-измерения.
Есть два основных типа:
- бинарная маска содержит только включённые и выключенные пиксели;
- мягкая маска использует промежуточные значения на границе или внутри области.
Мягкость не обязана быть только по краю. Например, градиентная маска способна постепенно усиливать эффект слева направо.
Белое и чёрное
В распространённых inpainting-пайплайнах белая область перерисовывается, а чёрная сохраняется. Но это соглашение, а не закон природы. Редактор, нода или API может принимать маску сохранения, где смысл цветов обратный.
Поэтому надёжнее думать не «белое всегда меняется», а так:
значение маски → вес операции
Перед длинным рендером полезно посмотреть превью маски или сделать короткую проверку на заметной области. Если меняется фон вместо объекта и проблема именно в полярности, поможет инверсия. Смещение или неверный размер карты она не исправит.
Что происходит в inpainting
Упрощённая финальная формула выглядит так:
result = mask × generated + (1 − mask) × original
При маске 1 берётся новый пиксель, при 0 — исходный, а промежуточное значение смешивает оба. Эта формула хорошо объясняет идею, но реальный inpainting может применять маску раньше:
- при подготовке зашумлённого латента;
- на каждом шаге генерации;
- при подготовке изображения с закрытым участком;
- в attention или conditioning;
- при финальном композитинге.
Из-за этого две схемы с одной PNG-маской не обязаны дать одинаковую границу. Например, подготовка входа может округлить мягкие значения до нуля и единицы; тогда серый край не сохранит смысл плавного смешивания на этом этапе.
Маска не задаёт содержание
Белый силуэт лейки не сообщает модели, что на её месте должна появиться корзина. Содержание приходит из промпта, референса, окружающих пикселей и других условий.
Маска решает три более узких вопроса:
- где разрешена операция;
- насколько сильно она действует;
- как плавно она переходит в защищённую область.
Если область слишком мала, модели не хватает пространства построить новый объект. Если слишком велика, она получает свободу изменить соседние детали и освещение.
Граница: grow, shrink и blur
Самая заметная проблема локальной правки — шов по контуру. Его характер зависит от масштаба объекта, разрешения, VAE, denoising strength и самого содержимого.
Grow
Расширение маски разрешает менять более широкую область вокруг удаляемого объекта. Оно не заменяет настройку контекста при кадрировании. Это полезно, когда старый контур, тень или отражение остаются сразу за исходной границей.
Shrink
Сужение оставляет часть края под защитой. Приём подходит для внутренней правки, но способен сохранить нежелательный ободок старого объекта.
Blur или feather
Размытие создаёт серый переход. Слишком жёсткая граница бывает заметна, а слишком широкая меняет детали далеко за объектом. Универсального радиуса нет: он должен соотноситься с размером изображения и шириной реального перехода.
Для волос, меха, дыма и полупрозрачной ткани полезнее мягкая маска сложной формы. Для геометрической вставки с резким краем может подойти почти бинарная.
Почему защищённая область иногда меняется
Чёрная зона не всегда остаётся побитно идентичной оригиналу. Возможные причины:
- весь кадр проходит через VAE encode/decode;
- меняется размер изображения и маски;
- sampler обновляет общий латент;
- постобработка меняет цвет или резкость;
- маска интерполируется и получает серые значения;
- финальный композит не возвращает оригинальные пиксели.
Если пиксельная неизменность критична, после генерации исходную защищённую область накладывают обратно по точной маске. Тогда модель отвечает за новую зону, а окончательный композит — за сохранение остального кадра.
Размер и ресайз
Маска должна совпадать с геометрией изображения: согласованные размер, ориентация, кадрирование и координаты. Даже небольшое смещение оставит край старого объекта или заденет соседний.
При изменении размера важен способ интерполяции:
- метод ближайшего соседа сохраняет жёсткую бинарную форму, но делает ступенчатые края;
- билинейная и бикубическая интерполяция создают промежуточные значения и смягчают контур;
- специализированное масштабирование может учитывать семантику или морфологию.
После нескольких преобразований полезно снова проверить минимальное и максимальное значение маски: автоматически нормализованное превью может скрыть ошибочный диапазон. При бикубической интерполяции также возможен выход значений за исходные границы — поведение зависит от реализации.
Маска и альфа-канал
Альфа-канал хранит прозрачность изображения. Маска хранит управляющий сигнал. Иногда маску передают именно через alpha PNG, но значения получают смысл только после того, как нода или API прочитали их как маску.
Один и тот же alpha может означать:
- прозрачность при композитинге;
- область удаления;
- область сохранения;
- вес локального эффекта.
Поэтому фраза «маска лежит в альфе» описывает место хранения, а не поведение операции.
Где используются маски
Inpainting
Ограничивает область удаления, замены или восстановления деталей.
Outpainting
Отмечает новую область расширенного холста и, при необходимости, полосу перекрытия со старым кадром.
Regional prompting
Распределяет разные условия по частям изображения. Области могут перекрываться, а веса — суммироваться или нормализоваться по правилам конкретной реализации.
Локальные адаптеры и контроль
Ограничивает действие референса, LoRA, ControlNet или другого conditioning выбранным регионом, если пайплайн поддерживает маскирование.
Композитинг и постобработка
Управляет цветокоррекцией, резкостью, размытием, удалением фона и смешиванием слоёв. Здесь маска полезна даже без генеративной модели.
Откуда берутся маски
Маску можно:
- нарисовать кистью;
- получить из alpha-канала;
- построить по цвету или яркости;
- создать из глубины или сегментации;
- выделить детектором объекта;
- собрать из нескольких форм;
- перенести из редактора или системы трекинга.
Автоматическое выделение экономит время, но его край стоит проверять. Сегментация может потерять тонкие ремешки, пряди волос, отражения или прозрачные детали.
Несколько масок
В одном кадре могут действовать разные карты:
маска лица → локальная правка портрета
маска одежды → другой промпт
маска фона → отдельный контроль глубины
При пересечении областей нужно знать правило композиции. Значения могут складываться, перемножаться, брать максимум или следовать приоритету слоёв. Без явного правила перекрытие выглядит как случайный конфликт условий.
ComfyUI
В ComfyUI MASK — отдельный тип данных. Его можно визуализировать через преобразование в IMAGE, получить из канала изображения, инвертировать, размыть, расширить или передать в inpainting и conditioning-ноды.
Граф удобен тем, что маску можно проверить в любой точке. Это особенно важно после изменения размера, кадрирования и серии морфологических операций: превью показывает фактическую карту, которую получит следующий узел, а не исходный файл на диске.
У стандартной Load Image маска из альфа-канала инвертируется: прозрачный участок становится белым. Если альфа-канала нет, это не означает автоматическое выделение объекта. Для просмотра маску можно преобразовать в изображение нодой Mask to Image.
Частые ошибки
Инвертированная полярность
Вместо объекта меняется весь фон. Решение — проверить соглашение конкретного входа и инвертировать маску при необходимости.
Слишком тесный контур
В правке остаются тень, обводка или отражение старого объекта. Маске нужен запас вокруг следов, которые тоже должны исчезнуть.
Слишком широкая мягкость
Серый градиент задевает лицо, текстуру или цвет далеко от объекта. Размытие соотносят с реальным масштабом края, а не копируют из чужого workflow.
Несовпадающий crop
Изображение обрезали, а маску — нет. Формально размеры могут совпасть после изменения размера, но координаты уже описывают разные сцены.
Повторное JPEG-сжатие
Маска с артефактами вокруг контраста получает нежелательные серые пиксели. Для карт управления лучше использовать формат без потерь.
Ожидание полной изоляции
Маска ограничивает выбранную операцию, но не обязательно весь пайплайн. VAE, апскейл и цветокоррекция могут затронуть полный кадр.
Частые вопросы
Какой формат подходит для маски?
Одноканальный PNG или PNG с подходящим alpha-каналом — частый вариант. Важнее не расширение, а диапазон значений, полярность и совпадение геометрии.
Серый всегда означает прозрачность?
Нет. В маске серый обычно означает промежуточный вес операции. Как этот вес используется, решает конкретная нода или схема обработки.
Нужна ли специальная inpainting-модель?
Некоторые модели обучены получать исходное изображение и маску как дополнительные входы и лучше понимают границу. Другие пайплайны смешивают обычную модель с исходным латентом. Поддержка зависит от архитектуры.
Можно ли редактировать только маленький объект?
Да, но модели может не хватать эффективного разрешения. Часто область с запасом вырезают, увеличивают для правки и затем возвращают в исходный кадр по маске.
Чем mask отличается от crop?
Crop меняет рабочую геометрию и оставляет только прямоугольник. Маска сохраняет весь кадр, но задаёт разные веса внутри него. Эти техники часто используют вместе.
Как сохранить остальную картинку точно?
После генерации наложить исходные пиксели обратно в защищённой области. Это отделяет генеративную правку от финальной гарантии композитинга.
Главное
Mask — это карта весов, а не просто чёрно-белый рисунок. Она определяет область и силу локальной операции, помогает смешать границу и связывает генерацию с обычным композитингом.
Белое часто означает «изменять», чёрное — «сохранять», но полярность зависит от инструмента. Надёжный workflow проверяет фактическую маску после всех преобразований и, если нужна пиксельная точность, возвращает защищённую часть оригинала на финальном композите.