太久没用基本都忘光了,发现记的笔记也没有很好的梳理,虽然网上已经有了不少详细的文档了,但自己梳理一遍记忆比较深刻。
环境准备
$ python --version
Python 3.10.10
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0
安装 Stable Diffusion WebUI
nvidia显卡用户输入以下指令,下载Stable Diffusion WebUI的代码仓库。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
这里我clone的版本为1.10.0,目前的时间是2025-01-15
运行webui-user.bat
此时会开始下载pytorch
,但是因为是官方的源很慢,可以先关闭终端
进入venv
虚拟环境,使用国内镜像安装
pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 -f https://mirrors.aliyun.com/pytorch-wheels/cu118
再次运行webui-user.bat
安装完毕
如果想要开启api
功能,可以编辑web-user.bat
,在set COMMANDLINE_ARGS
的最后加上 -api
关于启动命令的详细说明:
xxx
下载模型
目前找Stable Diffusion与其衍生模型的网站主要就二个。
第一个是 HuggingFace,中文俗称抱脸笑,可以说是人工智能界的Github。Stable Diffusion背后用到的很多AI工具,如Transformer、Tokenizers、Datasets都他们开发的,网站上也有丰富的教学文档。
另一个是 Civitai,专门用来分享Stable Diffusion相关的资源,特色是模型都有示范缩略图,用户也可以分享彼此使用的提示词,以及分享作品。
这里我先下载一个动漫模型:https://civitai.com/models/4437/abyssorangemix2-sfwsoft-nsfw
將下载后的模型放到models\Stable-diffusion
文生图
文生图(txt2image)即为让AI按照文本叙述生图。
生图流程为在左上角填入提示词,勾选左下角的生图参数,再点击右上角生成图片。其余SD WebUI的功能用法大抵都按照此逻辑设计,有些参数是通用的。
文生图 案例1
在prompt输入
A girl, walking in the forest, the sun fell on her body,
(masterpiece:1,2), best quality, highres, original, extremely detailed wallpaper, perfect lighting,(extremely detailed CG:1.2),
在nagative prompt输入
NSFW, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, (ugly:1.331), (duplicate:1.331), (morbid:1.21), (mutilated:1.21), (tranny:1.331), mutated hands, (poorly drawn hands:1.5), blurry, (bad anatomy:1.21), (bad proportions:1.331), extra limbs, (disfigured:1.331), (missing arms:1.331), (extra legs:1.331), (fused fingers:1.61051), (too many fingers:1.61051), (unclear eyes:1.331), lowers, bad hands, missing fingers, extra digit,bad hands, missing fingers, (((extra arms and legs))),
通用参数:
- Sampling method 采样方法选择:DPM++ 2M SDE Heun
- Sampling Steps 采样步数:20
- Width 宽度:800
- Height 高度:450
- Batch count 生成几次:1
- Batch size 一次生成几张:1
- CFG Scale 提示词的相关度:8
- Seed 种子码:-1 表示随机,也可以填别人画好的seed
其它参数先不用管,点击生成
图生图
图生图(img2img)是让AI参照现有的图片生图,源自InstructPix2Pix技术。
例如:上传一张真人照片,让AI把他改绘成动漫人物;上传画作线稿,让AI自动上色;上传一张黑白照,让AI把它修复成彩色相片。
这个功能位于「Img2img」的页签。
随便在网上找一张非二次元的图片,例如我这里使用矿泉水瓶的图片
参考步骤:
- 上传参考图。图片比例最好跟设置生成的宽高一致
- 调整通用参数。特别注意Denoising strength,该参数调低的情况下可以用来微调原图
- 点击生成
提示词(注意看格式)
SFW, (1girl:1.3), long hair, white hair, face, front, looking at viewer, white shirt, (green belt:1.5), red skirt, red hats, dancing, upper body, standing, (white background:1.5), hands at the back
(masterpiece:1.2), best quality, masterpiece, highres, original, extremely detailed wallpaper, perfect lighting,(extremely detailed CG:1.2),
Negative prompt: NSFW, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, (ugly:1.331), (duplicate:1.331), (morbid:1.21), (mutilated:1.21), (tranny:1.331), mutated hands, (poorly drawn hands:1.5), blurry, (bad anatomy:1.21), (bad proportions:1.331), extra limbs, (disfigured:1.331), (missing arms:1.331), (extra legs:1.331), (fused fingers:1.61051), (too many fingers:1.61051), (unclear eyes:1.331), lowers, bad hands, missing fingers, extra digit,bad hands, missing fingers, (((extra arms and legs))),
Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 8, Seed: 4072734573, Size: 600x600, Model hash: 038ba203d8, Model: AbyssOrangeMix2_SFW, Denoising strength: 0.7, Clip skip: 2, ENSD: 31337, Mask blur: 4
图生图的生成结果按钮下的最后两个按钮可以从图片中提取提示词,有兴趣的也可以试一下。
内补绘制
内补绘制(inpaint)。这是用AI填充涂黑(遮罩)区域的技术,例如给图片的角色换衣服。或是反过来:让AI把图片空白的地方绘制完成(outpaint)。
可以想像成让AI帮您修图,用于在图中添加或去除对象。
此功能位于Img2img下的Inpaint页面。
参数说明:
- Mask blur:图片上的笔刷毛边柔和程度。
- Mask mode:选择要让AI填满涂黑区域(Inpaint masked),或是填满未涂黑区域(Inpaint not masked)。
Masked content:要填充的内容。
- Fill:让AI参考涂黑附近的颜色填满区域。
- Original:在填满区域的时候参考原图底下的内容。
- latent noise:使用潜在空间填满,可能会生出跟原图完全不相关的内容。
- latent nothing:使用潜在空间填满,不加入噪声。
Inpaint area:选择要填满整张图片(Whole picture)或是只填满涂黑的区域(Only masked)
- Only masked padding, pixels是像素内距。
- Only masked即外补绘制模式。
参考流程:
- 上传参考图
- 绘制要重绘的区域
- 填写提示词
- 调整参数
- 生成
若要切换为外补绘制:点击左下角的Mask mode,将Inpaint masked改成Inpaint not masked,这样AI就会改为填满没有涂黑的地方。
batch页面可以批量处理图片,大家自行尝试。
这里我没做出效果比较好的示例,在网上找了张效果图,涂黑的部分就是重绘的部分,新版涂抹已经变成白色了
额外网络 进阶模型
大模型一般指Checkpoint,小模型则是除了大模型之外的其他模型,如LoRA、Embeddings、Hypernetwork对大模型起到“微调”作用
小模型主要用来改善画风,并改善生成特定对象、角色的准确度。例如使用Anything模型生图,再搭配"Taiwan-doll-likeness LoRA"就能转成真人风格而不用依赖许多提示词,并且可以一次叠很多个,就像套多层滤镜一般。
- LoRA:比较常用,一般用于还原角色、形象特征,也可以用于训练画风
- Embeddings:还原角色的形象特征
- Hypernetwork:用的不多
Civitai有很多小模型可以下载。下载时需注意模型是哪一种。
- Embedding请放stable-diffusion-webui文件夹下的embeddings
- HyperNetwork放到stable-diffusion-webui/models/hypernetworks。
- LoRA放到stable-diffusion-webui/models/Lora。
如果要显示小模型缩略图,将图片取跟该模型一样的文件名,并放到该模型的文件夹。例如在Taiwan-doll-likeness.safetensors所在的文件夹放一张Taiwan-doll-likeness.png。
使用方法:
- 在正常使用文生图的基础上。选择lora,点击小模型的卡片便会将其加到提示词字段,提示词字段会出现
,表示要在绘图时使用LoRA。 - 如果生出来的图片太诡异,调整提示词字段每个LoRA后面的数字,控制权重。<xxx:0.5>
这里介绍一下VAE
,之前生成的图片都会偏灰。VAE (variational autoencoder)可以让算出来的图片色彩更漂亮,改善图片颜色灰灰暗暗的问题。
这里下载模型对应的VAE:https://huggingface.co/WarriorMama777/OrangeMixs/tree/main/VAEs
下载orangemix.vae.pt
如果要使用VAE,下载VAE模型后,将其放到stable-diffusion-webui/models/VAE文件夹。
接着点击Settings → Stable Diffusion → SD VAE,选取要使用的VAE,再点击Apply Settings,此后生图就会一律使用指定的VAE。
lora案例1
到c站下载lora:https://civitai.com/models/9727?modelVersionId=11564
这里我下载的是d.va (overwatch) d.va 守望先锋
下载后放到models\Lora
文件夹。
此时在Lora选项卡的右上角点击刷新就可以看到卡片
提示词
SFW, masterpiece, best quality, 1girl, brown hair, brown eyes, smile, standing, dynamic pose, outdoors, city background, <lora:dva:0.6>, deeva \(overwatch 1 version\), d.va /(overwatch 1/),
facial_mark, whisker_markings, d.va_\(overwatch\), 1girl, blue bodysuit, long_hair, pilot_suit, solo, facepaint, headphones, gun, brown_hair, holding_gun, swept_bangs, clothes_writing, bangs, breasts, blue_background, hand_on_hip, animal_print, handgun, brown_eyes, medium_breasts, holding_weapon, bracer, ribbed_bodysuit, weapon, white_gloves, shoulder_pads, holding, high_collar, turtleneck, standing, white_footwear, full_body, charm_\(object\), pink_lips, gloves, hand_up, pistol, skin_tight, smile
Negative prompt: NSFW, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, (ugly:1.331), (duplicate:1.331), (morbid:1.21), (mutilated:1.21), (tranny:1.331), mutated hands, (poorly drawn hands:1.5), blurry, (bad anatomy:1.21), (bad proportions:1.331), extra limbs, (disfigured:1.331), (missing arms:1.331), (extra legs:1.331), (fused fingers:1.61051), (too many fingers:1.61051), (unclear eyes:1.331), lowers, bad hands, missing fingers, extra digit,bad hands, missing fingers, (((extra arms and legs))),
Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 3590206651, Size: 600x800, Model hash: a074b8864e, Model: 二次元:Counterfeit V2.5, Denoising strength: 0.4, Clip skip: 2, ENSD: 31337, Hires upscale: 1.5, Hires upscaler: R-ESRGAN 4x+ Anime6B
可以试一下加和不加的区别
放大图片分辨率
用默认的512x512分辨率就生出不错的图,可以将图片直接丢到Extras放大。
参数
- Scale by:按照此数字的倍数放大
- Scale to:放大至指定宽高
- Upscaler 1 & Upscaler 2:放大图片的时候可以只用一种放大器,也可以混合使用二种放大器。
- Upscaler 2 visibility:第二个放大器的权重。
- GFPGAN visibility:GFPGAN脸部修复模型的权重
- CodeFormer visibility:CodeFormer脸部修复模型的权重
Upscaler的选择
- ESRGAN_4x适合用于处理真人照片
- ESRGAN_4x适合用于绘画
- Anime6B适合用于动漫图片,它也可以用来将真人图片转动漫风格
切换至Extras页面,上传图片,选取放大2倍,点击下面的Upscaler 1中挑一个看起来顺眼的,其余维持缺省,按Generate即会得到放大过的图片。