最近一段时间,使用 Stable Diffusion 等工具生成图片的资讯充斥着整个互联网,但是很多在线的 AI 图片生成工具,要么根本访问不了(需要科学上网),要么就是需要付费,而且还巨慢。作为一个常年混迹于互联网的技术流玩家,我觉得有必要在自己本机搭一下无限制的 AI 图片生成工具。

本地搭建这东西我觉得还是很有用的,对于我来说,写博客,公众号的一些配图,完全可以用这东西生成。还有最重要的,我是想用在独立游戏开发中,让我做的那些垃圾文字游戏,可以多一点图片,增加哪怕一点点美感和吸引力。

我们用的工具是 Stable Diffusion。由于我的机器是 Mac M1 芯片的,所以教程也就是在此配置上去搭建,其他平台类似。

1. 确认 Python 环境

首先确保自己机器上的 Python3 版本是 3.10 以上,使用命令 python3 --version 可以查看。如果还没有安装 Python3 则使用命令 brew install python3 来安装。如果版本比 3.10 低,则使用 brew upgrade python3 来升级到最新版本

2. 下载 Stable Diffusion 的 Web 工程

使用命令 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 来克隆 Stable Diffusion 的 web 工程,这个工程可以让我们在浏览器中使用 Stable Diffusion。 注意,这个过程可能会异常的慢,甚至可以失败,如果失败了,那就重新执行命令,或者采取一些科学的网络方式对其进行下速,反正相办法下载下来就行。

3. 下载模型文件,模型文件,可以理解为官方或其他人已经训练好的一些参数集合,有了这个,生成工具才知道怎么去生成一张图片。

先下载官方的基础 Model,这里使用的是 1.5 版本的,2.0 版本的不在此博客的讨论范围内,因为我也没用过。

点击这里下载 v1-5-pruned.ckpt

下载完成后,将这个文件放入 stable-diffusion-webui/models/Stable-diffusion 目录下

4. 运行 Stable Diffusion

工程下载来下后,使用命令 cd stable-diffusion-webui 进入工程的主目录。然后再执行运行命令 ./webui.sh。注意,这个命令也是可能会非常的慢,或者失败,因为第一次运行,会下载一些其他的库,这个过程可能会失败很多次,取决于网络情况,我安装的时候,就装了好久。失败了就重新运行 ./webui.sh 即可,已经下载完的不会重复下载,放心好了。

命令运行可能需要一小会,不要着急,当看到终端输出下面的内容时,一般就说明行了

在浏览器中打开 http://localhost:7860/ 即可看到运行后的 Stable Diffusion Web 界面了。

5. 尝试生成一张图

在 web 界面中的第一个输入框中输入下面的 Prompt,也就是告诉 Stable Diffusion 要生成什么的关键词描述

oil painting with heavy impasto of a pirate ship and its captain, cosmic horror painting, elegant intricate artstation concept art by craig mullins detailed

其他的都不变,然后点击右边的 Generate 按钮,等待一会,右下角就会出现结果

看起来效果还行对不对。这只是最基本的用法,上面第一个框是输入关键词的,下面一个框是输入负面关键词(就是不想要的)的,如果你要问这些关键词从哪里来,嗯,很多网站都有,我一般是从下面几个网站去找想要的图的风格的 Prompt

https://arthub.ai/

https://prompthero.com/

6. 说一下模型

接下来说一下模型,上面我们用到的只是官方的最基本的模型,还有很多大神做的模型,比如用来生成好看小姐姐的,那么模型从哪里来呢?我一般从 https://civitai.com/ 这个网站来下载。

我理解的模型分为两种,一种可以理解成主模型,一种是依附于主模型才能使用的模型,例如比较流行的Lora模型,就是需要依附于主模型才能使用。我们先说主模型,主模型一般的大小都是好几个G,而像Lora这种需要依赖于主模型的模型,一般都是几百M。

主模型下载后,需要放在 stable-diffusion-webui/models/Stable-diffusion 目录下。 而像Lora模型,则需要放在 stable-diffusion-webui/models/Lora 目录下。

7. 下载一个非官方的模型试一下

我们在 civitai 这个网站上下载一个模型,例如这个 国风3 GuoFeng3。打开后,点击右边的 **Download Latest (5.19GB),即可下载。如果有一些模型需要登录才能下载,那就按网站的要求来。下载完后,把这个模型的文件放入 stable-diffusion-webui/models/Stable-diffusion 目录下。然后重新运行 ./webui.sh 命令(先把之前运行的中止掉),这才 Stable Diffusion 才能加载我们新下载的模型。

重新运行后,打开 Web 界面,然后左上角 Stable Diffusion checkpoint 那里,选择刚下载的那个 GuoFeng3。然后在 Prompt 和负面 Prompt 中分别输入下面的关键词。

Prompt

best quality, masterpiece, highres, 1girl,china dress,Beautiful face,upon_body, photorealistic, (high detailed skin:1.2), 8k uhd, dslr, soft lighting, high quality, volumetric lighting, candid, Photograph, high resolution, 4k, 8k, Bokeh

Negative prompt

(((simple background))),monochrome ,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, lowres, bad anatomy, bad hands, text, error, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, ugly,pregnant,vore,duplicate,morbid,mut ilated,tran nsexual, hermaphrodite,long neck,mutated hands,poorly drawn hands,poorly drawn face,mutation,deformed,blurry,bad anatomy,bad proportions,malformed limbs,extra limbs,cloned face,disfigured,gross proportions, (((missing arms))),(((missing legs))), (((extra arms))),(((extra legs))),pubic hair, plump,bad legs,error legs,username,blurry,bad feet

CFG scale 设置为 7 Steps 设置为 30 Sampler 设置为 Euler a Seed 设置为 1032908249

然后点击 Generate 结果如下

8. 试一下 Lora 模型

首先,我们去下载一个 Lora 模型,例如这个 Fashion Girl。点击右边的下载,下载后放在 stable-diffusion-webui/models/Lora 目录下。然后重启 Stable Diffusion,也就是重新运行命令 ./webui.sh

Lora 模型不会出现在 Stable Diffusion checkpoint 那个选择框里,它是一个 Prompt 参数,告诉生成器要使用的 Lora 模型以及权重。

主模型我们还是使用上面的那个国风3模型,然后在此基础上,用上 Lora 模型。

首先输入之前的 Prompt,然后根据下图中的箭头,依次点击红框中的内容,即可看到在上面 Prompt 输入框中,多了一个指令 <lora:fashionGirl_v50:1>,这个就是告诉 Stable Diffusion 使用 Lora 模型,并且权重是1,我可以调整为其他的值,例如 0.8。

然后点击右边的 Generate,生成结果如下。

以上就是在本地搭建 Stable Diffusion 生成器的全过程,我猜接下来你肯定是要去模型网站下载各种模型尝试了,加油。

对于文中提到的一些网站,不排除有的可能需要科学上网,此问题不在本文讨论范围内。