要从 NovelAI 迁移到本地 Stable Diffusion,或让两套工具混用,先要有一套能重复执行的对比流程。直接凭印象比较不靠谱,因为 NovelAI 是闭源在线服务,Stable Diffusion 是本地开源模型,两者的采样器、CFG Scale、模型版本、甚至 VAE 都会影响输出。建议按下述流程收集图片、耗时、资源占用和人工评分,再根据记录做决定。
判断方向:先固定提示词、参数和种子范围,再分别用 NovelAI 与本地 Stable Diffusion 出图,按构图、细节和画风三项人工评分,同时记录耗时与显存占用。适用场景是个人或小团队的选型评估;操作动作为准备统一提示词、执行生成、保存文件名、评分归档;验证方式为至少两人独立评分取平均;风险边界在于模型版本和采样器差异会让结果不可比,需要事先固定参数集。
确定对比测试的提示词与参数集
对比公平的前提是两边的提示词完全一致,并且把 NovelAI 的解析参数记录下来,再映射到 Stable Diffusion 的等效参数。不能只写一句“a girl”就开跑,那样风格差异会把模型差异完全淹没。
先准备 5 组覆盖不同风格的中性提示词,例如:写实人像、二次元半身像、风景远景、机械道具特写、暗调室内场景。每组建议包含主体描述、环境描述、画质词和负面提示词。负面提示词在 NovelAI 与 Stable Diffusion 中写法不同,需要先统一成都能识别的通用负面词。
以下是一组可用于 Stable Diffusion 的提示词样例,NovelAI 侧也要录入相同内容:
正向:1girl, upper body, school uniform, soft lighting, detailed face, masterpiece, best quality
负面:lowres, bad anatomy, bad hands, extra fingers, blurry
参数:Steps=30, Sampler=DDIM, CFG Scale=7, Seed=12345, Size=512x768
对每组提示词,记录 NovelAI 界面里能看到的采样器、Steps、CFG、Seed、分辨率、是否开启增强或 VAE。在 Stable Diffusion 侧使用同样的数字;如果 NovelAI 的采样器名称不同,优先选择行为接近的 DDIM 或 Euler。把每组提示词和参数整理成一张表格,方便后面逐个复现。
分别生成并保存结果图片
NovelAI 是网页操作,只能手动保存,所以需要约定文件命名规则;本地 Stable Diffusion 可以用命令行直接输出到同一目录,确保后续对照不混乱。
建议每张图的文件名包含:场景编号、工具名、种子、步骤、采样器。例如:scene01_novelai_seed12345_steps30_ddim.png 和 scene01_sd_seed12345_steps30_ddim.png。NovelAI 手动保存时按照这个规则改名;Stable Diffusion 侧可以直接用命令行参数控制输出文件名。
一个可用的 Stable Diffusion 命令行调用骨架如下,需要按实际仓库结构调整路径:
cd /path/to/stable-diffusion-webui
python webui.py `--ckpt` /path/to/model.safetensors \
`--prompt` "1girl, upper body, school uniform, soft lighting, detailed face, masterpiece" \
`--negative`_prompt "lowres, bad anatomy, bad hands" \
`--steps` 30 `--sampler` DDIM `--cfg`_scale 7 `--seed` 12345 \
`--width` 512 `--height` 768 \
`--outdir` ./compare/scene01 \
`--output`_filename scene01_sd_seed12345_steps30_ddim.png
如果当前环境的脚不支持 `--output`_filename,可以在生成后手动重命名。注意,NovelAI 输出尺寸可能与本地模型不同,为了避免比例差异影响评分,先统一分辨率或注明原图尺寸。
统计生成耗时与资源占用
效率对比要记两个东西:单张出图耗时和显存占用(如果是本地)。NovelAI 作为在线服务,耗时包含排队和网络传输,无法精确测量生成本身,只能记录从点击生成到图片可下载的完整时间;本地 Stable Diffusion 可以用 time 命令包裹调用,测出端到端耗时。
使用 time 的示例:
/usr/bin/time -v python webui.py `--prompt` "..." \
`--steps` 30 `--sampler` DDIM `--cfg`_scale 7 `--seed` 12345 \
`--width` 512 `--height` 768 `--outdir` ./compare/scene01
运行结束后查看输出中的 Elapsed (wall clock) time 作为生成耗时。显存占用建议单独用 nvidia-smi 记录:生成前执行一次 nvidia-smi `--query-gpu`=memory.used `--format`=csv 得到初始值,生成中再采样几次,峰值减去初始值就是模型加载和推理带来的额外占用。NovelAI 无法获得显存数据,只记录网络耗时即可,并把这点写入归档备注。
按维度人工评分并交叉验证
图片质量没有统一客观数值,只能靠人看。建议至少让两人以上独立评分,然后取平均值,减少单人的口味偏差。不要用“喜欢/不喜欢”这种粗糙判断,给三个可打分的维度:构图、细节、画风。
下面是可用的评分表模板,每个维度 1-5 分,5 为最好:
| 文件 | 构图 | 细节 | 画风 | 总分 | 备注 |
| scene01_novelai_*.png | 4 | 3 | 5 | 12 | 边缘有些不自然 |
| scene01_sd_*.png | 3 | 4 | 4 | 11 | 手部崩坏,但光影好 |
评分时建议把两边的图片放在同一屏幕或同一画册中,打乱顺序、隐藏文件名,减少先入为主的预期。每个人独立打分,不要互相讨论;最后把同一文件的多份评分相加后除以评分人数,得到该文件的平均分。
归档结果并生成对比报告
把图片、参数、耗时、资源占用和评分散落在多个地方会失去对比价值。建议每个场景建一个目录,用 Markdown 写一个简单的归档文档,方便以后回溯。
Markdown 模板可以直接复制:
# 场景 01:写实人像
## 提示词与参数
- 正向:1girl, upper body, ...
- 负向:lowres, ...
- Steps:30,Sampler:DDIM,CFG:7,Seed:12345,分辨率:512x768
## NovelAI
- 图片:scene01_novelai_seed12345_steps30_ddim.png
- 耗时:13.2 秒(含排队与网络)
- 显存:不适用
- 评分:构图 4,细节 3,画风 5,平均 4.0
## Stable Diffusion
- 图片:scene01_sd_seed12345_steps30_ddim.png
- 耗时:4.8 秒
- 显存:峰值 5.2 GB,初始 1.1 GB
- 评分:构图 3,细节 4,画风 4,平均 3.67
## 备注
- NovelAI 画风更稳定,但本地细节纹理更丰富。
完成后,把所有场景的 Markdown 汇总成一份总报告。最终对比不只是看总分,还要看哪些场景差异大、哪些差异小。判断是否迁移时,再结合显存、耗时和评分的权重去权衡。整个过程不依赖固定结论,数据收集得越完整,迁移决策越有依据。