ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ComfyUI本地AI绘图工作流:Stable Diffusion模型整合与LoRA角色生成实战

ComfyUI本地AI绘图工作流:Stable Diffusion模型整合与LoRA角色生成实战 好这次我们不聊《百变小樱》的剧情而是直接把“知世”这个角色当作本地 AI 绘图生成工作流的一个测试主题来看。如果你手上正好有 NVIDIA 显卡想跑一套能出角色图、能批量出图、还能通过接口调用的绘图服务那这篇文章可以直接收藏。我会从头到尾走一遍环境准备、ComfyUI 启动、模型和 LoRA 的放置、文生图/图生图/局部重绘测试、批量出图、接口 API 调用以及显存观察和问题排查。整体内容是通用的本地 AI 绘图流程主题用“知世”来做演示样本方便大家对照验证效果。先说结论性信息。这套流程不等于某个官方开源项目它本质上是 ComfyUI 动漫风格基础模型 角色 LoRA 的组合方案。核心门槛在显存按本地常见的 Stable Diffusion 系模型表现来看建议 NVIDIA 显卡显存 8GB 起步显存越低越要用低分辨率起步。没有 NVIDIA 显卡也能跑但 CPU 推理速度很慢只适合极少量测试不适合批量任务。启动方式支持命令行启动和整合包启动启动完成访问本地 WebUI同时自带 HTTP API可以接到自己的脚本里跑批量任务。1. 核心能力速览能力项说明演示主题《百变小樱》角色“知世”风格角色图生成基础工具ComfyUI开源图像生成工作流工具核心能力文生图、图生图、局部重绘、LoRA 权重对比、批量出图推荐硬件NVIDIA 显卡显存 8GB 起步更稳妥具体取决于模型版本支持平台Windows 优先Linux/macOS 可用但需要手动装依赖启动方式命令启动 / 批量脚本启动启动后访问 WebUI是否支持 API支持ComfyUI 提供 HTTP 接口提交工作流是否支持批量任务支持可以在界面设置批量数量也可以通过脚本循环提交适合场景动漫角色素材制作、LoRA 效果验证、工作流学习、个人内容测试从材料层面看这里没有官方固定版本的“百变小樱知世”开源模型包所以更稳妥的做法是把它当作一个选题方向你自己准备可用的动漫底模和角色 LoRA然后通过 ComfyUI 工作流去组合调用。实际效果会根据模型底子、LoRA 训练素材和提示词质量产生明显差异。2. 适用场景与使用边界这套流程适合三类人。第一类是刚开始接触 ComfyUI 的 AI 绘画玩家他们需要一个明确的角色主题来练手通过文生图、图生图、LoRA 权重调整来理解工作流节点之间的关系。第二类是有批量出图需求的内容制作者比如做动漫同人设定稿、头像素材、壁纸多方案对比可以在 WebUI 里直接拉 Batch Count也可以用 Python 脚本调 API 做队列任务。第三类是正在学习角色一致性控制的开发者ControlNet、LoRA、局部重绘这套组合下来能比较直观地看到哪些节点影响“像不像”这个角色。使用边界也要说清楚。动漫角色形象受版权保护本文所有演示都应当限制在个人学习、本地技术验证、非商业测试范围内。不要用生成图做批量商用素材不要放到电商平台售卖不要制作印刷品或数字商品交易。涉及真人风格、肖像、声音或可识别身份内容时必须取得明确授权否则不要生成也不要传播。不是所有内容平台都接受动漫角色二次生成内容的商用发布前需要自行确认平台规则。如果你追求的是“打开网页输入一句话就出图”的云端服务体验这套本地流程并不适合你。本地部署需要自己准备模型文件、管理磁盘空间、处理驱动兼容问题前期成本比在线工具高。它是给愿意折腾、需要离线环境、需要批量接口的人准备的。3. 环境准备与前置条件建议按下面的检查项确认环境。操作系统Windows 10/11 优先很多整合包脚本基于 Windows 编写。Linux 需要自己安装依赖能用但不是零门槛。显卡驱动NVIDIA 显卡必须更新到较新的官方驱动老驱动可能导致 PyTorch 无法正确调用 CUDA。CUDA 环境如果使用整合包通常会带运行库如果使用源码部署需要按照 PyTorch 官方要求安装对应 CUDA 版本。不要自己乱装多个版本容易冲突。Python使用源码方式部署时需要安装 Python版本必须以你拉取的 ComfyUI 依赖文件要求为准不要盲目安装最新版本。磁盘空间基础模型 2GB 到 7GB 不等动漫 LoRA 一般几十 MB 到几百 MB整体预留 20GB 以上更稳批量任务输出图会持续占空间。端口占用ComfyUI 默认端口是 8188如果被占用启动命令里改成 8189 或其他空闲端口即可。需要说明的是这里不写死具体版本号因为 ComfyUI 更新很快不同时间拉取的依赖文件对应的版本要求不同。更实际的检查方法是启动失败时读日志日志里提示缺哪个包就装哪个包提示 CUDA 版本不对就按提示调整。硬性要求只有一个显卡驱动的更新状态要正常否则后面所有 GPU 推理都会报错。4. 安装部署与启动方式先区分两种情况使用整合包还是使用源码部署。如果你不熟悉 Python 和 Git优先选整合包。整合包一般解压后目录内有启动脚本。启动流程是解压到英文路径路径里不要带中文和空格双击启动脚本等待终端输出 WebUI 地址然后打开浏览器访问。第一次启动会加载模型速度取决于磁盘和显存耐心等待即可。如果你希望更灵活地改代码、更新版本可以用源码部署。下面是通用命令模板实际目录名按你克隆的结果为准。git clone https://github.com/comfyanonymous/ComfyUI cd ComfyUI pip install -r requirements.txt python main.py --listen 127.0.0.1 --port 8188启动后浏览器访问http://127.0.0.1:8188就可以看到 ComfyUI 的节点式画布。界面里加载默认工作流通常已经包含文本编码器、采样器、解码器等基础节点。第一次打开时不要着急先确认右侧红点没有被报错信息覆盖再开始后续操作。模型文件放置目录比较固定下面是一个典型的目录结构示例ComfyUI/ ├── models/ │ ├── checkpoints/ # 放基础模型例如动漫底模 │ ├── loras/ # 放角色 LoRA 文件 │ ├── controlnet/ # 放 ControlNet 模型可选 │ └── vae/ # 放 VAE 文件如果模型未内置 ├── input/ # 批量处理时放输入素材 ├── output/ # 生成结果默认输出到这里 └── main.py如果你的基础模型或者 LoRA 放到对应目录后在 WebUI 界面没有显示检查文件名后缀是否正确以及是否在放置模型后重启了服务。ComfyUI 不会热扫描所有模型目录某些加载节点需要在添加后重新刷新列表。5. 功能测试与效果验证5.1 文生图测试测试目的确认基础模型和 LoRA 能被正确加载验证提示词是否能描述出角色特征。加载一个最基础的工作流包含 CheckpointLoader、CLIPTextEncode正向提示词、CLIPTextEncode负向提示词、KSampler、VAEDecode、SaveImage。在 Checkpoint 里选择你准备的动漫底模在 LoRA 加载器里选择“知世”角色的 LoRA 文件权重先设置为 0.8。正向提示词示例daidouji tomoyo, (masterpiece:1.2), best quality, school uniform, gentle smile, long dark hair, purple eyes, portrait, upper body, soft lighting, detailed background负向提示词示例lowres, bad anatomy, bad hands, extra fingers, missing fingers, blurry, jpeg artifacts, watermark, signature分辨率先设置为 512x768采样步数 20CFG 7种子可以先选一个固定值。生成成功后输出目录会出现一张角色图。判断成功的标准是人脸结构完整、发型和服装备特征与 LoRA 训练目标接近、整体没有明显的肢体崩坏。如果脸部崩坏优先降低分辨率、增加步数、更换基础模型。5.2 图生图测试测试目的验证能否基于已有参考图继续生成角色新姿态。把参考图拖入 ComfyUI 的 LoadImage 节点连接 VAE Encode把 latent 接入采样器其他节点保持文生图结构。图生图的 denoise 强度比较关键从 0.5 到 0.7 通常能在保留构图的基础上改变细节0.9 以上基本等于重新生成只是参考颜色和大致轮廓。输入素材用你自己本地已有的旧图即可不要使用未经授权的他人作品作为底图。生成后对比参考图和输出图观察角色面部一致性是否保持。如果风格变得过猛降低 denoise如果变化太少提高 denoise。5.3 局部重绘测试测试目的只修改指定区域例如更换服装、改变背景而不影响人物面部。在 ComfyUI 中可以用 Set Latent Noise Mask 节点实现局部重绘。先用 LoadImage 加载参考图用图像编辑模块画出蒙版区域白色代表要重绘的区域黑色代表保留区域。连接好蒙版后采样器会只在蒙版区域生成内容。这块操作时最容易翻车的是蒙版边缘如果没有羽化设置重绘区域与保留区域之间会有明显接缝。建议蒙版边缘稍微扩大一点给模型更多过渡空间。验证成功的标准重绘区域内容符合提示词非重绘区域保持原图细节。5.4 LoRA 权重对比测试测试目的找到最合适的 LoRA 权重过高会导致过拟合过低会导致特征不明显。分别用 0.5、0.8、1.0、1.2 四组权重保持其他参数完全一致生成四张对比图。固定 seed关闭随机种子变化。对比结果你会发现权重太低时角色特征不明显权重太高时画面容易出现色彩脏、结构混乱等问题。这种测试是判断一个 LoRA 是否好用的核心方法。如果你准备自己训练 LoRA也应该保留这套对比流程方便后续调参时做回归验证。5.5 批量生成测试测试目的在固定主体特征的前提下快速产出多张不同构图的结果。最简单的方式是在 KSampler 节点上方的 Batch Count 设置为 4让 ComfyUI 按相同提示词生成 4 张图。如果希望每张图构图差异更大可以搭配多个不同 seed 或者设置 seed 随机。批量生成适合用来筛图不适合在没有 GPU 的环境下长时间运行。判断批量任务成功的标准所有任务完成输出目录中出现对应数量的图片日志没有出现 interrupted 或 error 状态。如果中间某一张失败先检查显存是否被撑满再检查是否因为单张图片过长超出显存上限。6. 接口 API 与批量任务ComfyUI 自带 HTTP API可以脱离 WebUI 界面批量提交生成任务。流程是先把工作流在 WebUI 里设计好然后通过“保存 API 格式”的方式导出工作流 JSON再通过 Python 脚本把 JSON 提交到/prompt接口。启动服务后接口地址默认为http://127.0.0.1:8188提交任务的接口是POST /prompt一个通用 Python 调用模板如下import json import requests import time server http://127.0.0.1:8188 workflow_path workflow_api.json with open(workflow_path, r, encodingutf-8) as f: workflow json.load(f) response requests.post( f{server}/prompt, json{prompt: workflow}, timeout30 ) print(response.json()) if response.status_code 200: prompt_id response.json()[prompt_id] print(f提交成功prompt_id: {prompt_id}) else: print(提交失败请检查工作流JSON和输入参数)这里需要注意工作流 JSON 中的节点顺序、节点类型必须与当前服务版本兼容。每次更新 ComfyUI 后旧 JSON 可能无法直接使用需要重新从 WebUI 导出一次。批量任务建议设计成队列模式准备一个jobs.json文件里面每一行是一条独立的工作流配置然后循环提交。示例数据结构[ { save_prefix: tomoyo_seed01, seed: 1001, prompt_text: masterpiece, tomoyo, school uniform }, { save_prefix: tomoyo_seed02, seed: 1002, prompt_text: masterpiece, tomoyo, winter coat } ]脚本逻辑上是读取任务列表逐条替换工作流 JSON 中的种子和提示词提交到/prompt查询任务状态输出结果文件。批量任务必须要做错误处理建议在脚本里增加超时重试和失败日志记录。不要一次性把几百个任务全部塞进队列先跑 2 到 3 条验证流程顺畅再扩大规模。查询任务状态的接口可以参考/history/{prompt_id}如果返回结果里包含输出图片信息说明任务已完成。实际响应字段以当前版本为准写代码时最好先打印一次完整响应结构再解析关键字段。7. 资源占用与性能观察显存占用是本地 AI 绘画最需要关注的数据。观察方法有两种一是在启动界面看任务栏 GPU 显存使用率二是看 ComfyUI 终端日志里输出的加载信息。更准确的工具是 NVIDIA 显卡自带的监控面板能看到进程级显存占用。影响显存和速度的主要因素有几个。分辨率影响最大。512x768 和 768x1024 之间的显存差距不是线性增长而是指数增长后者很容易让低显存显卡直接爆显存。采样步数主要影响生成时间和效果对显存影响相对较小。Batch Count 会显著增加显存占用因为它同时把多张图放进显存计算。LoRA 叠加数量同样会推高显存占用尤其是一次挂载三个以上 LoRA 时。降低显存占用的常用手段是按顺序调整参数。先把分辨率降到 512x512步数降到 20Batch Count 设为 1只保留一个 LoRA生成成功后再逐步加回来。如果依然爆显存可以考虑在启动命令加参数不同版本简化显存的参数不一样下面是一个常见示例python main.py --listen 127.0.0.1 --port 8188 --lowvramCPU 推理不是不能用但没有实用意义。同样的工作流在 NVIDIA 显卡上可能几秒到几十秒CPU 可能要几十倍到上百倍时间所以如果你的机器没有独立显卡不建议跑批量任务最多用来检查工作流节点连接是否正确。端口冲突也是常见性能问题的一个侧面。如果启动时提示端口已被占用不要硬等直接换端口python main.py --listen 127.0.0.1 --port 8189服务启动后如果关闭页面但服务没有退出终端进程还会继续占用显存。任务跑完后查看显存是否仍然满占用如果是说明后台还有任务未结束检查history接口或者直接重启服务释放显存。8. 常见问题与排查方法问题现象可能原因排查方式解决方案启动后页面打不开端口被占用或服务未启动查看终端日志和端口状态换端口或重启服务模型列表为空模型文件未放入正确目录检查 checkpoint 和 loras 路径移动模型文件后重启提示词提交后报错工作流 JSON 与当前版本不兼容查看报错信息里的节点类型从 WebUI 重新导出 API 格式生成速度极慢使用了 CPU 推理或显存不足导致 fallback查看 GPU 进程和日志更新驱动、降低分辨率、加显存输出图片脸部崩坏基础模型和 LoRA 不匹配换动漫底模或降低 LoRA 权重更换底模、降低权重、增加步数批量任务卡住显存爆掉或队列堵塞查看终端日志和显存占用减小 batch、降低分辨率、重启服务报错缺少依赖包Python 环境不完整查看缺包名称安装对应依赖后重试图片有大量噪点步数过低或 CFG 不合适调整参数步数提到 25 以上CFG 在 6 到 8 之间测试排查有一个通用顺序先看终端日志日志里会给出具体的错误类型和文件路径再排查模型文件最后排查参数设置。很多问题不是配置复杂而是路径带了中文、模型放错目录或者端口被占用。9. 最佳实践与使用建议第一第一次跑通时不要追求高质量先用最低参数把流程走通确认模型加载、采样、解码、保存这些链路完整再逐步加分辨率。第二使用固定 seed 做对照测试。角色特征对比、LoRA 权重对比、底模对比都要保持其他变量一致否则很难判断是哪一项参数影响了最终效果。第三把模型文件、输入素材、输出结果分目录管理。建议输出目录按照日期和主题划分例如output/tomoyo/2025-02-16/批量脚本里自动创建目录避免几百张图堆在一起。第四批量任务必须加日志和失败重试。脚本中至少记录每一条任务的 seed、参数、耗时和状态失败时单独保存错误信息。不要只打印到控制台要写文件否则任务多了根本找不回线索。第五API 服务要限制访问范围。本地调试时监听地址写127.0.0.1不要用0.0.0.0否则局域网内其他设备可以提交任务。如果跨机器部署加一层访问控制更稳妥。第六涉及人脸、声音、版权素材时必须确认授权。本文讨论的动漫角色形象仅限个人学习测试不能直接商用。生成图发布到公开平台前检查平台关于同人二次创作和 AI 生成内容的规定。第七发布或商用前要做效果复核。流式生成出来的图不代表最终可交付批量任务跑完一定要人工筛一遍重点检查脸部畸变、文字乱码、肢体结构异常等问题。10. 总结与下一步把“知世”当成一个测试主题最值得尝试的是 LoRA 权重对比和批量出图这两块。前者能帮你理解 LoRA 过拟合和欠拟合的表现后者能让你把接口脚本跑通以后换到其他题材只要替换模型和提示词就能复用整套流程。最先应该验证的功能是文生图。不要在第一次就跑高分辨率先用低分辨率确认模型链路正常。最容易踩的坑是模型目录放错、路径带中文、端口被占用这三种情况覆盖了大多数启动失败场景。后续可以继续扩展的方向有几个训练自己的角色 LoRA、接入 ControlNet 做姿态控制、用脚本实现自动化批量筛选、把 ComfyUI 服务接到自己的工作流工具里。如果你已经跑通了文生图和 API 调用建议收藏这篇文章下次换新角色主题时按同一套验证步骤走一遍能省掉大量排错时间。
返回列表