本地部署ComfyUI:从零跑通温馨家居卡通插画生成全流程
2026/9/2 4:07:47 网站建设 项目流程

这次我们来看一个具体的 AI 绘画需求:生成一张“温馨的家(Simon's Cat)”风格的卡通插画。需求听起来很直白,但真正落地时会遇到模型放哪里、显存够不够、提示词怎么写、批量任务怎么排队、接口能不能直接调这些问题。这篇文章不绕弯子,直接围绕这个案例,给出一套能在本地跑通的 ComfyUI 出图全流程。

先说结论:这套流程优先推荐 NVIDIA 显卡,6G 显存可以开始,8G 以上会更从容;纯 CPU 环境也能跑,但出图速度会比较慢。启动方式是在本地拉起 ComfyUI 服务,再通过 Web 界面或 HTTP API 操作。下文会带你完成环境准备、ComfyUI 安装、模型放置、文生图测试、图生图测试、批量任务和 API 调用,最后附上常见问题排查清单。中间涉及 Simon's Cat 的内容只作为个人学习案例,不会绕开版权问题。

1. 核心能力速览

“温馨的家(Simon's Cat)”这个主题在本文里被当作一次图像生成任务来处理,而不是某个需要二次开发的软件项目。整体能力可以看下面这张表。

能力项说明
项目类型本地 AI 绘画出图流程,基于 ComfyUI + Stable Diffusion 系模型
核心功能文生图、图生图、局部重绘测试、批量生成、接口 API 调用
硬件建议NVIDIA 显卡优先,6G 显存起步,8G 以上更稳;CPU 可推理但速度慢
启动方式命令行启动或整合包启动,Web 界面访问,默认常见端口 8188
模型依赖需要准备 Stable Diffusion checkpoint 模型,放在 ComfyUI 模型目录中
批量任务支持,可通过 Web 界面排队或通过 API 脚本批量提交
API 能力支持提交工作流到本地服务,适合接入自己的自动化工具
适合人群想做卡通插画、家居场景、同人练习素材的 AI 绘画用户
主要风险Simon's Cat 是版权 IP,仅限个人学习,公开传播或商用必须获得授权

从材料看,这个任务的关键不是“能生成什么”,而是“怎么在本机把生成链路跑通”。ComfyUI 是开源项目,工作流是节点式的,适合反复调整参数,也适合批量出图。下面从场景边界讲起。

2. 适用场景与使用边界

“温馨的家(Simon's Cat)”这类需求,常见使用方向是这几个:

  • 个人插画练习:用 AI 生成卡通风格的家居场景,研究构图、光影和配色。
  • 短视频素材草稿:在本地生成一批草图,用于分镜参考或脚本预览。
  • LoRA 风格测试:把不同画风模型放到同一套场景提示词里,对比风格差异。
  • 自媒体配图试验:生成后人工二次加工,观察是否符合内容调性。

但它也有明显不适用的场景。如果你打算把 Simon's Cat 相关角色图直接拿去商用,或者批量生成后公开发布到流量平台,版权风险很高。Simon's Cat 的角色、名称和美术风格都来自英国动画师 Simon Tofield 的 IP,本文只讨论“个人学习 / 本地试验”的用法,不构成商用授权建议。项目里如果涉及其他人脸、声音、商标、私有素材,也必须先确认授权边界。

合规上还要注意一点:不要用生成结果去冒充官方作品,也不要在电商、广告、付费内容里直接使用未经授权的同人图。AI 绘画工具本身是中性的,问题在于使用目的和传播范围。

3. 环境准备与前置条件

在开始部署前,建议先检查本机环境。下面的清单是通用要求,不绑定具体版本,因为 ComfyUI 和 PyTorch 的版本更新比较快,写死版本反而容易误导。

3.1 操作系统与基础软件

  • Windows 10 / 11 或 Linux 均可,macOS 也能跑但显卡适配范围更窄。
  • Python 建议使用 3.10 或 3.11,具体以 ComfyUI 当前版本要求为准。
  • Git 用于克隆 ComfyUI 仓库和后续更新。
  • 浏览器用于访问 ComfyUI 的 Web 界面。
python --version git --version

如果显卡是 NVIDIA,先确认驱动已安装。命令窗口执行nvidia-smi,能正常显示显卡信息说明驱动基本可用。CUDA 版本以 PyTorch 要求为准,不需要单独安装整套 CUDA Toolkit。

3.2 显卡与内存建议

  • 显存 6G 起步:适合 512x512 分辨率、较小步数的文生图测试。
  • 显存 8G 以上:可以尝试 768 或更高分辨率,也能更从容地跑图生图和批量任务。
  • CPU 运行:内存建议 16G 以上,否则加载模型时容易卡死。

这里要说明一点,显存占用不是固定值,它由模型大小、图像分辨率、步数、批量大小共同决定。不同显卡跑同一套工作流,占用可能差不少,具体以本机测试为准。

3.3 磁盘空间与模型目录

Stable Diffusion 系 checkpoint 模型常见体积在 2GB 到 7GB 之间,SDXL 系更大。建议预留 30GB 以上空间,方便放多个测试模型和输出图片。

ComfyUI 的目录结构很直观,模型文件放在对应子目录中:

  • 大模型 checkpoint 放入models/checkpoints
  • LoRA 放入models/loras
  • VAE 放入models/vae
  • ControlNet 放入models/controlnet

如果某个模型文件没放到正确位置,ComfyUI 界面的“添加模型”下拉框里就看不到它,这是新手最常踩的坑之一。

4. 安装部署与启动方式

ComfyUI 的安装有两种常见方式,一种是官方仓库手动安装,另一种是用整合包解压即用。这里分别说明。

4.1 手动安装

如果你本机已经有 Python 和 Git,可以直接用下面的命令拉取官方仓库并安装依赖。

# 克隆官方仓库,版本以官方 README 为准 git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI # 建议创建独立虚拟环境,避免污染全局 Python python -m venv venv # Windows 激活虚拟环境 venv\Scripts\activate # Linux/macOS 激活虚拟环境 # source venv/bin/activate # 安装依赖 pip install -r requirements.txt

这个过程在网络波动时容易失败。如果 pip 安装报错,可以换国内镜像源重试:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

4.2 启动服务

依赖安装完成后,进入 ComfyUI 目录,执行:

# 默认启动,监听 127.0.0.1:8188 python main.py # 如果需要指定监听地址和端口 python main.py --listen 127.0.0.1 --port 8188

看到类似Starting server的日志,浏览器访问http://127.0.0.1:8188就能打开 ComfyUI 工作台。如果页面打不开,优先检查端口是否被占用,或者启动日志有没有报错。

4.3 模型放置

启动前建议先把测试模型放好。假设你已经下载好一个 checkpoint 模型,文件名为mymodel.safetensors,放到对应目录后重启 ComfyUI。

# 将模型文件复制到 checkpoints 目录,实际路径按你的 ComfyUI 位置调整 cp /path/to/mymodel.safetensors models/checkpoints/

放好后重新打开页面,在节点里刷新模型列表,就能看到mymodel.safetensors

5. 功能测试与效果验证

环境准备好之后,开始功能测试。第一次测试不要追求完美,重点是确认整条链路通不通,以及输出是否符合预期。

5.1 文生图测试

在 ComfyUI 工作台加载默认工作流,这是一个最简单的文生图流程:一个 Checkpoint 加载器、一个正向提示词节点、一个负向提示词节点、一个 KSampler、一个空 Latent 节点、一个保存图片节点。

关键参数可以先按下面的思路设置:

  • 采样步数 steps:20 到 30。
  • CFG:6 到 7。
  • 采样器 sampler:Euler a 或 DPM++ 2M Karras。
  • 分辨率 width x height:先跑 512x512,确认能出图后再提高。

正向提示词示例,围绕“温馨的家 + 猫咪 + 卡通插画”展开:

warm cozy home interior, cute black and white cartoon cat, storybook illustration, fireplace, bookshelf, armchair, framed pictures, green plant, window view, soft lighting, high quality, detailed background

负向提示词示例:

text, watermark, signature, blurry, low quality, deformed, extra limbs, bad anatomy, oversaturated

点击“Queue Prompt”运行。判断成功与否的标准有三个:

  • 工作流没有红色报错节点。
  • 图片节点生成了一张可预览的图。
  • 画面里能明显看到猫咪和温馨家居两个核心元素。

如果生成结果风格不对,先检查 checkpoint 是不是偏插画风,再调整提示词里的风格词,比如把storybook illustration换成children's book art style。如果画面偏灰偏暗,试着把 CFG 调到 7 到 8,或者增加soft warm lighting的权重。

5.2 图生图测试

文生图通过后,再验证图生图。图生图适合把一张粗略线稿或参考构图转成完整插画。操作思路是:

  • 把参考图拖入 ComfyUI,使用 Load Image 节点加载。
  • 在 KSampler 前接入 VAE Encode,把图片编码到潜空间。
  • 把 KSampler 的denoise参数调低,控制在 0.4 到 0.6,保留原构图,生成细节。

判断标准是:输入图被转化成卡通插画风格,同时主体位置和布局没有乱掉。如果变化太小,提高 denoise;如果变化过大、原图信息丢失,降低 denoise。

这里建议小步快跑,从 0.4 开始,每次加 0.1,直到效果满意。

5.3 局部重绘测试

局部重绘适合只修改画面某个区域。比如想让画面里的架子颜色改变,或者想替换某个装饰品,可以画一个局部区域,只重绘这一块。

在 ComfyUI 中实现局部重绘的关键是蒙版。把原图加载后,用Set Latent Noise Mask或类似的蒙版节点,将需要重绘的区域标记出来,然后让 KSampler 只处理这块区域。这个功能在改“温馨的家”这类细节丰富的画面时很实用,因为局部重绘可以保留大部分满意的结构,只修正缺陷区域。

6. 接口 API 与批量任务

ComfyUI 最值得利用的一点是它的 API 能力。本地服务跑起来后,可以脱离浏览器,用脚本批量提交任务,适合需要生成多张候选图、多组 prompt 的情况。

6.1 导出 API 格式工作流

在 ComfyUI 界面中调整好工作流后,点击界面上的导出按钮,选择Export (API)格式,保存为 JSON 文件。这个文件里面记录了每个节点的输入参数和图谱关系,是后续脚本提交的基础。

注意:UI 的工作流 JSON 和 API 格式的 JSON 不完全一样。API 格式去掉了界面布局信息,只保留执行所需的数据,所以提交时要使用 API 格式的文件。

6.2 Python 提交任务

下面是一个通用示例,把工作流从 JSON 文件读取,提交到 ComfyUI 的/prompt接口。

import json import requests server = "http://127.0.0.1:8188" # 从 ComfyUI 导出的 API 格式工作流 with open("workflow_api.json", "r", encoding="utf-8") as f: workflow = json.load(f) # 提交任务到 /prompt 接口,实际路径以 ComfyUI 当前版本为准 response = requests.post( f"{server}/prompt", json={"prompt": workflow}, timeout=120, ) print(response.status_code) print(response.json())

提交成功后,响应里通常会返回一个prompt_id,后续用这个 ID 查询任务状态和输出结果。

6.3 查询任务结果并采集图片

任务完成后,可以通过/history/{prompt_id}查询输出图片信息。

import time import requests server = "http://127.0.0.1:8188" prompt_id = "xxxxxxxx" # 轮询任务结果 for _ in range(60): history = requests.get( f"{server}/history/{prompt_id}", timeout=30 ).json() if prompt_id in history: # 遍历输出节点的图片列表,实际结构以响应为准 outputs = history[prompt_id].get("outputs", {}) for node_id, node_output in outputs.items(): images = node_output.get("images", []) if images: print(images) break break time.sleep(3)

这段代码是通用模板,你需要根据 ComfyUI 实际返回结构调整字段名。

6.4 批量任务设计

批量任务的核心思路是:把多个提示词组合存成一个列表,循环提交,并通过history接口确认每个任务完成,最后统一下载结果。

建议在脚本里做两件事:

  • 打印每个任务的prompt_id,方便出问题时定位。
  • 为每个任务设置超时,比如 5 分钟,超时则标记为失败并重试。
import json import time import requests server = "http://127.0.0.1:8188" # 多个正向提示词,实际内容按你的需求调整 prompts = [ "warm cozy home interior, black and white cartoon cat, fireplace, high quality", "cozy living room, black and white cartoon cat on sofa, soft daylight, storybook style", "small warm kitchen, black and white cartoon cat near window, plants, cozy atmosphere", ] with open("workflow_api.json", "r", encoding="utf-8") as f: base_workflow = json.load(f) # 假设提示词节点的 ID 是 6,请替换为你实际工作流的节点 ID for index, prompt_text in enumerate(prompts): base_workflow["6"]["inputs"]["text"] = prompt_text try: response = requests.post( f"{server}/prompt", json={"prompt": base_workflow}, timeout=120, ) response.raise_for_status() print(f"任务 {index + 1} 已提交: {response.json().get('prompt_id')}") except requests.exceptions.RequestException as e: print(f"任务 {index + 1} 提交失败: {e}") time.sleep(1)

批量任务建议先跑 2 到 3 条,确认脚本稳定后,再扩大规模。直接一次性提交 100 个任务,容易因为模型加载、显存调度和磁盘写入问题导致中途卡死。

6.5 curl 调用示例

如果你不想写 Python,也可以用 curl 提交一个工作流。但工作流 JSON 内容很长,实际使用时建议保存到文件,再用--data @file方式提交。

curl -X POST http://127.0.0.1:8188/prompt \ -H "Content-Type: application/json" \ -d '{"prompt": {}}'

上面的空对象只是演示,真正提交时需要把工作流 JSON 放进prompt字段。

7. 资源占用与性能观察

AI 绘画项目的体验好坏,很大程度上取决于资源占用。这里不写死某张显卡的具体占用数字,因为不同模型、不同分辨率的差异很大,更推荐你通过工具观察本机情况。

7.1 显存占用怎么看

第一种方式:查看 ComfyUI 启动终端日志,模型加载和生成过程中会打印一部分资源信息。

第二种方式:另开一个终端,用 NVIDIA 显卡监控命令查看显存实时占用。

# 每 2 秒刷新一次显存信息 nvidia-smi -l 2

第三种方式:Windows 打开任务管理器,在“性能”页签里看 GPU 专用显存占用。生成过程中显存会明显上涨,生成结束后一般会释放。

7.2 影响性能的因素

从经验来看,影响生成速度和显存占用的主要因素有这几个:

  • 分辨率:从 512x512 提升到 1024x1024,计算量成倍增加,显存占用也会明显提高。
  • 步数 steps:步数越多,推理时间越长,但显存占用变化相对小。
  • 批量大小 batch size:一次生成多张图会显著提高显存峰值。
  • 采样器类型:不同采样器计算量不同,DPM++ 类采样器通常比 Euler a 慢一些。
  • ControlNet、局部重绘、高清放大等辅助节点会额外增加显存和计算时间。

7.3 降低显存占用的方法

如果显卡显存比较紧张,可以按这个顺序调整:

  • 把分辨率降到 512x512 或 640x384。
  • batch size 固定为 1。
  • 减少步数,例如从 30 降到 20。
  • 关闭或减少预览节点,部分预览节点会额外占资源。
  • 使用 PyTorch 显存分配优化参数,在启动前设置环境变量:
# Windows PowerShell 示例 $env:PYTORCH_CUDA_ALLOC_CONF = "expandable_segments:True" python main.py
  • 如果显存仍然不够,再考虑 CPU 推理。具体参数以 ComfyUI 当前版本的--help输出为准。

CPU 推理通常比 GPU 慢很多,但可以作为没有独立显卡时的兜底方案。一张 512x512 的图可能在 GPU 上几十秒完成,在 CPU 上可能需要几分钟甚至更久,具体取决于 CPU 性能和线程数。

8. 常见问题与排查方法

本地部署 AI 绘画工具时,遇到的问题往往集中在环境、模型、资源和接口几个方面。下面的排查表可以直接对照使用。

问题现象可能原因排查方式解决方案
启动后页面打不开端口被占用或服务未启动看启动日志,检查端口占用换端口,例如--port 8189,或重启服务
模型列表里没有刚放的模型checkpoint 没放到正确目录检查models/checkpoints路径把模型放到对应目录,重启 ComfyUI
报错提示缺少依赖Python 版本或依赖不匹配pip install日志按 requirements.txt 重装,或重建虚拟环境
CUDA 不可用显卡驱动或 PyTorch 版本不匹配执行nvidia-smi确认驱动更新显卡驱动,重新安装与 CUDA 匹配的 PyTorch 版本
生成时显存不足分辨率或批量大小太高看终端日志和nvidia-smi降低分辨率、步数和 batch,开启显存优化参数
API 提交返回错误工作流格式不对或节点 ID 错误用 API 格式导出的 JSON 检查节点字段重新在界面导出 API 格式,确认提交的 JSON 结构
批量任务卡住请求并发过高或某个任务崩溃看脚本日志和终端日志降低并发,增加超时和重试逻辑
生成结果风格不对模型不够匹配或提示词权重不够对比不同 checkpoint 和提示词换模型,增加风格关键词权重

最容易被忽略的是端口冲突。之前启动过的 ComfyUI 进程没有完全退出,新进程就会起不来。排查时先看端口占用:

# Windows 查看 8188 端口占用 netstat -ano | findstr 8188

找到占用端口的进程后,在任务管理器里结束对应进程,或者启动时直接换一个端口。

9. 最佳实践与使用建议

跑通一套流程只是开始,真正稳定使用还需要一些工程化习惯。

第一,第一次先小参数测试。不要一上来就 1024 分辨率加 50 步加批量 4,很容易触发显存不足。先用 512x512、20 步、batch 1 验证流程,确认没问题后再慢慢提高。

第二,保留一套最小可运行配置。把文生图、图生图、批量任务各保存一份 API 格式的 JSON,放进项目目录里,方便以后复用。即使 ComfyUI 后续更新,你也可以快速恢复工作流。

第三,文件分目录管理。建议按下面的结构组织素材:

ComfyUI/ └── my_project/ ├── workflows/ # 导出的 API 工作流 JSON ├── inputs/ # 图生图、局部重绘的输入素材 ├── outputs/ # 生成结果 └── logs/ # 批量任务日志

第四,批量任务一定要加日志和失败重试。每次提交都记录 prompt_id 和对应提示词,出问题后能快速定位是哪一批提示词导致的。

第五,接口服务不要直接暴露到公网。本机测试时,监听地址用127.0.0.1就行。如果需要远程访问,也要放在可信网络环境里,并设置访问限制。

第六,涉及人脸、声音、商标、版权素材时,必须确认授权。Simon's Cat 相关的同人图,只建议用于个人学习。公开传播前先想清楚版权问题。

第七,发布或商用前要做效果复核。AI 生成图里常见的多手指、猫脸变形、文字残缺等问题,人眼过一遍才能降低风险。

10. 总结与下一步

这个需求最值得试的点是:用 ComfyUI 搭一套“提示词 + 模型 + 批量任务”的卡通插画出图链路,后续换到任何插画主题都能复用。

最先应该验证的是文生图基础流程。模型放对、提示词写好、采样参数合理,能稳定出图后,再往下测图生图和 API 调用。最容易踩的坑是两个:模型没放到models/checkpoints目录导致列表里看不到,以及 API 提交时用了 UI 格式的工作流 JSON 导致接口报错。

接下来可以继续扩展的方向包括:训练一个专属 LoRA 来固定“温馨的家”风格,接入 ControlNet 控制画面构图,或者把批量生成的图片接进短视频素材流水线。建议先收藏这套流程,等真正需要做插画批量生成时,直接照着操作。

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

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

立即咨询