前言
Diffusion model 是机器学习中的一个比较新的生成式模型,且有望和GAN一较高下,在这里记录一些我的学习和理解。
一、代码参考位置
Github: denoising-diffusion-pytorch
网址链接:https://github.com/lucidrains/denoising-diffusion-pytorch
二、代码关联关系解析
1. 调用的packages之间的关系
三个类扮演不同的角色实现去噪扩散模型的训练和图像生成过程。
-
Unet的作用
U-Net 架构的神经网络模型,用于图像分割任务,在去噪扩散模型中,U-Net被用作生成模型(条件模型),每一个扩散步骤中预测噪声,并逐渐将带有噪声的图像转换为清晰的图像。 -
GaussianDiffusion的作用
实现去噪的核心算法,负责定义扩散过程,和反扩散过程。
训练阶段:将图像逐渐添加噪声,训练神经网络逆转噪声过程
生成阶段:扩散模型从纯噪声开始,逐步去噪生成最终的图像 -
Trainer的作用
Trainer 类负责设置和执行模型的训练过程。它管理数据加载、批量处理、优化器设置、模型保存、性能监控等训练任务。
可以说Gaussian Diffusion是一个更广泛的生成模型框架,而U-Net可以作为这个框架中的一个组件。