太久没用基本都忘光了,发现记的笔记也没有很好的梳理,虽然网上已经有了不少详细的文档了,但自己梳理一遍记忆比较深刻。

环境准备

$ 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

安装完毕

2024-12-30T07:02:08.png

如果想要开启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

其它参数先不用管,点击生成

2025-01-15T08:02:38.png

图生图

图生图(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

2025-01-15T08:13:53.png

图生图的生成结果按钮下的最后两个按钮可以从图片中提取提示词,有兴趣的也可以试一下。

内补绘制

内补绘制(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页面可以批量处理图片,大家自行尝试。

这里我没做出效果比较好的示例,在网上找了张效果图,涂黑的部分就是重绘的部分,新版涂抹已经变成白色了

2025-01-15T08:33:34.png

额外网络 进阶模型

大模型一般指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

可以试一下加和不加的区别

2025-01-15T12:18:03.png

放大图片分辨率

用默认的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即会得到放大过的图片。

参考

发表评论