乐趣区

关于人工智能:附教程亲身体验AI绘画的艺术之旅-EP0

体验在线 AI 画图服务

Midjourney

Midjourney 是一个由同名钻研实验室开发的人工智能程序,可依据文本生成图像,于 2022 年 7 月 12 日进入公开测试阶段,用户可透过 Discord 的机器人指令进行操作。该钻研实验室由 Leap Motion 的创办人大卫·霍尔兹负责领导。—— Wikipedia

能够退出 Beta 打算从 Discord 群中向机器人提交作图指令。官网服务也提供付费订阅。

Microsoft Bing Image Creator

微软借助 OpenAI 的 DALL-E 图像生成 AI,提供了这个在线图片生成服务。用户输出一段文本提醒,仅需数秒即可取得一组 AI 生成的与之匹配的图像。

Preview 阶段,每位普通用户媒体能够疾速生成 25 次,超过次数须要排队期待。

搭建本人的 AI 作图环境

在线服务成果好,然而有应用次数限度。如果你须要更多的自由度,那么能够思考本人搭建一套 AI 做图环境。

筹备

Stable Diffusion GUI

AI 绘图曾经火出圈,天然开源社区里也有许多 Stable Diffusion 的图形界面,不便用户上手体验。
有专门提供给 MacOS 桌面端的 DiffusionBee,还有跨平台的 Stable Diffusion UI v2。

而本文咱们着重介绍能够部署在云端的 Web UI。
AUTOMATIC1111(简称 A1111)Stable Diffusion Web UI 是为高级用户提供的 Stable Diffusion GUI。
多亏了沉闷的开源社区,大多数新性能都会先反对上这个收费的 Stable Diffusion GUI。
但要应用它并不容易。文档不够详尽,以及提供的茫茫性能列表都会让老手迷茫。

购买一台云主机

首次体验,先试试最便宜的 GPU 主机。
P.S 最低配的也齐全够用,生成图片很快!

我开明的云主机的配置如下:

  • 零碎:Ubuntu22.04
  • 显卡:1 * NVIDIA T4
  • CPU/ 内存:4 核 32 G
  • 系统盘:200GB
  • 带宽:10Mbps

顺畅的网络环境

略,本人想方法

装置

机器开明后,能够间接从 Web 端一键登录:

也能够应用 ssh 登录,在“更多操作”下拉菜单中抉择重制明码,即可从新设定一个 root 账号的登录明码,而后云主机会重启。

具体的你能够参考文档产品文档。

登录云主机后,能够先检查一下显卡型号:

$ lspci | grep -i nvidia

00:06.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1) 

货真价实,没有问题,那么开始搭建吧!

装置一些必要的依赖软件

# 更新软件包索引
sudo apt-get -y update

# 必要软件
sudo apt-get -y install wget git python3 python3-venv python3-pip
sudo apt-get -y install aria2 screen

# 装置 cuda 软件包,让显卡施展超能力
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda

# 清理 deb 安装包
rm *.deb

# 装置 cuda 之后,须要重启失效
sudo reboot

验证 cuda 是否装置胜利:

$ nvidia-smi

+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.30.02              Driver Version: 530.30.02    CUDA Version: 12.1     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                  Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf            Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  Tesla T4                        On | 00000000:00:06.0 Off |                    0 |
| N/A   38C    P0               26W /  70W|   2279MiB / 15360MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A    103851      C   python3                                    2274MiB |
+---------------------------------------------------------------------------------------+

写在后面的一点倡议

倡议你在应用 ssh 登录云主机时,应用 screen 命令进入一个虚构终端会话,这能够防止因为网络不稳固而中断了正在执行的命令。因为接下来的一些命令须要下载大文件而耗时比拟长。

screen 命令速记:

# 新建一个 screen 会话,我的会话取名为 workspace
screen -R workspace

# 退出 screen 会话
## 先按组合键 Ctrl+A
## 而后按字母 D

# 当须要从新进入 screen 会话
screen -r -d workspace

具体的命令应用阐明,参考 How To Use Linux Screen。

部署 Web UI

你能够间接 clone 我的项目 AUTOMATIC1111/stable-diffusion-webui (又称 A1111) 的最新代码,而后依照 README 中的阐明装置即可。

而我参考了另一个我的项目:

如果你想疾速开始体验,就跟我一样脚本一把梭,省得消耗工夫找各种插件 / 模型;
如果你很在意这些命令在干什么,我简略增加了一些正文;
看不懂?没关系,这个系列当前会有文章深刻这些细节。

#!/usr/bin/env bash

# A1111 我的项目没有打 tag 的习惯,你拉取到的最新版本代码可能无奈复现本文的内容,# 而这个我的项目 Fork 自 A1111,还贴心地打上了 tag,倡议你和我一样应用这份源码
git clone -b v2.2 https://github.com/camenduru/stable-diffusion-webui

# 指定之后操作的根目录
base_dir="$(pwd)/stable-diffusion-webui"
# 简化 ariac2 下载命令
download="aria2c --console-log-level=error -c -x 16 -s 16 -k 1M"

# Extra network / Textual Inversion
# 负面词,性能阐明 https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Negative-prompt
git clone https://huggingface.co/embed/negative ${base_dir}/embeddings/negative

# Extra network / Lora
# 反对把 Lora 模型作为关键词
git clone https://huggingface.co/embed/lora ${base_dir}/models/Lora/positive

# 4x-UltraSharp,一个通用模型,能够进步图片的分辨率。# 原始模型公布在 MEGA 网盘,为了下载方便使用 huggingface 上的备份。${download} https://huggingface.co/embed/upscale/resolve/main/4x-UltraSharp.pth -d ${base_dir}/models/ESRGAN -o 4x-UltraSharp.pth

# 一些不便的插件,能够去他们的 Github 主页查看性能介绍
## 不便从 Web 端下载 civitai 市场的模型
git clone -b v2.0 https://github.com/camenduru/sd-civitai-browser ${base_dir}/extensions/sd-civitai-browser
## 不便从 Web 端下载 huggingface 市场的模型
git clone https://github.com/camenduru/stable-diffusion-webui-huggingface ${base_dir}/extensions/stable-diffusion-webui-huggingface
## 一个图片浏览器,不便浏览保留过的图片
git clone https://github.com/AlUlkesh/stable-diffusion-webui-images-browser ${base_dir}/extensions/stable-diffusion-webui-images-browser


# 主模型
models="${base_dir}/models"
## Stable Diffuison v1.5,SD1.5 的模型 (可选)
${download} https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors -d ${models}/Stable-diffusion -o v1-5-pruned-emaonly.safetensors
## 国风 3 https://huggingface.co/xiaolxl/GuoFeng3
${download} https://huggingface.co/xiaolxl/GuoFeng3/resolve/main/GuoFeng3.2.safetensors -d ${models}/Stable-diffusion -o GuoFeng3.2.safetensors


# LoRA 模型
mkdir -p ${models}/Lora
## 墨心 MoXin https://civitai.com/models/12597/moxin
${download} https://civitai.com/api/download/models/14856 -d ${models}/Lora -o MoXin_v10.safetensors

最初咱们启动 Web UI

间接通过 launch.py 启动,而不是 webui.sh,这样能够加载额定装置的插件。
一些 Python 依赖包会在首次运行时装置。

cd stable-diffusion-webui

## 初始化并启用新的 python venv 环境
python3 -m venv .venv
source .venv/bin/activate

## 装置反对 cuda 11.8 的 pytorch, xformer
pip install torch torchvision torchaudio torchtext torchdata --extra-index-url https://download.pytorch.org/whl/cu118 -U
pip install xformers==0.0.18 triton==2.0.0 -U

## 在 10000 端口上启动 Web 服务
python3 launch.py --listen --xformers --enable-insecure-extension-access --gradio-queue --port 10000

浏览器关上 http://${host_ip}:10000 就能够看到 Stable Diffusion Web 页面了。

把 ${host_ip} 换成你的云主机 ip 地址。
P.S 装置脚本中省略了局部本文用不到的插件,所以 Web 截图会略有不同。

应用自建的 AI 作图环境

抉择一个根底模型(主模型)在 Stable Diffusion checkpoint 下拉菜单中,抉择 GuoFeng3.2.safetensors。

GuoFeng3 这是一个中国富丽古风格调模型,也能够说是一个古风游戏角色模型,具备 2.5D 的质感。来自:https://huggingface.co/xiaolxl/GuoFeng3

点击 Generate 上面的 Show/hide extra networks 图标,能够看到曾经装置的模型。

切换选项卡,能够看到咱们曾经装置的所有 LoRA 模型。

Q:什么是 LoRA 模型?
A:依据特定概念更改现有 Stable Diffusion 模型后果的文件。这能够是一种艺术风格、一个角色、一个事实中的人、一个物体或一个主题。一些驰名的例子:Arcane Style LoRA(奥术格调 LoRA),Makima from Chainsaw Man LoRA(来自动漫《电锯人》中的玛奇玛)。(来自:https://aituts.com/stable-diffusion-lora/)

点击一个 LoRA 模型,能够看到在 Prompts 输入框中,主动填写上了模型名称:

我抉择 Moxin_10 这个模型。

墨心 MoXin 1.0
昔涓子《琴心》,王孙《巧心》,心哉美矣,故用之焉。
来自:https://civitai.com/models/12597/moxin
(非常适合与国风 3 搭配应用的 LoRA 模型,能够生成水墨画格调的图片。)

从最简略的开始

筹备创作,首先要有个想法:
如果我想画一只熊。

在关键词 (Prompt) 输入框中增加一句形容:
a bear

提醒词目前只反对英语。
如果你有更简单的形容,然而表白不进去?翻译软件一大把。

而后点击 Generate 进行生成,大略花了 10s,图片就生成好了。

说实话,这虎头虎脑的黑熊,成果还挺萌!登时对咱们的 AI 绘画之旅,充满信心了有木有?

如果要再次生成,就持续点击 Generate;如果要一次生成多张图片,能够调整 Batch count。
显卡有多还能够调整 Batch size 进行并产生成😊。

点击 Generate 进行批量生成,大略花了 13s,多张图片就生成好了。

多生成几张之后会发现,奇奇怪怪的图片真不少,品质参差不齐。

取得更好的成果

首先咱们能够点开模型的介绍页面,看看模型的作者都有什么倡议。
依据作者的倡议,我做了如下调整:

加上负面词(Negative prompt):
lowres, worstquality, low quality, normal quality, text, error, extra digit, jpegartifacts, signature, watermark, username, blurry
这些负面词,略微翻译下,就能懂他们的意思。

批改了参数:

  • Sampler: DPM++ SDE Karras
  • Sampling steps: 35
  • CFG Scale: 5
    这里先不介绍这些参数的含意,仅仅是依照模型作者举荐的来设置。

再来点击 Generate,生成看看。

生成工夫长了一些,大略 40s。
而且通过负面词筛掉了许多品质不佳的图片素材,出图成果的确变好了许多。

赋予图片主题

咱们提供的关键词过于简略,所以生成的图片没有一个对立的主题,所以咱们须要细化一下需要,裁减一下提醒词中的画面形容。

比方,当初我想要画一只黑熊站在枫叶林中练习挥剑。
批改关键词,把图片形容的更粗疏:
A black bear stood in the maple leaf forest and practiced waving his sword.

为了疾速看到构图成果,能够调低 Batch count。

再次尝试生成:

图片里的这只黑熊有“剑客”内味儿了,只是手指看起来怪怪的。

手指的的生成问题,在应用 Stable Diffusion 时很常见,咱们能够临时通过负面词去绕过这个问题。
Tips: 你如果应用和我一样的参数和关键词,填入同样的 Seed 就能复现我这张图哦~
图片生成信息中可见 Seed: 620974436。

触类旁通

当有一张图片让咱们感觉不错,心愿再失去相似的创意怎么做?
接下来咱们以这张”灰熊剑客”的构图为基准,来生成其余的图片。
点击生成图片下方的 Send to img2img 按钮。

点击后会主动跳转到 img2img 标签页。仔细观察能够发现,相比之前的页面又多了 2 个可调整的参数:

Denoising strength,去噪强度,管制与原始图像相比,它将产生多少变动:

  • 设置成 0 时,不会有任何变动;
  • 设置成 1 时,会失去一个无关的绘图。

那咱们放弃之前的参数都不变,仅仅调整 Denoising strength,来看生成多张图片的成果。

  • Denoising strength: 0.75
  • Denoising strength: 0.35

因而如果咱们想要生成与原图片相似的构图,Denoising strength 取值在 0.5 以下更佳。

Resize mode,如果指标图像的宽高比与输出图像的宽高比不同,有如下几种办法能够和谐差别:

  • Just resize:简略地将源图像调整为指标分辨率,可能导致不正确的宽高比。
  • Crop and resize:调整源图像的大小,保留宽高比,使其占据整个指标分辨率,并裁剪突出的局部。
  • Resize and fill:调整源图像的大小,放弃宽高比,使其齐全适宜指标分辨率,并从源图像中按行 / 列填充空白。
  • Just resize (latent upscale):相似于“Just resize”,但缩放是在潜在空间中实现的。应用大于 0.5 的 Denoising strength 来防止图像含糊。

咱们固定 Denoising strength 为 0(即不生成新的绘图),尝试将 512×512 分辨率的原图调整为 300×600 的图片,察看在不同 Resize mode 下的变动。
Just resize
Crop and resize
Crop and resize
Crop and resize
起初我不是很能了解 Just resize (latent upscale) 的意义,感觉就是让原图变得更形象了。
当我依据阐明中的提醒把 Denoising strength 设置为 0.6(即大于 0.5),再次生成:

这样生成的图片是清晰的,AI 施展了创意的同时让这一组图片中的灰熊,变得更瘦了。看来 Just resize (latent upscale) 模式次要是用来和 Denoising strength 配合的。

进步分辨率

在不那么富余的算力资源下,为了更多更快地生成图像,咱们不会设定过高的图片分辨率,然而当生成的后果让咱们称心时,分辨率不达预期怎么办?
在 Stable Diffusion 中提供了 Image AI upscaler(图像 AI 升频器),比方:ESRGAN。
找到中意的图片,点击下方的 Send to extras 按钮。

点击后会主动跳转到 Extras 标签页。然而这里的选项比拟多,篇幅无限,简略给各位看官演示一下,当前文章中细聊。

原图
Postprocess upscale by: 4, Postprocess upscaler: 4x-UltraSharp

持续摸索

应用文本生成图片依赖适合的模型,施展创意组合关键词(Prompts),辅以调整参数取得称心的成果。

学习资源很多,能够多看看其他人的作品。
比方:https://prompthero.com/prompt-builder/62cc0211b76
一幅作品用到的模型,做图参数,关键词都会分享进去。尽管仅凭这些不肯定能复刻一个同样的作品,然而就算是照抄关键词也能发现不少乏味的货色。

上面是我应用 Stable Diffusion 1.5 根底模型和雷同的关键词生成的作品:

举荐一些公布 AI 艺术作品网站:

  • https://prompthero.com/
  • https://pixai.art/
    举荐一些 Prompts 学习笔记:
  • https://www.creativindie.com/best-midjourney-prompts-an-epic-…
  • https://stable-diffusion-art.com/prompts/
    举荐一些模型市场:
  • https://civitai.com/
  • https://huggingface.co/models

总结
本次给大家分享了如何开启你的 AI 绘图之旅,而 AI 艺术却不仅限于图像,如果大家对 AI 艺术感兴趣的话,举荐大家去看看这篇文章,它相当于是一个资源导航。
利用 AI 去施展更多的创意吧!

援用
拓展思考
Q:AI 能作图,那么 AI 能够帮忙写作图关键词吗?
A:当然能够!然而下回再说。敬请期待之后的分享!

参考

  • https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features/
  • https://github.com/camenduru/stable-diffusion-webui-colab
  • https://huggingface.co/xiaolxl/GuoFeng3
  • https://civitai.com/models/12597/moxin
  • https://developer.nvidia.com/cuda-11-8-0-download-archive
  • https://pytorch.org/get-started/locally/
  • https://stable-diffusion-art.com/inpainting_basics/
  • https://stable-diffusion-art.com/ai-upscaler/
  • https://pharmapsychotic.com/tools.html
退出移动版