这里记录在使用stable diffusion webui(简称sd webui)调试模型过程中我觉得有帮助的几个技巧,包括重复生成图片,X/Y/Z Plot制作对比图,复现生成结果,style功能。

重复生成图片

如果希望在sd webui中使用相同的设置(包括提示词,种子,模型)生成多个结果,除了重复点击“生成”按钮,也可以右击“生成”按钮,这时候后会弹出一直生成和取消一直生成的菜单,选择后就可以开始或者停止持续生成图片。

除此之外,可以使用script功能,需要首先将下面的代码存储为run_n_times.py文件,之后放大sd webui安装目录的scripts目录下,之后再sd webui界面的script选项选择Run n times,设置重复次数为n。

import math
import os
import sys
import traceback

import modules.scripts as scripts
import gradio as gr

from modules.processing import Processed, process_images

class Script(scripts.Script):
    def title(self):
        return "Run n times"

    def ui(self, is_img2img):
        n = gr.Textbox(label="n")
        return [n]

    def run(self, p, n):
        for x in range(int(n)):
            p.seed = -1
            proc = process_images(p)
            image = proc.images
        return Processed(p, image, p.seed, proc.info)

此外还可以使用stable api来重复提交网络请求来实现重复生成图片。

X/Y/Z Plot制作对比图

如果希望对比不同参数设置的生成结果,使用X/Y/Z Plot是个方便的选项。它的使用方法是在script选项中选中X/Y/Z Plot之后,在弹出的更多选项中分别设置x,y,z轴的变量。常见的变量设置有seed,sampler等。

一个在非常有用的变量prompt s/r,即提示词的查找替换,你需要选择它之后,在value部分用逗号隔开多个替换选项,程序会使用第一个逗号前的词作为被替换的文本,后续每个逗号隔开的词会替换它。例如在测试不同lora效果的时候,如果设置prompt s/r为<lora:1>,<lora2:1>,<lora3:1>则可以比较不同lora的效果。

复现生成结果

如果希望重新之前图片的生成或者网上(例如civitai)图片的生成结果,可以使用导入功能,导入按钮在提示词输入旁边,你可以将网站拷贝的生成信息输入到提示词部分,然后点击导入,就可以将信息输入到其他选择中。

对于本地图片可以使用png info获取图片生成信息,将图片拖拽入输入就可以看见生成信息。

style功能

Style是一组提示词的缩写符号,和style有关的功能按钮在提示词输入框右边。

点击画笔形状的编辑按钮可以进入style编辑页面,在其中你也可以选择一键将当前提示词输入框中的文本导入到当前style。

编辑完成的style可以通过生成按钮下方的下拉选框来选择,之后生成结果就会体现当前的style。

另一个在生成下面的按钮是“应用style”,可以将style的全部文本自动填入当前的提示词输入框,可以在在style基础上修改的时候使用。