第 1章 扩散模型简介 1
1.1 扩散模型的原理 1
1.1.1 生成模型 1
1.1.2 扩散过程 2
1.2 扩散模型的发展 5
1.2.1 开始扩散:基础扩散模型的提出与改进 6
1.2.2 加速生成:采样器 6
1.2.3 刷新纪录:基于显式分类器引导的扩散模型 7
1.2.4 引爆网络:基于CLIP的多模态图像生成 8
1.2.5 再次“出圈”:大模型的“再学习”方法——DreamBooth、LoRA和ControlNet 8
1.2.6 开启AI作画时代:众多商业公司提出成熟的图像生成解决方案 10
1.3 扩散模型的应用 12
1.3.1 计算机视觉 12
1.3.2 时序数据预测 14
1.3.3 自然语言 15
1.3.4 基于文本的多模态 16
1.3.5 AI基础科学 19
第 2章 Hugging Face简介 21
2.1 Hugging Face核心功能介绍 21
2.2 Hugging Face开源库 28
2.3 Gradio工具介绍 30
第3章 从零开始搭建扩散模型 33
3.1 环境准备 33
3.1.1 环境的创建与导入 33
3.1.2 数据集测试 34
3.2 扩散模型之退化过程 34
3.3 扩散模型之训练 36
3.3.1 UNet网络 36
3.3.2 开始训练模型 38
3.4 扩散模型之采样过程 41
3.4.1 采样过程 41
3.4.2 与DDPM的区别 44
3.4.3 UNet2DModel模型 44
3.5 扩散模型之退化过程示例 57
3.5.1 退化过程 57
3.5.2 终的训练目标 59
3.6 拓展知识 60
3.6.1 时间步的调节 60
3.6.2 采样(取样)的关键问题 61
3.7 本章小结 61
第4章 Diffusers实战 62
4.1 环境准备 62
4.1.1 安装Diffusers库 62
4.1.2 DreamBooth 64
4.1.3 Diffusers核心API 66
4.2 实战:生成美丽的蝴蝶图像 67
4.2.1 下载蝴蝶图像集 67
4.2.2 扩散模型之调度器 69
4.2.3 定义扩散模型 70
4.2.4 创建扩散模型训练循环 72
4.2.5 图像的生成 75
4.3 拓展知识 77
4.3.1 将模型上传到Hugging Face Hub 77
4.3.2 使用Accelerate库扩大训练模型的规模 79
4.4 本章小结 81
第5章 微调和引导 83
5.1 环境准备 86
5.2 载入一个预训练过的管线 87
5.3 DDIM—— 快的采样过程 88
5.4 扩散模型之微调 91
5.4.1 实战:微调 91
5.4.2 使用一个 小化示例程序来微调模型 96
5.4.3 保存和载入微调过的管线 97
5.5 扩散模型之引导 98
5.5.1 实战:引导 100
5.5.2 CLIP引导 104
5.6 分享你的自定义采样训练 108
5.7 实战:创建一个类别条件扩散模型 111
5.7.1 配置和数据准备 111
5.7.2 创建一个以类别为条件的UNet模型 112
5.7.3 训练和采样 114
5.8 本章小结 117
第6章 Stable Diffusion 118
6.1 基本概念 118
6.1.1 隐式扩散 118
6.1.2 以文本为生成条件 119
6.1.3 无分类器引导 121
6.1.4 其他类型的条件生成模型:Img2Img、Inpainting与Depth2Img模型 122
6.1.5 使用DreamBooth进行微调 123
6.2 环境准备 124
6.3 从文本生成图像 125
6.4 Stable Diffusion Pipeline 128
6.4.1 可变分自编码器 128
6.4.2 分词器和文本编码器 129
6.4.3 UNet 131
6.4.4 调度器 132
6.4.5 DIY采样循环 134
6.5 其他管线介绍 136
6.5.1 Img2Img 136
6.5.2 Inpainting 138
6.5.3 Depth2Image 139
6.6 本章小结 140
第7章 DDIM反转 141
7.1 实战:反转 141
7.1.1 配置 141
7.1.2 载入一个预训练过的管线 142
7.1.3 DDIM采样 143
7.1.4 反转 147
7.2 组合封装 153
7.3 ControlNet的结构与训练过程 158
7.4 ControlNet示例 162
7.4.1 ControlNet与Canny Edge 162
7.4.2 ControlNet与M-LSD Lines 162
7.4.3 ControlNet与HED Boundary 163
7.4.4 ControlNet与涂鸦画 164
7.4.5 ControlNet与人体关键点 164
7.4.6 ControlNet与语义分割 164
7.5 ControlNet实战 165
7.6 本章小结 174
第8章 音频扩散模型 175
8.1 实战:音频扩散模型 175
8.1.1 设置与导入 175
8.1.2 在预训练的音频扩散模型管线中进行采样 176
8.1.3 从音频到频谱的转换 177
8.1.4 微调管线 180
8.1.5 训练循环 183
8.2 将模型上传到Hugging Face Hub 186
8.3 本章小结 187
附录A 精美图像集展示 188
附录B Hugging Face相关资源 202
......