FEATURED · 精选文章

AI绘画角色一致性出图:ComfyUI+LoRA+ControlNet批量生成同人图工作流

发布时间 / 2026/9/1 1:05:42
来源 / 创域科博编辑部
栏目 / 资讯中心
AI绘画角色一致性出图:ComfyUI+LoRA+ControlNet批量生成同人图工作流 这是很多二次元同人圈里常说的一句话。围绕“卡莫大人”这个虚拟角色粉丝、画师、创作者会集中产出同人图、表情包和贺图。如果把这句话放到技术语境里其实刚好对应一个很实际的需求如何用 AI 绘画给同一个虚拟角色批量生成风格统一、角度多样、可以直接用于内容生产的图片。这次我们来看一套适合“卡莫大人”这类虚拟 IP 的 AI 角色一致性出图工作流。核心思路是本地部署 ComfyUI配合 LoRA 模型固定角色特征用 ControlNet 约束姿势与构图最后通过 API 和批量任务把单张出图变成流水线生产。文章的落脚点不是“抽卡式出图”而是怎么把角色画风稳定下来、怎么让批量任务可重复、怎么把结果接到自己的工具或网站里。如果你关心下面这些问题这篇文章可以直接收藏本地部署 AI 生图工具显存要求大概是多少怎么用 LoRA 固定角色脸部、服装、发型的一致性怎么通过 ComfyUI 批量生成多角度、多表情的同人图怎么用 API 接口把生图能力接到自己的脚本或网站里实际跑图时怎么观察显存占用、怎么降低崩溃概率。1. 核心能力速览能力项说明项目类型本地 AI 图像生成工作流基于 ComfyUI 搭建核心模型底模如 SD1.5 / SDXL 系列 LoRA 角色模型 ControlNet主要功能文生图、图生图、局部重绘、角色一致性生成、批量出图硬件门槛建议 8G 以上显存无显卡可跑 CPU 推理但速度慢不建议批量任务显存占用需按实际模型版本和分辨率测试8G 显存建议从 512x512 起步支持平台Windows / Linux 均可Mac 可尝试 CPU / MPS 推理启动方式一键整合包 / 命令行启动 / 脚本启动接口能力支持 HTTP API可通过 curl 或 Python 调用工作流批量任务支持批量提示词、批量图片输入、多队列调度适合场景虚拟 IP 同人图生产、漫画素材生成、表情包批量输出、角色设定图制作这套工作流的优势不是单一模型强大而是把“固定角色”这个任务拆成了三层底模决定画风基线LoRA 锁定角色特征ControlNet 约束姿势和构图。三层配合下来比单纯靠提示词写“白毛红瞳”“金色长发”要稳定得多。2. 适用场景与使用边界2.1 适合谁同人创作者需要给“卡莫大人”这类角色制作多角度的设定图、表情包、节日贺图。内容团队运营虚拟 IP 账号需要批量产出风格统一的配图。独立开发者和自媒体想搭建本地生图服务把 AI 绘图能力封装成 API 给业务调用。刚接触本地部署的新手想找一套清晰、可复制的 ComfyUI 工作流。2.2 能解决什么问题角色脸崩LoRA 可以固定五官特征减少不同批次之间脸型不一致的问题。画风漂移固定底模和采样器输出画面风格能保持稳定。手工修图成本高通过批量脚本生成草稿再挑选满意的结果精修。单张出图慢批量任务 API 可以在无人值守的情况下连续产出。2.3 使用边界如果输入素材包含他人创作的角色、画师作品或未授权的图片必须确认授权范围。如果“卡莫大人”是某个已注册的版权角色请留意版权方对二次创作和非商用/商用的规定。用 ControlNet 提取姿势时不要使用真人照片作为底图去生成真人换脸类图片涉及肖像权风险。生成内容不得包含违法、色情、暴力或冒犯性元素。批量任务跑在本地时如果模型文件来源不明先做安全扫描。3. 环境准备与前置条件3.1 操作系统与硬件Windows 10/11、Ubuntu 20.04 或更新版本都可以。推荐使用 NVIDIA 显卡因为 CUDA 生态最成熟。显存建议从 8G 起步越高越省心。如果显卡显存只有 4G也不是完全不能用但分辨率只能控制在 512 左右LoRA 和 ControlNet 需要谨慎叠加否则容易爆显存。如果完全没有显卡可以用 CPU 推理但一张 512x512 图可能要几分钟到十几分钟适合体验不适合批量生产。3.2 软件依赖以 ComfyUI 为例基本依赖如下Python 3.10 或 3.11PyTorch 与 CUDA 版本匹配Git用于下载项目仓库ComfyUI 项目本体对应模型的权重文件底模、LoRA、ControlNet可选ComfyUI Manager用来管理自定义节点。3.3 网络环境下载模型权重需要访问一些开源模型托管平台网络不稳定时建议使用镜像源或下载工具。模型文件通常比较大建议预留 20G 以上磁盘空间。4. 安装部署与启动方式4.1 获取 ComfyUI如果你需要一套能直接跑起来的完整包可以找社区整合包如果你偏向自己控制环境用命令行安装也很简单。# 以命令行方式安装 ComfyUI 为例具体路径按实际环境调整 git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI # 创建虚拟环境 python -m venv venv # 激活虚拟环境 # Windows venv\Scripts\activate # Linux / macOS source venv/bin/activate # 安装依赖 pip install -r requirements.txt安装依赖这一步是重点。PyTorch 建议直接从官方源安装避免版本不匹配# 以 CUDA 12.1 为例实际版本需要根据显卡驱动选择 pip install torch torchvision --index-url https://download.pytorch.org/whl/cu1214.2 放置模型文件把下载好的模型文件放到对应目录底模放入ComfyUI/models/checkpoints/LoRA 放入ComfyUI/models/loras/ControlNet 放入ComfyUI/models/controlnet/VAE 放入ComfyUI/models/vae/。目录结构类似ComfyUI/ models/ checkpoints/ realisticVisionV51.safetensors loras/ kamo_v1.safetensors controlnet/ control_v11p_sd15_openpose.pth vae/ vae-ft-mse-840000-ema-pruned.ckpt文件名只是示例实际需要替换成你下载的模型文件。4.3 启动服务启动命令比较简单python main.py --listen 127.0.0.1 --port 8188启动后打开浏览器访问http://127.0.0.1:8188看到 ComfyUI 界面就说明服务正常。4.4 加载角色一致性工作流ComfyUI 的界面由节点和工作流组成。你可以从一个基础工作流开始在节点列表里添加 LoRA 加载器和 ControlNet 加载器。一个典型的工作流节点顺序是Load Checkpoint - Load LoRA - CLIP Text Encode - KSampler - VAE Decode - Save ImageControllerNet 需要额外加载一张姿势参考图通过ControlNetLoader和ControlNetApplyAdvanced节点接入采样流程。5. 功能测试与效果验证5.1 测试环境建议第一次测试时使用小分辨率、少步数快速确认流程是否跑通。分辨率512x512 或 512x768采样步数20 步左右采样器DPM 2M Karras提示词先写简单角色描述。5.2 文生图测试测试目的确认底模和 LoRA 能正常加载角色是否能生成。输入示例positive: 1girl, kamo, white hair, red eyes, solo, upper body, looking at viewer, clean background negative: lowres, bad anatomy, bad hands, extra fingers, watermark操作步骤在Load Checkpoint节点选择底模在Load LoRA节点选择卡莫角色 LoRA输入正反向提示词点击Queue Prompt观察生成的图片和日志。判断成功标准图片能生成出来角色发色、瞳色、服装与素材一致脸部没有明显崩坏。常见失败原因LoRA 权重过高导致过拟合底模与 LoRA 的基座模型不匹配提示词中加入了冲突的角色描述。5.3 图生图 / 多角度一致性测试测试目的用一张参考图作为底图生成不同角度、不同表情的角色图。把Load Image节点接到KSampler的latent_image输入或者用ImageToLatent转成潜空间向量。输入素材一张“卡莫大人”正面参考图推荐参数denoise设为 0.4~0.6保留原始构图只调整表情或细节输出预期多张图角色脸部保持一致角度和表情有变化。如果多角度变化后仍然稳定说明 LoRA 训练质量合格。如果脸部风格漂移可以适当降低 LoRA 权重或者在 ControlNet 中加入openpose固定姿势。5.4 局部重绘测试局部重绘用于修正细节。比如生成图的手部崩了可以用 mask 把手上区域选出来重新采样。用Load Image加载目标图用VAE Encode得到潜空间向量用Mask节点指定需要重绘的区域调整denoise到 0.6 以上对局部区域重新生成。判断标准只有重绘区域发生明显变化其他区域保持原样。5.5 批量生成测试批量生成的目的是验证连续出图的稳定性。可以把批次数设为 4观察连续出图后角色是否保持一致。在 ComfyUI 中可以通过修改KSampler的batch_size一次生成多张图也可以把提示词写成文本文件通过自定义脚本逐条调用 API。批量测试重点关注是否会中途爆显存生成的图片风格是否一致如果切换多组提示词角色特征是否仍然稳定。6. 接口 API 与批量任务ComfyUI 自带 HTTP API可以把工作流当作后端服务来调用。这个能力很适合把生图流程接入自己的工具链。6.1 获取工作流 JSON在 ComfyUI 界面的Workflow菜单中通过Export (API Format)导出工作流 JSON。这个 JSON 是调 API 时需要的请求体。6.2 提交任务通过/prompt接口提交工作流curl -X POST http://127.0.0.1:8188/prompt \ -H Content-Type: application/json \ -d workflow_api.json接口会返回一个prompt_id用这个 ID 查询任务状态。6.3 用 Python 调用示例import json import requests import urllib.request COMFYUI_URL http://127.0.0.1:8188 def submit_workflow(workflow): response requests.post(f{COMFYUI_URL}/prompt, json{prompt: workflow}) response.raise_for_status() return response.json()[prompt_id] def get_history(prompt_id): with urllib.request.urlopen(f{COMFYUI_URL}/history/{prompt_id}) as response: return json.loads(response.read())6.4 批量任务队列设计批量任务的关键是避免一次提交过多任务导致显存溢出。推荐的做法是“单队列、串行或小并发”。一个简单的批量脚本流程import time from pathlib import Path prompts [ {positive: ..., negative: ...}, {positive: ..., negative: ...}, ] for idx, item in enumerate(prompts): workflow build_workflow(item) prompt_id submit_workflow(workflow) print(ftask {idx}: {prompt_id}) while not is_done(prompt_id): time.sleep(2) if has_error(prompt_id): retry(workflow)6.5 任务结果获取任务完成后图片会被保存在ComfyUI/output/目录下。你可以在历史记录中拿到输出图片文件名然后通过/view接口读取。def get_output_images(prompt_id): history get_history(prompt_id) outputs history[prompt_id][outputs] images [] for node_id, output in outputs.items(): if images in output: images.extend(output[images]) return images7. 资源占用与性能观察7.1 显存占用怎么看在 Linux 下用nvidia-smi -l 1实时查看。在 Windows 下用任务管理器或者 GPU-Z。跑图时主要看两个阶段模型加载阶段底模、LoRA、ControlNet 会被加载到显存占用峰值较高采样阶段KSampler 迭代时显存持续保持高位分辨率越大占用越高。从常见情况看SD1.5 底模 LoRA ControlNet 在 8G 显存上可以跑 512 到 768 分辨率。SDXL 底模默认就需要更大的显存建议 12G 以上。实际占用需要以你的模型版本和分辨率测试为准。7.2 如何降低显存占用降低分辨率先用 512x512 测试减少批次数批次数不要一开始就拉到 4 或 8关闭无关的后台应用尤其是浏览器多开页面在 ComfyUI 启动参数中开启--lowvram或--novram模式让模型按需加载避免同时加载多个 ControlNet减少 LoRA 数量一次只挂一个角色 LoRA。7.3 CPU 推理与 GPU 推理的差异CPU 推理不需要显卡但速度会慢很多。如果只是偶尔出图可以接受。如果要做批量任务强烈建议 GPU。另外CPU 推理时内存占用会明显升高建议系统内存 16G 以上。7.4 性能观察记录每次测试可以记录一组数据格式如下参数配置观察结果底模SD1.5 系列显存占用需实测分辨率512x512建议起点根据显存调整Batch1稳定优先ControlNetopenpose会影响显存占用出图时间取决于硬件建议多次测试取平均值把这类记录保存下来后续调整参数时就有依据。8. 常见问题与排查方法问题现象可能原因排查方式解决方案启动后页面打不开端口被占用或服务未启动检查终端日志和端口监听更换端口python main.py --port 8189依赖安装失败Python 版本或 PyTorch 版本不匹配查看 pip 错误日志按项目要求创建新虚拟环境重新安装模型文件缺失模型下载不完整或未放入目录检查文件大小和目录结构重新下载确认文件名与节点路径对应提示 model not found加载节点中的模型名与文件名不一致打开模型加载器检查路径修改节点配置或把模型复制到对应目录CUDA 不可用驱动版本或 PyTorch 版本不对执行python -c import torch; print(torch.cuda.is_available())升级/降级驱动重装匹配的 PyTorch爆显存分辨率或批次数设置过高观察nvidia-smi峰值降低分辨率、减少 batch、开--lowvram输出图片脸部崩坏LoRA 权重过高或提示词冲突降 LoRA 权重简化提示词重新测试不同权重参数批量任务卡住队列积压或某个任务出错查看服务端日志和/queue接口清空队列增加错误重试机制API 返回 400请求体 JSON 格式不符合 API 规范检查导出的 workflow JSON重新导出 API 格式 JSON图片生成全黑VAE 加载异常检查 VAE 节点加载正确的 VAE 文件9. 最佳实践与使用建议9.1 第一次先小参数测试不管模型多强、工作流多复杂第一次跑通时都用小分辨率、少步数、单批次。流程确认没问题后再逐步加大规模。9.2 保留一套最小可运行配置把一套确认能跑通的低显存配置保存在单独的 workflow 文件里。出图崩了、参数调乱了随时可以切回这套配置兜底。9.3 目录分三块管理建议把输入素材、模型文件、输出结果分开存放project/ inputs/ reference/ # 参考图 prompts/ # 批量提示词 models/ checkpoints/ loras/ controlnet/ outputs/ 20250601/ 20250602/这样做的好处是批量任务完成后能快速定位某次生成的图片也方便清理模型占用的磁盘空间。9.4 批量任务加日志和失败重试批量生图时每个任务都要记录 prompt_id、开始时间、结束时间和输出文件名。遇到失败任务先重试一次如果连续失败停止队列并检查日志。9.5 接口服务限制访问范围如果开启了 ComfyUI API不要把服务暴露到公网。默认--listen 127.0.0.1只允许本机访问。如果一定要局域网访问设置--listen 0.0.0.0时要注意网络环境安全。9.6 合规与授权这一点必须单独强调。如果你要生成“卡莫大人”或任何其他虚拟角色的同人图请先确认角色是否属于版权方能否用于非商业用途能否用于商业用途能否进行二次修改和分发。参考画师风格的 LoRA 训练需要在原作者同意的前提下进行。涉及真人照片、真人配音、真人脸部特征时必须获得当事人明确授权否则不应放入生图流程。10. 总结与下一步“这是我们卡莫大人最团结的时候”这句话在粉丝社群里的意思是大家一起为一个角色出力做内容。落到技术实现上能够支撑这种“团结创作”的正是一套可复现、可批量的 AI 生图工作流。LoRA 固定角色特征ControlNet 控制姿势ComfyUI 的 API 与批量脚本把单张出图变成生产力工具这是这套流程最值得尝试的地方。最先要验证的功能只有三个一是 ComfyUI 是否能在你的显卡上稳定跑通二是 LoRA 是否能把角色脸部稳定下来三是 API 批量队列是否不会中途爆显存。这三个点验证完整套工作流基本就立住了。最容易踩的坑还是模型版本不匹配和显存估算失误。SD1.5 的 LoRA 不能直接放到 SDXL 底模上用ControlNet 也要和底模版本对齐。建议每更换一个模型先跑低分辨率测试再逐步上强度。后续可以继续扩展的方向包括接入本地图库做相似图检索、用多段 ControlNet 控制复杂姿势、把批量出图接到内容管理系统、训练专属 LoRA 提升高难度角度下的角色一致性。关键是先把基础流程跑稳定再谈扩展。建议收藏备用按文章顺序搭一遍跑通一次之后后面就是复制工作流、修改参数、批量出图的事。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻