免提示词修复Midjourney破碎细节:ComfyUI局部重绘工作流全解析 📅 发布时间:2026/9/1 13:24:41 👁 浏览次数: 在 Midjourney 出图质量越来越高的今天手指、牙齿、眼睛等细节仍然偶尔“翻车”。更麻烦的是局部修复往往需要反复修改提示词而提示词对细节的控制力并不稳定。本文会系统讲解一种“免提示词修复破碎细节”的思路不碰提示词改用 ComfyUI 局部重绘工作流只通过遮罩、采样器和模型组合把图片中破碎的部分“重新画一遍”。原理、节点配置、完整工作流 JSON 结构、参数解读和踩坑排查都会覆盖到配合本文工作流新手也能在本地跑通修复流程。1. 为什么 Midjourney 会生成破碎细节1.1 破碎细节的本质先聊一个几乎所有 AI 绘画玩家都遇到过的问题Midjourney 生成的人物脸部、手部、文字 Logo、复杂纹理等区域偶尔会出现结构崩坏。比如手指多一根、牙齿粘连、眼珠高光位置错误、衣服拉链变成一团乱线。这类问题的根因不在“模型笨”而在扩散模型Diffusion Model的生成机制。扩散模型在去噪过程中是从纯噪声逐步还原图像。它对全局构图、色彩氛围的把握很强但对高信息密度的小区域比如手指关节、牙齿间隙、细碎纹理往往缺少足够的“像素级约束”。在低步数、分布式采样和跨注意力的共同作用下小区域细节就容易丢失结构先验。传统解决方式有两种疯狂加提示词比如perfect hands、detailed fingers、no extra digits。局部重绘加提示词比如把破碎区域蒙住重新输入a hand with five fingers。这两种方式都有明显局限。第一种靠模型自觉成功率不稳定而且频繁长提示词会让构图变得模板化。第二种虽然可控但依然依赖提示词语义且 Midjourney 的局部重绘Vary Region对精确遮罩的支持不够灵活。1.2 免提示词修复的核心思路本文要讲的修复思路可以拆成四步在 ComfyUI 里加载损坏图片。用遮罩工具标记破碎区域。通过局部重绘采样器仅对遮罩区域进行重新生成。由模型根据周围像素纹理自动推断缺失结构。整个过程完全不依赖提示词或者说提示词只携带极少的通用信息例如固定为masterpiece, best quality。重绘质量主要靠 ControlNet 的局部控制、Inpaint 模型分支和采样器参数的配合。这样做的好处很明显不受 Midjourney 提示词语义干扰修复区域能与原图保持较高的一致性同时流程完全本地化可批量、可复现。2. ComfyUI 工作流基础概念2.1 什么是 ComfyUI 工作流ComfyUI 是基于节点图Node Graph的 Stable Diffusion 图形界面工具。它把 Stable Diffusion 的生成流程拆成一个个独立节点比如模型加载器、CLIP 文本编码器、KSampler、VAE 解码器等然后用连线把它们串联成一张流程图。相比 WebUI 的选项卡式操作ComfyUI 工作流更适合做精准控制和自动化重复任务。你可以在一个工作流里同时管理多个模型、多个采样器、多段遮罩处理流程而且每个节点的参数都直接暴露出来方便精细调整。2.2 工作流中会用到的关键节点节点名称作用本文用途CheckpointLoaderSimple加载主模型加载 Stable Diffusion 1.5 或 SDXL 模型CLIPTextEncode编码提示词生成全局提示词和空提示词可选LoadImage加载原图读取 Midjourney 生成图片VAE Encode图像编码到 Latent把原图转换为潜空间表示Set Latent Noise Mask设置遮罩指定局部重绘区域ControlNet Loader加载 ControlNet 模型控制重绘区域与原图边缘一致ControlNet Apply应用 ControlNet让修复区域融入原图KSampler采样器执行局部去噪重绘VAE Decode解码 Latent 到图像还原为像素图SaveImage保存图片输出修复结果MaskEditor绘制遮罩在界面上手动标注破损区域这些节点组合在一起可以摆脱对提示词的强依赖。重点在于遮罩区域决定了“哪里要重绘”采样器决定了“重绘强度”ControlNet 和 Inpaint 模型决定了“重绘怎么保持原图结构”。2.3 工作流执行流程下面用一个有序步骤描述整个工作流的执行流程CheckpointLoaderSimple 加载模型文件。LoadImage 加载损坏图片。VAE Encode 将图像送入潜空间。用户通过 MaskEditor 绘制需要修复的遮罩。Set Latent Noise Mask 将遮罩信息附加到潜空间图像上。ControlNet Apply 加载边缘/线稿控制条件。KSampler 在遮罩区域内重新采样。VAE Decode 解码潜空间。SaveImage 输出最终修复图。这套流程中提示词可以被压缩到最小甚至可以用空白提示词完全让图像上下文驱动生成。这也是“免提示词修复”名称的由来。3. 环境准备与模型选择3.1 本地环境ComfyUI 官方支持 Windows、Linux、macOS。如果使用 N 卡建议安装 CUDA 版本的 PyTorch否则重绘速度会非常慢。以 Windows 为例常见环境如下项目建议操作系统Windows 10/11 64 位GPUNVIDIA 显卡显存 8GB 以上SDXL 推荐 12GB驱动NVIDIA 最新版驱动Python3.10 或 3.11PyTorch2.x 版本CUDA 11.8 或 12.1 以上ComfyUI官方最新版或秋叶整合包如果你使用的是秋叶一键整合包ComfyUI 和依赖项通常已经配置好省去手动安装 Python 环境的麻烦。但要注意整合包内置的 Python 版本和 PyTorch 版本可能较旧如果遇到节点报错需要按提示升级。3.2 模型文件准备修复工作流会用到两个关键模型主模型Checkpoint例如realisticVisionV51、majicMIX realistic、Juggernaut XL等推荐选择写实风格模型来修复真人图片。ControlNet 模型用于控制局部重绘的边缘对齐。常用control_v11p_sd15_inpaint或 SDXL 版本的xinsir-controlnet-union等。完整文件放置位置如下ComfyUI/models/checkpoints/ # 主模型 ComfyUI/models/controlnet/ # ControlNet 模型 ComfyUI/models/vae/ # VAE 模型可选模型文件名、仓库来源可能随版本变动建议从社区搜索“ComfyUI 模型下载”并按需选择。版本需要根据你的项目实际情况调整本文示例以常见环境为例重点演示配置思路。3.3 工作流导入方式ComfyUI 工作流通常保存为 JSON 文件。导入方式有两种直接打开 ComfyUI 页面将 JSON 文件拖入浏览器窗口。点击页面右上角菜单选择Load加载按钮选中本地 JSON 文件。导入后如果缺少自定义节点ComfyUI 通常会报错“请安装缺失的包以使用此工作流”。这时需要根据提示安装对应节点常见节点安装命令如下cd ComfyUI/custom_nodes git clone https://github.com/某节点仓库地址 cd 某节点目录 pip install -r requirements.txt不同的工作流依赖不同节点不能一概而论必须根据实际报错信息逐个安装。千万不要一次性把所有推荐节点都装上容易引入版本冲突。4. 免提示词修复工作流逐步搭建4.1 创建并配置基础节点首先搭建一个最小可运行的重绘工作流。打开 ComfyUI在空白处双击搜索并添加以下节点。4.1.1 模型加载节点添加CheckpointLoaderSimple节点并选择你的写实模型。checkpoint_name: realisticVisionV51_v51VAE.safetensors如果模型自带 VAEVAEEncode阶段可以直接连接到 Checkpoint 输出的 VAE 接口。如果模型没有 VAE需要单独加载VAELoader。4.1.2 图像加载节点添加LoadImage节点上传从 Midjourney 导出的破损图片。这个节点的输出是图像像素数据和图像尺寸信息。图片建议满足以下条件分辨率尽量在 512 到 1024 之间过小看不清细节过大会增加显存压力。格式 PNG 或 JPG 都可以但 PNG 保留细节更完整。如果图片是高清大图可先用ImageScale节点缩放到合适尺寸重绘后再放大。4.1.3 潜空间编码与遮罩添加VAEEncode节点将 LoadImage 输出的图像转换为 Latent 表示。然后添加Set Latent Noise Mask节点。关键参数参数值说明maskMask 输入由 MaskEditor 输出的遮罩图像set_noise_maskTrue启用噪声遮罩使重绘仅发生在遮罩区域fill_maskFalse是否先用填充色覆盖遮罩区域一般选 False4.1.4 提示词节点虽然本文强调免提示词但完全空提示词在部分采样器下容易产生不稳定结果。建议统一设置一个极简的全局提示词正向提示词: masterpiece, best quality 负向提示词: low quality, blurry, deformed, bad anatomy, bad hands这里没有描述具体内容因此模型在重绘时会依赖原图的上下文和遮罩周围的像素来推断对象结构。如果模型对某些特定缺陷比如手指识别不稳可以适当补充一个词如absurd fingers到负向提示词但不要写复杂的正面描述。4.2 ControlNet 局部重绘控制ComfyUI 中 ControlNet 的配置分为三步加载模型、准备控制图像、应用控制。4.2.1 加载 ControlNet 模型添加ControlNetLoader节点。control_net_name: control_v11p_sd15_inpaint.safetensors这个专门为 Inpaint 设计的 ControlNet 会在重绘时保留原图边缘细节避免遮罩区域被完全吹毁。4.2.2 准备控制图像ControlNet 需要一张与原图尺寸一致的控制图。在修复工作流中控制图可以直接复用 LoadImage 的原图。只需将原图连接到 ControlNet 的输入接口即可。如果需要更精细的边缘控制可以在这个位置插入Canny节点或LineArt节点提取物体轮廓但一般情况下 Inpaint ControlNet 可以直接食用原图。4.2.3 应用 ControlNet添加ControlNetApply节点并完成如下连接conditioning来自 CLIPTextEncode 正向提示词 control_net来自 ControlNetLoader image来自 LoadImage 原图 strength: 0.8 start_percent: 0.0 end_percent: 0.8参数含义strength控制强度越高重绘区域越贴合原图轮廓但也会限制结构变化的自由度。建议 0.7 到 1.0 之间。start_percentControlNet 生效的起始去噪步数比例。end_percentControlNet 生效的结束去噪步数比例。结束太早容易在后期失去边缘约束。4.3 采样器与重绘参数配置KSampler 是整个工作流的核心执行器。参数推荐值说明modelCheckpoint 的模型输出主模型positiveControlNetApply 后的正向条件极简提示词negative负向条件负向提示词latent_imageSet Latent Noise Mask 的输出带遮罩的潜空间图像seed可随机也可固定复现控制随机性steps20 到 30步数过少细节不足过多占用时间cfg5 到 7较高 CFG 更稳定但易过曝sampler_namedpmpp_2m 或 euler常用采样器schedulerkarras细节保留较好denoise0.5 到 0.75重绘强度过大区域边界明显denoise参数值得展开说明。这个值表示重绘区域被重新噪声化的比例。如果设为 1.0意味着遮罩里面的内容完全重新生成边界容易被撕裂如果设为 0.0则遮罩内容完全不变无法修复任何细节。经验上修复手指、牙齿等局部结构denoise设在 0.5 到 0.7 之间效果最佳。4.4 完整工作流 JSON 片段示例下面是一个简化的工作流 JSON 片段只展示关键节点结构。实际导入时请根据 ComfyUI 版本调整格式。{ 3: { class_type: CheckpointLoaderSimple, inputs: { ckpt_name: realisticVisionV51_v51VAE.safetensors } }, 6: { class_type: CLIPTextEncode, inputs: { clip: [3, 1], text: masterpiece, best quality } }, 7: { class_type: CLIPTextEncode, inputs: { clip: [3, 1], text: low quality, blurry, deformed, bad anatomy, bad hands } }, 10: { class_type: LoadImage, inputs: { image: broken_hands.png } }, 11: { class_type: VAEEncode, inputs: { pixels: [10, 0], vae: [3, 2] } }, 12: { class_type: SetLatentNoiseMask, inputs: { samples: [11, 0], mask: [15, 0], set_noise_mask: true, fill_mask: false } }, 13: { class_type: ControlNetLoader, inputs: { control_net_name: control_v11p_sd15_inpaint.safetensors } }, 14: { class_type: ControlNetApply, inputs: { conditioning: [6, 0], control_net: [13, 0], image: [10, 0], strength: 0.8, start_percent: 0.0, end_percent: 0.8 } }, 15: { class_type: MaskEditor, inputs: { image: [10, 0] } }, 16: { class_type: KSampler, inputs: { model: [3, 0], positive: [14, 0], negative: [7, 0], latent_image: [12, 0], seed: 123456789, steps: 25, cfg: 6.0, sampler_name: dpmpp_2m, scheduler: karras, denoise: 0.6 } } }这段 JSON 只包含核心节点。实际 ComfyUI 导出时会包含 UI 坐标、连线信息和更多元数据。新手不建议手动编写 JSON而是按照节点连接操作最后自动导出。4.5 工作流执行步骤上传破损图片到 LoadImage 节点。双击 MaskEditor 节点在弹出的界面中用画笔涂抹需要修复的区域。根据图片情况微调 KSampler 的 seed 和 denoise。点击 ComfyUI 右侧的“运行”按钮。等待采样完成后在 SaveImage 节点查看结果。如果生成结果不满意优先调整两个东西一是denoise的大小二是遮罩的范围。不要一上来就疯狂改提示词。5. 实际修复案例手指多一根下面以一个实际案例演示完整修复过程。5.1 原图情况假设有一张 Midjourney 生成的半身人像整体构图、光线、肤色都很好但左手区域出现了六根手指。我们希望在保持手部动作和周围饰物不变的前提下把多余的手指去除并恢复正确的五根手指结构。5.2 修复前分析观察原图可以发现问题只集中在手指分叉处手指之间的缝隙粘连明显多余手指在光影上其实没有完全“落地”只是模型在生成时多画了一根。这种情况下局部重绘只需处理手指区域即可手掌主体可以不覆盖。因此遮罩应该精确涂在手指中段到指尖区域远离手腕和衣领。这样模型在重绘时能参考手掌和手腕的相对位置关系不容易出现整体错位。5.3 参数设置按照前面搭建的工作流参数设置如下参数值理由denoise0.65给结构适度的重新生成空间steps28保证细节稳定cfg6.5中等 CFGsamplerdpmpp_2m写实模型常用采样器schedulerkarras尾部细节更好ControlNet strength0.85防止边缘被烧毁正向提示词和负向提示词保持极简不出现“six fingers”等具体描述。5.4 修复结果验证运行后观察修复区域是否满足以下条件手指数量恢复为五根。手指间距自然没有粘连感。肤色、高光、阴影与原图过渡平滑。手部周围的首饰、衣袖边缘没有被破坏。如果出现修复区域颜色断层说明 denoise 过高或 ControlNet 强度偏低。如果手指形状仍然混乱说明遮罩范围太大模型缺少上下文参考。此时可以继续微调参数而不是修改提示词。6. 常见问题与排查思路在实际使用中新手最容易遇到以下几类问题统一整理成表格。问题现象常见原因解决思路导入工作流提示“请安装缺失的包”缺少自定义节点或依赖库根据报错逐个安装缺失节点必要时重装 Python 环境运行报错CUDA out of memory显存不足分辨率或模型过大缩小图片分辨率或更换轻量模型或降低 batch size重绘区域颜色与原图不一致denoise 过高遮罩边缘硬降低 denoise 到 0.5-0.6给遮罩边缘做羽化修复后手指仍然畸形遮罩范围太大或太小缩小遮罩到破损区域保留更多上下文修复区域与原图边缘断裂ControlNet 强度不足提高 ControlNet strength 到 0.9 以上运行速度极慢显存不够或未使用 GPU 版 PyTorch确认 PyTorch 为 CUDA 版本关闭后台显存占用程序生成结果模糊采样步数过少或模型不适合该图片提高 steps 到 30或换用细节更丰富的写实模型遮罩绘制不精确原图分辨率太低先放大原图再进行遮罩绘制模型完全不识别局部重绘没有正确设置 Set Latent Noise Mask检查 mask 和 set_noise_mask 是否连接正确输出图片与输入图片尺寸不一致节点之间图像尺寸处理不一致统一使用原图或统一缩放避免尺寸错配6.1 排查清单遇到问题时按以下顺序检查检查工作流有没有红色节点报错。检查模型路径是否存在文件名是否正确。检查遮罩是否连接到 Set Latent Noise Mask。检查 denoise 是否落在 0.4 到 0.8 的合理区间。检查 ControlNet 应用节点的 start_percent 和 end_percent。检查输出图像尺寸是否与原图一致。7. 参数调优与最佳实践7.1 如何找到最适合的 denoisedenoise 没有一个通用最优值它和图片损坏程度强相关。轻微细节杂乱睫毛粘连、发丝凌乱denoise 0.35 到 0.5。中等结构错误手指多余、牙齿粘连denoise 0.55 到 0.7。严重破损整只手错位、脸型崩坏denoise 0.75 到 0.9。建议每次以 0.05 的步长调整。为了节省时间可以先固定 seed只修改 denoise对比同一 seed 下不同 denoise 的效果。7.2 遮罩绘制建议遮罩绘制是整个工作流中最依赖人工经验的环节。几个实用技巧使用 1.5 倍到 2 倍放大后的图像绘制遮罩。遮罩边缘尽量贴近破损区域的轮廓不要大范围扩展。如果破损区域内有正常像素比如手指之间缝隙可以只涂破损部分让模型参考正常像素的结构。对多区域破损可以分多次修复不要一次涂一整片。7.3 与提示词修复的对比对比维度提示词修复免提示词工作流修复操作成本反复修改提示词绘制遮罩 调参数控制精度受语义模糊限制精确到像素遮罩与原图一致性容易跑偏较好尤其配合 ControlNet可复现性同一个提示词结果不稳定固定 seed 后结果稳定批量处理需要逐张重跑遮罩固定后可以批量上手难度较低中等需要理解节点这里的结论是如果只是偶尔修一张图提示词方式可能更快但当你需要修复一组风格统一的图或者要求修复区域与原图高度一致时ComfyUI 工作流明显更有优势。7.4 工程化建议如果你的修复需求不止一两次建议按以下方式组织工作流把常用的主模型、ControlNet 模型固定在一个工作流模板中。保存多个参数预设比如“微修”“强修”“超大破损修复”。给输出节点增加日期和名称前缀方便归档。对关键参数seed、denoise、strength做注释方便后续调优。定期备份工作流 JSON 文件到 Git 仓库或网盘防止误操作丢失节点配置。另外强调一点AI 修复图片属于图像编辑范畴使用他人图片素材前务必确认版权与授权。不要用自己的工作流批量修改他人作品并用于商业用途。8. 工作流优化与扩展方向8.1 增加分辨率放大流程修复完成后输出图像的分辨率通常维持在原图大小。如果目标是高质量出图可以把 ComfyUI 的 HireFix 流程或 Ultimate SD Upscale 流程附加在工作流尾部先生成低分辨率重绘结果再放大并增加细节。常见做法是工作流前半段用 512 或 768 分辨率重绘后半段接入放大节点将图像放大到 1024 或更高。这样做既保证重绘速度又不会让细节模糊。8.2 使用 Inpaint 专用模型如果修复对象是人像可以考虑使用专门训练过的 Inpaint 模型例如dreamshaper-inpainting、epiCRealism inpainting。这类模型在训练阶段就强化了局部重绘能力遮罩区域的纹理推断比普通 Checkpoint 更准确。使用专用 Inpaint 模型时提示词可以进一步简化因为模型已经理解“遮罩区域需要补全”并不需要语言描述额外引导。8.3 FaceDetail 与人脸修复如果破碎细节集中在脸部比如眼睛、嘴唇、牙齿可以在工作流中加入FaceDetailerDetect 人脸后局部精修。这类节点通常基于年龄段检测和局部重绘能显著改善五官细节。FaceDetailer 的应用方法是检测原图中的人脸区域。把人脸区域裁剪出来。以较高 denoise 局部修复。将修复区域贴回原图。它的好处是完全自动化不需要手动绘制遮罩适合批量修复人像中常见的脸部崩坏。8.4 批量修复方案当原图破损区域相似时比如一批全身图都在手部崩坏可以提前绘制好一个遮罩模板在 ComfyUI 中用遮罩叠加和图像尺寸对齐节点批量执行。但前提是原图的构图、人物大小、手部位置相对统一。如果构图差异大批量修复反而会引入更多错误。9. 关键总结与下一步通过这套 ComfyUI 免提示词修复工作流核心掌握点可以归纳为局部重绘的本质是“由周围像素驱动”提示词只是辅助上下文。遮罩是控制修复范围的唯一精确手段绘制质量直接决定修复质量。denoise 是重绘强度的总开关根据破损程度灵活调整。ControlNet Inpaint 模型可以显著提升修复区域与原图的一致性。复杂破损建议“先修复后放大”不要直接在大分辨率上反复重绘。如果你之前一直依赖 Midjourney 提示词修图建议花一小时把本文工作流跑通对比一次提示词修复和遮罩重绘的效果差异。你会发现当提示词无能为力时像素级控制往往才是最终答案。下一步可以继续学习扩散模型去噪过程与采样器原理。ControlNet 的多种控制方式Canny、Depth、OpenPose。不同 Checkpoint 模型在局部重绘上的表现差异。ComfyUI 自定义节点开发与自动化流程封装。