deep image prior (cvpr 2018)

深度图像先验(DIP)利用网络参数的特性,即高噪声阻抗和低信号阻抗性,快速收敛信号信息,而使噪声缓慢收敛,从而在早期迭代中获得高质量图像。这一特性适用于去噪、超分辨率和图像修复等任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

deep image prior (cvpr 2018)

1 结论:因为网络参数具有高噪声阻抗和低信号阻抗性,相当于给网络w加了一个约束。此时信号收敛的更快,而噪声收敛的较慢,使得前期输出的图像主要是信号相关信息。

 

2 为什么网络参数具有高噪声阻抗和低信号阻抗性?

2.1实践出真理:

论文考虑最基本的重建问题:

构建网络,输入为固定分布的的随机编码,GTX,而X为如下四种:

一张自然图像A,自然图像A+噪声,被随机破坏的自然图像A,白噪声

实验发现,当X为自然图像和加了噪声的自然图像时,网络收敛的更快更好。

另外两个也能一定收敛,但是慢,且没有前面两个收敛得好。

作者根据这个实验现象得出了一个结论:网络参数具有高噪声阻抗和低信号阻抗性,即喜欢有规则的信号,不喜欢无规则的噪声。并将其称作一种先验信息。

2.2 理论出真理:
引用:https://www.zhihu.com/question/263404981/answer/269351837

  论文主要对去噪,超分,图像修复三个任务进行实验了,因此从任务的角度解释:

  去噪:相对于高频的、无序(信息熵高)的噪声,低频、有规则的自然图像是更容易被编码的。通过训练,CNN能很自然地提取出自然图像中普遍的特征,完成生成干净图像的任务。而对于剩余的噪声,则是要依靠网络的死记硬背来完成。

 

3 具体怎么做:

  1. 用随机参数初始化深度卷积网络f。
  2. 令f的输入为服从一定分布的随机编码z。( 在一些实验中,我们发现在每次迭代中随机扰动z可以得到更好的结果。)
  3. 令f的目标为:输入z,输出x。以此训练f的参数。
  4. 设计loss。
  5. 当训练很久之后,f可实现输出一模一样的x。
  6. 但如果在查看迭代次数较少时的结果,会发现它会输出一幅“修复过的x”。

白话:输入为服从一定分布的随机向量(有扰动),gt是对应的退化图像,希望网络模型输出与GT尽量一致的图像,但是由于网络参数具有高噪声阻抗和低信号阻抗(喜欢信号,不喜欢噪声)的先验信息,使得信号会收敛得更快,而噪声则收敛得慢,导致迭代前期,因为信号提前收敛,而噪声还没有收敛,出现了清晰高质量的图像。如果一值迭代下去,则最终输出则跟GT基本一致。

 

 

4 结论:

  针对病态问题/不适定问题(多个解问题),往往需要通过正则化也就是先验信息来约束解的空间。例如L1/L2/TV 等各种正则化用于迭代/梯度下降优化。这里作者基于实验观察网络参数具有高噪声阻抗和低信号阻抗性的现象,将其理解为一种先验信息,即网络迭代训练前期可以得到修复过的图像。

Deep Image Prior的重要特点是,网络由始至终,仅使用了输入的被破坏过的图像做为训练。它没有看过任何其它图像,也没有看过正常的图像。但最终效果依然颇为不错。这说明自然图像的局部规律和自相似性确实很强。

 这种在观察空间重建的策略在DIP等工作中就已经被应用。它有个前提条件是对应的退化变换 ϕ 已知且可导,好在上色,补全,超分辨率这些任务所对应的退化变换(灰度化,裁剪,降采样)都满足该要求。

 

 

 

 

 

 

 

 

### Deep Image Prior 技术概述 Deep Image Prior 是一种利用神经网络结构本身作为正则化先验的方法,用于图像恢复任务。这种方法的核心思想在于通过训练一个随机初始化的卷积神经网络来拟合目标图像,而不需要额外的数据集或预训练模型[^3]。 #### 工作原理 Deep Image Prior 的核心机制依赖于这样一个观察:即使是在完全随机初始化的情况下,深层神经网络也能够隐含地表达复杂的图像结构特性。具体来说,在优化过程中,仅通过对输入噪声向量的学习即可重建高质量的目标图像。这种现象表明,神经网络架构本身就具有强大的归纳偏置能力,可以充当有效的图像先验。 以下是其实现的关键步骤: 1. **定义生成器网络** 使用一个标准的全连接层或者卷积神经网络作为生成器 \( G \),该网络接受随机噪声向量 \( z \) 作为输入,并输出一张合成图像 \( I_{synthetic} \)[^4]。 2. **损失函数设计** 定义一个适合特定任务的损失函数 \( L(I_{synthetic}, I_{target}) \),其中 \( I_{target} \) 表示目标图像。常见的损失形式包括像素级均方误差 (MSE) 或感知损失 (Perceptual Loss)[^5]。 3. **参数更新策略** 只有生成器中的权重被调整,而不涉及任何外部数据驱动的过程。这使得整个算法能够在单张图片上运行并快速收敛到合理的结果[^6]。 #### 实现代码示例 下面提供了一个简单的 PyTorch 版本实现框架供参考: ```python import torch from torchvision import transforms from PIL import Image class Generator(torch.nn.Module): def __init__(self): super(Generator, self).__init__() # Define your generator architecture here. def forward(self, x): pass # Implement the forward propagation logic. def deep_image_prior(target_img_path, num_iterations=5000): device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') transform = transforms.Compose([ transforms.ToTensor(), ]) target_img = Image.open(target_img_path).convert("RGB") target_tensor = transform(target_img).unsqueeze(0).to(device) gen_input = torch.randn((1, latent_dim, height, width)).to(device) model = Generator().to(device) optimizer = torch.optim.Adam(model.parameters(), lr=0.01) for i in range(num_iterations): synthetic_output = model(gen_input) loss = ((synthetic_output - target_tensor)**2).mean() optimizer.zero_grad() loss.backward() optimizer.step() if i % 500 == 0: print(f"Iteration {i}: Loss={loss.item()}") if __name__ == "__main__": deep_image_prior("./path_to_target_image.jpg", num_iterations=5000) ``` 上述代码片段展示了如何构建基本的生成器以及执行迭代优化过程以匹配给定的目标图像。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值