抽象#
事情的起因是这样的,由于咱的 xlog 还没有一个头像,所以想到用 Stable Diffusion
来生成一个,又因为咱不太会使用Stable Diffusion
的 Prompt
和 Negative Prompt
,所以咱就想使用 GPT4
来生成这些 Prompt
。咱觉得 GPT4 很可能没有这方面的知识,所以咱得构造 Prompt
教 GPT4
怎么生成 Stable Diffusion
的 Prompt
。
但是经过测试我发现 GPT4 知道一点 Stable Diffusion
的 Prompt
,但是不多。
GPT4
给我的 Prompt
=
生成一个512x512的头像,包含科技、人工智能和东方Project的元素。确保它有清晰的线条和鲜明的色彩对比。
实际上我用的 Prompt
=
masterpiece, 1 girl, cute face, white hair, red eyes, 生成一个512x512的头像,包含科技、人工智能和东方Project的元素。确保它有清晰的线条和鲜明的色彩对比。
发现了一个 Stable Diffusion
的平台 https://civitai.com/,很多看起来很棒的模型。block 住了,发现了大量信息,大脑都处理不过来了。civitai
这样的平台确实汇聚来大量相关的信息,而且好多色情的内容啊,我好心动啊!!好想在本地试试。
安装试用 stable-diffusion-webui 和 NovelAI 的模型#
安装 stable-diffusion-webui 出现错误
Python 3.11.3 (main, Apr 14 2023, 23:30:17) [Clang 15.0.7 ]
Commit hash: 22bcc7be428c94e9408f589966c2040187245d81
Installing torch and torchvision
Looking in indexes: https://mirrors.ustc.edu.cn/pypi/web/simple, https://download.pytorch.org/whl/cu117
Collecting torch==1.13.1+cu117
Using cached https://download.pytorch.org/whl/cu117/torch-1.13.1%2Bcu117-cp311-cp311-linux_x86_64.whl (1801.8 MB)
ERROR: Could not find a version that satisfies the requirement torchvision==0.14.1+cu117 (from versions: 0.1.6, 0.1.7, 0.1.8, 0.1.9, 0.2.0, 0.2.1, 0.2.2, 0.2.2.post2, 0.2.2.post3, 0.15.0, 0.15.0+cu117, 0.15.1, 0.15.1+cu117)
ERROR: No matching distribution found for torchvision==0.14.1+cu117
经过搜索咱找到了关键信息 https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/8093#discussioncomment-5111761
通过 patch 以下内容后 PASS
:100644 100644 bfa53cb7 00000000 M webui-user.sh
diff --git a/webui-user.sh b/webui-user.sh
index bfa53cb7..1f628616 100644
--- a/webui-user.sh
+++ b/webui-user.sh
@@ -12,6 +12,8 @@
# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
#export COMMANDLINE_ARGS=""
+export COMMAND_LINE_ARGS="-ckpt nai.ckpt"
+
# python3 executable
#python_cmd="python3"
@@ -26,6 +28,7 @@
# install command for torch
#export TORCH_COMMAND="pip install torch==1.12.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113"
+export TORCH_COMMAND="pip install torch torchvision"
# Requirements file to use for stable-diffusion-webui
#export REQS_FILE="requirements_versions.txt"
又遇到一个错误
stderr: Running command git clone --filter=blob:none --quiet https://github.com/TencentARC/GFPGAN.git /tmp/pip-req-build-z10jlql1
Running command git rev-parse -q --verify 'sha^8d2447a2d918f8eba5a4a01463fd48e45126a379'
Running command git fetch -q https://github.com/TencentARC/GFPGAN.git 8d2447a2d918f8eba5a4a01463fd48e45126a379
Running command git checkout -q 8d2447a2d918f8eba5a4a01463fd48e45126a379
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [8 lines of output]
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<pip-setuptools-caller>", line 34, in <module>
File "/tmp/pip-install-or16ihw5/numba_9ca0f34767be492594e54fc49a1246fa/setup.py", line 51, in <module>
_guard_py_ver()
File "/tmp/pip-install-or16ihw5/numba_9ca0f34767be492594e54fc49a1246fa/setup.py", line 48, in _guard_py_ver
raise RuntimeError(msg.format(cur_py, min_py, max_py))
RuntimeError: Cannot install on Python version 3.11.3; only versions >=3.7,<3.11 are supported.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
显然它告诉我只支持 Python (>=3.7,<3.11),不得不说咱已经装了这么些 Python 版本了。
λ pyenv versions
system
2.7.18
3.8.16
3.9.16
3.10.11
* 3.11.3 (set by /home/aya/.pyenv/version)
使用 pyenv 切换 Python 版本为 3.10
并且删除 stable-diffusion-webui
目录下的 venv
文件夹,重新 Run ./webui.sh
。Finally, it PASS!
使用 RTX3070 8G,十几秒出张图的样子。
悲,显存岌岌可危。
咱发现用复制的 Prompt
也生成不了同样质量的图,从这里 The definitive Stable Diffusion experience ™#Testing accuracy 和 https://imgur.com/a/DCYJCSX 可以得知
- 在设置标签中,将 忽略 CLIP 模型的最后几层 改为 2 并应用
这一步未完成,但是找半天也找不到这个参数。我觉得大概率是由于新版本的名字变了或者直接就删掉了,通过搜索引擎找到了这个帖子 https://www.reddit.com/r/StableDiffusion/comments/zekch3/stop_at_last_layers_of_clip_model_not_showing_up/,在当前版本可以在 Settings Tab 的 Stable Diffusion Section 下找到参数 Clip skip。
将其改成 2 后,可以生成几乎完全一样的 Hello Asuka
(python: 3.10.11 • torch: 2.0.0+cu117 • xformers: N/A • gradio: 3.23.0 • commit: 22bcc7be • checkpoint: 89d59c3dde)
(.ckpt
, pt
) 和 .safetensors
各自是什么? 有什么关系?#
https://rentry.org/voldy#-ti-hypernetworks-and-loras- 有解释和使用方法。
LoRAs (低秩适应):可以轻松训练的高级网络。以 .safetensor
文件格式提供。
LoRA 试用#
一开始我看到的很不错的色图使用的 Model 是AbyssOrangeMix2 - Hardcore
,但是我发现他们在 huggingface/AbyssOrangeMix3 有个 AbyssOrangeMix3,所以当然是试试 3 啦!
Abyss
-> ” 深渊 “ 好名字!
主要模型 "AOM3 (AbyssOrangeMix3)" 是一个纯粹升级的模型,改进了前一个版本 "AOM2" 的问题。"AOM3" 可以生成具有非常真实纹理的插图,并且可以生成各种各样的内容。还有三个基于 AOM3 的变体模型,已调整为独特的插图风格。这些模型将帮助你更清晰地表达你的想法。
好吧,咱发现我搞错了。咱以为 。.safetensor
file 都是 LoRA,原来其实不是。AOM3 这个应该是 Model,直接放 models/Stable-diffusion/
然后选择 checkpoint 就能用
https://civitai.com/ 上每个资源都有 Detail/Type
,标注了资源的类型,而如何使用可以看 How-to-use-models
但是咱又发现虽然同样的 Prompt 可以生成类似的图片,但是和 samples 的几张图相比就大相径庭了。
(会不会是因为咱自作主张用的 AOM3 的模型?) 果然,这是使用 AbyssOrangeMix2_hard 的输出,和给的 samples 也几乎完全一样了。
END 生成头像。差点忘了我一开始的目的了 但是我感觉 GPT4 并不是很懂 Prompt,可能是训练数据里没有的原因。有时间的花可以看看 VisualGPT 改名了? TaskMatrix 是怎么做的,
头像(倒是没有花很多功夫在 Prompt 上):
masterpiece, Touhou Project, 1girl, sex, Reisen
Negative prompt: (worst quality:1.25), (low quality:1.25), (lowres:1.1), (monochrome:1.1), (greyscale), multiple views, comic, sketch, (blurry:1.05),
Steps: 30, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 2320689785, Size: 512x512, Model hash: dce28483f1, Model: OrangeMixs_Models_AbyssOrangeMix2_Pruned_AbyssOrangeMix2_nsfw_pruned_fp16_with_VAE
使用 Cloudflare argo tunnel#
当我想在通过域名访问我的 stable-diffusion-webui
时,我想到了使用 Cloudflare argo tunnel,但是也遇到了一些问题。
当我成功部署 Cloudflare argo tunnel,并且可以通过域名访问到 HTML 等资源,但是却加载不了页面。使用浏览器的开发者工具可以看到所有资源都可以正常加载,除了一些控制台的 LOG 信息提醒我它并没有正常工作。
待补充(大意:<Link> 为 preload 的资源没有设置 as 属性)
但是其实 SD-webui 有个拓展sd-webui-tunnels
,或者通过 cloudflared tunnel --url http://127.0.0.1:7860
这个命令,也可以打开一个 Tunnel 获得一个临时域名,这俩种方式都可以正常访问 stable-diffusion-webui
,那么为什么我自己手动设置的 tunnel 却不行?
其实可以察觉到是我的域名或者 Cloudflare 设置有些问题 草 其实我想写出一直思索的过程因为我想留下一些解决问题的思路而不只是结果但是好像不太行
观察通过我的域名访问和 cloudflared tunnel --url http://127.0.0.1:7860
给的临时域名得到的资源可以发现一些区别
我的域名:
- HTML 里多了一些 CF 给我插入的资源,包括
https://static.cloudflareinsights.com/beacon.min.js
和Rocket Loader™
- 同时我的所有 JS 和 CS 的
script
会被注释,然后在下面插入一份一模一样的资源,但是<script>
会变成<link preload as=?>
- 进一步观察 Developer Tools/Network 里的原始 HTML,会发现 是没有的
可以得出很大可能是的锅,我去把 <domain>/speed/optimization/Rocket Loader™ 关了,发现它还在那里。在 /rules/configuration-rules 里找到了我自己设置的一些页面规则,里面有一条设置了Rocket Loader™,关了,恢复正常。
添加 upscaler#
将额外的 upscaler 添加到 models/ESRGAN
- https://www.reddit.com/r/StableDiffusion/comments/zih4bz/is_there_a_way_to_add_an_extra_upscaler_to/
- https://upscale.wiki/wiki/Model_Database#ESRGAN_.28.22old_Architecture.22.29_Models