1. 去噪扩散概率模型
扩散模型是一类生成模型, 和生成对抗网络GAN 、变分自动编码器VAE和标准化流模型NFM等生成网络不同的是, 扩散模型在前向扩散过程中对图像逐步施加噪声, 直至图像被破坏变成完全的高斯噪声, 然后在反向采样过程中学习从高斯噪声还原为真实图像。在模型训练完成后,只需要随机给定一个高斯噪声,就可以生成丰富的真实图像。
2. 前向扩散
前向扩散过程就是向图像不断加高斯噪声,使其逐渐接近一个与输入数据相关的高斯分布。此处将未加噪声的数据记为,,是为被噪声破坏的原始数据分布,则在时刻的噪化状态和上一时刻之间的关系为:
其中:,表示高斯噪声分布,是与时刻t相关的噪声方差调节因子,是一个与初始状态维度相同的单位矩阵。则输入的条件下,的联合分布可以表示为:
则根据根据马尔科夫性可以直接得到输入的条件下时刻的噪化状态为
其中:, 。根据公式可以得到时刻的噪化状态与时刻的噪化状态的关系为:
其中:,通过不断取代递推可以得到时刻的噪化状态与输入之间的关系为:
其中:, 是两个高斯分布相加后的分布。第一步到第二步的公式推导需要说明一下,根据高斯噪声的特点,对于两个方差不同的高斯分布和,其相加后的高斯分布为,表现在公式中,即:
其中:两个高斯分布相加后的标准差为:
依此得到第二步,进而逐渐递推到最后一步。公式和公式的目的就是表明在前向扩散过程中,由于每步加的噪声均是同分布的高斯噪声,因此不需要逐步进行加噪,直接就可以由输入的到时刻的噪化状态。当,时刻的分布则几乎就是一个高斯分布,据此其可以定义为:
其中:表示积分,最终的噪化状态也可以在图像上看出其分布特点。
3. 反向采样
反向采样过程就是根据已有的噪化状态通过学习来估计噪声分布,进一步获得上一时刻的状态,并逐渐从高斯分布中构造出真实数据。根据前向扩散过程的结果,可以认为时刻噪化状态的后验分布,则联和分布也是一个马尔科夫链,其被定义为:
则时刻的噪状态可以由上一时刻的状态得到,其条件分布可以表示为:
其中:和分别为时刻由噪声估计网络得到的噪声均值和方差,为噪声估计网络的参数。此时,在输入为时,时刻的噪状态与上一时刻的状态之间的真实条件分布为:
其中:噪声后验分布参数, 分别为:
此处认为,即,则预测的后验条件分布变为:
即利用噪声估计网络来估计真实噪声分布均值,则公式中的噪声分布均值可以被估计为:
而根据公式已知时刻的噪化状态满足,则网络学习的优化目标就是让估计出的噪声分布接近真实的噪声分布,即:
而时刻的噪化状态可以表示为 (这块尚没搞清楚这个公式的由来,似乎与原论文中的公式不一样):
其中:。则根据不同时刻噪声估计网络对噪声分布的估计可以依据公式逐渐反向采样得到真实数据分布。
3. 图像条件扩散模型
在图像恢复任务中,必须使用条件扩散模型才能生成我们预期的恢复图像,实际中即将退化的图像作为条件引入到噪声估计网络中来估计条件噪声分布。如图所示:
4. 可以考虑改进的点
以下是我问chatGPT得到的答案:
- 引入天气退化图像恢复中:虽然扩散模型已经出现众多研究,但在图像去雨、去雾、去雨滴、去雪等方面的研究屈指可数;
- 改进噪声估计网络:经典的扩散模型是基于U-Net结构的,主要模块也是卷积 (也包括自注意力),近来有一些研究发现Transformer架构在扩散模型上可以取得更好地效果;
- Follow最新的更快地扩散模型:传统的扩散模型要进行图像恢复,一幅图片的处理时长基本都是几十秒,实时性太差,目前有一些研究提出快速反向采样的方法;
- 无监督:目前多数给予扩散模型的图像恢复算法仍然是有监督的 (当然不算是监督学习,只是条件生成),可以采用一些无监督策略来利用扩散模型实现图像恢复。
5. 实现代码
完整的用于图像恢复的扩散模型代码见:完整可直接运行代码,其中包括详细的实验操作流程,只需要修改数据集路径即可直接使用。
文章出处登录后可见!