Stable Diffusion 学习笔记
Stable Diffusion 是一款由 Stability AI 开发的开源人工智能(AI)绘画工具,专注于基于文本输入生成高质量、高分辨率的图像。自2023年以来,它已成为AI生成内容(AIGC)领域内非常热门且具有影响力的项目之一,因其强大的图像生成能力和广泛的应用潜力而受到广泛关注。以下是关于 Stable Diffusion 的详细介绍:
核心技术
潜在扩散模型(Latent Diffusion Models, LDMs)
Stable Diffusion 基于潜在扩散模型(LDMs),这是一种结合了扩散模型与变分自编码器(VAEs)思想的深度学习架构。LDMs 将扩散过程从原始的像素空间转移到一个低维的、更具表征能力的隐空间,以此来简化计算、减少内存需求,并使模型更聚焦于语义信息。
扩散过程
扩散模型利用逆向的随机过程来逐步从纯噪声中生成清晰图像。Stable Diffusion 实现这一过程的具体方法是对高斯噪声进行迭代扩散,利用 Langevin 动力学模拟粒子在能量场中的运动,通过一系列微小的步骤逐渐构造出目标图像。模型在训练过程中学习如何从初始噪声状态逐渐还原出真实数据分布。
关键特性:
温度参数(Temperature):在扩散过程中引入温度参数 T 来控制分布的扩散程度。随着训练的进行,T 逐渐降低,使得分布逐渐收缩,从而提高采样的质量和图像的保真度。
迭代去噪:模型执行一系列去噪步骤,在每个步骤中通过一个 U-Net 结构或其他类型的神经网络来估计并去除噪声,逐步恢复图像的细节和清晰度。这种设计有助于模型在保持生成图像多样性的同时,对条件控制(如文本描述)做出更准确的响应。
文本编码
Stable Diffusion 使用先进的文本编码器,如 OpenCLIP,将用户提供的自然语言文本转化为向量表示。这种向量能够捕获文本的语义信息,并与图像空间对齐,使得模型能够在生成图像时精确地遵循文本描述。
特点与优势
高质量图像生成:Stable Diffusion 能够生成细节丰富、高清、逼真的图像,其生成效果显著优于早期的粗陋玩具模型,展现出高度的艺术性和专业级视觉质量。
文本驱动:用户只需提供一段文本描述,即可指导 Stable Diffusion 生成与其描述相符的图像,实现了从文本到图像的高效跨模态转换。
开源与可部署:作为一个开源项目,Stable Diffusion 拥有广泛的社区支持,允许任何人免费下载、部署和使用,促进了技术的普及和创新应用的发展。
灵活性与适应性:不仅适用于个人创意表达、数字艺术创作,还能够在计算机视觉、视频游戏、虚拟现实、广告设计等多个领域找到应用,展现了极高的应用灵活性和适应性。
应用与扩展
围绕 Stable Diffusion,开源社区构建了众多集成应用和衍生项目,如 Stable Diffusion WebUI、ComfyUI、Fooocus 等,这些项目提供了用户友好的界面和便捷的功能,使得非技术用户也能轻松利用 Stable Diffusion 进行创作。此外,模型分享和定制化训练也促进了 Stable Diffusion 在特定场景下的专业化应用。
综上所述,Stable Diffusion 是一款基于前沿扩散模型技术的文本到图像生成工具,以其高质量图像生成能力、文本驱动特性、开源属性以及广泛的应用前景,在AI绘画和AIGC领域占据重要地位。随着技术的持续发展和社区支持的不断壮大,Stable Diffusion 有望继续推动相关领域的创新与进步。
个人笔记:
模型分类:
VAE:
全名Variational autoencoder,中文名变分自编码器
作用:滤镜+微调
emdding:
又名textual inversion,中文名嵌入or文本反转,通俗理解:提示词打包,可以将一段非常长的描述词打包成一个词直接调用。
Lora:
全称Low-Rank Adaptation of Large Language Models,直译为大语言模型的低阶适应,这是微软的研究人员为了解决大语言模型微调而开发的一项技术。
只要是图片特征几乎都可以训练,无论是动作、画风、物品细节、人物细节。
hypernetworks:
可以理解为是低配版的Lora
检查下载的文件是什么模型:https://spell.novelai.dev/
提示词基础知识
正面提示词(想要什么写什么):
masterpiece, best quality, 8k, highres,
反面提示词(不想要什么写什么):
((nsfw)), lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry
分类思路
比如描述一个女孩可分为:
画质:masterpiece,best quality,8k,highres,
主题:photo of girl
人物属性描写:头发长短,头发颜色,身材胖瘦...
人物衣服:西服,太阳镜,帽子,高跟鞋...
背景:街道,森林,城市,卧室,厨房...
画风:现实...
镜头:全身,半身,大头贴
其他:太阳,冬天,温暖...
PS:只能用英语,并用","隔开
书写格式
一、内容
(1).单词:案例:1boy,handsome,sitting,sofa
(2).词组:案例:1handsome boy,sitting on the sofa
(3).短语:案例:1handsome boy is sitting on the sofa
二、分割
1.不同的关键词tag之间,需要使用英文逗号分割,逗号前后有空格或者换行是不碍事的。
2.两个词之间的空格有变化的
3.越在前面的提示词权重越高,所以主体应该放在前面
4.,+空格是有效果的
5.描述同一类别的内容,会分别/混合出现
三、增强/减弱
1.(提示词:权重数值)
数值从0.1~100,默认状态是1,低于1就是减弱,大于1就是加强
(loli),(one girl:1.21),(cat ears:1.1)
2.(提示词)或[提示词]
每套一层()括号增强1.1倍,每套一层[]减弱1.1倍,也就是套两层是1.1*1.1=1.21倍,套三层是1.331倍,套4层是1.4641倍
((loli)),((one girl)),(cat ears),[flower hairpin]
四、混合
1.用 AND 把多种要素强制融合画进去:
1cat AND 1dog
2.可以 : 数字 增加权重:
1cat:1.5 AND 1dog AND 1tiger
五、渐变
1.[关键词1:关键词2:数字],[from:to:when]
数字大于1理解为第X步前为关键词1,第X步后变成关键词2
1man:flower:20
数字小于1理解为总步数的百分之X前为关键词1,之后变成关键词2
1man:flower:0.5
2.[关键词:数字],[to:when]:从XX比例/步开始画
flower:20
[flower:0.5]
3.[关键词::数字],[from::when]:到XX比例/步截止画
[flower::0.5]
[flower::20]
六、交替验算
语法:[关键词1|关键词2]
轮流使用关键词生成,某物与某物的交替演算,跟偏向与前面那个词
[cat|dog]
七、embedding
有些提示词其实是embedding
八、lora/hypernetwork
文生图参数
一、宽度高度
分辨率大小如何设置?
过小的分辨率会导致图片生成质量低
分辨率至少有一个参数(宽度或高度)在512-768之间
如何生成大图?
建议先生成小图,在用高清修复进行放大
宽度高度和性能的关系?
分辨率越大,显存占用就越大,生成时间变慢
人物比例不协调咋办?
分辨率设置不合理会导致
点击上下箭头按钮
交换宽高
二、生成多张
生成批次
每次生成(每批数量)张
种子每次随机:如果随机种子固定,则每次种子数+1
每批数量
同时生成多张,每张种子数+1
拉高容易爆显存
提示词相关性
定义:Classifier-free guidance(CFG) scale (CGF指数) 用来调节文本提示对扩散过程的引导程度。数值较高时会向你的提示进行生成
技巧:
CFG为0-1时,图像崩坏
CFG处于2-6时,生成图像比较有想象力
CFG处于7-12效果较好,既有创意也有能遵循我们的文本提示
CFG处于10-15时,提示词更多影响作品,对比度饱和度上升
CFG处于18-30时,画面逐渐崩坏,拉高采样迭代步数可以降低崩坏程度
随机种子
简单理解:生成不同的噪点图
内置插件
一、XYZ对照工具
语法:
每次增加1
1-5=1,2,3,4,5
不同步长的方法
1-5(+2)=1,3,5
10-5(-3)=10,7
1-3(+0.5)=1,1.5,2,2.5,3
规定范围内分多少个
1-10[5] = 1,3,5,7,10
0.0-1.0[6] = 0.0,0.2,0.4,0.6,0.8,1.0
二、提示词矩阵
语法:
正常提示词|改变提示词1|改变提示词2|改变提示词3....
a busy city street in a modern city|illustration|cinematic lighting
a busy city street in a modern city
a busy city street in a modern city, illustration
a busy city street in a modern city, cinematic lighting
a busy city street in a modern city, illustration, cinematic lighting
批量生成
每一行为一张图。每个参数用--作为开头,空格作为分割
可控制参数
"sd_model",
"prompt",
"negative_prompt",
"seed",
"subseed_strength",
"subseed",
"seed_resize_from_h",
"seed_resize_from_w",
"sampler_index",
"sampler_name",
"batch_size",
"n_iter",
"steps",
"cfg_scale",
"width",
"height",
"restore_faces",
"tiling",
"do_not_save_samples",
"do_not_save_grid",
"outpath_samples",
"outpath_grids",
"prompt_for_display",
"styles",
案例
--prompt "photo of sunset"
--prompt "photo of sunset" --negative_prompt "orange,pink,red,sea,water,lake" --width 1024 --height 768 --sampler name "DPM++ 2M Karras" --steps 10 --batch_size 2 --cfg_scale 3 --seed 9
--prompt "photo of winter mountains" --steps 7 --sampler_name "DDIM"
--prompt "photo of winter mountains" --width 1024