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 может применять маску раньше:
- при подготовке зашумлённого латента;
- на каждом шаге sampling;
- при формировании masked image;
- в attention или conditioning;
- при финальном композитинге.
Из-за этого два пайплайна с одной PNG-маской не обязаны дать одинаковую границу.
Маска не задаёт содержание
Белый силуэт лейки не сообщает модели, что на её месте должна появиться корзина. Содержание приходит из prompt, референса, окружающих пикселей и других условий.
Маска решает три более узких вопроса:
- где разрешена операция;
- насколько сильно она действует;
- как плавно она переходит в защищённую область.
Если область слишком мала, модели не хватает пространства построить новый объект. Если слишком велика, она получает свободу изменить соседние детали и освещение.
Граница: grow, shrink и blur
Самая заметная проблема локальной правки — шов по контуру. Его характер зависит от масштаба объекта, разрешения, VAE, denoising strength и самого содержимого.
Grow
Расширение маски захватывает контекст вокруг удаляемого объекта. Это полезно, когда старый контур, тень или отражение остаются сразу за исходной границей.
Shrink
Сужение оставляет часть края под защитой. Приём подходит для внутренней правки, но способен сохранить нежелательный ободок старого объекта.
Blur или feather
Размытие создаёт серый переход. Слишком жёсткая граница бывает заметна, а слишком широкая меняет детали далеко за объектом. Универсального радиуса нет: он должен соотноситься с размером изображения и шириной реального перехода.
Для волос, меха, дыма и полупрозрачной ткани полезнее мягкая маска сложной формы. Для геометрической вставки с резким краем может подойти почти бинарная.
Почему защищённая область иногда меняется
Чёрная зона не всегда остаётся побитно идентичной оригиналу. Возможные причины:
- весь кадр проходит через VAE encode/decode;
- изображение и маска ресайзятся;
- sampler обновляет общий латент;
- постобработка меняет цвет или резкость;
- маска интерполируется и получает серые значения;
- финальный композит не возвращает оригинальные пиксели.
Если пиксельная неизменность критична, после генерации исходную защищённую область накладывают обратно по точной маске. Тогда модель отвечает за новую зону, а окончательный композит — за сохранение остального кадра.
Размер и ресайз
Маска должна совпадать с геометрией изображения: тот же размер, ориентация, crop и координаты. Даже небольшое смещение оставит край старого объекта или заденет соседний.
При изменении размера важен способ интерполяции:
- nearest neighbor сохраняет жёсткую бинарную форму, но делает ступенчатые края;
- bilinear и bicubic создают промежуточные значения и смягчают контур;
- специализированный resize может учитывать семантику или морфологию.
После нескольких преобразований полезно снова проверить минимальное и максимальное значение маски: почти чёрная карта из-за ошибочного диапазона выглядит правильно на глаз, но даёт очень слабый эффект.
Маска и альфа-канал
Альфа-канал хранит прозрачность изображения. Маска хранит управляющий сигнал. Иногда маску передают именно через alpha PNG, но значения получают смысл только после того, как нода или API прочитали их как mask.
Один и тот же alpha может означать:
- прозрачность при композитинге;
- область удаления;
- область сохранения;
- вес локального эффекта.
Поэтому фраза «маска лежит в альфе» описывает место хранения, а не поведение операции.
Где используются маски
Inpainting
Ограничивает область удаления, замены или восстановления деталей.
Outpainting
Отмечает новую область расширенного холста и, при необходимости, полосу перекрытия со старым кадром.
Regional prompting
Распределяет разные условия по частям изображения. Области могут перекрываться, а веса — суммироваться или нормализоваться по правилам конкретной реализации.
Локальные адаптеры и контроль
Ограничивает действие референса, LoRA, ControlNet или другого conditioning выбранным регионом, если пайплайн поддерживает маскирование.
Композитинг и постобработка
Управляет цветокоррекцией, резкостью, размытием, удалением фона и смешиванием слоёв. Здесь маска полезна даже без генеративной модели.
Откуда берутся маски
Маску можно:
- нарисовать кистью;
- получить из alpha-канала;
- построить по цвету или яркости;
- создать из глубины или сегментации;
- выделить детектором объекта;
- собрать из нескольких форм;
- перенести из редактора или системы трекинга.
Автоматическое выделение экономит время, но его край стоит проверять. Сегментация может потерять тонкие ремешки, пряди волос, отражения или прозрачные детали.
Несколько масок
В одном кадре могут действовать разные карты:
маска лица → локальная правка портрета
маска одежды → другой prompt
маска фона → отдельный контроль глубины
При пересечении областей нужно знать правило композиции. Значения могут складываться, перемножаться, брать максимум или следовать приоритету слоёв. Без явного правила перекрытие выглядит как случайный конфликт условий.
ComfyUI
В ComfyUI MASK — отдельный тип данных. Его можно визуализировать через преобразование в IMAGE, получить из канала изображения, инвертировать, размыть, расширить или передать в inpainting и conditioning-ноды.
Граф удобен тем, что маску можно проверить в любой точке. Это особенно важно после resize, crop и серии морфологических операций: превью показывает фактическую карту, которую получит следующий узел, а не исходный файл на диске.
Названия и набор встроенных нод меняются, поэтому статья опирается на типы операций, а не на конкретный список расширений.
Частые ошибки
Инвертированная полярность
Вместо объекта меняется весь фон. Решение — проверить соглашение конкретного входа и инвертировать маску при необходимости.
Слишком тесный контур
В правке остаются тень, обводка или отражение старого объекта. Маске нужен запас вокруг следов, которые тоже должны исчезнуть.
Слишком широкая мягкость
Серый градиент задевает лицо, текстуру или цвет далеко от объекта. Размытие соотносят с реальным масштабом края, а не копируют из чужого workflow.
Несовпадающий crop
Изображение обрезали, а маску — нет. Формально размеры могут совпасть после resize, но координаты уже описывают разные сцены.
Повторное JPEG-сжатие
Маска с артефактами вокруг контраста получает нежелательные серые пиксели. Для карт управления лучше использовать формат без потерь.
Ожидание полной изоляции
Маска ограничивает выбранную операцию, но не обязательно весь пайплайн. VAE, апскейл и цветокоррекция могут затронуть полный кадр.
Частые вопросы
Какой формат подходит для маски?
Одноканальный PNG или PNG с подходящим alpha-каналом — частый вариант. Важнее не расширение, а диапазон значений, полярность и совпадение геометрии.
Серый всегда означает прозрачность?
Нет. В маске серый обычно означает промежуточный вес операции. Как этот вес используется, решает конкретная нода или pipeline.
Нужна ли специальная inpainting-модель?
Некоторые модели обучены получать исходное изображение и маску как дополнительные входы и лучше понимают границу. Другие пайплайны смешивают обычную модель с исходным латентом. Поддержка зависит от архитектуры.
Можно ли редактировать только маленький объект?
Да, но модели может не хватать эффективного разрешения. Часто область с запасом вырезают, увеличивают для правки и затем возвращают в исходный кадр по маске.
Чем mask отличается от crop?
Crop меняет рабочую геометрию и оставляет только прямоугольник. Маска сохраняет весь кадр, но задаёт разные веса внутри него. Эти техники часто используют вместе.
Как сохранить остальную картинку точно?
После генерации наложить исходные пиксели обратно в защищённой области. Это отделяет генеративную правку от финальной гарантии композитинга.
Главное
Mask — это карта весов, а не просто чёрно-белый рисунок. Она определяет область и силу локальной операции, помогает смешать границу и связывает генерацию с обычным композитингом.
Белое часто означает «изменять», чёрное — «сохранять», но полярность зависит от инструмента. Надёжный workflow проверяет фактическую маску после всех преобразований и, если нужна пиксельная точность, возвращает защищённую часть оригинала на финальном композите.