ComfyUI本地部署与高真实感人像生成工作流实战指南
2026/9/4 22:39:51 网站建设 项目流程

这次我们来看一个 ComfyUI 的展示项目,核心目标很直接:利用 ComfyUI 这个强大的节点式 AI 绘画工具,生成以假乱真、难以分辨的“真人”级别图像。对于很多刚接触 AI 绘画的朋友来说,Stable Diffusion WebUI 可能更直观,但 ComfyUI 在流程控制、显存优化和批量任务上有着独特的优势,尤其是在追求极致真实感和复杂工作流时。

这个项目的重点不是概念多复杂,而是能不能在你的电脑上跑起来,以及如何通过一套有效的工作流,从零开始生成一张足以让人惊呼“这是真人吗?”的图片。我们将重点关注 ComfyUI 的本地部署门槛、显存占用、工作流加载方式,以及如何通过调整参数来逼近真实感。如果你关心本地部署、显存优化、工作流复用和批量生成,这篇文章可以直接收藏。

本文会带你完成从零部署 ComfyUI(以流行的秋叶整合包为例),加载一个专门用于生成高真实感人像的工作流,并进行从文生图到图生图的全流程测试。我们会重点关注启动是否顺利、显存占用如何、生成效果是否稳定,以及如何排查常见的端口冲突、模型缺失等问题。

1. 核心能力速览

能力项说明
项目类型基于 ComfyUI 的高真实感人像图像生成工作流展示
核心工具ComfyUI(节点式 Stable Diffusion 图形界面)
主要功能文生图、图生图、高真实感人像生成、参数精细化控制
推荐硬件支持 CUDA 的 NVIDIA 显卡(如 RTX 3060 12G 或更高),显存建议 8GB 以上。CPU 或低显存显卡(如 4G/6G)可通过优化设置运行,但速度较慢或需降低分辨率。
显存占用取决于基础模型(大模型)分辨率、采样步数。生成一张 1024x1024 图片,8G 显存通常够用;使用高分辨率修复或复杂 LoRA 时,显存需求会增加。
支持平台Windows(主流)、Linux、macOS(支持 M 系列芯片)
启动方式一键启动(秋叶整合包)、命令行启动、Docker 部署
是否支持 API是,ComfyUI 内置 API 服务器,支持通过 HTTP 请求触发工作流和获取结果。
是否支持批量任务是,可通过工作流内的“批量加载图像”节点或外部脚本调用 API 实现。
适合场景本地测试高真实感 AI 绘画、电商模特图生成、角色概念设计、工作流研究与学习、批量素材生产。

2. 适用场景与使用边界

这个工具适合谁?

  • AI 绘画爱好者与研究者:希望深入理解 Stable Diffusion 生成流程,进行精细化参数调控。
  • 内容创作者与设计师:需要快速生成高质量、风格统一的人像素材,用于概念图、插画背景等。
  • 电商或自媒体从业者:寻求低成本生成产品模特图或人物素材,但需注意最终用途的合规性。
  • 开发者:希望通过 ComfyUI 的 API 将 AI 绘画能力集成到自己的应用或自动化流程中。

能解决什么问题?

  1. 流程可视化与可复现:将复杂的生成过程拆解为节点,每一步都清晰可见,工作流(json文件)可保存、分享、复用。
  2. 显存效率优化:节点式架构允许更灵活的内存管理,在一些场景下比 WebUI 更节省显存,适合处理高分辨率或批量任务。
  3. 生成质量与可控性:通过串联多个模型(如基础模型、VAE、LoRA)、ControlNet 等节点,实现对图像细节、姿态、风格的强控制,从而逼近“真人”效果。

不适合什么场景?

  • 追求极致简单点击即用:相比 WebUI 的一键生成,ComfyUI 需要一定的节点连接和理解成本。
  • 硬件资源极其有限:如果显卡显存低于 4GB,运行大多数现代大模型会非常吃力,体验不佳。
  • 需要即时的、移动端的应用:ComfyUI 主要为本地或服务器部署设计。

版权、隐私与安全边界(必须阅读)

  • 肖像权与隐私:生成高度逼真的人像时,应避免生成与真实人物高度相似的肖像,以免侵犯他人肖像权。切勿将生成的图像用于冒充真人、诽谤或欺诈。
  • 素材版权:用于图生图的参考图片,务必确保你拥有其版权或已获得明确授权。使用未经授权的明星、网红照片作为参考是高风险行为。
  • 合规使用:生成的内容不得用于制作色情、暴力、仇恨言论等违法或违背公序良俗的用途。在将生成图像用于商业发布前,务必进行严格的内容审核。
  • 模型授权:使用的大模型、LoRA 等需遵守其开源协议(如 CreativeML OpenRAIL-M),部分模型可能有商业使用限制。

3. 环境准备与前置条件

在开始之前,请确保你的系统满足以下基本条件。我们将以 Windows 系统使用秋叶 ComfyUI 整合包为例进行说明,这是目前对新手最友好的方式。

  1. 操作系统:Windows 10 或 Windows 11(64位)。macOS 和 Linux 用户可通过官方仓库或 Docker 方式安装。
  2. Python 环境:整合包已内置,无需单独安装。手动部署需要 Python 3.10 或 3.11。
  3. 显卡与驱动
    • NVIDIA 显卡:确保已安装最新版的 NVIDIA 显卡驱动。建议安装 CUDA 11.8 或 12.1 版本(整合包通常已包含或自动匹配)。
    • AMD 显卡:可使用 DirectML 版本整合包,但性能和兼容性可能不如 CUDA 版本。
    • Intel 显卡:支持,但需要特定配置,新手不推荐。
    • CPU 模式:无显卡或显存不足时可用,但生成速度极慢,仅用于测试工作流逻辑。
  4. 磁盘空间:至少准备 20GB 可用空间。其中 ComfyUI 本体约 2-3GB,而模型文件(大模型、VAE、LoRA、ControlNet)是占用大头,一个主流大模型(如 SDXL)可能超过 6GB,建议预留 50GB 以上空间用于存放模型。
  5. 虚拟内存:如果物理内存(RAM)小于 16GB,建议将系统虚拟内存(页面文件)设置得大一些(例如 16GB-32GB),以防止在处理大图时出现内存不足错误。
  6. 网络环境:首次启动可能需要下载缺失的节点依赖或模型,需保证网络通畅。部分模型需要从 Hugging Face 等平台下载,请自行确保访问能力。

4. 安装部署与启动方式

我们选择秋叶 ComfyUI 整合包作为演示,因为它集成了常用插件、管理器,并提供了便捷的一键启动脚本。

步骤 1:下载整合包

  • 从可靠的来源获取“秋叶 ComfyUI 整合包”最新版(例如 v9.5)。通常是一个压缩包文件。
  • 将其解压到一个英文路径的文件夹中,例如D:\ComfyUI_windows。路径中不要包含中文或特殊字符。

步骤 2:放置模型文件

  • ComfyUI 的模型文件默认存放在ComfyUI_windows\ComfyUI\models目录下。
  • 你需要将下载好的大模型(.safetensors.ckpt文件)放入models\checkpoints文件夹。
  • 将 VAE 文件放入models\vae
  • 将 LoRA 文件放入models\loras
  • 将 ControlNet 文件放入models\controlnet
  • 对于“真人”效果,推荐使用诸如chilloutmixrealisticVisionmajicmix等擅长真实人像的大模型。

步骤 3:一键启动

  • 进入解压后的文件夹,找到启动器run_nvidia_gpu.bat(对于N卡)文件。
  • 双击运行。首次运行会初始化环境,可能需要几分钟。
  • 启动成功后,命令行窗口会保持打开,并显示类似Running on local URL: http://127.0.0.1:8188的信息。

步骤 4:访问 WebUI

  • 打开浏览器(推荐 Chrome 或 Edge),在地址栏输入http://127.0.0.1:8188
  • 如果端口 8188 被占用,启动脚本可能会自动尝试其他端口(如 8189, 8190),请以命令行窗口输出的实际 URL 为准。
  • 成功访问后,你将看到 ComfyUI 的节点式编辑界面。

备选启动方式:命令行启动如果你使用的是手动安装的 ComfyUI,可以通过命令行启动:

# 进入 ComfyUI 目录 cd /path/to/ComfyUI # 使用 Python 启动主程序 python main.py --port 8188 # 或使用低显存模式(会牺牲一些速度) python main.py --lowvram --port 8188

5. 功能测试与效果验证

成功启动并打开 ComfyUI 界面后,我们开始核心的功能测试。目标是加载一个高真实感人像工作流并生成图片。

5.1 加载“真人”工作流

  1. 获取工作流文件:从社区(如 Civitai、开源社区)下载一个专门为真实人像优化的工作流 JSON 文件。例如,一个可能命名为realistic_portrait_workflow.json的文件。
  2. 导入工作流:在 ComfyUI 界面中,点击右侧的Load(加载)按钮,选择下载好的 JSON 文件。界面会自动加载所有节点和连接。
  3. 检查节点与模型:加载后,仔细查看工作流中的关键节点:
    • Checkpoint Loader:确认它加载的是你已放入checkpoints文件夹的真实人像大模型(如chilloutmix)。
    • VAE Loader:确认 VAE 模型已正确设置或已自动选择。
    • CLIP Text Encode:这里是输入正向和反向提示词的地方。
    • KSampler:核心采样器,控制采样步数、CFG 等参数。
    • Save Image:图片输出节点。

5.2 文生图测试

测试目的:验证工作流的基本文生图能力,生成一张基础的真实感人像。

操作步骤

  1. CLIP Text Encode (Positive)节点中,输入详细的正向提示词,例如:
    masterpiece, best quality, photorealistic, 1girl, beautiful detailed face, detailed eyes, professional photography, soft lighting, (high detailed skin:1.2), film grain
  2. CLIP Text Encode (Negative)节点中,输入反向提示词,过滤不良特征:
    (worst quality, low quality:1.4), (bad anatomy), (inaccurate limb:1.2), bad composition, inaccurate eyes, extra digit, fewer digits, (extra arms:1.2), (deformed fingers:1.2), text, signature, watermark
  3. KSampler节点中,设置基本参数:
    • steps: 20-30(步数越高,细节可能越好,但耗时越长)
    • cfg: 7-9(控制提示词相关性)
    • sampler_name:DPM++ 2M KarrasEuler a(常用采样器)
    • scheduler:karrasnormal
    • seed: 可以固定一个数字(如123456)以便复现,或留空随机生成。
  4. Empty Latent Image节点中,设置初始分辨率,例如width: 512,height: 768。初次测试建议从 512x512 或 512x768 开始。
  5. 点击界面最右侧的Queue Prompt按钮开始生成。

预期结果与判断

  • 命令行窗口会显示生成进度。
  • 生成完成后,图片会显示在Save Image节点预览窗口,并自动保存到ComfyUI\output目录。
  • 成功标准:生成一张无明显扭曲、崩坏,且具有较高真实感的人像图片。皮肤纹理、光影、发丝细节应较为自然。
  • 常见失败
    • 黑图/纯色图:可能是 VAE 未正确加载。检查VAE Loader节点或在大模型加载节点中尝试切换 VAE。
    • 图像扭曲畸形:提示词冲突或 CFG 值过高/过低。调整提示词和 CFG。也可能是分辨率比例过于极端。
    • 显存不足报错:降低分辨率、减少批处理大小、启用--lowvram模式或使用 Tiled VAE 等省显存插件。

5.3 图生图与细节优化测试

测试目的:验证工作流在图生图模式下的能力,并对生成的人像进行细节精修。

操作步骤

  1. 准备参考图:在Load Image节点上传一张真人照片(确保你有权使用)。这将作为图生图的起点。
  2. 连接节点:将Load Image节点的IMAGE输出连接到VAEEncode节点,再将VAEEncode的输出连接到KSamplerlatent_image输入。这取代了Empty Latent Image节点。
  3. 调整降噪强度:在KSampler节点中,denoise参数控制参考图的影响程度。1.0表示完全重绘,0.5以下则保留更多原图特征。对于真人优化,可以从0.6-0.8开始尝试。
  4. 使用 ControlNet 增强控制(如果工作流包含):在图生图基础上,可以加入ControlNet节点(如openpose控制姿态,depth控制景深,canny控制边缘)。将参考图也输入到ControlNet预处理节点,并将其输出连接到KSamplerpositivenegative条件输入。
  5. 高清修复:为了获得更高清细节,可以在KSampler后接一个Latent Upscale节点放大潜空间图像,再连接一个KSampler (High Res Fix)进行二次细化采样。或者使用Ultimate SD Upscale等插件节点。

预期结果与判断

  • 成功标准:生成的图片在保留参考图大致构图或姿态的基础上,融合了提示词描述的特征,并且画质、真实感相比原图或文生图结果有提升。
  • 细节优化:通过调整denoiseControlNet权重,可以平衡“像参考图”和“符合提示词”之间的关系。

5.4 LoRA 模型应用测试

测试目的:测试工作流集成特定风格或特征的 LoRA 模型的能力,例如为生成的人像添加特定发型、妆容或艺术风格。

操作步骤

  1. 在工作流中找到LoraLoader节点。如果原始工作流没有,可以从节点菜单中添加。
  2. LoraLoader节点中,选择你已放入models\loras文件夹的 LoRA 文件(例如detailed_eyes.safetensors)。
  3. LoraLoader节点的MODELCLIP输出,分别连接到Checkpoint Loader下游的MODELCLIP输入线路上(通常需要插入一个CLIPTextEncode节点之前)。
  4. 在正向提示词中加入该 LoRA 的触发词(Trigger Word),例如。触发词通常在 LoRA 发布页有说明。
  5. 调整LoraLoader节点的strength_modelstrength_clip(通常设为相同的值,如 0.8),控制 LoRA 的影响强度。

预期结果与判断

  • 成功标准:生成的人像明显带有 LoRA 模型所定义的特定特征(如蓝色瞳孔、某种画风),且与整体图像融合自然,不显突兀。
  • 强度控制strength值过高可能导致图像扭曲或过度风格化,需反复调试找到最佳值。

6. 接口 API 与批量任务

ComfyUI 的强大之处在于其无头(Headless)API 能力,可以轻松集成到自动化脚本中。

6.1 启动 API 服务器

默认情况下,通过启动器或python main.py启动时,WebUI 和 API 服务器是同时运行的。API 地址通常为http://127.0.0.1:8188

6.2 通过 API 执行工作流

首先,你需要获取当前工作流的 JSON 定义。

  1. 在 ComfyUI WebUI 中,调整好所有参数。
  2. 点击右侧菜单的Save (API Format)按钮,这将下载一个workflow_api.json文件。这个文件包含了所有节点的参数和连接信息。

接下来,使用 Python 脚本调用 API:

import requests import json import io from PIL import Image # ComfyUI 服务器地址 server_address = "http://127.0.0.1:8188" # 1. 加载工作流 API JSON 文件 with open("workflow_api.json", "r", encoding="utf-8") as f: workflow_api = json.load(f) # 2. 准备 API 请求负载 # 注意:prompt 字段就是整个工作流的定义 prompt_data = workflow_api # 你可以在这里动态修改 prompt_data 中的某些节点参数,例如种子、提示词 # 例如,找到 CLIP Text Encode 节点的输入文本并修改 # 这需要你了解工作流 JSON 的结构。 # 3. 提交生成请求 api_endpoint = f"{server_address}/prompt" response = requests.post(api_endpoint, json={"prompt": prompt_data}) response_data = response.json() # 获取本次执行的 prompt_id prompt_id = response_data['prompt_id'] print(f"Prompt ID: {prompt_id}") # 4. 轮询或通过 WebSocket 获取结果(这里使用简单轮询) # 更推荐使用 ComfyUI 提供的客户端库或 WebSocket 方式 history_endpoint = f"{server_address}/history" import time while True: time.sleep(1) # 每秒查询一次 history_response = requests.get(history_endpoint) history_data = history_response.json() if prompt_id in history_data: images_output = history_data[prompt_id]['outputs'] for node_id in images_output: for image_info in images_output[node_id]['images']: filename = image_info['filename'] subfolder = image_info.get('subfolder', '') # 5. 下载生成的图片 image_url = f"{server_address}/view?filename={filename}&subfolder={subfolder}&type=output" image_response = requests.get(image_url) image = Image.open(io.BytesIO(image_response.content)) image.save(f"output_{filename}") print(f"Image saved: output_{filename}") break

6.3 批量任务处理

基于 API,实现批量任务非常简单:

  1. 批量提示词:在循环中,每次调用 API 前,修改prompt_data中对应文本节点的text字段,替换为不同的提示词。
  2. 批量图片:对于图生图,可以将Load Image节点的image参数替换为不同的 Base64 编码图片数据。更高效的方式是使用LoadImageBatch节点(需安装对应插件)。
  3. 目录监控:可以编写一个脚本,监控一个输入目录,每当有新图片放入,就自动触发一次图生图流程,并将结果保存到输出目录。
  4. 队列管理:ComfyUI 的/prompt接口本身支持队列,连续提交多个任务会自动排队执行。注意监控服务器资源,避免队列过长导致显存溢出。

7. 资源占用与性能观察

了解资源占用是稳定运行的关键。

观察方法

  • Windows 任务管理器:打开“性能”选项卡,查看 GPU 显存使用情况、GPU 利用率以及 CPU/内存占用。
  • NVIDIA-SMI:在命令行输入nvidia-smi,可以更详细地查看每个进程的显存占用。
  • ComfyUI 命令行窗口:生成过程中会打印进度和潜在错误信息。

影响因素与优化建议

  1. 分辨率:这是影响显存占用的最大因素。将Empty Latent Image的宽高从 1024x1024 降至 512x512,显存占用可能减少一半以上。建议从低分辨率开始测试。
  2. 批处理大小:在Empty Latent Image节点中,batch_size大于 1 会一次性生成多张图,显存占用线性增加。除非必要,建议设为 1。
  3. 模型大小:SD1.5 模型(约 2GB)比 SDXL 模型(约 6GB)显存占用小。选择适合你硬件的基础模型。
  4. ControlNet 与 LoRA:每增加一个 ControlNet 或 LoRA 节点,都会增加显存开销。同时使用多个时需特别注意。
  5. 高清修复与放大Latent Upscale和二次采样会显著增加显存和耗时。可以考虑在生成低分辨率满意结果后,使用外部工具(如 Real-ESRGAN)进行后期放大。
  6. --lowvram模式:在启动命令中加入此参数,会以时间换空间,降低峰值显存占用,适合显存紧张的显卡。
  7. 使用 CPU 卸载:一些插件(如ComfyUI-Impact-Pack)支持将部分模块(如 VAE 解码)卸载到 CPU 运行,能有效降低显存峰值。

典型场景估算(仅供参考,实际以测试为准)

  • RTX 3060 12GB:运行 SD1.5 模型,生成 512x768 图像,显存占用约 3-4GB;开启一个 ControlNet,可能增至 5-6GB;进行 2x 高清修复,可能接近或超过 10GB。
  • RTX 4060 8GB:运行 SD1.5 模型,生成 512x512 图像通常无压力;尝试 768x768 或开启复杂工作流时需谨慎,建议启用--lowvram

8. 常见问题与排查方法

问题现象可能原因排查方式解决方案
启动后浏览器打不开127.0.0.1:81881. 端口被占用。
2. 服务未成功启动。
1. 查看命令行窗口是否有错误信息。
2. 在命令行输入netstat -ano | findstr :8188查看端口占用。
1. 关闭占用端口的进程,或修改启动脚本中的--port参数为其他端口(如 8189)。
2. 根据命令行错误信息解决,常见如 Python 包缺失。
加载工作流时提示节点缺失工作流使用了未安装的自定义节点。查看命令行窗口或 WebUI 弹出的错误提示,确认缺失的节点名称。1. 通过 ComfyUI 管理器(如果整合包包含)安装缺失节点。
2. 手动从 GitHub 下载节点插件,放入ComfyUI\custom_nodes文件夹后重启。
生成图片时提示CUDA out of memory显存不足。观察任务管理器中 GPU 显存使用情况。1.立即措施:降低生成分辨率、减少batch_size、关闭其他占用 GPU 的程序。
2.启动参数:添加--lowvram--medvram
3.工作流优化:使用 Tiled VAE、CPU 卸载等省显存节点。
生成的图片全黑或全是噪点1. VAE 未正确加载或损坏。
2. 模型文件损坏。
3. 采样器或调度器设置极端。
1. 检查VAE Loader节点设置,尝试切换其他 VAE 或使用“自动”。
2. 重新下载模型文件,检查哈希值。
3. 恢复采样器为Euler a,调度器为normal,CFG 设为 7。
1. 确保 VAE 文件已放入正确目录且完整。
2. 使用可靠的模型下载源。
3. 使用默认参数测试,再逐步调整。
图生图效果毫无变化denoise参数设置过低(接近 0)。检查KSampler节点的denoise值。denoise值提高到 0.6 以上,观察变化。
LoRA 效果不明显或过强strength权重设置不当。检查LoraLoader节点的strength_modelstrength_clip值。从 0.5-0.8 的范围开始调整,并确保提示词中包含正确的触发词。
API 调用返回错误或超时1. 工作流 JSON 格式错误。
2. 服务器未就绪或任务队列堵塞。
3. 请求超时时间太短。
1. 检查workflow_api.json文件是否完整。
2. 查看 ComfyUI 命令行窗口是否有错误。
3. 增加 requests 的timeout参数。
1. 使用 WebUI 的Save (API Format)功能确保 JSON 正确。
2. 重启 ComfyUI 服务。
3. 对于长任务,设置timeout=None或一个较大的值(如 300)。
整合包启动器闪退1. 路径包含中文或特殊字符。
2. 系统虚拟内存不足。
3. 显卡驱动不兼容。
1. 检查解压路径。
2. 查看系统事件查看器中的错误日志。
3. 更新显卡驱动。
1. 将整合包移动到纯英文路径。
2. 增加系统虚拟内存(页面文件)大小。
3. 安装 NVIDIA Studio 驱动或最新 Game Ready 驱动。

9. 最佳实践与使用建议

为了获得稳定、高效的“真人”图像生成体验,遵循以下实践建议:

  1. 从小开始,逐步迭代:首次测试新工作流或模型时,务必从低分辨率(如 512x512)、低步数(20步)、默认采样器开始。成功后再逐步提高分辨率、步数,添加 ControlNet、LoRA 等复杂节点。
  2. 建立项目文件夹结构:规范目录管理,避免混乱。
    Your_Project/ ├── workflows/ # 存放不同的工作流 JSON 文件 ├── inputs/ # 存放图生图的源图片 ├── outputs/ # ComfyUI 默认输出目录,可按日期或项目建立子文件夹 ├── models/ # 模型库(可软链接到 ComfyUI 的 models 目录) └── scripts/ # 存放批量处理的 Python 脚本
  3. 善用“队列”和“历史”:ComfyUI 界面可以连续提交多个任务到队列。利用Save (API Format)保存成功的工作流配置。历史记录可以帮助你回溯和复现好的生成结果。
  4. 提示词工程:对于真实感人像,提示词需要细致。描述肤色(pale skin,tanned skin)、光照(studio lighting,sunlight)、细节(detailed pupils,fine hair)等。反向提示词务必包含常见的低质量标签。
  5. 参数备份:当得到一组满意的参数(模型、提示词、采样器、CFG、种子、LoRA强度等)时,及时保存工作流文件,或在笔记中记录关键参数。
  6. 合规与伦理审查:在将任何生成图像用于公开或商业用途前,进行人工审查。确保图像内容安全,不侵犯他人权益,不违反平台政策。对于高度逼真的人像,考虑添加水印或说明其为 AI 生成。
  7. 性能监控:在长时间进行批量任务时,监控 GPU 温度和显存占用,避免硬件过热或系统不稳定。

通过 ComfyUI 生成以假乱真的“真人”图像,是一个结合了工具使用、参数调试和艺术感觉的过程。秋叶整合包大大降低了入门门槛,而节点式的工作流让你能清晰地掌控每一个生成环节。从加载一个现成的工作流开始,理解每个节点的作用,然后尝试修改参数、替换模型、添加控制网络,最终打造出属于你自己的高真实感图像生成管线。记住,关键不是追求一次成功,而是在迭代中积累经验,在控制中实现创意。

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

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

立即咨询