欢迎重视微信大众号:FSA全栈行动

最近 AI 火的一塌糊涂,除了 ChatGPT 以外,AI 绘画领域也有很大的前进,以下几张图片都是 AI 制作的,你能看出来么?

AI - stable-diffusion(AI绘画)的搭建与使用

一、环境搭建

上面的作用图其实是运用了开源的 AI 绘画项目 stable-diffusion 制作的,这是它的官方库房:

  • github.com/CompVis/sta…

可是这个官方项目并不合适咱们这些新手直接运用,好在有一些基于 stable-diffusion 封装的 webui 开源项目,能够经过界面交互的方法来运用 stable-diffusion,极大的降低了运用门槛,以下是几个比较火的 webui 项目:

  • github.com/AUTOMATIC11…
  • github.com/Sygil-Dev/s…

其中,AUTOMATIC1111stable-diffusion-webui 是现在功用最多最好用的,强烈引荐,下面就来介绍怎么运用它。

1、下载项目

stable-diffusion-webui 没有发布可履行程序(比方:.exe),咱们需求经过 git 的方法将整个工程源码拉下来运转:

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

注:这个开源项目现在的更新频率很快,会不定期的修复一些 bug 或加入一些新功用,所以主张能够时常 git pull 拉取最新代码。

2、Python 环境

stable-diffusion-webui 主要是运用 Python 开发的,所以运转这个工程,需求装置一下 Python 环境并装备好环境变量,由于 Python 环境的装置很简单,这儿就不多说了,环境装备完结之后,能够经过以下指令检查 Python 的版别号,验证环境是否正常:

python --version

注意:官方引荐装置 Python 3.10.6 版别

别的,主张运用 Anaconda 管理多个 Python 环境,详见

  • 官方的 conda 环境装置阐明:github.com/AUTOMATIC11…
  • anaconda 常用指令:blog.csdn.net/ligous/arti…

3、CUDA 环境

默许 stable-diffusion-webui 运转运用的是 GPU 算力,也就是说需求用到 Nvidia 显卡(装备越高,绘图越快)。这儿咱们需求装置 CUDA 驱动,先确认一下电脑能装置的 CUDA 版别,桌面右下角->右键 NVIDIA 设置图标->NVIDIA 控制面板:

AI - stable-diffusion(AI绘画)的搭建与使用

能够看到我的电脑的显示的是 NVIDIA CUDA 11.6.134 driver,所以我的电脑要装置的 CUDA 版别不能超过 11.6。

注意:高版别显卡是能够装置低版别的 CUDA 驱动的,比方我也能够装置经典的 10.2 版别,可是装置 11.6 版别能够获得更高的 GPU 运转功率,所以一般来说引荐装置显卡支撑的最高 CUDA 版别。

在下面的网址中找到对应的 CUDA 版别进行装置:

  • CUDA 官方归档:developer.nvidia.com/cuda-toolki…

AI - stable-diffusion(AI绘画)的搭建与使用

直接选择 “精简” 装置就能够了,装置完结之后,能够运用如下指令检查 CUDA 版别,来验证 CUDA 是否装置成功:

nvcc --version

AI - stable-diffusion(AI绘画)的搭建与使用

注:假如你没有 Nvidia 显卡,也能够经过给 stable-diffusion-webui 指定运转参数 --use-cpu sd,让其运用 CPU 算力运转,可是十分不主张你这么做,CPU 算力跟 GPU 算力比较简直天差地别,或许 GPU 只需求 10 秒就能制作完结,而 CPU 却要 10 分钟,这不是开玩笑的。别的,假如你的显卡内存不多,主张 4G 的显卡加上 --medvram 发动参数,2G 的显卡加上 --lowvram 发动参数。怎么装备发动参数咱们后边说。

4、发动项目

在装置装备好运转环境之后,直接运转工程下的 webui-user.bat 文件即可(假如是类 Unix 系统,则运转 webui-user.sh)。首次发动会主动下载一些 Python 依靠库(具体哪些库请看工程下的 requirements.txt) ,以及项目需求用到的装备和模型文件(比方:v1-5-pruned-emaonly.safetensors,将近 4 个 G~),初始化一次之后,下次发动就快了。

Launching Web UI with arguments:
...
Running on local URL:  http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.

看到这个提示就阐明成功运转起来了,翻开网址就能够看到程序的运转界面了:

AI - stable-diffusion(AI绘画)的搭建与使用

温馨提示:该项目是英文页面,能够运用浏览器的翻译功用转成中文来运用~

二、运用

stable-diffusion-webui 的功用许多,主要有如下 2 个:

  • 文生图(text2img):依据提示词(Prompt)的描绘生成相应的图片。
  • 图生图(img2img):将一张图片依据提示词(Prompt)描绘的特点生成另一张新的图片。

注:本文只解说文生图(text2img)功用,图生图(img2img)后续有时机再出文章,喜欢的请多多点赞重视支撑一下 。

1、文生图(text2img

在开始运用文生图之前,有必要了解以下几个参数的含义:

参数 阐明
Prompt 提示词(正向)
Negative prompt 消极的提示词(反向)
Width & Height 要生成的图片尺寸。尺寸越大,越耗性能,耗时越久。
CFG scale AI 对描绘参数(Prompt)的倾向程度。值越小生成的图片越违背你的描绘,但越契合逻辑;值越大则生成的图片越契合你的描绘,但或许不契合逻辑。
Sampling method 采样方法。有许多种,但仅仅采样算法上有不同,没有好坏之分,选用合适的即可。
Sampling steps 采样步长。太小的话采样的随机性会很高,太大的话采样的功率会很低,拒绝概率高(能够理解为没有采样到,采样的结果被放弃了)。
Seed 随机数种子。生成每张图片时的随机种子,这个种子是用来作为确认分散初始状况的基础。不明白的话,用随机的即可。

以上对参数的解析源自以下文章:

  • zhuanlan.zhihu.com/p/574063064
  • baijiahao.baidu.com/s?id=175886…

接下来咱们来生成一张赛博朋克风格的猫咪图片,装备以下参数后,点击 “Generate” 即可:

Prompta cute cat, cyberpunk art, by Adam Marczyski, cyber steampunk 8 k 3 d, kerem beyit, very cute robot zen, beeple |
Negative prompt:(deformed, distorted, disfigured:1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers:1.4), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation, flowers, human, man, woman
CFG scale6.5
Sampling methodEuler a
Sampling steps26
Seed1791574510

注:提示词(Prompt)越多,AI 绘图结果会更加精准,别的,现在中文提示词的作用欠好,还得运用英文提示词。

AI - stable-diffusion(AI绘画)的搭建与使用

重视 FSA全栈行动 微信大众号,回复 “赛博朋克猫咪” 可获得该原始作用图哦~❤️

2、模型文件

眼尖的你或许发现了,上面截图里左上角 Stable Diffusion checkpoint 的值怎么跟之前截图里的不相同?这是由于我换了一个模型文件,还记得前面提到那个将近 4 个 G 大小的模型文件(v1-5-pruned-emaonly.safetensors)吗?那是 stable-diffusion-webui 的默许模型文件,用这个模型文件生成出来的图片比较丑,因此我换了另一个模型文件。模型文件下载的网站几个,比较出名的就是 civitai,这上面共享的都是别人训练好的模型。

模型文件下载地址:

  • civitai:civitai.com/
  • 默许的 v1-5-pruned-emaonly:huggingface.co/runwayml/st…

AI - stable-diffusion(AI绘画)的搭建与使用

依据你要生成的图片风格(比方:动漫、景色),选择合适的模型检查,前面那个文生图的比方,运用的就是这个 Deliberate 模型,直接点击 “Download Latest” 即可下载该模型文件。

AI - stable-diffusion(AI绘画)的搭建与使用

注:模型文件有 2 种格局,分别是 .ckpt(Model PickleTensor) 和 .safetensors(Model SafeTensor),据说 .safetensors 更安全,这两种格局 stable-diffusion-webui 都支撑,随意下载一种即可。

将下载好的模型文件放到 stable-diffusion-webui\models\Stable-diffusion 目录下:

AI - stable-diffusion(AI绘画)的搭建与使用

放置好模型文件之后,需求重启一下 stable-diffusion-webui(履行 webui-user.bat)才能识别到。

AI - stable-diffusion(AI绘画)的搭建与使用

这些模型文件一般会顺便一组作用图,点击恣意一张,就能够看到生成该作用图的一些参数装备:

AI - stable-diffusion(AI绘画)的搭建与使用

把这些参数装备到 stable-diffusion-webui 中,点击 “Generate” 就能够生成类似作用的图片了。

注:由于 AI 绘图带有随机性质,所以生成出来的图片跟作用图不一定彻底相同。

文生图功用有许多东西能够发掘,你能够用它来生成世界上独一无二的图片,而要用好文生图功用,提示词(Prompt)是必须掌握的重中之重,它是有语法规则的,在此引荐两篇对 Prompt 具体阐明的文章:

  • 全网 Stable Diffusion Prompt 运用技巧:www.bilibili.com/read/cv1990…
  • Prompt 工具網站:www.accucrazy.com/prompt-tool…

三、工程装备

前面提到,stable-diffusion-webui 是能够装备发动参数的,这是官方的 wiki:

  • 装备参数文档:github.com/AUTOMATIC11…

1、常用参数

这儿列几个常用的参数阐明一下:

参数 阐明
–listen 默许发动绑定的 ip 是 127.0.0.1,只能是你自己电脑能够拜访 webui,假如你想让同个局域网的人都能够拜访的话,能够装备该参数(会主动绑定 0.0.0.0 ip)。
–port xxx 默许端口是 7860,假如想换个端口,能够装备该参数,例如:--port 8888
–gradio-auth username:password 假如你期望给 webui 设置登录暗码,能够装备该参数,例如:--gradio-auth GitLqr:123456
–use-cpu 默许运用 GPU 算力(需求 Nvidia 显卡),假如没显卡,能够装备该参数,改用 CPU 算力。
–medvram 为低显存(比方:4G)启用模型优化,会牺牲一点速度。
–lowvram 为极低显存(比方:2G)启用模型优化,会牺牲许多速度。
–autolaunch 发动时主动翻开浏览器拜访 webui。

要装备这些参数很简单,翻开 webui-user.bat,把你需求装备的参数添加到 COMMANDLINE_ARGS 后边即可:

@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--listen --port 8888 --gradio-auth GitLqr:123456 --autolaunch
call webui.bat

AI - stable-diffusion(AI绘画)的搭建与使用

2、API 接口服务

除了上述几个常用的参数外,还有一个特别的参数 --api,能够在发动 stable-diffusion-webui 的一起,发动一个接口服务,在 COMMANDLINE_ARGS 后边追加上 --api

@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--listen --port 8888 --gradio-auth GitLqr:123456 --autolaunch --api
call webui.bat

重启后在 url 后边加上 /docs 即可看到 api 请求阐明文档:

AI - stable-diffusion(AI绘画)的搭建与使用

这样咱们就能够经过编写程序的方法,运用文生图、图生图等功用了,关于接口传参格局等要求,拜见官方 wiki:

  • 官方 api 阐明文档:github.com/AUTOMATIC11…

假如文章对您有所协助, 请不惜点击重视一下我的微信大众号:FSA全栈行动, 这将是对我最大的鼓励. 大众号不仅有Android技术, 还有iOS, Python等文章, 或许有你想要了解的技能知识点哦~

AI - stable-diffusion(AI绘画)的搭建与使用