目录 第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