生成式之Diffusion扩散模型

前言

基于denoising diffusion probabilistic model (DDPM)的扩散模型,该模型已在图像/音频/视频生成领域取得显著成果。目前比较受欢迎的例子包括GLIDE、DALL-E 2、潜在扩散和图像生成。生成模型的扩散概念最早在2015年由Sohl-Dickstein等人介绍,但直到2019年和2020年分别在斯坦福大学和Google Brain才各自独立地改进了这种方法。本文是基于PyTorch框架的复现,并迁移到MindSpore AI框架上实现。

Image-1

什么是Diffusion Model?

Diffusion模型通过正向扩散过程逐步向图像添加高斯噪声,然后通过反向去噪过程,利用神经网络逐步去除噪声,最终生成实际图像。这两个过程在有限的时间步长内完成,最终得到各向同性的高斯分布。

扩散模型实现原理

前向过程,即向图片上加噪声的过程。通过定义前向扩散过程和动态方差的方法,可以逐步生成图像,使得最终的图像越来越接近纯噪声。这是理解diffusion model以及构建训练样本至关重要的一步。

Diffusion 逆向过程

使用神经网络来学习逆向过程的条件概率分布,以及如何通过最小化真实数据样本的似然负对数来导出学习反向过程平均值的目标函数。作者观察到变分下界可以被视为变分自动编码器,而每个时间步长的损失实际上是两个高斯分布之间的KL发散,可以明确地写为相对于均值的L2-loss。

Image-4

在mindspore张量中添加噪声而不是Pillow图像的过程。首先定义了图像转换,允许PIL图像转换到mindspore张量,并反之亦然。转换包括标准化图像,使其在[0,1]范围内,然后确保其在[-1,1]范围内,以便神经网络的反向过程能在一致缩放的输入上运行。

总结

扩散模型是一种基于噪声逐步去噪的生成模型,与其他生成模型如变分自编码器、生成对抗网络等相比,扩散模型较为简单,但在图像、音频、视频等领域取得了较好的效果。解释了扩散模型的前向和逆向过程,并给出了基于MindSpore框架的实现代码。 

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 00:42:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 00:42:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 00:42:03       45 阅读
  4. Python语言-面向对象

    2024-07-20 00:42:03       55 阅读

热门阅读

  1. 基于深度学习的车距检测系统

    2024-07-20 00:42:03       17 阅读
  2. 有些面试,纯属是浪费时间和精力!

    2024-07-20 00:42:03       14 阅读
  3. 手写简易版Spring IOC容器02【学习】

    2024-07-20 00:42:03       13 阅读
  4. 新手教程---python-函数(新添加)

    2024-07-20 00:42:03       19 阅读