扩散模型中的UNET

一、为什么UNET模型可以用于去噪网络

下采样部分: 能够提取图像的深层次特征,这些特征往往包含图像的重要结构和信息,而噪声通常被视为不相关的随机信息。通过卷积层的逐层处理,噪声信息在特征提取过程中被逐渐削弱。
上采样部分: 利用上采样和卷积操作恢复图像的尺寸和细节。跳跃连接结构将编码器的特征图直接传递给解码器,使得解码器能够利用更多的信息来恢复图像的细节,同时避免信息丢失和模糊。

二、扩散模型中的UNET是一个条件去噪网络,怎么实现的

我们知道普通的UNET是一个单独的去噪网络,扩散模型中的UNET是一个条件去噪网络,那这个条件去噪网络是怎么实现的呢,答案就是time embedding,实现过程如下图所示,我们可以把这个过程理解为一个查表操作,根据输入t,按照PositionalEmbedding 查找对应特征向量,再经过线性和非线性变换,最终得到一个指示向量,目的是告诉去噪网络,我现在在做的是第t步的去噪。
在这里插入图片描述

### UNet 架构在扩散模型中的应用 #### UNet 架构概述 UNet 是一种卷积神经网络架构,最初设计用于医学图像分割任务。该架构由编码器(下采样路径)和解码器(上采样路径)组成,两者之间通过跳跃连接传递特征图[^1]。 #### 编码器部分 编码器负责提取输入图像的高层次语义信息。每一层通常包含两个卷积操作,后面跟着一个最大池化层来减少空间维度并增加感受野。随着层数加深,特征图的空间分辨率逐渐降低,而通道数量逐步增加,从而捕捉更抽象的特征表示。 ```python import torch.nn as nn class EncoderBlock(nn.Module): def __init__(self, in_channels, out_channels): super(EncoderBlock, self).__init__() self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1) self.relu = nn.ReLU(inplace=True) self.pool = nn.MaxPool2d(kernel_size=2) def forward(self, x): x = self.relu(self.conv1(x)) return self.pool(x), x # 返回池化后的输出以及未池化的特征图供后续跳接使用 ``` #### 解码器部分 解码器的任务是对编码阶段获得的压缩表征进行重建,恢复原始尺寸的同时融合来自不同尺度的信息。每一步先执行转置卷积(反卷积),再拼接相应层次上的低级细节,最后经过若干标准卷积处理得到最终预测结果。 ```python class DecoderBlock(nn.Module): def __init__(self, in_channels, mid_channels, out_channels): super(DecoderBlock, self).__init__() self.upconv = nn.ConvTranspose2d(in_channels, mid_channels, kernel_size=2, stride=2) self.conv1 = nn.Conv2d(mid_channels * 2, out_channels, kernel_size=3, padding=1) self.relu = nn.ReLU(inplace=True) def forward(self, x, concat_input): upsampled_x = self.upconv(x) concatenated_features = torch.cat([upsampled_x, concat_input], dim=1) return self.relu(self.conv1(concatenated_features)) ``` #### 扩散过程整合 在扩散模型中,UNet 被用来作为条件生成对抗网络 (cGAN) 的一部分,其中噪声向量随时间步长 t 变化,并通过一系列正向传播步骤逐渐接近目标分布 p_data(x)[^2]。具体来说,在每次迭代过程中,当前状态会被送入修改版的 U-Net 中计算梯度更新方向;与此同时,为了稳定训练过程,还会引入额外损失项鼓励中间产物保持一定平滑性和连贯性[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值