AI 绘画核心技术与实战
南柯
某头部大厂图像团队技术 leader,高级算法专家
6373 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 36 讲
AI 绘画核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

12|实战项目(二):动手训练一个你自己的扩散模型

你好,我是南柯。
前面几讲,我们已经了解了扩散模型的算法原理和组成模块,学习了 Stable Diffusion 模型新增的 CLIP 和 VAE 模块。掌握了这些知识,相信你也一定跃跃欲试,想要训练一个属于自己的 AI 绘画模型。
这一讲,我们会将前几讲的知识串联起来,从全局的视角讨论扩散模型如何训练和使用。我们将通过实战的形式,一起训练一个标准扩散模型,并微调一个 Stable Diffusion 模型,帮你进一步加深对知识的理解。学完这一讲,我们就迈出了模型自由的关键一步。

关键知识串联

在实战之前,我想请你思考一个问题:想要把标准的扩散模型升级为 Stable Diffusion,需要几步操作?
答案是两步。
我们通过第 6 讲已经知道,标准扩散模型的训练过程包含 6 个步骤,分别是随机选取训练图像、随机选择时间步 t、随机生成高斯噪声、一步计算第 t 步加噪图、使用 UNet 预测噪声值和计算噪声数值误差。
Stable Diffusion 在此基础上,增加了 VAE 模块和 CLIP 模块。VAE 模块的作用是降低输入图像的维度,从而加快模型训练、给 GPU 腾腾地方;CLIP 模块的作用则是将文本描述通过交叉注意力机制注入到 UNet 模块,让 AI 绘画模型做到言出法随。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何动手训练一个自己的扩散模型,通过清晰的代码示例和详细的讲解,帮助读者了解了如何训练一个自己的扩散模型,展现了其技术特点和操作方法。文章首先介绍了升级标准扩散模型为Stable Diffusion的两个操作步骤,并介绍了Stable Diffusion模型的算法框架。作者还详细讨论了训练标准扩散模型和Stable Diffusion模型所需的“原材料”,包括GPU资源、训练数据、开源预训练模型以及CLIP和VAE模型。在训练扩散模型方面,作者介绍了两种训练方式,并提供了相应的代码示例。通过实战项目的形式,读者可以加深对扩散模型和Stable Diffusion模型的认识,从数据准备开始,使用两种不同的形式从头开始进行模型训练,最终得到“不听话”的AI画师。此外,文章还探讨了如何通过代码直接使用开源社区提供的SD模型,实现AI绘画。整体而言,本文以实战项目的形式,通过清晰的代码示例和详细的讲解,帮助读者了解了如何训练一个自己的扩散模型,展现了其技术特点和操作方法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《AI 绘画核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(11)

  • 最新
  • 精选
  • 你好,我想问下,这里微调模型和训练lora模型有什么关系?

    作者回复: 你好,这里的微调模型是指微调整个SD模型中UNet的所有权重参数,在LoRA流行之前,大家说的微调模型是指这种方式,比如我们在Civitai上能看到的各种几GB大小的模型;微调LoRA只需要采用秩因子分解的方式,优化UNet中Attention部分的部分权重矩阵(权重不变,优化对应的LoRA),这种方式得到的权重通常只有几十到几百M大小。手中没有海量训练数据的情况下,选择训练LoRA的方式即可。对于计算资源有限的情况而言,优化LoRA也是更方便的选择。希望能帮助到你。

    2023-08-27归属地:北京
    1
  • 陈东
    每次在Google colab中安装package,关闭后安装包被删除,如何永久性使用安装包?尝试了很多办法,不可行。请问老师有永久性安装办法吗?谢谢

    编辑回复: 目前是有这个弊端,在Colab上没法安装。如果你有能力探索本地部署的话就可以解决。

    2023-10-22归属地:广西
  • 失落的走地鸡
    微调SD模型中有行代码:tokenizer = CLIPTokenizer.from_pretrained()。前面讲transformer的组成时提到token和词嵌入,这里又将它们归属到clip,请问怎么理解这两种矛盾的说法?

    作者回复: 你好。在transformer工具包中(https://huggingface.co/transformers/v4.8.0/index.html),有大量的tokenizer可供选择,比如CLIPTokenizer、BertTokenizer、OpenAIGPTTokenizer等。CLIP使用的是一种基于BPE(Byte Pair Encoding)的tokenizer,这个tokenizer是预先训练得到的。原始Transformer论文中,使用的是一种基于子词的tokenizer,使用哪种tokenizer对于transformer来说不是最核心的,可以看作是模型预处理步骤的选择。希望能够帮助到你。

    2023-10-05归属地:安徽
  • Geek_535f73
    Generating train split: 0%| | 0/7169 [00:00<?, ? examples/s] Traceback (most recent call last): File "/cloud/sd_hbo/lib/python3.10/site-packages/datasets/builder.py", line 1925, in _prepare_split_single for _, table in generator: File "/cloud/sd_hbo/lib/python3.10/site-packages/datasets/packaged_modules/parquet/parquet.py", line 77, in _generate_tables parquet_file = pq.ParquetFile(f) File "/cloud/sd_hbo/lib/python3.10/site-packages/pyarrow/parquet/__init__.py", line 286, in __init__ self.reader.open( File "pyarrow/_parquet.pyx", line 1227, in pyarrow._parquet.ParquetReader.open File "pyarrow/error.pxi", line 100, in pyarrow.lib.check_status pyarrow.lib.ArrowInvalid: Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file. The above exception was the direct cause of the following exception: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/cloud/sd_hbo/lib/python3.10/site-packages/datasets/load.py", line 2136, in load_dataset builder_instance.download_and_prepare( File "/cloud/sd_hbo/lib/python3.10/site-packages/datasets/builder.py", line 954, in download_and_prepare self._download_and_prepare( File "/cloud/sd_hbo/lib/python3.10/site-packages/datasets/builder.py", line 1049, in _download_and_prepare self._prepare_split(split_generator, **prepare_split_kwargs) File "/cloud/sd_hbo/lib/python3.10/site-packages/datasets/builder.py", line 1813, in _prepare_split for job_id, done, content in self._prepare_split_single( File "/cloud/sd_hbo/lib/python3.10/site-packages/datasets/builder.py", line 1958, in _prepare_split_single raise DatasetGenerationError("An error occurred while generating the dataset") from e datasets.builder.DatasetGenerationError: An error occurred while generating the dataset

    作者回复: 你好,看起来是数据文件下载不完整导致的问题。和ChatGPT交流了一下,推荐了几个解决思路,可以试试看能否解决: 检查文件:确定你正在读的文件是否确实是一个 Parquet 文件。通常,Parquet 文件的扩展名为 .parquet。尝试双击文件或使用专门的读取器来查看其内容。如果无法打开或内容看起来不正常,那么文件可能损坏了。 尝试重新生成文件:如果你有生成该文件的脚本或源数据,可以尝试重新生成这个文件。 检查生成代码:如果你手动创建了 Parquet 文件,检查你的代码以确认你是否正确地生成了此文件。PyArrow有一个简单的API可以用来生成 Parquet 文件。 确保数据集路径正确:如果你使用的是datasets库加载数据,确保你的数据集路径是正确的。 希望能帮助到你,如果没能解决,欢迎继续交流~

    2023-09-02归属地:上海
  • Geek_535f73
    老师您好 我在自己的代码中dataset = load_dataset("nelorth/oxford-flowers")时遇到这个问题 确实网上搜了很久都没有找到答案,所以来请教您/哭

    作者回复: 你好,这一行是下载数据集的代码,如果报错大概率是网络原因。可以把报错的日志贴一下。

    2023-09-02归属地:上海
    2
  • Ericpoon
    试过在本地运行SDXL0.9,(1.0 运行不了,内存不足),0.9得到的图象结果没有网上写的那么好,人或动物也看着很抽象,我用的只是HUGGING FACE上给的运行代码,什么参数都没有。请问这个有没有相关的参数设置的文章,介绍一下。

    作者回复: 你好,建议使用SDXL推荐的分辨率(默认1024x1024),不要设置极端的宽高比。除去采样器、分辨率这些原因外,我建议参考下一些prompt经验贴看看,比如这个:https://zhuanlan.zhihu.com/p/648291684,看看能否调试出对应的风格。希望能帮助到你。

    2023-08-26归属地:广东
  • 昵称C
    老师,您好。我想做一个换脸,换衣服的图生图小功能。有合适的开源模型推荐么?我在用的时候stable-diffusion-v1-5模型生成的内容是有不适宜检测的,怎么能去掉这个检测呢?

    作者回复: 你好。我个人的角度,换脸换衣服这类任务选择生成能力较强的真人模型,比如墨幽人造人、Realistic这类。关掉NSFW检测,可以参考这个链接:https://stackoverflow.com/questions/73828107/how-to-fix-nsfw-error-for-stable-diffusion。 希望能够帮助到你。

    2023-08-22归属地:北京
  • 秋晨
    认识基础模块 似乎缺失了讲解如何输出噪声图的代码

    作者回复: 你好,感谢你的反馈。噪声图我们使用diffusion.sample(batch_size = 4)函数来完成生成,图像可视化部分使用的是matplotlib模块,具体代码可以参考Colab。这部分只是做了一个可视化,与AI绘画关联不大,就没有拿出来讲。再次感谢你的反馈。

    2023-08-18归属地:日本
  • @二十一大叔
    老师,最后调用sd模型的代码,在本地运行时有没有办法去加载本地指定文件夹下的模型,而不是去下载huggingface中的模型,目前是会把模型仓库中的所有问价都缓存到本地,这样对于切换模型时非常的不友好

    作者回复: 你好。推荐使用load_safetensors的形式进行模型加载:https://huggingface.co/docs/diffusers/using-diffusers/using_safetensors#load-safetensors,model_id中指定自己的模型路径。希望能帮助到你。

    2023-08-15归属地:上海
  • peter
    请教老师几个问题啊: Q1:有比较好的垂直类模型吗?推荐几个啊。 Q2:开源社区网址是什么?麻烦提供一下。前面课程也许提供了,但难以逐个查找。都是在地铁上看的,当时没有记。麻烦老师了。

    编辑回复: 第一个问题,建议你说明一下你心目里对“垂直类模型”的理解,以及对“比较好的”定义,也可以借助谷歌搜过工具来看看。第二个问题,前面课程里确实提供过了,刚好是你复习回顾的好机会,你可以回到第一章第四节课找一下,如果找不到再提问。

    2023-08-12归属地:北京
收起评论
显示
设置
留言
11
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部