☰
ComfyUI免提示词修复Midjourney破碎细节:ControlNet tile+低重绘幅度工作流
2026/10/3 8:22:29 网站建设 项目流程

Midjourney 出图很好看,但有一个很影响体验的问题:局部细节一放大就容易碎。头发碎成一片噪点、手指多出来一两节、衣服纹理像破布、皮肤跟磨砂一样。你重新抽卡又未必能抽到满意的构图,沿用原提示词再生成,出来的可能根本不是同一张图。

这次我们来看一个更省事的处理思路:在 ComfyUI 里,用一套不需要写提示词的工作流,直接对 Midjourney 生成的破碎细节做修复。核心做法是放低重绘幅度,配合 ControlNet tile 锁住原图结构,再用放大模型重新刻画纹理。整个过程不用重新设计提示词,不用重抽卡,只需要把你想要修复的图丢进来,跑一遍工作流,重点观察降噪幅度和 tile ControlNet 是否生效。

这篇文章会从“破碎细节到底怎么来的”讲起,再到 ComfyUI 环境准备、工作流节点接法、修复效果验证、接口 API 调用和批量修复,最后给出一套通用的排查清单。如果你已经在用 ComfyUI,或者手头有一堆 Midjourney 需要局部修复的图,这篇可以直接按步骤操作。

1. 核心能力速览

先交代这套工作流的关键参数和适用边界,方便你判断值不值得往下读。

能力项说明
项目类型ComfyUI 图像修复与放大工作流
输入素材Midjourney 或其他 AI 生成的图片、摄影图、重绘后期图
核心功能免提示词修复破碎细节、纹理重绘、局部重绘、放大重构
主要节点Load Image、VAE Encode、ControlNet tile、KSampler、VAE Decode、Ultimate SD Upscale 或等效放大节点
是否写提示词正向提示词留空,负向可留默认或放少量通用负面词
关键参数denoise 约 0.3-0.5,CFG 约 4-7,放大模型按本机显存选择
显存需求需按实际模型版本测试;tile ControlNet 可在较低显存环境运行
支持平台Windows / Linux 下部署 ComfyUI 均可
启动方式本地命令启动、秋叶一键整合包、API 服务启动
是否支持 API支持,ComfyUI 原生 /prompt 接口
是否支持批量任务支持,可批量丢图进队列
适合场景Midjourney 成图精修、AI 图片放大、纹理修复、细节增强

需要说明的是:这套工作流的价值并不在于“发明了一个新模型”,而是把已有的图生图、ControlNet、放大模型组合成一条固定流程。你不需要对每张图重新写提示词,也不需要在 Photoshop 里一笔一笔修。

1.1 哪些情况适合用

  • 手指、眼睛、牙齿等部位在放大后出现明显畸形。
  • 头发、皮肤、布料纹理呈现“破碎感”,像细碎噪点拼出来的。
  • 构图满意,但分辨率不够,放大后出现涂抹感。
  • 同一个角色、同一套场景,不想为了修复某个局部而重新生成。
  • 批量整理一批 Midjourney 图片,希望统一修复后再进素材库。

1.2 哪些情况不适合用

  • 整张图模糊、构图失败、主体完全错位,这种请重新抽卡,修复成本反而高。
  • 需要严格保留原图每一个像素不动,只处理某个极小区域,应该用局部重绘 Mask。
  • 对大幅细节有专业摄影级要求,还是需要进入 Photoshop 或 Lightroom 做精细控制。

2. 破碎细节是怎么产生的

很多人以为 Midjourney 输出的图可以直接用,但放大到 200% 以上就会发现局部经不起看。破碎感的来源主要有四个。

第一,Midjourney 本身是在潜空间里生成图像,最终解码成像素图时,高频细节会被模型“猜”出来。模型猜得准的区域就很清晰,猜不准的区域就产生伪影和噪点,尤其集中在手指、文字、复杂纹理这些难以建模的部位。第二,放大过程中如果使用简单的邻近插值或普通放大算法,边缘会出现锯齿、模糊和错误纹理。第三,降噪器在生成阶段会优先保证整体构图,对局部小结构的约束比较弱,所以同一种材质在不同区域会出现不一致的破碎表现。第四,当你把图送去给其他工具二次生成时,如果重绘幅度太高,模型会加入自己的想象,导致原结构被破坏。

理解这一点,就能明白为什么“免提示词修复”这条路可行:既然破碎细节是模型在潜空间里“猜”得不准确的结果,那就让模型在低重绘幅度下再猜一次,把局部猜得更合理。同时用 ControlNet tile 把原图的结构、边缘、空间关系锁住,避免第二次猜测时改变构图或物体位置。

2.1 为什么不是简单放大

如果只是把分辨率调高,破碎区域不会自动变好,只会被放大得更大。修复的关键步骤是“重绘”,不是“放大”。放大只是让模型有更多像素空间去重新生成纹理,真正改变破碎状态的是 KSampler 里的降噪过程。所以我们看到很多修复工作流会把放大和重绘做在一起:先解码回像素,再用放大模型提升分辨率,然后以低降噪幅度再做一次图生图。

3. 免提示词修复的原理

“免提示词修复”看起来像魔法,实际原理可以拆成三个部分。

3.1 空提示词 + 低降噪,只重绘细节不重写构图

正常的文生图,提示词决定了画面里有什么。修复破碎细节时,如果我们继续写提示词,模型容易受文字影响,把原有构图带偏,比如把人物衣服改掉、背景多出东西。空提示词的方式等于告诉模型:不要根据文字想象画面,只根据输入图像本身的特征来重绘。

低降噪数值是关键。denoise 越低,输出越接近输入图;denoise 越高,模型重画的程度越大。修复破碎细节时,一般从 0.3 开始,太高会把原图改得面目全非,太低则无法清理破碎区域。

3.2 ControlNet tile 锁结构

ControlNet tile 是一个专门处理“输入图结构保持”的控制模型。它会把原图切成 tile 块,提取里面的空间关系,并在采样阶段约束模型不要改变这些结构。有了它,哪怕你用的是空提示词,模型也会尽量保留原图的人物轮廓、位置、边缘和空间布局。这样可以放心把降噪幅度提到 0.4 甚至 0.5,让模型有足够自由去修复细节,同时不会把画面结构重画一遍。

3.3 放大模型负责生成新纹理

重绘过程中,模型把破碎的纹理区域重新生成了一遍。为了确保生成后的纹理足够细腻,我们通常会先做一次放大,让模型在高分辨率下重绘。常见的做法是使用 Ultimate SD Upscale 节点,配合 4x-UltraSharp 之类的放大模型,把图片放大 1.5 到 2 倍,然后再进入 KSampler 做低降噪重绘。放大后再重绘,比先重绘再放大效果好很多,因为模型在更高像素空间里有更多信息来校准细节。

这三个部分组合起来,就是一套典型的“无提示词修复”工作流:加载图片 → 放大 → 图生图低降噪重绘 → 输出修复结果。

4. ComfyUI 本地部署环境准备

在开始搭工作流之前,先确保 ComfyUI 能正常启动。这里区分两种典型方式:一种是用整合包,一种是手动安装。

4.1 使用整合包快速启动

如果你之前没装过 ComfyUI,搜索“秋叶 ComfyUI 整合包”可以找到包含 Python、PyTorch、模型管理工具的打包版本。整合包的好处是依赖隔离、模型目录清晰,适合第一次接触的用户。启动时进入一键启动脚本,等待命令行出现本地地址,然后在浏览器打开即可。

http://127.0.0.1:8188

4.2 手动部署通用步骤

手动部署的思路是先装 Python 环境,再用 pip 安装依赖,最后从源码启动。

git clone https://github.com/comfyanonymous/ComfyUI cd ComfyUI

建议创建独立的 Python 虚拟环境再安装依赖。安装完成后,调用 main.py 启动服务。

python main.py --listen 127.0.0.1 --port 8188

如果使用 Windows 且需要调用本地显卡,先确认 PyTorch 版本和 CUDA 版本匹配。搜索“ComfyUI 本地部署加速器”可以找到一些针对国内下载 PyTorch 和模型文件的加速方法,这里不展开。

4.3 建议准备的文件

  • 一个可用的 Stable Diffusion 模型,例如基于 SD1.5 或 SDXL 的二次元或写实模型。
  • 对应的 ControlNet tile 模型文件,需要放到 ComfyUI/models/controlnet 目录。
  • 一个放大模型,例如 4x-UltraSharp 或 4x_NMKD-Siax,放到 ComfyUI/models/upscale_models 目录。
  • 如果需要面部修复,可以准备 FaceRestore 相关节点。

4.4 显存与显卡要求

这套工作流对显卡没有特别夸张的要求。SD1.5 级别的模型加上 ControlNet tile,8GB 显存就能跑得很舒服;如果使用 SDXL 模型,建议 12GB 以上显存,或者使用带 tiling 的低显存模式。实际占用需要根据本机测试确认,因为放大模型、采样分辨率、是否启用 FaceRestore 都会直接影响显存。启动时可以观察任务管理器或 ComfyUI 控制台的显存日志,不要只看启动时占了多少,要看 KSampler 开始执行那一段的峰值占用。

5. 工作流构建与一键导入

ComfyUI 的界面是节点式的,我们需要把“加载图片、放大、编码、ControlNet、采样、解码、保存”这些节点连成一条链路。下面给出一个完整的工作流描述,并且会拆成节点序列。

5.1 节点序列总览

这是从输入到输出的主干链路:

Load Image -> Image Scale / Upscale Model -> VAE Encode -> ControlNet Apply -> KSampler -> VAE Decode -> Save Image

其中 ControlNet Apply 需要两条输入:一条来自 Load Image,另一条来自 ControlNet Loader。

5.2 分支链路细节

第一步,加载图片。使用 Load Image 节点,选择需要修复的图。

第二步,放大(可选)。如果原图分辨率偏低,可以先做一次放大。推荐使用 Ultimate SD Upscale 节点,或者先通过 UpscaleModelLoader 加载放大模型,再配合 ImageUpscaleWithModel 节点。

UpscaleModelLoader -> ImageUpscaleWithModel -> 放大后的图像

第三步,潜空间编码。把图像用 VAE Encode 转换成潜空间数据,KSampler 没法直接处理像素图。

第四步,加载 ControlNet。使用 ControlNetLoader,model 选择 tile 相关的模型文件;ControlNetApplyAdvanced 或 ControlNetApply 节点把图像条件附加到采样过程。

第五步,KSampler 采样。正向提示词留空,使用 Claude 的最终版本进行编辑。确保保留所有章节标题、描述性内容、链接、图片引用的 Markdown 设置,不改变结构与格式。直接返回完整翻译结果。Claude 最终版,修改中文格式:

正向提示词留空,负向提示词可以给少量通用负面词,例如“worst quality, jpeg artifacts, blurry”,也可以直接留空。steps 从 20 到 30 之间选,cfg 从 4 到 7 之间选,denoise 从 0.3 到 0.5 之间选。采样器可以用 dpmpp_2m,调度器用 karras。

第六步,解码输出。KSampler 输出潜空间数据,经过 VAE Decode 转成图像,最后连接 Save Image 保存。

5.3 关键参数记忆表

参数推荐值作用
steps20-30采样步数,步数越高细节越稳定
cfg4-7提示词引导强度,空提示词下可偏低
denoise0.3-0.5重绘幅度,破碎严重时调高
ControlNet strength0.6-0.9结构锁定强度,越高越保构
放大倍数1.5-2.0放大过大容易产生额外伪影
upscale model4x-UltraSharp 等决定放大后的纹理质量

5.4 工作流 JSON 导入思路

ComfyUI 工作流可以通过“Load”按钮导入 JSON 文件,也可以用“Export API”导出后,用 API 方式调用。手动搭建时,只要保证节点之间的连线匹配,不需要强行套别人的 JSON。搜索“ComfyUI 工作流分享”时,你会发现很多修复类工作流都长这样:要么是 tile + upscale,要么是 face restore + upscale,套路基本一致。

5.5 需要的自定义节点

  • 如果你用的整合包自带了 Custom Nodes 管理,安装 “ComfyUI-Impact-Pack” 或 “ComfyUI_UltimateSDUpscale” 可以降低工作流搭建成本。
  • 如果只需要基础修复,原生的 ImageUpscaleWithModel 加 KSampler 就够用,不一定非要自定义节点。

6. 修复效果验证流程

搭建好工作流之后,不要直接批量跑图。先把一张典型的破碎图拿来做验证。

6.1 测试图选择

选一张同时具备以下特征的图效果最直观:人物手指附近有破碎、头发纹理噪声明显、放大后局部有涂抹感。Midjourney 生成图放大到两倍左右,很容易找到这类区域。

6.2 操作步骤

  • 第一步,把测试图拖入 ComfyUI 的 Load Image 节点。
  • 第二步,确认正负提示词都为空,或者只保留负向通用词。
  • 第三步,把 denoise 设到 0.35,先跑一遍。
  • 第四步,对比输出图和原图,重点看手指、头发、皮肤纹理是否变平滑。
  • 第五步,如果整体变化不明显,把 denoise 提高到 0.45 再试。
  • 第六步,如果构图被改了,把 ControlNet strength 提高,或者降低 denoise。

6.3 判断成功的标准

成功的修复应该满足三个条件:破碎区域趋于自然、整体构图和原图基本一致、没有新增明显的伪影和色块。如果你发现输出图虽然细节干净了,但人物五官变了、背景物体移位了,说明重绘幅度太高或 ControlNet 强度太低。

6.4 常见失败现象

失败现象原因调整方向
细节变干净但人物不像denoise 过高降到 0.3-0.35
输出图几乎没变化denoise 过低或 ControlNet 过强提高 denoise,降低 CN 强度
出现大面积色块放大模型不匹配换模型或降低放大倍数
显卡显存不足分辨率太大或模型太大先用小图测试,或开启低显存优化
节点报错缺少自定义节点或 ControlNet 文件未放好检查节点安装和模型目录

7. 接口 API 与批量修复调用

ComfyUI 本身开放了 HTTP 接口,可以理解为一个本地部署的图像生成服务。如果你想给一堆 Midjourney 图片做批量修复,不需要手动在界面里一张张拖图,直接写脚本调用接口就行。

7.1 启动 API 服务

启动时只需要保持 ComfyUI 在运行,默认接口就是可用的。

python main.py --listen 127.0.0.1 --port 8188

7.2 通过 WebSocket 或 /prompt 接口提交任务

ComfyUI 的 API 调用方式是先通过工作流的 API 格式 JSON,把客户端 id 设置好,再 POST 到 /prompt 接口。下面给出一段通用示例,你需要替换成自己的工作流 JSON 和图片路径。

import json import urllib.request def queue_prompt(prompt, client_id): data = json.dumps({ "prompt": prompt, "client_id": client_id }).encode("utf-8") req = urllib.request.Request( "http://127.0.0.1:8188/prompt", data=data, headers={"Content-Type": "application/json"} ) with urllib.request.urlopen(req) as resp: return json.loads(resp.read()) # 这里的 prompt 应该是你在 ComfyUI 中导出后的 API 格式工作流, # 并且把 LoadImage 的 image 参数改成你本机的输入文件名。 api_prompt = { "3": { "class_type": "LoadImage", "inputs": { "image": "mj_broken_001.png" } }, "5": { "class_type": "KSampler", "inputs": { "seed": 42, "steps": 25, "cfg": 5.0, "sampler_name": "dpmpp_2m", "scheduler": "karras", "denoise": 0.4, "model": ["10", 0], "positive": ["4", 0], "negative": ["4", 1], "latent_image": ["9", 0] } } } print(queue_prompt(api_prompt, "test-client"))

注意:API 格式的 JSON 必须从 ComfyUI 工作流编辑器里导出,直接手写容易漏节点之间的引用关系。

7.3 批量目录处理思路

批量处理时,建议写一个目录遍历脚本,对输入目录里的每一张图都调用一次 /prompt 接口,然后把输出文件重命名保存。

import os import json import time import urllib.request input_dir = "./input_mj" output_dir = "./output_fixed" os.makedirs(output_dir, exist_ok=True) for filename in os.listdir(input_dir): if not filename.lower().endswith((".png", ".jpg", ".jpeg")): continue # 用该文件名替换工作流 JSON 中的 LoadImage 输入 # 并调用 /prompt 接口 print("submitting:", filename) time.sleep(1)

实际使用中,你还需要监听 WebSocket 来判断任务是否完成,避免连续提交导致显存突发占用。更稳妥的工程做法是:用一个任务队列,一次只跑一个任务,完成后再提交下一个。

7.4 失败重试建议

  • 网络请求超时:调大 urllib 的超时时间,或者使用 requests 库,timeout 设置到 120 秒。
  • 显卡显存不足:批量队列里串行执行,不要同时提交多个任务。
  • 输出图像没生成:检查工作流里是否连接了 Save Image 节点,并确认输出目录有写入权限。

8. 资源占用与性能观察

不少用户第一次跑这套工作流,最担心的是显存是否够用。与其给一个固定数字,不如先掌握观察方法。

8.1 如何观察显存占用

ComfyUI 控制台会在每个节点执行时输出一些日志信息,但显存占用通常要借助外部工具观察。Windows 下可以直接打开任务管理器,在“性能”栏里看 GPU 显存曲线。跑 KSampler 时显存会明显抬升,跑 VAE Decode 时同样会有一个峰值。如果你用的是 Linux 服务器,用nvidia-smi观察更直接。

8.2 影响性能的因素

  • 分辨率:分辨率越高,潜空间张量越大,显存占用上升明显。
  • denoise:对显存影响不大,但会影响采样耗时。
  • ControlNet:会增加一次额外的模型推理,显存占用会小幅上升。
  • 放大模型:放大倍数越大,后续 KSampler 处理的像素越多,耗时越长。
  • 批量数:批量跑多张图时显存占用接近线性增加,建议逐张跑。

8.3 降低显存占用的通用方法

  • 先用低分辨率测试工作流,确认效果后再上高分辨率。
  • 调整 ComfyUI 的启动参数,例如--lowvram或--novram,适合显存较低的环境。
  • 使用支持 tile 的 ControlNet 时,系统会在局部块中处理,显存占用比整图处理更稳定。
  • 放大倍数不要一下拉满,先用 1.5 倍测试。
  • 避免同时打开多个 ComfyUI 页面重复生成任务。

9. 常见问题与排查方法

如果你运行这套工作流时遇到启动失败或节点报错,可以按下面这个表格快速定位。常见错误在 ComfyUI 社区里搜“节点在执行过程中发生错误”就能看到大量类似案例。

问题现象可能原因排查方式解决方案
启动后页面打不开端口被占用或服务未启动检查控制台日志和端口状态更换端口或重启服务
缺少 ControlNet 模型文件模型没有放到 models/controlnet 目录查看启动日志的模型列表下载对应模型并放到正确目录
tile 节点报错ControlNet 版本不兼容或节点未安装查看具体报错堆栈更新节点或换用 ControlNetApply 简单版
输出图模糊放大倍数不够或 denoise 太低对比原图放大区域提高放大倍数或 denoise
显存不足分辨率过高或模型过大观察显存峰值开启低显存模式,降低分辨率
API 调用返回 400工作流 JSON 格式不对检查 JSON 里节点 ID 引用从 ComfyUI 导出 API 格式后再改参数
批量任务卡住串行队列未做任务判断查看脚本日志增加 WebSocket 完成监听或超时重试
秋叶整合包启动失败Python 依赖被破坏或模型路径不对检查整合包日志重新初始化整合包环境,或手动安装依赖

9.1 秋叶整合包使用特别说明

如果你用的是秋叶一键整合包,启动前先确认整合包版本是否自带 ControlNet 自定义节点和放大模型。很多整合包默认只带了基础组件,你需要通过“自定义节点”菜单补装。安装自定义节点后,如果 ComfyUI 提示缺少依赖,可以进整合包目录手动执行一次 pip install,把控制台报错的包名装进去。

9.2 显卡驱动与 PyTorch 版本

如果 KSampler 执行时报 CUDA 相关错误,优先检查 PyTorch 版本和显卡驱动是否匹配。ComfyUI 官方对 PyTorch 版本有明确建议,升级驱动或者用 CPU 模式跑一遍,可以快速判断是不是显卡环境问题。CPU 模式速度很慢,但可以用来验证工作流逻辑是否正确。

10. 最佳实践与合规边界

这套修复工作流本质上是“用 AI 重绘原有 AI 生成图”,因此在真实项目里,有几条工程和合规建议值得记下来。

10.1 工程侧建议

  • 第一次测试,用小图、低 denoise、低采样步数,先确认工作流能完整跑通。
  • 保留一套最小可运行配置,例如固定用 SD1.5 模型,固定用 0.4 denoise,遇到项目再微调。
  • 输入素材、输出结果、工作流 JSON 分目录存放,不要混在一起。批量任务建议输出文件名包含原文件名,方便回溯。
  • 批量任务一定要有日志和失败重试机制。最简单的方式是记录每个文件名对应的提交时间和返回状态码。
  • API 服务只监听 127.0.0.1,不要直接暴露到公网。ComfyUI 的接口可以执行任意工作流,暴露到公网有被滥用的风险。
  • 定期清理输出目录,防止大量图片堆积导致磁盘写满。

10.2 合规与授权边界

  • Midjourney 生成图、真人照片、他人插画,修复前必须确认你是否有使用和修改的权利。
  • 如果图片包含真实人物、品牌元素、受版权保护的素材,需要获得相应授权。
  • 修复肖像类图片时,注意不要被误用为生成欺骗性内容。建议在项目文档中标注“AI 修复/后期处理”的用途。
  • 不要用这套工作流去处理涉及敏感内容的图片,也不要对他人作品进行未经许可的商业化修改。

10.3 什么时候停止修复

修复不是越重越好。当输出图已经开始偏离原构图,或者局部出现新的纹理错误时,说明重绘过猛。工程上建议固定一个“接受阈值”:与原图的结构相似度、局部纹理自然度、人物五官一致性。三者有两个达标,就可以停在这里,不必追求完美。

11. 总结与后续扩展

这次我们完整拆解了“免提示词修复 Midjourney 破碎细节”这套 ComfyUI 工作流。它的核心价值不是某个神秘模型,而是把空提示词、低降噪、ControlNet tile、放大重绘这几个成熟方法组合成一条可复用的流程。最值得先验证的功能就是 0.35 到 0.45 的 denoise 下,破碎区域有没有变自然,构图有没有保住。

最容易踩的坑有三个:一个是 denoise 太高导致人物五官被重画;一个是 ControlNet tile 文件没放对目录导致节点报错;还有一个是批量任务里连发太多请求直接爆显存。把这三个问题控制住,这套工作流就能稳定服务你的日常修图。

后续可以继续扩展的方向不少:把 FaceRestore 节点接进来,专门修复人脸细节;接入更高质量的放大模型,例如适合写实图片的 4x 模型;也可以把工作流导出为 API 格式,接入你现有的图片处理平台,做成自动化的批量修复服务。建议先把本文的节点链路手工搭一遍,确认效果后,再考虑接口化和工程化。

这套思路同样可以迁移到 Stable Diffusion 生成的图片、老照片放大、游戏截图纹理修复等场景。区别只在于输入图的分辨率和破碎程度,节点结构和参数逻辑基本一致。收藏备用,下次遇到 Midjourney 局部细节翻车,不需要重新抽卡了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询