图书目录

目录

第1章介绍Diffusion模型的发展历程,以及本书中相关任务的训练方法。

第2章介绍开发环境的配置,并且快速上手Diffusion模型的使用。

第3章介绍不定图像的生成任务。

第4章介绍文本训练方法。

第5章介绍Dream Booth训练方法。

第6章介绍图文结合的训练方法。

第7章介绍使用LoRA技巧加速训练。

第8章介绍AE模型。

第9章介绍VAE模型。

第10章介绍DCGAN模型。

第11章介绍WGANGP模型。

第12章手动构造一个没有文本输入的Diffusion模型。

第13章介绍ControlNet组件。

第14章介绍Instruct Pix2Pix训练方法。

第15章介绍正负样本混合训练方法。

第16章介绍Pix2Pix模型。

第17章介绍CycleGAN模型。

第18章介绍风格迁移任务。

第19章手动构建一个完整的Diffusion模型。

阅读建议

本书是一本对Diffusion模型进行综合性讲解的书籍,既有基础知识,也有实战示例,也包括底层原理的讲解。

本书尽量以简洁的语言书写,每个章节之间的内容尽量独立,使读者可以跳跃阅读而没有障碍。

作为一本实战型书籍,读者要掌握本书的知识,务必要结合代码调试,本书的代码也尽量以简洁的形式书写,使读者阅读时不感吃力。每个代码块即是一个测试单元,读者可以对每个程序的每个代码块按从上到下的顺序进行测试,从一个个小知识点聚沙成塔,融会贯通。

资源下载提示

素材(源码)等资源: 扫描封底的文泉云盘防盗码,再扫描目录上方的二维码下载。

致谢

感谢HuggingFace社区无私的奉献,因为有了你们的工作成果,本书才得以以简洁、标准化的API面世。

在书写本书的过程中,我竭尽所能为读者呈现最好的内容,错漏难免会存在,敬请读者批评指正。

李福林2023年11月

本书源码

快速上手篇

第1章Diffusion模型3

1.1Diffusion模型介绍3

1.1.1Diffusion模型的演化之路4

1.1.2图像以外的应用6

1.1.3其他的绘图模型6

1.2微调预训练模型6

1.2.1预训练模型6

1.2.2微调模型以适应新数据7

1.2.3微调相比重新训练的优势7

1.3小结8

第2章快速上手9

2.1部署开发环境9

2.2HuggingFace简介和快速上手11

2.2.1快速上手11

2.2.2加速技巧12

2.3Diffusion模型相关组件介绍13

2.3.1tokenizer13

2.3.2scheduler15

2.3.3Encoder16

2.3.4VAE17

2.3.5UNet18

2.4小结20

训练方法篇

第3章不定图像的生成23

3.1任务简介23

3.2数据集介绍23

3.3测试部分24

3.3.1测试函数24

3.3.2未训练模型的测试结果25

3.3.3训练后模型的测试结果27

3.4训练部分28

3.4.1全局常量28

3.4.2定义数据集28

3.4.3定义模型30

3.4.4初始化工具类31

3.4.5计算loss32

3.4.6训练34

3.5小结35

第4章文本训练36

4.1任务简介36

4.2数据集介绍36

4.3测试部分37

4.3.1测试函数37

4.3.2未训练模型的测试结果38

4.3.3训练后模型的测试结果39

4.4训练部分39

4.4.1全局常量39

4.4.2定义数据集39

4.4.3定义模型44

4.4.4初始化工具类47

4.4.5计算loss47

4.4.6训练50

4.5小结51

第5章Dream Booth53

5.1任务简介53

5.2数据集介绍53

5.3测试部分54

5.3.1测试函数54

5.3.2未训练模型的测试结果55

5.3.3训练后模型的测试结果55

5.4训练部分56

5.4.1全局常量56

5.4.2定义数据集56

5.4.3定义模型60

5.4.4初始化工具类61

5.4.5计算loss61

5.4.6训练62

5.5小结64

第6章图文结合的训练65

6.1任务简介65

6.2数据集介绍65

6.3测试部分66

6.3.1测试函数67

6.3.2未训练模型的测试结果68

6.3.3训练后模型的测试结果68

6.4训练部分69

6.4.1全局常量69

6.4.2定义数据集69

6.4.3定义模型73

6.4.4初始化工具类73

6.4.5计算loss74

6.4.6训练75

6.5小结77

第7章LoRA Dream Booth78

7.1任务简介78

7.2数据集介绍79

7.3测试部分79

7.3.1测试函数79

7.3.2未训练模型的测试结果80

7.3.3训练后模型的测试结果80

7.4训练部分81

7.4.1全局常量81

7.4.2定义数据集81

7.4.3定义模型84

7.4.4初始化工具类87

7.4.5计算loss87

7.4.6训练88

7.5小结89

图像生成模型的历史发展篇

第8章AE模型93

8.1模型原理介绍93

8.2鲜花数据集介绍94

8.3定义数据集95

8.4定义神经网络模型98

8.4.1定义Block工具层98

8.4.2定义Encoder和Decoder100

8.5训练101

8.5.1训练前的准备工作101

8.5.2执行训练102

8.6测试104

8.6.1测试本地训练的模型104

8.6.2使用训练好的模型测试105

8.7小结105

第9章VAE模型106

9.1AE模型的缺陷106

9.2定义神经网络模型107

9.3训练108

9.3.1训练前的准备工作108

9.3.2执行训练109

9.4测试111

9.4.1测试本地训练的模型111

9.4.2使用训练好的模型测试111

9.5小结113

第10章DCGAN模型114

10.1模型原理介绍114

10.2定义神经网络模型115

10.2.1定义CLS模型115

10.2.2定义GEN模型116

10.3训练117

10.3.1训练前的准备工作117

10.3.2训练CLS模型的函数118

10.3.3训练GEN模型的函数119

10.3.4执行训练120

10.4测试122

10.4.1测试本地训练的模型122

10.4.2使用训练好的模型测试122

10.5小结123

第11章WGANGP模型124

11.1模型原理介绍124

11.2定义神经网络模型125

11.3训练126

11.3.1训练前的准备工作126

11.3.2训练CLS模型的函数127

11.3.3执行训练128

11.4测试130

11.4.1测试本地训练的模型130

11.4.2使用训练好的模型测试130

11.5小结131

第12章Diffusion模型132

12.1模型原理介绍132

12.2定义神经网络模型134

12.3定义图像生成函数142

12.4训练144

12.5测试146

12.6小结147

训练方法篇

第13章ControlNet以图生图151

13.1任务简介151

13.2数据集介绍153

13.3测试部分154

13.3.1测试函数155

13.3.2未训练模型的测试结果156

13.3.3训练后模型的测试结果158

13.4训练部分159

13.4.1全局常量159

13.4.2定义数据集159

13.4.3定义ControlNet模型162

13.4.4定义模型168

13.4.5初始化工具类169

13.4.6计算loss169

13.4.7训练171

13.5小结172

第14章Instruct Pix2Pix图像调整173

14.1任务简介173

14.2数据集介绍174

14.3测试部分175

14.3.1加载数据集175

14.3.2测试函数176

14.4训练部分179

14.4.1全局常量179

14.4.2定义数据集180

14.4.3定义模型181

14.4.4初始化工具类182

14.4.5计算loss183

14.4.6训练186

14.5小结187

第15章正、负样本混合训练188

15.1任务简介188

15.2数据集介绍188

15.3测试部分190

15.3.1配置环境190

15.3.2测试函数191

15.3.3未训练模型的测试结果191

15.3.4训练后模型的测试结果192

15.4训练部分193

15.4.1全局常量193

15.4.2定义数据集193

15.4.3定义模型200

15.4.4初始化工具类203

15.4.5计算loss203

15.4.6训练206

15.5小结207

以图生图模型的历史发展篇

第16章Pix2Pix模型211

16.1任务介绍211

16.2数据集介绍212

16.3定义数据集213

16.4定义神经网络模型216

16.4.1定义CLS模型217

16.4.2定义残差连接层217

16.4.3定义GEN模型218

16.5训练220

16.5.1训练前的准备工作220

16.5.2训练CLS的函数221

16.5.3训练GEN的函数222

16.5.4执行训练223

16.6测试226

16.6.1测试本地训练的模型226

16.6.2使用训练好的模型测试228

16.7小结228

第17章CycleGAN模型230

17.1模型原理介绍230

17.2数据集介绍231

17.3定义数据集232

17.4定义神经网络模型234

17.4.1定义CLS模型234

17.4.2定义GEN模型235

17.5训练237

17.5.1训练前的准备工作237

17.5.2训练CLS的函数238

17.5.3训练GEN的函数239

17.5.4执行训练242

17.6测试243

17.6.1测试本地训练的模型243

17.6.2使用训练好的模型测试244

17.7小结245

Diffusion模型篇

第18章风格迁移249

18.1模型原理介绍249

18.1.1针对单张图片的风格迁移249

18.1.2基于神经网络模型的风格迁移250

18.1.3风格迁移模型的训练方法250

18.1.4数据部分251

18.2定义神经网络模型252

18.2.1定义CLS模型254

18.2.2定义抽取内容特征的函数254

18.2.3定义抽取风格特征的函数255

18.2.4加载风格图片特征256

18.3训练257

18.3.1训练前的准备工作257

18.3.2执行训练257

18.4测试259

18.4.1测试本地训练的模型259

18.4.2使用训练好的模型测试260

18.5小结260

第19章手动构建Diffusion模型261

19.1模型原理介绍261

19.2Encoder模型263

19.2.1编码层263

19.2.2注意力层264

19.2.3编码器层266

19.2.4Encoder模型268

19.2.5载入参数268

19.2.6试算270

19.3VAE模型270

19.3.1残差连接层270

19.3.2注意力层272

19.3.3Pad工具层274

19.3.4VAE模型275

19.3.5载入参数278

19.3.6试算280

19.4UNet模型281

19.4.1模型结构281

19.4.2残差连接层282

19.4.3注意力层284

19.4.4Transformers层286

19.4.5down层289

19.4.6up层290

19.4.7UNet模型291

19.4.8载入参数296

19.4.9试算298

19.5训练299

19.5.1加载工具类299

19.5.2定义数据集300

19.5.3定义模型303

19.5.4计算loss304

19.5.5执行训练305

19.6测试306

19.6.1定义生成函数306

19.6.2定义测试函数308

19.6.3测试未训练的模型309

19.6.4测试训练好的模型310

19.7小结311