Multi-Stage Progressive Image Restoration 论文笔记

文章提出一种新的多阶段图像恢复网络,通过多个编码器-解码器子网络学习空间上下文信息,并在原始分辨率上保留位置信息。创新点包括多尺度特征融合、有监督注意力模块和跨阶段融合机制。实验展示了在网络在去雨、去模糊和降噪任务上的应用,但作者认为单阶段网络可能更具优势,且模型设计复杂。

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

引言

大部分图像降噪、去雨等网络模型都是单步的,也是直接参考目标检测、实例分割那边的网络结果直接演化过来的,然而,多步的网络结果也是存在的,它将图像恢复任务通过很多个编码器-解码器结构的网络模型分解成很多个小的子任务,从而更好地提取不同的空间特征和上下文信息,进行更好地特征融合。于是,该论文就是在这个基础上提出来的。多阶段优点的是相比于单阶段的编码器-解码器结构,由于存在下采样使得会丢失一部分的空间相关信息;但是如果不进行下采样的话,感受野就非常有限,使得不能完全关注某些全局的信息。所以对于是否进行下采样来说,这是一个矛盾的问题,在此基础上提出了多阶段的解决方法,早期阶段结合了编码器-解码器的优点,同时最后阶段基于原始分辨率,尽可能地少丢失了原图的信息。

主要创新点如下:①提出了一种新的多步图像恢复任务的网络结构,可以很好地理解上下文和空间的信息。

②提出了新的Attention的有监督学习的模块。

③提出了在不同步中的多尺度特征融合的方法。

网络结构

网络一共有三个阶段,第一、第二个阶段是基于编码器-解码器结构的子网络,目的是学习空间上下文的信息;由于图像恢复对位置信息非常敏感,第三个阶段在原始输入图像的分辨率上进行操作,保留位置信息和精细化的信息。在每两个阶段之间都会加入一个SAM有监督的注意力模块,并且提出了一种跨阶段的特征融合机制来融合多尺度的特征。

在第一个阶段将输入图像分成了四个patch进行输入,在第二个阶段分成了两个,在第三个阶段将整个原图作为一个输入。

损失函数

在损失函数中也分为三个阶段,每个阶段的损失函数分为两个部分,一部分是Charbonnier损失,是每个阶段的预测图和GT之间的平方差加上高斯噪声后开根号,另外一部分是边缘的损失,计算如下。

 特征提取网络

 特征提取网络的前两个是基于U-net编码器-解码器结构,首先,输入图像进来先进入一个卷积层后再进入CABs模块,如下图(b),由n个CAB模块组合成,然后进入U-net,Unet的编码器和解码器之间也是经过CAB模块连接的,最后是通过一个双线性采样和一个卷积层进行输出。

在最后阶段的ORSNet中,没有使用任何的下采样,包含了多个CAB模块组成。

特征融合机制

第一阶段和第二阶段的特征融合如上图(c),第二三阶段融合如图(d),这样设计的优势是没有因为上采样或者下采样而导致特征丢失。

Supervised Attention Module

 将第一阶段得到的特征图经过1×1的卷积后通道数变为3,和原图相加得到该阶段恢复的图像,然后经过卷积层和sigmoid激活函数计算注意力特征图,再和特征图进行累加后输入到下一阶段。

实验

去雨

去模糊

降噪

消融实验

 

总结

总体来说提供了新的思路,网络不应该局限于单阶段,但是个人认为网络融合成单阶段是必然趋势,不管是从运行速度还是模型大小来说,单阶段的网络优势还是非常大。另外,就这篇论文来说,模型设计有点过于复杂了,虽然说避免下采样可以防止丢失信息,但是残差网络不就是为了解决这个问题的吗?不一定非得使用多阶段的方法,有点小题大做,当然这也只是我个人的想法,至少在这篇文章不足以证明多阶段有非常大的优势。但是作为一种新的思路来说也是不错的,另外整个模型设计没有特别有章法,没有给出具体说明,而且图不够清晰,个人认为有点欠缺。

 

### 关于低光照条件下的多流渐进恢复用于暗图像增强和去噪 在低光照条件下,图像通常会受到噪声的影响,导致视觉质量下降。为了应对这一挑战,研究者们提出了多种方法来提高图像质量和减少噪声。其中一种有效的方法是采用多流渐进恢复策略来进行低光图像增强和去噪。 #### 多流渐进恢复的工作原理 该方法通过多个并行处理路径(即多流),逐步改善输入图像的质量。每一流专注于不同的特征提取或特定类型的降噪操作。随着网络层次加深,不同流之间的信息逐渐融合,从而实现更精细的细节保留和更好的去噪效果[^1]。 对于具体的技术实现方面,在北京交通大学的一项研究中提到的一种基于Transformer架构的设计——TCI (Transformer-based Cascaded Integration),它能够有效地捕捉空间上下文依赖关系,并且利用级联结构进一步增强了模型的学习能力[^2]。 ```python import torch from torchvision import transforms from PIL import Image class TCIModel(torch.nn.Module): def __init__(self, num_streams=3): super(TCIModel, self).__init__() # Define multiple streams here def forward(self, x): outputs = [] for stream in range(num_streams): output_stream = ... # Process each stream separately outputs.append(output_stream) final_output = sum(outputs)/len(outputs) # Simple averaging as an example return final_output def preprocess_image(image_path): transform = transforms.Compose([ transforms.Resize((256, 256)), transforms.ToTensor(), ]) img = Image.open(image_path).convert('RGB') tensor_img = transform(img).unsqueeze(0) return tensor_img if __name__ == "__main__": model = TCIModel() input_tensor = preprocess_image("path_to_low_light_image.jpg") enhanced_image = model(input_tensor) ``` 此代码片段展示了如何定义一个多流渐进恢复框架以及预处理函数以准备输入数据给定一个具体的图片文件路径。请注意这只是一个简化版本的实际应用可能更加复杂涉及到更多组件如注意力机制等特性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值