news 2026/9/2 16:11:47

本地AI绘图角色一致性工作流:从文生图到LoRA训练

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
本地AI绘图角色一致性工作流:从文生图到LoRA训练

“藿藿”这个名字一出来,熟悉《崩坏:星穹铁道》的玩家基本都能对上号——白发、狐耳、身后还跟着一截不安分的小尾巴。但在 AI 绘图社区里,“藿藿”还有另一层含义:它经常被当作检验“角色一致性工作流”是否成熟的试金石。原因很简单,藿藿这个角色有非常明确的辨识度:发色、瞳色、兽耳、尾巴、服装花纹,任何一项跑偏,角色就“不像”了。

这篇文章不是某个开源模型的广告,而是围绕“藿藿”这个角色 IP,整理一套可以在本地跑通的 AI 绘图工作流。你会看到文生图、图生图、局部重绘、批量生成、API 接入、以及角色 LoRA 训练这几个环节怎么组合使用,让最终输出结果更像藿藿本人。如果你正准备训练某个二次元角色 LoRA,或者想搭建一套角色卡批量出图流水线,这篇文章可以直接收藏。

1. 核心能力速览

由于本文是工作流方案而非单一项目,下面的速览以“整套本地 AI 绘图工具链”为对象。

能力项说明
项目类型本地 Stable Diffusion 绘图工作流 + 角色 LoRA 训练方案
主要功能文生图、图生图、局部重绘、角色一致性出图、批量生成、API 调用
推荐硬件NVIDIA 显卡优先,8G 及以上显存体验较好;6G 可跑基础出图,4G 需要开启显存优化
显存占用需以实际模型、分辨率、步数为准;512×512 基础出图通常不会太高,1024×1024 会明显增加
支持平台Windows / Linux,macOS 可用 CPU 或 MPS 跑,但速度明显偏慢
启动方式一键包 / 命令行启动 / WebUI / ComfyUI 工作流
是否支持 API支持。WebUI 原生提供/sdapi/v1/txt2img等接口,ComfyUI 也可通过 API 方式提交工作流
是否支持批量任务支持。可脚本批量出图、批量重绘,也可以用目录轮询方式做队列
适合场景同人角色创作、角色设定稿、漫画分镜、素材批量生产、LoRA 训练效果验证

这里要强调一个原则:显存占用、出图速度、接口路径这类参数,在不同版本、不同模型、不同显卡上会有差异,实操时要以本机环境为准。下面所有命令和参数,都是通用模板,需要按你的实际目录和版本做替换。

2. 适用场景与使用边界

2.1 这套工作流适合谁

第一类是二次元同人创作者。想在本地稳定地生成“藿藿”相关插图,而不是每次抽卡碰运气。第二类是想要训练角色 LoRA 的实践者。藿藿这类头部特征明显的角色,非常适合作为训练对象,效果好坏一眼就能看出来。第三类是做批量素材生产的人。比如给视频配图、做表情包素材、给文章配封面,都需要一个能自动化出图的链路。

2.2 使用边界与合规提醒

这里必须把话说清楚:藿藿是《崩坏:星穹铁道》的角色,版权归属米哈游。用 AI 做同人图用于个人学习、技术验证、非商业展示,属于社区常见的二次创作范畴,但要注意三点。

第一,不要用官方原画、官方立绘直接垫图做商用输出,更不要直接售卖“官方风格”的图像内容。第二,如果生成内容涉及真人容貌、他人肖像,必须获得明确授权。第三,AI 绘图的随机性可能导致输出带有不可控元素,发布前务必人工审核,避免误解。

合规不是限制你折腾,而是让你在安全边界内放心折腾。本文所有演示都默认用于本地技术验证和个人创作。

3. 环境准备与前置条件

本地部署 AI 绘图,最核心的不是“命令背得多熟”,而是环境匹配。下面是通用检查清单。

3.1 操作系统与显卡

Windows 10/11 是大多数用户的主力系统,兼容性最好。Linux 适合长期批量跑任务,显存管理和进程控制更稳。macOS 可以跑,但速度不如 NVIDIA 显卡。

显卡方面,NVIDIA 显卡优先考虑,因为 CUDA 生态最成熟。显存容量上,8G 是“比较舒服”的入门线,6G 可以跑但需要开优化,4G 建议用低分辨率加显存清理插件。AMD 显卡理论上可用,但兼容性折腾成本高,遇到问题排查难度大。

3.2 Python 与依赖环境

多数 WebUI 和 ComfyUI 发行版自带 Python 运行时,不推荐自己手动装一堆依赖,容易版本冲突。如果是手动部署,建议用虚拟环境隔离:

# 创建并激活虚拟环境,Python 版本建议 3.10 或 3.11 python -m venv venv source venv/bin/activate # Windows 下执行 venv\Scripts\activate

依赖安装顺序一般是:PyTorch(带 CUDA 版本)→ xformers(可选,显存优化)→ 具体 UI 项目的 requirements。

3.3 模型文件准备

文生图需要一个基础二次元大模型。常见选择包括 Anything V5、Counterfeit、MeinaMix 等。这类模型文件体积一般在 2GB 到 7GB 之间,放在 WebUI 的models/Stable-diffusion目录或 ComfyUI 的models/checkpoints目录下。

如果要用 LoRA,还需要把 LoRA 文件放入models/Lora目录。这里只是通用目录说明,具体名称和版本请按你下载的模型实际文件来写,不要照抄文件名。

3.4 磁盘与端口

模型文件比较大,建议预留 30GB 以上磁盘空间。默认端口一般是 7860(WebUI)或 8188(ComfyUI)。如果端口被占用,启动时会报错,需要手动换端口。

4. 安装部署与启动方式

4.1 WebUI 一键包启动

目前社区常见做法是下载整合包,解压后双击webui-user.bat启动。Windows 下首次启动会自动下载依赖和部分模型,耗时较长。

:: Windows 一键包示例,实际脚本名称按你下载的整合包为准 webui-user.bat

启动成功后,浏览器访问http://127.0.0.1:7860。日志里看到Running on local URL: http://127.0.0.1:7860就说明服务已经起来了。

4.2 ComfyUI 启动

ComfyUI 对显存占用更友好,适合做工作流复现。启动方式如下:

# 进入 ComfyUI 目录后执行 python main.py --listen 127.0.0.1 --port 8188

启动后访问http://127.0.0.1:8188。ComfyUI 默认是节点式界面,适合把整套流程固化成工作流文件,下次直接拖入就能复现。

4.3 命令行启动与参数调整

手动部署时,可以用命令行参数控制监听地址和端口。之前提到过,默认监听127.0.0.1,也就是只有本机可以访问。如果需要局域网内其他设备访问,可以把--listen改成0.0.0.0。做接口集成时,建议还是保持本机访问,更安全。

# 启动 WebUI 并指定端口,实际路径按你的安装目录调整 python launch.py --listen 127.0.0.1 --port 7860

4.4 启动失败怎么办

启动失败最常见两个原因。第一是显存不足,表现为启动过程中直接报 CUDA out of memory。第二是模型文件路径不对,UI 里模型下拉框是空的。先看启动日志,再检查模型目录,通常能解决大部分问题。

5. 角色基线测试:文生图

环境跑通之后,第一件事不是急着调参,而是验证“默认参数下能否出藿藿”。这一步我习惯叫角色基线测试。

5.1 设置提示词

藿藿的核心特征包括白发、狐耳、绿色眼睛、兽尾、狐人少女。注意,不同画师对角色的理解有差异,提示词要给出“核心特征 + 基础画质词”的结构。

masterpiece, best quality, 1girl, huohuo (honkai: star rail), white hair, fox ears, green eyes, fox tail, standing, upper body, simple background

这里huohuo (honkai: star rail)的作用是唤起模型对角色名的认知。如果基础大模型不认识这个角色名,出图效果会不稳定,这时候就需要 LoRA 来兜底。Negative prompt 建议写常见的画质负向词:

lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, jpeg artifacts

5.2 参数设置

第一次测试不建议直接挑战高分辨率。推荐从 512×512 或 512×768 开始,采样步数 20 到 25 步,采样器用 Euler a 或 DPM++ 2M Karras,CFG Scale 设置在 7 左右。批量数可以先设为 1,确认效果后再加大。

5.3 判断是否成功

判断标准很直观:第一眼能不能认出是藿藿。具体可以看几个点:发色是否稳定、狐耳是否自然、尾巴是否出现、眼睛颜色是否正确。如果画质崩坏,优先检查大模型是否适合二次元;如果画质没问题但不像藿藿,说明基础模型不认角色名,下一步就是测试 LoRA 或换用角色特征更明确的提示词。

写到这里,补充一个容易踩的坑:不要在一开始就叠加大量角色 tag,比如同时写white hair, long hair, fox girl, animal ears等。tag 越堆越多,角色特征会互相污染,画面容易乱。先跑通“最小角色特征”基线,再逐步加细节。

6. 图生图与角色一致性验证

文生图验证通过后,下一步测试图生图。图生图的作用有两个:一是把粗略草稿变成成品,二是微调已有图的方向。

6.1 图生图基本操作

在 WebUI 切到“图生图”标签,上传一张参考图。Denoising strength(重绘幅度)是核心参数。数值越低,结果越接近原图;数值太高,原图结构会被改得面目全非。做角色微调时,建议从 0.4 到 0.6 开始。

假设你上传了一张构图满意的藿藿草图,希望补全背景。提示词可以简化为:

masterpiece, best quality, huohuo (honkai: star rail), white hair, fox ears, green eyes, outdoor, park

重绘幅度控制在 0.5 左右,模型会根据提示词重绘背景,同时尽量保留原图的角色结构。

6.2 局部重绘:只改细节

如果对整张图基本满意,只有某个细节不对,比如尾巴方向错了,可以用局部重绘。在 WebUI 中打开图片编辑器,用画笔涂抹需要修改的区域,然后在提示词中明确写出该区域应该是什么样的。

局部重绘的要点是:涂抹范围宁大勿小,太小会导致边缘过渡不自然;重绘幅度可以比整图重绘低一些,0.3 到 0.5 之间比较稳。

6.3 一致性验证方法

角色一致性验证不是看一张图,而是看三张图。用同一组提示词,开启批量生成,每次生成 4 张,观察角色特征是否能在多张图中保持一致。真正的角色一致性还需要 LoRA 参与,后面专门讲。

7. 接口 API 与批量生成实践

本地调试通过后,如果需要接入自己的工具链,就要用 API。WebUI 原生提供了一套/sdapi/v1/接口,ComfyUI 也可以通过 API 方式提交工作流。

7.1 WebUI API 调用示例

前端页面能做的操作,大部分都有对应的 API。最常使用的是txt2img接口:

import requests import base64 import json import time url = "http://127.0.0.1:7860/sdapi/v1/txt2img" payload = { "prompt": "masterpiece, best quality, huohuo (honkai: star rail), white hair, fox ears, green eyes, standing", "negative_prompt": "lowres, bad anatomy, bad hands", "steps": 25, "width": 512, "height": 768, "batch_size": 2, "cfg_scale": 7, "sampler_name": "Euler a" } response = requests.post(url, json=payload, timeout=120) data = response.json() for idx, img_b64 in enumerate(data["images"]): img_bytes = base64.b64decode(img_b64) with open(f"output_huohuo_{int(time.time())}_{idx}.png", "wb") as f: f.write(img_bytes) print(f"Saved output_huohuo_{idx}.png")

这段脚本的逻辑是:调用接口生成图片,把返回的 base64 字符串解码成二进制,写入本地 PNG 文件。batch_size设置 2,表示一次请求生成两张。

7.2 批量任务怎么设计

批量任务最常见的做法,是把提示词放到一个 JSON 配置文件里,程序逐条读取并调用接口:

{ "tasks": [ { "name": "huohuo_portrait", "prompt": "masterpiece, huohuo (honkai: star rail), white hair, fox ears, green eyes, portrait, looking at viewer", "width": 512, "height": 768 }, { "name": "huohuo_fullbody", "prompt": "masterpiece, huohuo (honkai: star rail), white hair, fox ears, green eyes, full body, dynamic pose", "width": 512, "height": 1024 } ] }

然后在 Python 脚本里读取这个 JSON,逐条调用 API,并为每条任务增加失败重试。批量任务最容易踩的坑是服务端并发处理不过来导致超时。解决办法是加请求间隔,或者把batch_size控制在 1 到 2,按顺序跑。

7.3 ComfyUI API 调用

ComfyUI 的 API 调用方式不太一样。你需要先把节点工作流导出为 API 格式,再通过/prompt接口提交。基本流程是:

curl -X POST http://127.0.0.1:8188/prompt \ -H "Content-Type: application/json" \ -d @workflow_api.json

workflow_api.json是 ComfyUI 中“导出为 API 格式”的产物,不同工作流内容不同,这里没法给固定模板。使用时直接导入自己搭建好的工作流即可。

8. 资源占用与性能观察

跑 AI 绘图,显存占用是绕不开的话题。给出一个通用观察思路,具体数字以你本机为准。

8.1 怎么查看显存占用

Windows 下打开任务管理器,切到“性能”标签,看 GPU 的“专用 GPU 内存”。也可以在命令行执行:

nvidia-smi

输出里能看到显存使用率、显存温度、当前进程。建议在生成前、生成中、生成后各看一次,通过差值估算单次任务显存峰值。

8.2 哪些参数影响显存

分辨率是显存大户。512×512 的显存占用比 1024×1024 低很多。步数对显存影响不大,主要影响生成时间。批量数batch_size直接影响显存峰值,批量越大显存占用越高。开启 xformers 可以降低部分显存占用,代价是速度可能略降。

8.3 显存不够怎么办

如果提示CUDA out of memory,按顺序尝试这几步:降低分辨率到 512×512;开启显存优化开关;把批量数改成 1;关闭其他占用显存的程序。实在不行,用 SD WebUI 的--medvram--lowvram参数启动。

python launch.py --medvram

注意--medvram--lowvram不能和 xformers 同时使用,否则可能报错。

8.4 端口与进程残留

长时间批量任务容易出现端口被占用的报错。这是因为之前的 Python 进程没有完全退出。Windows 下可以这样查:

netstat -ano | findstr 7860 taskkill /PID 12345 /F

把 12345 换成实际占用的 PID 即可。Linux 下用lsof -i:7860fuser -k 7860/tcp

9. 常见问题与排查方法

问题现象可能原因排查方式解决方案
启动后页面打不开端口被占用或服务未启动检查启动日志和端口占用更换端口或重启服务
模型下拉框为空模型文件目录设置错误检查models/Stable-diffusion目录将模型文件放入正确目录并刷新
生成后图片是纯黑/纯白模型加载失败、显存不足查看日志是否报 CUDA 错误降低分辨率、启用显存优化
角色不像藿藿基础模型不认识角色名对比有无 LoRA 的差异训练角色 LoRA 或强化特征描述
手部崩坏基础模型能力不足或 CFG 过高检查 negative prompt 和 CFG使用手部修复或局部重绘
API 请求超时单次生成时间过长查看服务端日志降低分辨率、减小 batch_size
批量任务中途卡住服务端并发处理不过来观察显存和 CPU 占用增加请求间隔、顺序执行
显存不足报错分辨率或批量数过高查看显存占用情况使用--medvram或降低参数

9.1 关于 LoRA 生效但效果弱

这是训练中最常遇到的问题。LoRA 模型权重已经加载,但生成结果变化不大,通常有三个原因:权重设置过低,一般需要 0.6 到 1.0 才明显;或者训练集图片数量太少,特征没有学进去;也可能是提示词里没有写触发词。LoRA 文件一般会在文档里说明触发词,训练时需要把触发词加入提示词。

9.2 关于“越调越糊”

很多新手在批量生成时,发现图片质量不稳定。常见原因是提示词里塞了太多互相冲突的标签,或者 CFG Scale 调得过高。CFG 超过 12 后,画面容易过饱和,颜色发油。建议 CFG 固定在 6 到 8 之间,不要频繁变动。

10. 角色 LoRA 训练入门

如果你发现基础模型无论如何都不认识“藿藿”,或者只能在特定角度下才像,那就需要自己训练一个角色 LoRA。训练量不大,但数据准备是关键。

10.1 数据准备

先收集藿藿的图片,建议 30 到 60 张。图片要有变化:不同角度、不同表情、不同构图。尽量避开官方原画、带水印大图、画面里有大量遮挡的图。图片尺寸统一裁剪到 512×512 或 768×768,分辨率太低会影响特征学习。

10.2 打标

每张训练图需要配一个文本标签作为描述。可以用 WD14 Tagger 之类的工具自动打标。打完标之后,把所有通用特征标签删掉,比如masterpiece, best quality, 1girl这类影响训练方向的标签。只保留角色特征标签:white hair, fox ears, green eyes, fox tail

这里有个技巧:训练一个角色 LoRA 时,特征标签要保留,但不要每个角色特征都写进 tag,而是让模型“看到图片时自己联想”。实际上这种做法并不常见。更常见的做法是:在 tag 里保留通用的外观描述,同时给角色加一个唯一的触发词,比如huohuo,触发词的作用是让 LoRA 能被提示词唤醒。

10.3 训练参数建议

不同训练脚本参数差异较大,这里给一个通用参考区间,不代表最优,需要以实际效果为准。

学习率:1e-4 到 2e-4 训练步数:2000 到 5000 步 批量大小:2 到 4 网络维度:32 到 64 网络 alpha:16 到 32 """ 从 3000 步左右开始做中间态测试,生成几张验证图对比效果。训练步数太少,特征学不到位;步数太多,可能出现过拟合,生成的图千篇一律。 ### 10.4 LoRA 验证流程 训练完成后,把 LoRA 文件放到 `models/Lora` 目录,然后在提示词中加入 `lora:huohuo:0.8`,其中 0.8 是权重。生成时同时写角色名和特征词: ```text masterpiece, best quality, huohuo, white hair, fox ears, green eyes, standing

对比不加 LoRA 和加 LoRA 的输出。如果加 LoRA 后角色形象明显更接近训练集风格,说明训练成功。如果角色变成“塑料感”,说明权重过高,调低到 0.5 到 0.6 再试。

11. 批量生成与工程化经验

本地部署最大的优势是可以把生成过程脚本化、自动化。这里分享几个工程化经验。

11.1 输入素材滚动队列

批量任务不一定只跑一次。更实用的设计是:一个输入目录放提示词 JSON 文件,程序启动后扫描目录,有新任务就提交给 API,完成后把结果移动到归档目录。这样可以用定时任务实现无人值守。

简单做法:

# 伪代码,实际用 Python 或 shell 实现 watchdir=/data/tasks outputdir=/data/output # 扫描 watchdir,有新文件就执行生成脚本 python batch_generate.py --watch /data/tasks --output /data/output

难点不在 API 本身,而在任务失败重试和输出文件命名。建议输出文件名带时间戳和任务名,避免批量任务过程中互相覆盖。

11.2 目录管理规范

模型、输入、输出分开放。建议目录结构如下:

|-- models | |-- Stable-diffusion | |-- Lora |-- inputs | |-- tasks |-- outputs |-- logs

日志单独放在logs目录。批量任务跑完后,翻日志定位问题比猜原因快得多。

11.3 接口服务安全

如果 API 绑定到局域网,建议加上访问控制或者只跑在本机。--listen 0.0.0.0虽然方便,但也意味着局域网内任何人都能调用你的服务。AI 绘图接口没有鉴权,违规使用会被当成你本人的操作。所以,默认保持127.0.0.1,需要外部访问时再显式对外开放,并加防火墙规则。

12. 总结与下一步

围绕“藿藿”这个角色,本文打通了本地 AI 绘图的完整链路:环境部署、文生图基线测试、图生图局部重绘、API 接入、批量任务、资源优化、LoRA 训练验证。如果你只想做一件事,我建议先跑一遍“第 5 章的文生图基线测试”,用最少的配置确认工具链没有硬伤,再逐步叠加功能。

最值得优先验证的功能是角色一致性。先测试基础模型对藿藿的识别度,再决定要不要训练 LoRA。最容易踩的坑还是显存不足和模型路径配错,这两类问题占了本地部署报错的绝大多数。排查时记住“先看日志,再查目录,最后调参数”,基本能解决九成问题。

后续扩展方向有三个:一是把批量化脚本接到定时任务里,实现固定流程自动出图;二是尝试用 ControlNet 控制构图,让角色姿势更可控;三是把训练好的 LoRA 分享给社区,但分享时要标注“非官方同人模型”,不要做任何授权外商用。

本地 AI 绘图不是把模型下载下来就结束的事,而是“工程化”的过程。把你的角色提示词、参数配置、工作流文件都保存好,下次想复现时,你会发现这套沉淀比任何参数秘诀都值钱。建议收藏备用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 16:08:19

主成分分析结果解读:特征值、方差贡献率与载荷矩阵

主成分分析结果解读一、方法概述主成分分析(Principal Component Analysis, PCA)是一种常用的降维技术,其核心思想是通过正交变换将一组可能存在相关性的变量转化为一组线性不相关的综合指标(主成分),从而在…

作者头像 李华
网站建设 2026/9/2 16:07:21

【单片机毕设案例分享】基于 STM32 与 ESP‑01S 模块的远程饮水管控系统设计 基于 STM32 的红外人体感应热水出水装置设计与开发(012106)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于单片机,STM32单片机,51单片机,J…

作者头像 李华
网站建设 2026/9/2 16:06:09

Python 实战:公共科研数据门户高级筛选采集,搜索条件矩阵、分页与增量入库

㊗️本期内容已收录至专栏《Python爬虫实战》,持续完善知识体系与项目实战,建议先订阅收藏,后续查阅更方便~ ㊙️本期爬虫难度指数:⭐⭐⭐⭐☆(高级) 🉐福利: 一次订阅后,专栏内的所有文章可永久免费看,持续更新中,保底1000+(篇)硬核实战内容。 全文目录: 🌟 开…

作者头像 李华
网站建设 2026/9/2 16:04:54

从零构建Slack集成:基于Bolt框架实现Krea AI自动化工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 16:03:27

开发实战:低功耗设备认证流程的功耗优化

电池供电的物联网设备做身份认证,最纠结的就是功耗账:一次认证多花几十毫安时,一年下来可能就是续航从十八个月掉到十二个月的差别。这篇从工程角度梳理低功耗认证流程的优化思路,涉及的量级估算基于典型安全认证芯片的公开参数。…

作者头像 李华