论文阅读:Heavy Rain Image Restoration: Integrating Physics Model and Conditional Adversarial Learning

2019 CVPR

本篇文章是2019CVPR的一篇文章,主要是提出了一个两个阶段的网络,基于物理的主干网络+深度指导的GAN细化网络。

在这里插入图片描述

对于大雨中的场景,雨纹明显可见,密集的雨堆积或遮雨效果明显,图像被雨纹洗刷去,远处的场景相对更加模糊等。
本文主要提出了一种方法来解决大雨问题。网络结构主要分为两个阶段:基于物理信息的主干网络和深度信息指导的GAN细化网络。
1、第一阶段:根据基本的物理原理来估计雨纹、传输图和大气光。为了更可靠地提取这些分量,我们使用了一个引导滤波框架来将图像分解成低频和高频分量。这种过滤是由一幅无雨残差图像引导的——其内容用于以空间变化的方式设置两个通道的通频带,这样背景细节就不会与雨条纹混淆。
2、第二阶段,采用了一个深度指导的GAN去修复第一阶段中没有被恢复的背景细节,同时纠正引入的伪影。

创新之处:

1、整合了两个阶段的神经网络:物理子网络和细化子网络。物理子网络用于估计S、A、T,然后生成J。细化子网络则包含一个 cGAN 网络。
2、提出了一个雨纹感知分解,将雨纹分别分为包含雨纹的高频成分和包含雨积累的低频成分。解决了雨纹和雨积累的缠结问题,同时能使用低频成分解决估计大气光的问题。
3、提供了一种新的以一种与场景深度一致的方式来合成遮挡效果的合成数据生成管道。为了更加真实,还在传输图和背景上添加了高斯模糊来模拟暴雨场景下的散射效果。

前人工作:

1、目前存在的去雨的方法,大多都不是为大雨场景下设计的。
2、Kang等人提出第一个使用双边滤波器将输入图像分解为低频分量和高频分量的单幅图像去雨方法。这种方法下,高频成分包含了雨纹和高频背景细节
不足:它基于稀疏编码的字典方法不能区分真实的物体细节和雨条纹。
3、Li等人使用高斯混合模型(GMMs)作为背景和雨纹层的先验,将雨图像分解为无雨背景层和雨条纹层。还尝试使用预处理除雾步骤来解决雨水积累问题。然而,除雾步骤进一步增强了清晰雨条纹,导致雨条纹的对比度和强度远远高于训练数据。因此,后续的雨纹去除方法不能有效地去除提振的雨斑。
4、DDN。提出了一种基于图像分解步骤的深度细节网络解决方案,同样细节层包含了雨条纹和背景细节,这不利于雨条纹的学习。
5、JORDER。在他的递归框架中使用除雾方法[4]作为迭代步骤来去除雨水积累。
然而在暴雨场景中,大量隐藏在大气面纱中的噪声将通过去雾的方法得到增强,而这是JORD

基于扩散先验的统一感知与任务导向图像修复模型(UniRestore)是一个较为前沿的研究方向,旨在通过扩散模型(Diffusion Models)的先验知识来实现高质量的图像修复。扩散模型是一种生成模型,通过逐步添加噪声到数据中并学习逆过程来生成图像,其强大的生成能力和对细节的恢复精度使其成为图像修复任务的理想选择。 UniRestore 的核心思想是利用扩散模型的先验知识来指导图像修复过程,同时结合感知损失(Perceptual Loss)和任务导向损失(Task-oriented Loss),以实现更自然、更符合语义的修复结果。该方法通常包括以下几个关键模块: 1. **扩散先验模块(Diffusion Prior Module)**:该模块基于预训练的扩散模型,提供高质量的图像结构和纹理先验信息,帮助修复过程中生成更真实的图像内容。 2. **感知损失(Perceptual Loss)**:用于衡量修复区域与真实图像在特征空间中的相似性,确保修复结果在视觉上更加自然。 3. **任务导向损失(Task-oriented Loss)**:根据具体任务需求(如边缘保持、颜色一致性等),设计特定的损失函数,以增强修复结果的任务相关性[^1]。 在实现上,UniRestore 通常采用多阶段修复策略,首先利用扩散先验生成初步修复结果,再通过感知和任务导向损失进行精细化调整。这种方法能够有效结合扩散模型的强大生成能力和传统修复方法的精确控制能力。 以下是一个简化的 UniRestore 模型实现示例(伪代码): ```python import torch from diffusion_model import DiffusionPrior from loss_functions import PerceptualLoss, TaskOrientedLoss class UniRestore(torch.nn.Module): def __init__(self): super(UniRestore, self).__init__() self.diffusion_prior = DiffusionPrior() self.perceptual_loss = PerceptualLoss() self.task_oriented_loss = TaskOrientedLoss() def forward(self, input_image): # 利用扩散先验生成初步修复结果 initial_restored = self.diffusion_prior(input_image) # 通过感知损失和任务导向损失进行优化 refined_restored = self.optimize_with_losses(initial_restored) return refined_restored def optimize_with_losses(self, image): # 优化逻辑 return image # 返回优化后的图像 ``` ### 相关问题 1. 如何在实际应用中选择合适的扩散模型作为先验? 2. UniRestore 中的感知损失和任务导向损失如何具体设计? 3. 扩散模型在图像修复任务中有哪些优势和局限性? 4. UniRestore 模型的训练数据和评估指标有哪些要求? 5. 如何提高基于扩散先验的图像修复模型的计算效率?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值