项目地址:https://datawhaler.feishu.cn/docx/PfUFdqkoOoGeqBx6dYVclVWwntd
Notebook地址(推荐使用google colab打开):https://github.com/huggingface/diffusion-models-class/tree/main/unit1
推荐阅读材料:《扩散模型-从原理到实战》第一、二、三、四章
第一章 扩散模型简介
扩散模型基础介绍
扩散模型是一种生成模型。生成模型的学习目标是对训练数据的分布进行建模。
扩散模型的扩散过程包含前向过程和反向过程。前向过程给数据添加噪声;反向过程则是去除噪声,从随机噪声中恢复清晰数据。
扩散模型发展阶段
扩散模型的发展经历了若干阶段,目前大模型结合DreamBooth、LoRA、ControlNet微调的方式可以生成属于自己风格的图像。
扩散模型应用场景
· 计算机视觉(图像分割、目标检测、超分辨率、图像修复)
· 时间序列预测(气象、股票、产能)
· 自然语言处理 (翻译、问答、情感分析、文章续写)
· 基于文本的多模态(文本生成图像、文本生成视频、文本生成3D)
· AI基础科学(蛋白质结构生成、原子材料结构)
第二章 Hugging Face简介
HuggingFace是一个开源机器学习平台。https://huggingface.co/
HuggingFace为我们提供了:
1. 超过7万份可供模型训练的数据集(截止2023.10)
2. 超过36个开源预训练模型。模型配有模型卡对该模型进行描述和使用方式的说明
3. 在线推理:
打开 https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0
在Hosted inference API的对话框中输入一段文字描述,点击“Compute”即可在线使用该模型生成图片。例如,在对话框中输入"Cyberpunk cat",即可生成一张赛博朋克风格的猫咪,每次生成的画面会有所不同。
4.可供我们在自己代码中调用的模型API
5. 我们可以在HuggingFace Spaces上部署自己的AI用用程序
第三章 从零开始搭建扩散模型
本章内容建议结合https://github.com/huggingface/diffusion-models-class/tree/main/unit1中的两份代码共同食用。
模型介绍
输入:加入噪音后的训练图片
输出:模型预测的“去噪”后图片,输出图片维度与输入图片维度相同。
架构上一般是downsample + upsample两步走,并插入残差连接。
训练步骤
1. 准备数据(数据下载,transform,以及构建Dataloader)
2. 对于Dataloader中的每个batch,给数据添加噪音,添加噪音的方式多种多样,可以通过手动生成一组随机噪音,并和训练数据图片相加,也可以通过sceduler;
3. 将添加噪音后的图片放入模型进行预测。
4. 计算损失,可以计算模型预测值和真实图片的误差,也可以计算模型预测值和噪音(noise)的误差
5. 更新网络权重
模型推理——如何从随机噪声生成图片
方式一:直接将随机噪声放入模型预测,模型预测即为生成的图片,这种方式效果不好;
方式二:分多步骤预测。同样起始于随机噪声,分多次放入模型进行预测,并且每次将预测图片和输入图片进行加权平均,缓慢的迭代图片和去除噪音。