第七章 自监督学习与无监督去噪
喜欢可以在我的主页订阅专栏哟,至少更新6年~~,更到我上大学也可能会继续更~~
7.1 自监督去噪的核心思想
自监督学习通过设计无需干净图像的训练任务,从噪声数据中直接学习去噪映射。其核心优势在于摆脱对成对数据(噪声-干净图像)的依赖,适用于真实场景。
关键技术路线:
- 盲点学习:通过屏蔽部分输入像素,强制网络学习上下文信息
- 噪声建模:假设噪声统计特性(如零均值、独立性)构建损失函数
- 多帧融合:利用视频或多曝光图像中的时间冗余
7.2 经典自监督去噪方法
7.2.1 Noise2Noise
- 基本假设:噪声图像对 ( I_{\text{noisy}}^{(1)}, I_{\text{noisy}}^{(2)} ) 的期望值等于干净图像
- 损失函数:
[ \mathcal{L} = \mathbb{E}\left[ | f_{\theta}(I_{\text{noisy}}^{(1)}) - I_{\text{noisy}}^{(2)} |^2 \right] ] - 代码实现:
class Noise2Noise(nn.Module): def __init__(self): super().__init__() self.unet = UNet() def forward(self, noisy1, noisy2): denoised = self.unet(noisy1) loss = nn.MSELoss()(denoised, noisy2) return loss
7.2.2 Noise2Void
- 盲点策略:随机屏蔽输入像素,强制网络从周围像素推断
- 掩码生成函数:
def generate_mask(shape, p=0.2): mask = torch.ones(shape) mask[torch.rand(shape) < p] = 0 # 随机置零 return mask - 损失函数:仅计算被屏蔽位置的预测误差
7.3 无监督去噪方法
7.3.1 基于生成对抗网络(GAN)的无监督学习
- CycleGAN架构:
- 生成器 ( G ): 噪声图像 → 干净图像
- 判别器 ( D ): 区分生成图像与真实图像分布
- 循环一致性损失:
[ \mathcal{L}{\text{cycle}} = \mathbb{E} \left[ | G^{-1}(G(I{\text{noisy}})) - I_{\text{noisy}} |_1 \right] ]
7.3.2 深度图像先验(DIP)
- 核心思想:神经网络结构本身隐式编码图像先验
- 优化目标:
[ \hat{\theta} = \arg\min_{\theta} | f_{\theta}(z) - I_{\text{noisy}} |^2 ]- ( z ): 随机噪声输入
- 早期停止策略防止过拟合噪声
7.4 基于对比学习的去噪方法
7.4.1 对比损失设计
- 正样本:同一图像的不同噪声实例
- 负样本:其他噪声图像
- 损失函数:
[ \mathcal{L} = -\log \frac{e{s_p/\tau}}{e{s_p/\tau} + \sum e^{s_n/\tau}} ]- ( s_p ): 正样本相似度
- ( s_n ): 负样本相似度
- ( \tau ): 温度系数
7.4.2 代码实现(SimCLR框架)
class ContrastiveDenoiser(nn.Module):
def __init__(self):
super().__init__()
self.encoder = ResNet50()
self.projection = nn.Linear(2048, 128) # 投影头
def forward(self, x1, x2):
h1 = self.encoder(x1)
h2 = self.encoder(x2)
z1 = self.projection(h1)
z2 = self.projection(h2)
return F.normalize(z1, dim=1), F.normalize(z2, dim=1)
# 对比损失计算
def contrastive_loss(z1, z2, temperature

2479

被折叠的 条评论
为什么被折叠?



