打卡
目录
本次内容是基于Hugging Face:The Annotated Diffusion Model一文翻译迁移到mindspore中的讲解实现,具体的diffusion理论理解和改善需要额外通过其他参考链接进行知识补充。
即使如此,本次内容的代码部分的核心部分也几乎都涉及到了。
理解扩散模型
本文的介绍是基于denoising diffusion probabilistic model (DDPM),DDPM的应用案例,例如有,OpenAI主导的GLIDE和DALL-E 2、海德堡大学主导的潜在扩散、Google Brain主导的图像生成。
本文是在Phil Wang 基于PyTorch框架的复现 的基础上,迁移到MindSpore AI框架上实现的。
环境设置
实验开始之前请确保安装并导入所需的库(假设您已经安装了MindSpore、download、dataset、matplotlib以及tqdm)。
pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore==2.2.14
pip install download
pip install numpy tqdm matplotlib
import math
from functools import partial
%matplotlib inline
import matplotlib.pyplot as plt
from tqdm.auto import tqdm
import numpy as np
from multiprocessing import cpu_count
from download import download
import mindspore as ms
import mindspore.nn as nn
import mindspore.ops as ops
from mindspore import Tensor, Parameter
from mindspore import dtype as mstype
from mindspore.dataset.vision import Resize, Inter, CenterCrop, ToTensor, RandomHorizontalFlip, ToPIL
from mindspore.common.initializer import initializer
from mindspore.amp import DynamicLossScaler
### 设置全局种子。全局种子可用于numpy.random, mindspore.common.Initializer以及mindspore.nn.probability.distribution。
## 如果没有设置全局种子,这些包将会各自使用自己的种子
### 种子是随机数生成器的起点,决定了随机数序列。给定相同的种子,随机数生成器会产生相同的序列,这就使得实验结果可以复现。
### 如果每次运行都使用不同的种子,那么即使是相同的代码也会产生不同的结果,这在调试和模型训练中可能会导致问题。
### 全局种子的作用是确保在多次运行程序或训练模型时,随机数生成的结果是可以复现的。
ms.set_seed(0)
Diffusion Model 简介
Diffusion 模型从纯噪声开始通过一个神经网络学习逐步去噪,最终得到一个实际图像。
Diffusion 模型通过下面两个过程处理图像: