这次我们来看一个基于《明日方舟》角色“迷迭香”的AI图像生成项目。这类项目通常聚焦于利用Stable Diffusion等开源模型,结合特定的角色LoRA或Checkpoint,实现高质量、风格化的二次元角色图像生成。对于喜欢《明日方舟》或想学习角色定制化AI绘画的开发者来说,核心价值在于能否在本地或云端低成本地复现出符合角色设定的精美图片,并支持批量创作、风格测试等进阶玩法。
本文将围绕“如何部署和使用一个迷迭香主题的AI绘画模型”展开,重点拆解从环境准备、模型获取、到生成测试、参数优化的全流程。无论你是想快速体验角色AI绘画,还是希望将其集成到自己的工具链中,都可以通过以下步骤实现。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | AI图像生成(文生图/图生图),角色定制化 |
| 核心模型 | 基于 Stable Diffusion WebUI 或 ComfyUI,搭配迷迭香角色LoRA/模型 |
| 主要功能 | 生成《明日方舟》迷迭香角色图像、多姿势/多场景变换、风格融合、高清修复 |
| 推荐硬件 | 支持NVIDIA GPU(显存≥4GB可获得较好体验),CPU模式可运行但速度慢 |
| 显存占用 | 根据模型分辨率、参数设置浮动,通常基础生成在4-8GB之间 |
| 支持平台 | Windows / Linux / macOS (CPU或M系列芯片) |
| 启动方式 | WebUI一键启动脚本、ComfyUI加载工作流、或Python API调用 |
| 是否支持API | 是(通过WebUI的API模块或自定义gradio服务) |
| 是否支持批量 | 是(WebUI内置批量生成,或通过脚本/API实现队列处理) |
| 适合场景 | 同人创作、头像生成、内容生产、AI绘画学习、工作流集成 |
2. 适用场景与使用边界
这个项目主要适合以下几类用户:
- 《明日方舟》爱好者与同人创作者:希望快速生成迷迭香的高质量二次元图像,用于非商业性质的分享、创作。
- AI绘画初学者/研究者:希望通过一个具体的角色案例,学习如何应用LoRA模型、调整提示词、控制生成细节。
- 内容生产者:需要稳定产出特定主题的配图,用于视频、文章、社交媒体等。
- 工具集成开发者:希望将角色图像生成能力作为服务,通过API接入自己的应用或平台。
使用边界与注意事项:
- 版权与合规:生成的图像基于游戏角色原型,应仅用于个人学习、研究和合法的同人创作。严禁用于任何商业侵权、诽谤、色情或非法内容制作。
- 模型来源:确保使用的角色模型(LoRA/Checkpoint)来自可信的开源社区或创作者授权分享,尊重模型作者的许可协议。
- 隐私与肖像权:本项目生成的是虚拟角色图像,不涉及真实人脸。但若在“图生图”中使用他人肖像作为参考,必须获得明确授权。
- 技术局限性:AI生成存在不稳定性,可能产生肢体异常、细节错误等问题,需要反复调试参数。
3. 环境准备与前置条件
在开始部署前,请确保你的系统满足以下基础条件。
操作系统:
- Windows 10/11, Linux (如Ubuntu 20.04+), 或 macOS (建议使用M系列芯片以获得更好性能)。
Python环境:
- Python 3.10.x:这是目前Stable Diffusion WebUI等工具最兼容的版本。不建议使用3.11或更高版本,可能遇到依赖冲突。
- 包管理工具:
pip需更新至最新版。
GPU/驱动(如使用N卡):
- NVIDIA显卡:推荐GTX 1060 6G及以上。显存越大,可设置的分辨率和批量大小越高。
- CUDA工具包:版本需与PyTorch匹配。通常安装CUDA 11.8或12.1。
- 显卡驱动:更新至最新版本,以确保CUDA兼容性。
磁盘空间:
- 至少准备15-20GB的可用空间。用于存放基础模型(约2-7GB)、角色模型(LoRA通常100-200MB)、依赖库以及生成的图片。
网络环境:
- 需要能够访问GitHub、Hugging Face等开源平台,以下载代码和模型文件。
4. 安装部署与启动方式
我们将以最流行的Stable Diffusion WebUI (AUTOMATIC1111版)为例,演示如何集成迷迭香角色模型并启动服务。
4.1 获取WebUI基础框架
克隆仓库:打开终端(Windows可用PowerShell或CMD),进入你希望安装的目录。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui运行启动脚本:
- Windows:双击目录下的
webui-user.bat文件。脚本会自动创建Python虚拟环境并安装依赖。 - Linux/macOS:在终端中执行
./webui.sh。 - 首次运行会下载较大的基础模型(如
sd_xl_base_1.0.safetensors),请耐心等待。
- Windows:双击目录下的
4.2 获取迷迭香角色模型
角色模型通常以LoRA (Low-Rank Adaptation)形式存在,文件小,易于加载和切换。
- 模型下载:前往CivitAI、Hugging Face等模型分享站,搜索关键词如 “Arknights Mizuki LoRA” 或 “明日方舟 迷迭香 LoRA”。下载
.safetensors格式的文件。 - 放置模型:将下载的LoRA文件(例如
mizuki_lora.safetensors)放入WebUI目录下的models/Lora文件夹中。stable-diffusion-webui/ ├── models/ │ ├── Lora/ <-- 迷迭香LoRA放这里 │ ├── Stable-diffusion/ <-- 基础大模型放这里 │ └── ... └── ... - 准备基础模型:确保
models/Stable-diffusion/目录下有一个可用的基础检查点模型(如chilloutmix_NiPrunedFp32Fix.safetensors)。
4.3 启动WebUI服务
完成上述步骤后,再次运行启动脚本 (webui-user.bat或./webui.sh)。服务启动后,默认会在本地7860端口监听。
- 成功标志:终端最后出现类似
Running on local URL: http://127.0.0.1:7860的日志。 - 访问界面:打开浏览器,输入
http://127.0.0.1:7860即可进入WebUI操作界面。
启动参数调整(可选): 如果遇到显存不足或端口冲突,可以编辑启动脚本(如webui-user.bat),在COMMANDLINE_ARGS变量后添加参数:
set COMMANDLINE_ARGS=--medvram --listen --port 7890--medvram: 为中等显存优化(如6-8GB显卡)。--lowvram: 为低显存优化(如4GB显卡)。--listen: 允许局域网内其他设备访问。--port 7890: 指定服务端口为7890。
5. 功能测试与效果验证
服务启动后,我们进入核心的功能测试环节。
5.1 基础文生图测试
测试目的:验证基础模型和LoRA能否正确加载,并生成符合迷迭香特征的图像。
选择模型:
- 在WebUI左上角“Stable Diffusion checkpoint”下拉菜单中,选择你的基础模型(如chilloutmix)。
- 点击下方“Show extra networks”按钮,切换到“Lora”标签页。你应该能看到刚才放入的
mizuki_lora,点击它,提示词输入框会自动添加<lora:mizuki_lora:1>的触发词。
编写提示词:
- 正向提示词:描述你想要的画面。例如:
masterpiece, best quality, 1girl, Arknights, Mizuki (Arknights), grey hair, long hair, animal ears, cat ears, green eyes, looking at viewer, solo, white background, cute, smile (杰作,最佳质量,1女孩,明日方舟,迷迭香,灰发,长发,兽耳,猫耳,绿瞳,看着观众,单人,白色背景,可爱,微笑) - 负向提示词:排除不想要的元素。例如:
lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, ugly (低分辨率,解剖结构错误,手部错误,文字,错误,缺少手指,多余手指,手指缺失,裁剪,最差质量,低质量,普通质量,JPEG伪影,签名,水印,用户名,模糊,丑陋)
- 正向提示词:描述你想要的画面。例如:
设置生成参数:
- 采样方法 (Sampler):选择
DPM++ 2M Karras或Euler a,出图速度和质量比较均衡。 - 采样步数 (Steps):设置为
20-30。 - 图片宽度/高度 (Width/Height):初次测试建议
512x512或512x768。分辨率越高,显存消耗越大。 - 提示词引导系数 (CFG Scale):设置为
7。 - 生成批次 (Batch count):先设为
1。
- 采样方法 (Sampler):选择
点击生成:观察终端日志和WebUI进度条。成功生成后,图片会显示在右侧画廊。
判断成功:生成的图像主体应为灰发、猫耳、绿瞳的少女,符合迷迭香的基本特征。如果特征不明显,可能需要调整LoRA权重(将提示词中的:1改为:0.8或:1.2进行微调)。
5.2 图生图与风格融合测试
测试目的:验证模型在参考图基础上的再创作能力,以及融合不同风格LoRA的效果。
- 切换到“图生图”标签页。
- 上传一张参考图:可以是一张迷迭香的官方立绘或同人图。
- 重绘强度 (Denoising strength):设置为
0.5-0.7。值越低越像原图,值越高创意空间越大。 - 在提示词中加入风格LoRA:例如,想生成水彩风格,可以同时加载一个水彩风格的LoRA。提示词可能变为:
<lora:mizuki_lora:1>, <lora:watercolor_style:0.7>, masterpiece, best quality, 1girl, Arknights, Mizuki... - 点击生成:观察生成结果是否在保留迷迭香特征的基础上,融入了水彩画风。
5.3 高清修复 (Hires. fix) 测试
测试目的:测试从低分辨率草图生成高分辨率细节图的能力,这对产出高质量作品至关重要。
- 在“文生图”或“图生图”标签页下方,勾选“Hires. fix”选项。
- 设置高清修复参数:
- 放大算法 (Upscaler):选择
R-ESRGAN 4x+或Latent。 - 重绘幅度 (Hires steps):
20。 - 放大倍数 (Upscale by):
2。 - 放大后宽度/高度:系统会根据基础分辨率自动计算。
- 放大算法 (Upscaler):选择
- 再次点击生成。这个过程会分两步:先生成低分辨率图,再对其进行放大和细节重绘。显存占用会显著增加。
6. 接口API与批量任务
WebUI内置了API功能,便于集成到自动化脚本或应用中。
6.1 启动API服务
在启动参数中加入--api,例如:
set COMMANDLINE_ARGS=--api --listen重启WebUI后,API服务即启用。
6.2 调用文生图API
以下是一个Python调用示例,生成一张迷迭香图片并保存。
import requests import json import io from PIL import Image url = "http://127.0.0.1:7860/sdapi/v1/txt2img" payload = { "prompt": "<lora:mizuki_lora:1>, masterpiece, best quality, 1girl, Arknights, Mizuki, cute cat ears, smile, white background", "negative_prompt": "lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry", "steps": 20, "cfg_scale": 7, "width": 512, "height": 768, "sampler_name": "DPM++ 2M Karras", "seed": -1, # -1表示随机种子 } headers = { 'Content-Type': 'application/json' } response = requests.post(url, data=json.dumps(payload), headers=headers) r = response.json() # 处理返回的图像(base64编码) for i, img_base64 in enumerate(r['images']): image = Image.open(io.BytesIO(base64.b64decode(img_base64.split(",",1)[0]))) image.save(f'./output/mizuki_{i}.png') print(f"图片已保存: mizuki_{i}.png")6.3 实现批量任务
利用API,可以轻松实现批量生成。核心是循环调用API,并可以变化提示词、种子等参数。
import requests import json import base64 from PIL import Image import io api_url = "http://127.0.0.1:7860/sdapi/v1/txt2img" # 定义不同的场景或姿势 prompt_list = [ "((masterpiece)), best quality, 1girl, Arknights, Mizuki, sitting in a library, reading a book, peaceful", "((masterpiece)), best quality, 1girl, Arknights, Mizuki, on battlefield, casting arts, dynamic pose, glowing eyes", "((masterpiece)), best quality, 1girl, Arknights, Mizuki, wearing casual clothes, in a cafe, smiling", ] common_negative = "lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, ugly" for idx, specific_prompt in enumerate(prompt_list): full_prompt = f"<lora:mizuki_lora:1>, {specific_prompt}" payload = { "prompt": full_prompt, "negative_prompt": common_negative, "steps": 25, "cfg_scale": 7, "width": 512, "height": 768, "sampler_name": "Euler a", "seed": -1, # 每次使用随机种子,获得不同结果 } print(f"正在生成第 {idx+1} 张图: {specific_prompt[:50]}...") try: response = requests.post(api_url, json=payload, timeout=120) r = response.json() if 'images' in r and len(r['images']) > 0: img_data = base64.b64decode(r['images'][0].split(",",1)[0]) image = Image.open(io.BytesIO(img_data)) image.save(f'./batch_output/mizuki_batch_{idx}.png') print(f" 成功保存: mizuki_batch_{idx}.png") else: print(f" 生成失败,响应: {r}") except Exception as e: print(f" 请求异常: {e}")7. 资源占用与性能观察
了解资源占用情况有助于优化生成体验和排查问题。
观察显存占用:
- Windows:打开任务管理器 -> 性能 -> GPU,查看“专用GPU内存”。
- Linux:使用
nvidia-smi命令。 - 启动WebUI后,显存会被基础模型加载占用一部分(约1-3GB)。生成图片时,显存占用会瞬间攀升,峰值取决于分辨率、批大小和是否启用高清修复。512x512分辨率生成通常需要4-6GB,启用高清修复放大2倍可能超过8GB。
性能影响因素:
- 分辨率:对显存和生成时间影响最大。长边超过1024需谨慎。
- 批处理数量 (Batch size):一次生成多张图会线性增加显存占用,但单张图平均时间可能减少。
- 采样步数 (Steps):步数越多,细节可能越好,但生成时间线性增加。20-30步是常用范围。
- 采样器 (Sampler):
Euler a速度快,DPM++ 2M Karras质量高但稍慢。 - LoRA数量:同时加载多个LoRA会轻微增加显存和计算量。
降低资源消耗的技巧:
- 使用
--medvram或--lowvram参数启动。 - 在WebUI设置中启用“模型缓存到GPU”等优化选项。
- 生成时先使用低分辨率(如512x512),再用“高清修复”或“附加功能”中的“放大”来提升分辨率,比直接生成高分辨率图更省显存。
- 对于纯测试,可以使用CPU模式(启动参数加
--use-cpu all),但速度极慢。
- 使用
8. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 启动时报错,提示缺少模块 | Python依赖未正确安装或版本冲突。 | 查看终端错误日志,通常包含具体的模块名。 | 1. 删除venv文件夹,重新运行启动脚本。2. 手动在虚拟环境中 pip install缺失的包。 |
| WebUI页面打不开 | 服务未成功启动或端口被占用。 | 1. 检查终端是否有Running on local URL日志。2. 执行 netstat -ano | findstr :7860(Win) 或lsof -i:7860(Linux/mac) 查看端口占用。 | 1. 根据终端错误修复启动问题。 2. 更换端口:启动参数加 --port 7890。 |
| 生成图片全黑或全灰 | 模型未正确加载或VAE不匹配。 | 1. 检查终端加载模型时是否有错误。 2. 检查“设置”->“Stable Diffusion”->“VAE”是否选择了正确的VAE或“自动”。 | 1. 重新下载并放置模型文件。 2. 尝试切换不同的VAE,或下载模型对应的VAE文件放入 models/VAE目录。 |
| 生成的图片没有迷迭香特征 | LoRA未正确触发或权重太低。 | 1. 检查提示词中是否包含<lora:mizuki_lora:1>。2. 在“生成”按钮下的“额外网络”面板确认LoRA已激活。 | 1. 确保LoRA文件名与提示词中引用的一致。 2. 调整LoRA权重,如从 :1改为:0.8或:1.2。3. 检查基础模型是否与LoRA兼容。 |
| 生成时显存不足 (OOM) | 分辨率过高、批大小太大或模型太大。 | 观察任务管理器中的显存峰值。 | 1. 降低生成分辨率。 2. 将批大小 (Batch size) 设为1。 3. 使用 --medvram/--lowvram启动。4. 尝试使用显存需求更小的模型。 |
| API调用返回错误 | 请求参数错误、服务未以API模式启动或超时。 | 1. 检查启动参数是否有--api。2. 查看WebUI终端日志中的API错误信息。 3. 检查请求的JSON格式和字段名。 | 1. 确保以--api模式重启WebUI。2. 使用 curl或 Postman 先测试一个最简单的请求。3. 增加请求超时时间。 |
| 生成速度非常慢 | 使用了CPU模式、显卡驱动/CUDA问题、或采样器步数过高。 | 1. 检查终端是否显示“Using CPU”。 2. 检查 nvidia-smi是否显示GPU正在被使用。 | 1. 确保未使用--use-cpu参数,且CUDA、PyTorch版本匹配。2. 更换更快的采样器,如 Euler a。3. 适当降低采样步数。 |
9. 最佳实践与使用建议
为了获得更稳定、高效的体验,并规避潜在风险,建议遵循以下实践:
- 环境隔离:始终在Python虚拟环境或Docker容器中运行项目,避免污染系统环境。
- 模型管理:建立清晰的目录结构,区分基础模型、LoRA、VAE、Embedding等。定期清理不用的模型以节省磁盘空间。
- 参数标准化:为自己常用的风格建立一套参数预设(WebUI支持保存预设),包括采样器、步数、CFG scale、高清修复参数等,提高工作效率。
- 提示词工程:
- 分层编写:先写主体(角色、动作),再写细节(服装、发型、表情),最后是画质和风格词。
- 使用权重:用
(word:1.2)加强某个概念,用[word:0.8]减弱。 - 善用负面提示词:一个通用的高质量负面提示词列表能显著提升出图稳定性。
- 迭代生成:不要期望一次就得到完美图片。使用“种子”固定住满意的构图,然后微调提示词或重绘强度来迭代优化。
- 版权与伦理自查:
- 生成的图片若包含可识别的特定画风,应确认其是否允许商用。
- 绝对不要生成涉及现实公众人物、侵犯他人肖像权或制作有害内容。
- 在分享作品时,如果使用了特定的LoRA模型,最好注明模型作者,尊重开源社区的贡献。
- 备份与日志:对于重要的批量生成任务,记录所用的参数、种子和提示词。定期备份你的WebUI配置和自定义脚本。
通过以上步骤,你应该已经能够在本地成功部署并运行一个专属于“迷迭香”的AI图像生成环境。从基础文生图到API批量调用,整个流程的核心在于理解模型、提示词和参数之间的相互作用。遇到问题时,多查阅终端日志、社区论坛和模型发布页的说明,大部分技术问题都有现成的解决方案。这个项目不仅是一个娱乐工具,更是一个学习AIGC技术应用的绝佳切入点。建议从修改提示词、尝试不同LoRA混合开始,逐步探索更复杂的ControlNet控制、自定义模型训练等进阶玩法,从而真正掌握AI绘画的主动权。