ComfyUI 中基于遮罩的区域提示:完整的精密控制指南 2025
掌握 ComfyUI 中基于遮罩的区域提示,实现像素完美的多区域控制。完整的工作流、遮罩创建技术、Flux 兼容性和高级合成。

在一个客户项目中需要处理五个不规则形状的区域后,我从基于网格的 Regional Prompter 切换到了基于遮罩的区域提示。基于网格的方法会强制你使用矩形分割,但基于遮罩的技术让你可以以像素级精度定义任何区域形状。更好的是,基于遮罩的方法适用于 Flux 和其他不支持传统 Regional Prompter 扩展的模型。
在本指南中,你将获得 ComfyUI 的完整基于遮罩的区域提示工作流,包括遮罩创建和准备技术、复杂场景的多遮罩合成、Flux 特定实现、使用 Segment Anything 的自动遮罩生成,以及需要区域控制手术级精度的项目的生产工作流。
为什么基于遮罩的区域提示优于网格方法
基于网格的 Regional Prompter(在我的 Regional Prompter 指南中介绍)将图像划分为矩形区域。这对于简单的构图很有效,但当你的构图元素无法与矩形网格对齐时就会失效。
基于遮罩的区域提示使用灰度或二值遮罩来定义任何形状的区域。黑色区域(0)接收一个提示,白色区域(255)接收另一个提示,灰色区域按比例在提示之间混合。这提供了对提示应用的像素级控制。
网格与基于遮罩的区域提示比较
- 形状灵活性:网格(仅矩形),遮罩(任何形状)
- 精度:网格(区域级),遮罩(像素级)
- 设置复杂度:网格(简单),遮罩(中等到复杂)
- 模型兼容性:网格(仅 SD1.5、SDXL),遮罩(所有模型包括 Flux)
- 处理开销:网格(+15-20%),遮罩(+10-15%)
基于遮罩的方法至关重要的关键场景:
非矩形主体:具有飘逸头发或复杂轮廓的角色。基于网格的区域会创建不自然地切割角色的矩形边界。基于遮罩的区域遵循角色的实际轮廓。
精确的物体放置:具有多个产品在特定位置和角度的产品摄影。遮罩让你可以定义精确的产品边界,无论形状或方向如何。
Flux 模型使用:Flux 不支持传统的 Regional Prompter 扩展。基于遮罩的技术是使用 Flux 进行区域提示的唯一方法。
有机构图:具有不规则地平线的风景、具有复杂形状的建筑、任何矩形网格无法与内容边界对齐的构图。
多层合成:需要 5+ 个具有重叠优先级的区域的复杂场景。基于遮罩的方法比尝试将其强制放入网格分割更优雅地处理这一点。
我用一个复杂的角色构图测试了这一点:穿着飘逸斗篷站在建筑背景前的人物。基于网格的方法产生了看起来人工的矩形斗篷边界。使用手绘斗篷遮罩的基于遮罩的方法产生了与角色和背景无缝集成的自然斗篷流动。
权衡是设置时间。基于网格的区域提示需要 30 秒来配置(只需指定网格维度和提示)。基于遮罩的方法需要 5-15 分钟来创建高质量的遮罩,但这种投资在构图精度上得到了回报。
理解 ComfyUI 中基于遮罩的条件化
在深入工作流之前,理解 ComfyUI 如何处理遮罩以进行条件化至关重要。
遮罩值和提示混合:
遮罩是灰度图像,其中像素值(0-255 或归一化的 0.0-1.0)决定提示影响:
- 值 0(黑色):0% 提示影响(完全使用替代提示或基础条件化)
- 值 128(50% 灰色):50% 提示混合(平均混合主要和替代提示)
- 值 255(白色):100% 提示影响(完全使用主要提示)
这种渐进混合让你可以创建区域之间的平滑过渡而不是硬边。具有羽化边缘(黑色 → 灰色渐变 → 白色)的遮罩产生平滑的提示过渡,没有可见的接缝。
条件化应用:
ComfyUI 的条件化系统使用这些节点将遮罩应用于提示:
ConditioningSetMask:将遮罩应用于现有条件化
- conditioning:要遮罩的提示条件化
- mask:定义此条件化应用位置的遮罩
- strength:整体强度乘数(0.0-2.0,默认 1.0)
- set_cond_area:是否仅将生成限制在遮罩区域
ConditioningCombine:合并多个遮罩条件化
- conditioning_1:第一个遮罩条件化
- conditioning_2:第二个遮罩条件化
- method:如何组合(add、average 或 multiply)
工作流模式是:
- 创建提示条件化(CLIP Text Encode)
- 将遮罩应用于条件化(ConditioningSetMask)
- 对每个区域/提示对重复
- 组合所有遮罩条件化(ConditioningCombine)
- 在 KSampler 中使用组合条件化
遮罩分辨率考虑:
遮罩应该匹配你的生成分辨率以获得最佳结果:
生成分辨率 | 遮罩分辨率 | 注释 |
---|---|---|
512x512 | 512x512 | 完美匹配 |
1024x1024 | 1024x1024 | 完美匹配 |
1024x1024 | 512x512 | 可以工作但精度较低 |
512x512 | 1024x1024 | 不必要,将被缩小 |
分辨率低于生成分辨率的遮罩可以工作,但会降低精度。分辨率高于生成分辨率的遮罩没有好处,并且浪费处理时间。
潜在空间遮罩:
ComfyUI 在潜在空间(从像素空间下采样 8 倍)中处理生成。512x512 图像在潜在空间中是 64x64。遮罩在生成期间自动下采样以匹配潜在分辨率。
这意味着遮罩中的精细细节(1-2 像素特征)在潜在下采样后可能无法精确保留。设计遮罩时,特征至少宽 8-16 像素,以通过潜在处理可靠地保留。
遮罩下采样效果
具有细线或小细节的复杂遮罩在潜在下采样期间可能会失去精度。在目标分辨率下测试你的遮罩,以验证细节在生成过程中存活。如果细节消失,简化遮罩。
遮罩羽化以实现平滑过渡:
硬边遮罩(纯黑色到纯白色,没有灰色过渡)在区域相交处创建可见的接缝。边缘处具有 10-30 像素灰色渐变的羽化遮罩平滑地混合区域。
在图像编辑软件中:
- 首先创建硬边遮罩(仅黑白)
- 对边缘应用半径 10-30 像素的高斯模糊
- 结果:区域之间的平滑过渡区
或使用 ComfyUI 的 Mask Blur 节点程序化地羽化遮罩:
- mask:输入遮罩
- blur_radius:羽化宽度(像素)(典型值 10-30)
基本的基于遮罩的区域提示工作流
基本的基于遮罩的工作流对每个区域使用单独的遮罩,通过遮罩条件化应用不同的提示。以下是两区域构图的完整设置。
所需节点:
- Load Checkpoint - 你的基础模型
- Load Image - 加载遮罩图像
- CLIP Text Encode - 每个区域的提示
- ConditioningSetMask - 将遮罩应用于条件化
- ConditioningCombine - 合并遮罩条件化
- KSampler - 生成
- VAE Decode 和 Save Image - 输出
两个区域(左/右分割)的工作流结构:
- Load Checkpoint → model, clip, vae
- Load Image (left_mask.png) → left_mask
- Load Image (right_mask.png) → right_mask
- CLIP Text Encode (left prompt) → left_conditioning
- ConditioningSetMask (left_conditioning + left_mask) → masked_left_conditioning
- CLIP Text Encode (right prompt) → right_conditioning
- ConditioningSetMask (right_conditioning + right_mask) → masked_right_conditioning
- ConditioningCombine (masked_left + masked_right) → combined_conditioning
- KSampler (model + combined_conditioning) → latent
- VAE Decode → Save Image
创建遮罩:
对于 1024x1024 的简单左/右构图:
左遮罩(left_mask.png):
- 左半部分:白色(255)
- 右半部分:黑色(0)
- 中心过渡:20 像素灰色渐变以实现平滑混合
右遮罩(right_mask.png):
- 左半部分:黑色(0)
- 右半部分:白色(255)
- 中心过渡:20 像素灰色渐变
在任何图像编辑软件(Photoshop、GIMP、Krita、Procreate)中创建这些。保存为 PNG 或 JPG。遮罩应该是纯灰度(无颜色)。
配置 ConditioningSetMask 节点:
对于左区域:
- conditioning:从 CLIP Text Encode(左提示)连接
- mask:从 Load Image(left_mask.png)连接
- strength:1.0(完全提示强度)
- set_cond_area:"default"(应用于整个生成区域)
对于右区域:
- conditioning:从 CLIP Text Encode(右提示)连接
- mask:从 Load Image(right_mask.png)连接
- strength:1.0
- set_cond_area:"default"
组合条件化:
ConditioningCombine 节点:
- conditioning_1:masked_left_conditioning
- conditioning_2:masked_right_conditioning
- method:"concat" 或 "add"(两者都可以,"concat" 是标准)
左/右角色构图的示例提示:
左提示:"Professional woman with brown hair in red business dress, confident expression, standing pose, natural lighting"
右提示:"Professional man with short dark hair in blue business suit, neutral expression, standing pose, natural lighting"
负面提示(全局应用,未遮罩):"blurry, distorted, low quality, bad anatomy, deformed"
生成并检查结果。左侧应该显示穿红色连衣裙的女性,右侧应该显示穿蓝色西装的男性,中心遮罩羽化在一起的地方有平滑的过渡。
基本工作流故障排除:
如果区域没有显示预期内容:
- 验证遮罩是否正确(左遮罩左侧为白色,右遮罩右侧为白色)
- 检查遮罩与正确的 ConditioningSetMask 节点的连接
- 增加 KSampler 步数到 25-30 以获得更清晰的区域定义
- 验证 ConditioningCombine 设置为 "concat" 或 "add"
如果你看到可见的接缝:
- 增加遮罩羽化(更多地模糊遮罩)
- 确保遮罩羽化区在中间重叠
- 验证遮罩在重叠区域的总和约为 1.0
对于无需手动创建遮罩的快速基于遮罩的区域提示,Apatero.com 提供内置的遮罩绘制工具,你可以直接在界面中绘制区域并分配提示,消除了外部图像编辑软件的要求。
遮罩创建技术和工具
高质量的遮罩是成功的基于遮罩的区域提示的基础。以下是从简单到复杂的系统遮罩创建方法。
技术 1:简单几何遮罩(5 分钟)
对于基本几何区域(左/右、上/下、象限),可以在任何图像编辑器中快速创建遮罩。
工具:GIMP、Photoshop、Krita、Procreate,甚至 Paint.NET
过程:
- 在目标分辨率(1024x1024)创建新图像
- 用基础颜色填充(通常是背景区域的黑色)
- 使用选择工具选择区域(矩形选择、椭圆选择等)
- 用白色(255)填充选择以获得主要提示区域
- 应用高斯模糊(半径 15-25)以柔化边缘
- 保存为 PNG
时间:每个遮罩 3-5 分钟
最适合:具有几何区域划分的简单构图
技术 2:手绘遮罩(10-20 分钟)
对于有机形状(角色、流动元素、不规则边界),精确地手绘遮罩。
工具:Photoshop、Krita、Procreate(带触控笔)、GIMP
过程:
- 加载参考图像或构图草图
- 为遮罩创建新图层
- 使用画笔工具(用于初始绘制的硬边画笔)
- 在提示应该应用的地方绘制白色(255)
- 在提示不应该应用的地方保留黑色(0)
- 在边缘使用软画笔或模糊滤镜进行羽化
- 使用橡皮擦工具调整边界
- 将遮罩图层保存为灰度 PNG
时间:每个复杂遮罩 10-20 分钟
最适合:角色轮廓、有机形状、不规则的构图元素
有关遮罩绘制工作流的详细信息,请参阅我的 ComfyUI Mask Editor 指南,其中介绍的技术直接适用于区域提示遮罩创建。
技术 3:基于选择的遮罩(15-30 分钟)
对于基于现有图像内容精确定义复杂区域,使用选择工具然后转换为遮罩。
工具:Photoshop(最佳)、GIMP(良好)、Krita
过程:
- 加载参考图像或构图草图
- 使用魔棒、套索或钢笔工具选择所需区域
- 细化选择边缘(Photoshop 中的 Select > Modify > Feather)
- 创建新图层并用白色填充选择
- 取消选择并验证遮罩质量
- 如果需要更柔和的过渡,应用额外的模糊
- 保存为灰度 PNG
时间:15-30 分钟,取决于选择复杂度
最适合:基于现有图像内容定义区域、产品摄影、角色剪切
技术 4:AI 辅助遮罩生成(2-5 分钟)
使用 AI 分割工具从参考图像自动生成遮罩。
工具:Segment Anything Model(SAM)、Clipdrop、Photoshop Generative Fill
ComfyUI 中 SAM 的过程:
- 安装 SAM 自定义节点(ComfyUI-Segment-Anything)
- 加载参考图像
- 使用 SAM 节点检测和分割主体
- 将分割转换为遮罩
- 如果需要,手动修饰遮罩
- 将遮罩用于区域提示
时间:2-5 分钟,包括最少的手动细化
最适合:快速遮罩生成、手动遮罩耗时过多的复杂主体
技术 5:ComfyUI 中的程序化遮罩生成
在 ComfyUI 中使用遮罩生成节点以编程方式生成遮罩。
可用节点:
- Mask from Color Range:从图像中的颜色范围创建遮罩
- Depth to Mask:将深度图转换为遮罩(对基于深度的区域划分有用)
- Solid Color Mask:创建简单的纯色遮罩
- Gradient Mask:创建渐变遮罩以实现平滑过渡
基于深度的遮罩示例工作流:
- Load Reference Image
- Depth Estimator (MiDaS or Zoe)
- Threshold Depth (foreground threshold)
- Mask Blur (feather edges)
- Use as region mask for foreground prompt
这会根据深度自动创建前景/背景遮罩,无需手动绘制。有关深度图生成和基于深度的构图控制的更多信息,请参阅我们的 Depth ControlNet 指南。
时间:3-5 分钟设置,然后对后续图像自动
最适合:批量处理、跨多个图像的一致遮罩生成、基于深度的构图
遮罩质量检查清单:
在将遮罩用于区域提示之前,请验证:
- 正确的分辨率:匹配生成分辨率或 2 倍(将完全缩小)
- 纯灰度:没有颜色通道,只有亮度值
- 平滑渐变:没有尖锐的过渡,除非有意需要硬边
- 适当的覆盖:遮罩完全覆盖预期区域,没有间隙或孤岛
- 适当的羽化:15-30 像素羽化区以实现平滑混合
- 不同的区域:重叠遮罩平衡(在重叠区域总和约为 ~1.0)
质量差的遮罩(硬边、间隙、错误的分辨率、颜色数据)会产生伪影、可见的接缝或区域无法正确响应提示。
高级多区域遮罩合成
简单的两区域工作流很直接,但具有 4-8 个区域的复杂构图需要系统的遮罩管理和条件组合。
4+ 区域的工作流架构:
对于具有多个区域的构图,工作流模式可扩展:
- Load Checkpoint → model, clip
- For each region:
- Load Mask (region_N_mask.png) → mask_N
- CLIP Text Encode (region_N_prompt) → conditioning_N
- ConditioningSetMask (conditioning_N + mask_N) → masked_cond_N
- Combine all:
- ConditioningCombine (masked_cond_1 + masked_cond_2) → partial_combined_1
- ConditioningCombine (partial_combined_1 + masked_cond_3) → partial_combined_2
- ConditioningCombine (partial_combined_2 + masked_cond_4) → final_combined
- KSampler (model + final_combined) → Output
ConditioningCombine 只接受两个输入,所以对于 N 个区域,你需要 N-1 个组合节点链接在一起。
遮罩层次和优先级:
当遮罩重叠时,优先级决定哪个提示占主导地位。通过遮罩值实现优先级:
高优先级区域(主体):遮罩值 255(纯白色),完全提示强度 中优先级区域(支持元素):遮罩值 180-200(浅灰色),0.7-0.8 提示强度 低优先级区域(背景):遮罩值 120-150(中灰色),0.5-0.6 提示强度
在重叠区域,具有较高遮罩值的高优先级区域占主导地位。
示例:四角色群组场景
构图:2×2 排列的四个人与共享背景。有关精确的角色面部一致性工作流,请参阅我们的专业换脸指南,它补充了基于遮罩的区域提示。
需要的遮罩:
- character_1_mask.png:左上角色轮廓(白色角色,其他地方黑色)
- character_2_mask.png:右上角色轮廓(白色角色,其他地方黑色)
- character_3_mask.png:左下角色轮廓(白色角色,其他地方黑色)
- character_4_mask.png:右下角色轮廓(白色角色,其他地方黑色)
- background_mask.png:完整图像,角色区域为黑色(组合角色遮罩的反转)
提示:
- Character 1:"Woman with blonde hair in red dress, smiling, professional portrait"
- Character 2:"Man with dark hair in blue suit, neutral expression, professional portrait"
- Character 3:"Young woman with curly hair in green top, friendly expression, casual portrait"
- Character 4:"Older man with gray hair in brown jacket, serious expression, distinguished portrait"
- Background:"Modern office interior, soft lighting, professional environment, blurred background"
工作流:
- 以强度 0.7 应用背景遮罩+提示(较低优先级)
- 以强度 1.0 应用每个角色遮罩+提示(较高优先级)
- 组合所有五个遮罩条件化
- 生成
角色以不同的外观出现,背景填充角色未覆盖的区域,边缘平滑混合。
遮罩重叠管理
当遮罩重叠时,模型按比例混合提示。如果 character_1_mask 和 character_2_mask 在边缘重叠(两者在重叠区域的值都是 200),该区域将接收两个角色提示的 50/50 混合。小心使用羽化来控制混合区。
深度的分层遮罩策略:
对于具有不同深度层(前景/中景/背景)的构图,创建不透明度递减的分层遮罩:
层 | 遮罩值 | 提示强度 | 目的 |
---|---|---|---|
前景(最近) | 255(白色) | 1.2 | 最大细节和提示遵守 |
中景 | 200(浅灰色) | 1.0 | 标准细节级别 |
背景(最远) | 140(中灰色) | 0.7 | 大气,更少细节 |
这种基于深度的提示自然地创建深度感知,其中前景清晰详细,而背景更柔和。
无缝混合技术:
对于区域之间没有可见接缝的专业结果:
重叠羽化区:确保所有遮罩在相遇处具有 25-40 像素羽化区 平衡遮罩总和:在重叠区域,遮罩值应总和约为 255(如果 mask_A = 180 且 mask_B = 75 在重叠中,总和 = 255) 一致的提示:在所有区域提示中使用类似的照明/风格描述符,以便区域在风格上匹配 全局基础条件化:添加弱全局条件化(强度 0.3)与整体场景描述作为基础
程序化遮罩组合:
对于系统的多区域工作,以程序化方式创建遮罩以确保适当的覆盖:
- 创建黑色画布:canvas = black_image(1024, 1024)
- 定义区域:
- top_left: area (0,0,512,512)
- top_right: area (512,0,512,512)
- bottom_left: area (0,512,512,512)
- bottom_right: area (512,512,512,512)
- 对于每个区域:
- 创建白色区域遮罩
- 应用 30 像素羽化
- 保存遮罩文件
这确保遮罩完美平铺并具有适当的羽化,消除间隙或过度重叠。
Flux 模型的基于遮罩的区域提示
Flux 模型不支持传统的 Regional Prompter 扩展,使得基于遮罩的方法成为使用 Flux 实现区域提示控制的唯一方法。
Flux 特定实现:
Flux 使用与 Stable Diffusion 不同的条件化架构,需要改编的工作流。
带有区域遮罩的 Flux 工作流结构:
- Load Flux Checkpoint → model
- Load Flux CLIP (dual text encoder) → clip
- Load Mask (region_1) → mask_1
- Load Mask (region_2) → mask_2
- Flux Text Encode (region_1_prompt, clip) → flux_cond_1
- ConditioningSetMask (flux_cond_1, mask_1) → masked_flux_cond_1
- Flux Text Encode (region_2_prompt, clip) → flux_cond_2
- ConditioningSetMask (flux_cond_2, mask_2) → masked_flux_cond_2
- ConditioningCombine (masked_flux_cond_1, masked_flux_cond_2) → combined_flux_cond
- Flux Sampler (model, combined_flux_cond) → latent
- VAE Decode → Save Image
Flux CLIP 文本编码:
Flux 使用双文本编码器(CLIP-L 和 T5)。对于区域提示:
- clip_l_prompt:主要 CLIP 编码(使用主要提示)
- t5_prompt:T5 编码(可以与 clip_l 相同或略有变化)
对于区域工作,在每个区域内保持 clip_l 和 t5 提示相同以保持一致性。
Flux 特定遮罩考虑:
遮罩强度:Flux 对遮罩的响应比 SD 模型更强。对主要区域使用遮罩值 180-200(不是完全 255)以避免过度约束。
羽化宽度:Flux 受益于更宽的羽化区(40-60 像素),而 SD(20-30 像素)可实现无缝混合。
CFG scale:Flux 通常使用较低的 CFG(3-5)。使用区域遮罩,稍微增加到 5-7 以获得更清晰的区域定义。
Steps:Flux 需要更少的步数(15-25)。区域遮罩不需要像 SD 那样增加步数(SD 使用区域遮罩受益于 30-35 步)。
示例 Flux 区域工作流:
目标:使用 Flux 生成具有详细前景主体和绘画风格背景的风景。
遮罩:
- foreground_mask.png:中心主体轮廓(白色主体,其他地方黑色,50 像素羽化)
- background_mask.png:整个图像减去主体(前景遮罩的反转)
提示:
- Foreground(Flux Text Encode):"Professional portrait of woman in red dress, photorealistic, detailed facial features, sharp focus, high quality"
- Background(Flux Text Encode):"Abstract watercolor painted background, artistic style, soft colors, dreamy atmosphere"
- Negative:"blurry, distorted, low quality"
Flux Sampler 设置:
- steps:20
- cfg:6.5
- sampler:euler(Flux 与 euler 配合良好)
- scheduler:simple
生成并检查。前景应该是写实的,而背景是绘画的,创造有意的风格对比。
Flux 区域提示限制
Flux 的架构使得区域提示不如 SD 模型精确。预计 Flux 的区域渗透会增加 10-15%。使用更强的遮罩(更高的值)、更宽的羽化和区域之间更明显的提示来补偿。
Flux 与 SD 区域提示比较:
方面 | Stable Diffusion | Flux |
---|---|---|
区域精度 | 9.1/10 | 7.8/10 |
所需遮罩羽化 | 20-30px | 40-60px |
设置复杂度 | 中等 | 中等 |
CFG 要求 | 7-9 | 5-7 |
所需步数 | 25-35 | 15-25 |
整体质量 | 优秀 | 非常好 |
对于需要最大区域控制的生产 Flux 工作,我建议使用 Apatero.com,它具有 Flux 优化的区域提示,具有预调参数,可以比标准工作流更好地隔离区域。
Flux 区域提示最佳实践:
- 增加遮罩对比度:使用值 0 和 220-240(不是 255)以获得更好的控制
- 简化区域计数:使用 Flux 限制到最多 3-4 个区域(5+ 变得不可预测)
- 明显的提示:使区域提示非常不同(写实 vs 绘画,而不是微妙的风格转变)
- 更高的 CFG:使用 CFG 6-7 而不是 Flux 的典型 3-5
- 测试遮罩:在添加提示之前使用遮罩可视化生成测试图像
要通过自定义训练增强 Flux 控制,请探索我们的 Ultra Real Flux LoRAs 集合,它可以与基于遮罩的区域提示结合使用以获得最大精度。
生产工作流和自动化
当你系统化遮罩创建和工作流执行时,基于遮罩的区域提示对生产变得实用。
工作流模板系统:
为常见构图创建可重用的模板:
模板 1:两个角色并排
- 遮罩:left_character.png、right_character.png、shared_background.png
- 提示:角色 A 描述、角色 B 描述、环境描述
- 参数:1024x1024、30 步、CFG 8、30px 羽化
模板 2:带背景的英雄镜头
- 遮罩:hero_subject.png、background.png
- 提示:详细主体描述、背景环境
- 参数:1024x1536 肖像、35 步、CFG 7.5、40px 羽化
模板 3:产品目录(4 个产品)
- 遮罩:product_1.png 到 product_4.png、background.png
- 提示:单个产品描述、白色/灰色背景
- 参数:2048x2048、40 步、CFG 9、25px 羽化
将这些保存为 ComfyUI 工作流 JSON 文件。对于新项目,加载模板并仅更新提示+遮罩,保持所有节点连接和参数。
批量遮罩生成脚本:
对于需要多个类似遮罩的项目(产品目录、角色表),脚本遮罩生成:
- 导入所需库:PIL Image 和 ImageFilter
- 定义四个象限位置:
- top_left (0, 0)
- top_right (resolution//2, 0)
- bottom_left (0, resolution//2)
- bottom_right (resolution//2, resolution//2)
- 对于每个象限:
- 创建黑色遮罩(分辨率 1024x1024)
- 用白色填充象限区域(值 255)
- 应用高斯模糊(半径 30 像素)进行羽化
- 保存为 PNG 文件
- 生成所有象限遮罩:调用 create_quadrant_masks(1024, 30)
运行一次以生成 2×2 网格布局的所有遮罩,然后为所有需要象限构图的项目重用。
自动化工作流执行:
对于大批量生产,使用 ComfyUI API 自动化:
- 导入 requests 和 json 库
- 创建 generate_with_regional_masks 函数:
- 加载工作流模板(JSON 文件)
- 更新提示:遍历所有提示并更新工作流中的文本
- 更新遮罩路径:遍历所有遮罩路径并更新工作流中的图像
- 提交到 ComfyUI API:POST 请求到 http://localhost:8188/prompt
- 批量生成 10 个变体:
- 循环 10 次
- 每次调用函数传入不同的角色变体提示
- 使用相同的遮罩文件(character_mask.png, background_mask.png)
- 使用相同的工作流模板(regional_template.json)
这将生成 10 个具有相同基于遮罩的区域控制但不同提示的角色变体。
质量保证检查清单:
在交付基于遮罩的区域工作之前:
- 没有可见的接缝:检查所有区域边界是否有伪影或硬边
- 提示准确性:每个区域显示与其特定提示匹配的内容
- 没有区域渗透:角色 A 没有角色 B 的属性
- 一致的照明:照明方向/质量在区域之间匹配(除非有意变化)
- 遮罩覆盖完整:没有提示不适用的间隙或孤岛
- 适当的分辨率:输出满足客户规格(打印 vs 网络)
修订工作流:
当客户要求更改特定区域时:
- 确定需要更改的区域(角色面部、背景等)
- 仅修改该区域的提示
- 保持所有其他提示和遮罩相同
- 使用相同的种子重新生成(如果需要确定性结果)
- 只有修改的区域发生变化,其余保持一致
这种手术修订能力是基于遮罩的区域提示在客户工作中的杀手级功能。
基于遮罩的区域提示故障排除
基于遮罩的工作流以特定、可识别的模式失败。了解问题和解决方案可防止浪费时间。
问题:区域之间的可见接缝或硬边
接缝显示为一个区域与另一个区域相遇的清晰线条。
原因和修复:
- 羽化不足:将遮罩模糊增加到 30-50 像素
- 遮罩不重叠:确保羽化区重叠 10-20 像素
- 边界处的冲突提示:向两个区域提示添加共享的风格/照明描述符
- 分辨率不匹配:验证遮罩与生成分辨率匹配
- CFG 太高:将 CFG 从 9-10 降低到 7-8 以获得更柔和的边界
问题:区域忽略提示或交换内容
一个区域显示来自另一个区域提示的内容。
修复:
- 验证遮罩连接:确保 mask_1 连接到 conditioning_1,没有交换
- 检查遮罩极性:白色应该是提示应用的地方,而不是反转
- 增加提示区别性:使提示彼此更不同
- 加强条件化:将 ConditioningSetMask 强度增加到 1.2-1.5
- 简化构图:如果 5+ 区域产生混乱,减少区域数量
问题:一个区域主导整个图像
来自一个区域的内容出现在各处,压倒其他区域。
修复:
- 降低主导区域的遮罩值:将 255 更改为 180-200
- 增加其他区域的遮罩值:将较弱区域提升到 220-240
- 检查遮罩总和:在重叠区域,确保总计不显著超过 255
- 重新平衡提示强度:将主导区域的 ConditioningSetMask 强度降低到 0.7-0.8
- 简化主导提示:删除渗透到其他区域的强关键字
问题:遮罩未加载或显示错误
ComfyUI 无法加载遮罩或在遮罩处理期间抛出错误。
修复:
- 验证遮罩格式:必须是 PNG 或 JPG,某些节点需要特定格式
- 检查遮罩是灰度:没有 RGB 颜色数据,只有亮度通道
- 验证文件路径:确保遮罩文件路径正确且可访问
- 检查遮罩分辨率:非常大的遮罩(4K+)可能会导致问题,调整大小以匹配生成分辨率
- 重新加载工作流:有时节点状态会损坏,重新加载工作流文件
问题:整个图像模糊或质量低
使用基于遮罩的区域提示时输出质量下降。
原因:
- 太多区域:6+ 区域会降低质量,简化到最多 4-5 个
- 过度羽化的遮罩:过度模糊(80+ 像素)降低整体清晰度
- 低分辨率遮罩:生成分辨率 50% 的遮罩失去精度
- 冲突的区域提示:矛盾的风格迫使模型妥协,降低质量
- 步数太少:对于遮罩工作流,从 20 增加到 30-35
问题:背景渗入前景或反之亦然
背景元素出现在前景区域或前景主体延伸到背景。
修复:
- 加强前景遮罩:将前景遮罩值增加到 240-255
- 削弱背景遮罩强度:将背景的 ConditioningSetMask 强度降低到 0.6-0.7
- 增加羽化宽度:矛盾的是,更宽的羽化有时通过创建更平滑的过渡来减少渗透
- 使用优先级遮罩:在 ConditioningCombine 链中的背景之后应用前景条件化
- 简化提示:删除可能适用于多个区域的模糊关键字
问题:Flux 特定区域提示产生不良结果
工作流与 SD 配合良好但与 Flux 失败。
Flux 特定修复:
- 降低遮罩对比度:使用 0 和 220 而不是 0 和 255
- 增加羽化:将羽化宽度加倍(30px → 60px)
- 降低 CFG:带遮罩的 Flux 在 CFG 5-7 时效果最好,不要更高
- 更少的区域:使用 Flux 限制到最多 3 个区域
- 更简单的提示:Flux 区域提示难以处理复杂提示,简化描述
最后的想法
基于遮罩的区域提示代表了 AI 生成中构图控制的精确端,其中像素级精度比设置速度更重要。遮罩创建的投资(每个构图 5-20 分钟)在对确切出现在哪里的手术控制中得到了回报。
与基于网格的方法相比,关键优势是形状灵活性。当你的构图不适合矩形网格时(大多数有趣的构图都不适合),基于遮罩的方法提供了获得干净结果的唯一途径。Flux 兼容性的附加好处使这种方法在新模型出现时具有未来性,这些新模型可能不支持传统的区域提示扩展。
对于需要一致、复杂构图的生产工作(产品目录、以角色为中心的内容、混合风格插图、具有精确元素放置的建筑可视化),基于遮罩的区域提示从"高级技术"转变为"基本能力"。在 3-5 个项目后,随着遮罩创建和工作流设置成为第二天性,工作流变得常规。
从简单的两区域构图(前景/背景、左/右角色分割)开始,以内化遮罩如何影响提示应用。随着舒适度的建立,进展到 3-4 区域构图。仅在绝对必要时保留 5+ 区域构图,因为复杂性在 4-5 个区域之外呈指数增长。
本指南中的技术涵盖了从基本遮罩创建到高级多区域合成和 Flux 特定实现的所有内容。无论你是在外部软件中创建遮罩并导入它们,还是使用 ComfyUI 的遮罩生成节点,核心原则保持不变 - 遮罩以像素级精度定义提示应用的位置。
无论你是在本地构建基于遮罩的工作流还是使用 Apatero.com(它在单个界面中提供集成的遮罩绘制和区域提示,无需外部软件),掌握基于遮罩的区域提示将你的构图控制从"近似"提升到"精确"。随着 AI 生成应用程序从创意探索转向构图必须完全符合规格的商业生产,这种精度变得越来越重要。
精通ComfyUI - 从基础到高级
加入我们完整的ComfyUI基础课程,学习从基础到高级技术的所有内容。一次性付款,终身访问,并获得每个新模型和功能的更新。
相关文章

10个最常见的ComfyUI新手错误及2025年修复方法
避免让新用户感到沮丧的10大ComfyUI新手陷阱。完整的故障排除指南,包含VRAM错误、模型加载问题和工作流问题的解决方案。

使用 Anisora v3.2 实现360度动漫旋转:ComfyUI 完整角色旋转指南2025
掌握使用 ComfyUI 中的 Anisora v3.2 进行360度动漫角色旋转。学习相机轨道工作流程、多视图一致性和专业转身动画技术。

7个应该内置的ComfyUI自定义节点(附获取方法)
2025年每个用户都需要的必备ComfyUI自定义节点。WAS Node Suite、Impact Pack、IPAdapter Plus等革命性节点的完整安装指南。