看到“突然想起来自己是个异人up 那发个库存吧【异人之下】”这个标题,第一反应是动漫区UP主的库存视频。但抛开视频选题不谈,这类UP主如果想稳定更新,背后通常需要一条可复用的素材生产线:角色图、分镜、表情包、视频片段,每一类都要批量产出。这篇文章就把“异人之下”当作国漫二创的常见需求,拆成一套本地 AI 素材生产流程。
这里不会讨论剧情,也不涉及具体模型版权,只讲技术路径:用 ComfyUI 搭建工作流,结合 Stable Diffusion 系底模、LoRA 和 ControlNet,完成角色一致性出图、批量生成分镜、接入 API 做自动化任务。整个过程可以本地部署,支持批量任务,也能把生成能力封装成接口,适合做国漫风格插画、同人漫画分镜、自媒体视频素材和角色参考图。
这个流程最值得关注的几个点:第一,ComfyUI 是可视化节点工作流,改参数、换模型、接 ControlNet 都很直接;第二,它自带 API 服务,能通过脚本提交生成任务,批量出图不需要手动点鼠标;第三,只要底模和 LoRA 选得合适,同一角色在不同画面里的风格一致性可控制;第四,部署难度不高,普通台式机或者笔记本都能跑,显存大小只影响分辨率和速度。
本文会带你先完成环境准备,再启动 ComfyUI,随后分别测试文生图、角色一致性、批量生成和 API 调用,最后给出资源占用观察方法和常见问题排查清单。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | 本地 AI 素材生成工作流,以 ComfyUI 为核心 |
| 主要功能 | 文生图、图生图、局部重绘、角色一致性、批量生成、图生视频素材准备 |
| 技术栈 | ComfyUI、Stable Diffusion 底模、LoRA、ControlNet、Python |
| 硬件要求 | 需要 NVIDIA 显卡,显存越大越稳;CPU 模式可跑但速度慢,建议仅用于调试 |
| 显存占用 | 取决于底模、分辨率、步数和批量大小,需按实际环境测试 |
| 支持平台 | Windows / Linux,macOS 视 PyTorch 支持情况而定 |
| 启动方式 | 一键启动脚本 / 命令行启动 / 接口服务启动 |
| 是否支持 API | 支持,ComfyUI 提供 HTTP API,可提交工作流并获取结果 |
| 是否支持批量任务 | 支持,通过输入目录或脚本循环批量提交 |
| 适合场景 | 国漫同人图生成、角色参考图、分镜草稿、自媒体视频素材、批量风格化处理 |
从材料看,这个流程更适合已经有底模使用经验的人。第一次使用也可以照着本文按顺序执行,重点是把最小工作流跑通,不要一上来就堆大模型和高分辨率。
2. 适用场景与使用边界
这套流程最适用的场景是:你在做《异人之下》或其他国漫 IP 的二创内容,需要快速产出角色图、固定角色造型、生成表情包、做分镜草稿。传统做法是手绘或者逐张修图,效率低;用 AI 工作流可以把“生成一张图”变成“批量生成一批候选图”,然后人工从里面挑选和精修。
它也能解决一类更实际的问题:角色一致性。很多二创作品卡在同一个角色在不同画面里的脸型、衣服、配色不统一。通过训练或下载对应角色的 LoRA,再配合 ControlNet 的参考图约束,可以让同一角色的多次生成结果更接近。这在漫画分镜或视频素材准备阶段非常有用。
但不是所有需求都适合这套流程。如果你的目标是制作完全原创的商业作品,不建议直接使用未经授权的模型和角色 LoRA,存在版权风险。如果角色涉及真人肖像,更不能在未获得授权的情况下生成和传播。另一个边界是,AI 生成不等于最终成稿,出图后仍然需要人工检查构图、文字、手指、道具细节,不能直接拿去发布。
合规提醒具体说三点:第一,使用任何模型、LoRA、素材前,先确认来源是否有授权;第二,二创内容要注意原 IP 的版权限制,商用前必须取得权利方许可;第三,涉及真人照片、声音、肖像,必须获得明确授权,并避免生成误导性内容。
3. 环境准备与前置条件
开始部署前,先按下面清单检查本机环境,避免跑到一半才发现缺依赖。
3.1 系统与硬件检查
- 操作系统推荐 Windows 10/11 或 Ubuntu 20.04 以上。Windows 用户注意显卡驱动最好更新到最新版本。
- NVIDIA 显卡是首选,核心关注显存大小。4G 显存可以跑低分辨率小模型,8G 以上能跑更高分辨率和更多插件。AMD、Intel 显卡需要额外配置 DirectML 或 ROCm,不在本文默认范围内。
- 内存建议 16G 以上,模型加载和批量处理时比较吃内存。
- 磁盘建议预留至少 20G 空间。底模 LoRA、ControlNet 模型加起来占用不小,输出图多了也要占用空间。
3.2 软件依赖准备
| 依赖项 | 用途 |
|---|---|
| Python 3.10 / 3.11 | 运行 ComfyUI 及其插件 |
| Git | 拉取项目代码 |
| NVIDIA 驱动 + CUDA 工具包 | GPU 加速,Pytorch 需要调用 CUDA |
| PyTorch | AI 模型推理的基础库 |
| 底模文件 | 配置在 ComfyUI/models/checkpoints 目录 |
如果你不想手动配置 Python 环境,更简单的方案是下载整合包,自带 Python 和依赖,启动后直接用。这样省去很多环境问题,缺点是更新和排查时需要理解目录结构。
3.3 模型目录规划
ComfyUI 的模型统一放在 models 目录下,建议提前建立好对应子目录,后面导入工作流时不容易出错。
ComfyUI/ ├── models/ │ ├── checkpoints/ # 底模,如 Stable Diffusion 1.5 / SDXL │ ├── loras/ # 角色或风格 LoRA │ ├── controlnet/ # ControlNet 模型 │ ├── vae/ # VAE 文件 │ └── clip/ # CLIP 模型 ├── input/ # 输入图片,批量处理时放这里 ├── output/ # 生成结果目录 └── user/ # 用户配置具体文件名以你下载到的模型为准,目录名不要改,否则工作流导入后会提示“模型文件未找到”。
4. 安装部署与启动方式
4.1 安装 ComfyUI
Windows 下最简单的方式是下载官方整合包,解压后运行启动脚本。如果想保持环境干净,也可以使用 Git 安装。
git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI pip install -r requirements.txt依赖装完后,确认 PyTorch 安装在 GPU 版本上。可以执行下面命令检查:
python -c "import torch; print(torch.cuda.is_available())"输出 True 说明 GPU 调用正常,输出 False 则需要检查驱动、CUDA、PyTorch 版本。
4.2 启动服务
命令行启动方式:
python main.py默认端口是 8188,启动后浏览器访问http://127.0.0.1:8188,看到节点工作台说明服务正常。
如果 8188 端口被占用,可以手动指定端口:
python main.py --port 8189Linux 服务器上部署时,如果不希望监听所有网卡,可以加上参数:
python main.py --listen 127.0.0.1 --port 8188这样就不会把 API 暴露到外网,适合只在本地调用。
4.3 导入工作流
ComfyUI 的界面是节点图。你需要先准备一张 workflow JSON 文件,这张文件可以从社区开源工作流中找,也可以自己拖节点搭。
导入操作:打开 ComfyUI 页面,把 JSON 文件拖进页面,节点图会自动加载。如果某些节点显示红色,说明缺少对应自定义节点或模型文件,需要先安装缺失插件,再把模型放到指定目录。
建议第一次导入工作流后,先不直接批量出图,而是把底模、VAE、LoRA、ControlNet 这些节点逐个检查一遍,确认每一项都有对应的模型文件。
4.4 断网与离线环境
内网机器需要离线部署时,提前在一台联网机器上下载好模型文件和依赖包,通过压缩包复制到目标机器。启动时设置--offline参数可以禁止 ComfyUI 访问网络更新。
python main.py --offline离线环境最容易遇到的问题就是缺插件,因此拷贝整个custom_nodes目录比单独拷贝脚本更稳妥。
5. 功能测试与效果验证
启动成功后,不要急着追求高画质。按下面的测试顺序,先把每个功能验证一遍。
5.1 文生图基础测试
测试目的:确认从文本提示词到图片生成的链路完整,模型文件和采样器都能正常工作。
操作步骤:
- 在默认文生图工作流中填入正向提示词,例如
a mysterious martial artist, glowing energy, anime style。 - 反向提示词填写
lowres, bad anatomy, extra limbs。 - 分辨率先设置为 512x512 或 768x768,步数 20,采样器选 Euler。
- 点击 Queue 按钮运行。
预期结果:队列执行后生成一张图片,右侧预览区域出现生成结果。查看输出目录output里能看到文件。
判断标准:图片没有黑屏、彩噪、明显花屏,说明模型加载正常。如果全黑或花屏,优先检查 VAE 节点是否挂载正确。
5.2 角色一致性测试
测试目的:确认同一角色在多张画面中的风格和五官接近。
这里需要 LoRA 模型或参考图。以 LoRA 为例:
- 在工作流中加入 LoRA 节点。
- 选择对应角色的 LoRA 文件,设置权重,比如 0.8。
- 提示词里加入触发词,具体触发词要看 LoRA 模型的说明。
- 分别用三组不同场景的提示词生成三张图。
预期结果:三张图中角色服饰和面部风格基本一致,场景背景有明显变化。
如果三张图角色差异很大,先检查 LoRA 是否生效。可以在提示词前后加触发词,或者把 LoRA 权重提高到 1.0 再试。但权重过高可能导致画面过拟合,人物表情和结构畸形。
5.3 ControlNet 姿态控制测试
测试目的:验证角色姿态是否能被参考图约束。
通常用于分镜草稿:先找一张简单的人物动态参考图,通过 ControlNet 的 OpenPose 或 Lineart 提取姿势,再把姿势信息作为约束传入生成节点。
操作步骤:
- 在 workflow 中加入 ControlNet 加载器和预处理器节点。
- 上传一张动态参考图到
input目录。 - 连接预处理节点到采样器。
- 保持提示词不变,观察生成图中人物动态是否符合参考图。
预期结果:生成人物姿态基本复现参考图,同时背景和服装由提示词决定。
常见失败原因是 ControlNet 模型版本与底模不匹配。SD1.5 底模对应 SD1.5 的 ControlNet,SDXL 底模对应 SDXL 的 ControlNet,不能混用。
5.4 批量生成测试
测试目的:验证连续多张出图的稳定性,检查显存释放情况。
操作步骤:
- 准备一个包含多张参考图的输入目录。
- 在工作流中使用“加载图像批次”节点,或通过脚本调用 API 提交多组提示词。
- 连续生成 10 张图。
- 边生成边打开任务管理器或
nvidia-smi观察显存占用。
预期结果:任务不会中途停止,出图文件按任务顺序写入输出目录。
判断标准是看进程是否一直持续到任务结束。如果生成到第几张就卡住,大概率是单个任务释放不完整,可以尝试把 batch size 改成 1,逐张生成。
5.5 图生视频素材准备
如果目标是做短视频素材,通常不在 ComfyUI 里直接生成视频,而是先生成视频关键帧,再用其他工具补帧或做图生视频。具体做法:
- 先生成角色关键帧图片。
- 将关键帧作为首帧输入图生视频模型。
- 通过批量任务生成多段短视频素材片段。
这一步的功能边界是:视频生成对显存要求通常高于静态出图,需要额外测试视频模型是否能加载。判断标准以本机测试为准,不要凭经验直接上大分辨率。
6. 接口 API 与批量任务
ComfyUI 的价值不只是图形界面,它还提供 HTTP API。这意味着你可以写脚本批量提交任务,不必手动操作页面。
6.1 获取工作流 JSON
在 ComfyUI 页面中点击“Save API Format”,导出用于 API 调用的 JSON 文件。这个文件里包含每个节点的输入参数和模型调用关系。实际请求时,只需要替换其中的提示词和输入图片路径。
6.2 提交生成任务
API 的入口路径通常为POST /prompt,请求体格式类似:
{ "prompt": { "3": { "class_type": "CheckpointLoaderSimple", "inputs": { "ckpt_name": "你的底模文件名.safetensors" } }, "6": { "class_type": "CLIPTextEncode", "inputs": { "text": "a martial artist, anime style", "clip": ["3", 1] } } } }这里给的是简化示例,实际工作流中节点和连线更复杂。你可以通过GET /object_info接口查看所有可用节点及其参数。
提交任务的 Python 示例:
import json import requests api_url = "http://127.0.0.1:8188/prompt" workflow = { "prompt": { # 这里替换为从页面导出的 API Format JSON } } response = requests.post(api_url, json=workflow, timeout=60) data = response.json() print(data.get("prompt_id"))返回的prompt_id可用于查询任务状态。
6.3 查询任务状态与结果
提交任务后,可以通过历史接口获取执行结果:
history_url = "http://127.0.0.1:8188/history/{}".format(prompt_id) result = requests.get(history_url, timeout=30) print(result.json())从返回结果中读取输出图片文件名,再到output目录中取文件。
6.4 批量任务队列设计
批量场景下,不建议一次性把几百个任务全部塞进队列。这样一旦中间一个任务因显存不足失败,后面全部受影响。
推荐的做法:
- 用一个 Python 脚本读取任务清单 JSON,逐条提交。
- 每次控制并发任务为 1 到 2 个。
- 提交后轮询状态,超过 120 秒无响应就标记失败。
- 失败任务写入
failed.json,后续统一重试。
python batch_submit.py --input tasks.json --output results/ --retry 3脚本内部可以循环调用提交接口,间隔时间根据单张生成速度调整。这样既稳定,也方便断点续跑。
7. 资源占用与性能观察
显存占用是这个流程最值得关心的指标。第一次跑任务前,先打开显存监控:
nvidia-smi -l 2每隔两秒刷新一次,可以看到显存使用率变化。启动模型时显存会快速上升,生成过程中波动不大,任务完成后显存会回落。
影响性能的几个关键参数:
- 分辨率:越大越吃显存,耗时越长。
- 步数:步数越高,采样越慢,但画质不一定线性提升。
- Batch size:一次生成多张图会显著提高显存占用。
- 底模版本:SDXL 系比 SD1.5 更吃显存。
- ControlNet:多一个控制模块,显存开销就多一分。
降低显存占用的通用方法:
- 先跑小分辨率,比如从 512x512 起步。
- Batch size 始终设置为 1,通过脚本循环批量提交。
- 开启低显存优化参数,具体看 ComfyUI 版本支持。
- 关闭不必要的预览节点,尤其是实时预览。
- 用轻量 ControlNet 模型替代重型模型,优先保证基础姿态控制。
CPU 推理不是不能用,但速度会慢很多。更稳妥的判断是:CPU 只用来验证工作流是否连通,正式批量生成尽量使用 GPU。
8. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 启动后页面打不开 | 端口被占用或服务未启动 | 检查终端日志,确认端口监听 | 更换端口或用--port启动 |
| 依赖安装失败 | Python 版本不匹配或缺少编译环境 | 查看 pip 报错日志 | 使用整合包环境,或切换到 Python 3.10/3.11 |
| 模型文件找不到 | 文件名错误或目录放错 | 检查 models 目录结构 | 将模型放到对应子目录,核对文件名 |
| PyTorch 检测不到 GPU | 驱动或 CUDA 版本问题 | 执行torch.cuda.is_available() | 更新驱动,安装匹配的 CUDA 版本 |
| 图片全部黑色或花屏 | VAE 未正确连接 | 检查 VAE 节点 | 添加 VAE 加载器并连接 |
| 批量任务卡住不跑 | 单个任务死锁或显存不足 | 观察 nvidia-smi 和日志 | 调小批量参数,逐张重试 |
| API 返回超时 | 单张生成时间过长 | 查看耗时日志 | 降低分辨率和步数,或增加等待时间 |
| 角色一致性问题 | LoRA 没有触发或权重过低 | 检查提示词触发词和 LoRA 权重 | 参考 LoRA 模型说明调整权重和触发词 |
| 输出图片分辨率超出显存 | 显卡显存不足 | 查看失败原因RuntimeError: CUDA out of memory | 降低分辨率,开启低显存优化 |
| 节点显示红色缺少自定义节点 | 插件未安装 | 查看缺失模块名称 | 在 custom_nodes 目录安装对应插件 |
如果任务在批量过程中卡住,优先看终端日志是否出现显存溢出信息。出现CUDA out of memory时,不要盲目调低分辨率,先检查是否有其他进程占用显存。
9. 最佳实践与使用建议
结合本地 AI 素材生产的常见经验,给几组工程化建议。
第一,第一次跑通后,保存一份最小可用工作流 JSON。这也是你的基线配置。后续修改底模或 LoRA 时,建立在该工作流基础上调整,出问题能快速回退。
第二,目录管理要干净。建议按下面结构整理:
project/ ├── workflows/ # JSON 工作流文件 ├── inputs/ # 参考图输入 ├── outputs/ # 生成结果 ├── models/ # 底模和 LoRA 的备份或链接 └── tasks/ # 批量任务清单和失败记录第三,坚持记录提示词和参数。每批生成时把 Json 配置和生成图片放到同一批目录,后续要复现风格时直接看配置就行。
第四,批量任务要加日志和失败重试。只依赖 ComfyUI 内部队列不够,建议在脚本里记录每个 prompt_id 的状态。失败的任务不要自动无脑重试,先分析失败原因,再决定是否重跑。
第五,接口服务只监听本机。如果需要在局域网访问,设置--listen 0.0.0.0前先确认网络环境可信,并加上访问权限控制。不要让一个未加鉴权的生成服务暴露在公网。
第六,涉及国漫 IP、角色版权、真人肖像的内容,发布前必须做合规审查。生成图不等于可随便使用,原角色设计、同人二创和商用之间有很大区别。
10. 总结与下一步
这个流程最值得尝试的点,是把“异人之下”这类国漫角色素材从手工制作变成可批量、可复现、可 API 化的工作流。你不需要一次搭建很复杂的节点图,先把文生图跑通,再逐步加入 LoRA 和 ControlNet。
最先应该验证的是角色一致性。如果你连基础的文生图都稳定,再加任务量只是脚本的事。最容易踩的坑集中在模型文件放错目录、ControlNet 版本不匹配、显存不足这三类,遇到问题先查终端的报错日志。
后续可以继续扩展的方向:接入图生视频工作流、训练自己的角色 LoRA、把生成服务封装成 Web API、结合人工审核流程做成半自动素材生产线。建议先保存本文的通用步骤,跑通最小工作流后再逐步加复杂度。