【图像复原】RDN论文详解(Residual Dense Network for Image Restoration)

article/2025/11/10 16:50:42

这是CVPR2018的一篇文章,提出了针对图像复原任务的CNN模型RDN(residual dense network)。

RDN主要是提出了网络结构RDB(residual dense blocks),它本质上就是残差网络结构与密集网络结构的结合。

1.残差网络(resnet)与密集网络(densenet)

《【图像复原】RDN论文详解(Residual Dense Network for Image Restoration)》 1.残差网络结构

  • 残差网络结构:在输入与输出之间引入一个前向反馈的shortcut connection,这有点类似与电路中的“短路”,即所谓的identity mapping(恒等映射y=x)。原本的网络是学习输入到输出的映射H(x),而残差网络学习的是F(x)=H(x)−x。
    残差学习有效缓解了随着网络深度增加引发的梯度消失的现象。使得提高网络深度,还能保持很好性能与效率。
    残差学习很适合做图像复原,因为低质图像与高质图像之间相似度很高,而他们的残差其实很稀疏,简单理解残差学习另网络需要学习的东西变少了。
    关于残差网络(resnet)的详解见我的另一篇文章:https://www.jianshu.com/p/11f1a979b384
    《【图像复原】RDN论文详解(Residual Dense Network for Image Restoration)》 2.密集网络结构
  • 相比resnet,densenet提出更激进的密集连接机制,即每个层都会接受前面所有层作为额外的输入。
    ResNet是每个层与前面的某层(一般2~3层)短路连接在一起,连接方式是通过元素相加;
    而DenseNet是每一层与前面所有层在channel维度上连接(concat)在一起,实现特征复用。
    密集连接有效缓解了梯度消失问题,加强特征传播,鼓励特征复用,减少了参数量。

2.RDN网络结构

《【图像复原】RDN论文详解(Residual Dense Network for Image Restoration)》 3.图(a)为针对超分任务的RDN、图(b)为针对去噪任务的RDN

2.1 RDN包含四个模块

  • Shallow feature extraction net(SFENet)表示前两个卷积层,用于提取浅层特征
  • Residual dense blocks(RDBs)融合残差模块和密集模块,每个块还包含Local feature fusion 和Local residual learning
  • Dense feature fusion(DFF)包含Global feature fusion 和Global residual learning 两部分
  • Up-sampling net(UPNet)网络最后的上采样(超分任务需要)+卷积操作

2.2 RDB(residual dense block)

《【图像复原】RDN论文详解(Residual Dense Network for Image Restoration)》 4.RDB的由来

RDB模块主要将残差模块residual block和dense block模块进行了整合,将两者集合起来,形成了residual dense block 。

《【图像复原】RDN论文详解(Residual Dense Network for Image Restoration)》 5.RDB的结构

每一个RDB包含以下三个模块,如上图所示:

  • Contiguous memory:将Fd-1、Fd,1 … Fd,c、Fd,C多层的特征都在channel这一维度串接(concat)起来。
  • Local feature fusion:concat之后的1*1的卷积操作,主要用于多通道的特征融合,降维作用
  • Local residual learning::将Fd-1、Fd,LF的特征进行融合。

2.3 DFF(dense feature fusion)

《【图像复原】RDN论文详解(Residual Dense Network for Image Restoration)》 6.针对去噪的RDN

如上图所示,所谓global residual learning和RDB中的local residual learning其实本质上没有不同,只不过一个是全局、一个是局部;但是有细节需要注意,global feature fusion和local feature fusion还是有不同的,因为在RDB中是每一层都接收到了之前所有层的特征,但是在RDB之外的global feature fusion只是把每一个RDB的特征串接起来。区别简单来说:全局的特征融合的短接用的更少,局部特征融合短接用的更多。

3.其他细节

  • 除了local/global feature fusion中的1*1的卷积,所有卷积核都是3 * 3的,并且通过padding,保持每一层的特征图大小不变。
  • 每一层的卷积核数量都是64。
  • 应对超分的RDN比去噪的RDN多了一个上采样层,相反去噪的RDN多了一个从LQ图像到HQ图像的短接。如图3所示。

4. 超分网络性能对比图:

《【图像复原】RDN论文详解(Residual Dense Network for Image Restoration)》 image.png

这张图来自其他论文,可见复原效果较好的网络,参数往往也很多,意味着模型的复杂度更高。


http://chatgpt.dhexx.cn/article/2EByaCO8.shtml

相关文章

超分之RDN

这篇文章提出了一种结合ResNet结构和DenseNet结构的深度超分网络——Residual Dense Network(后文简称RDN)。RDN基于Residual Dense Block(后文简称RDB)块以及全局残差连接来提取全局特征,而RDB块基于Dense结构和局部残差连接进一步提取局部特征。通过这种结构&…

Java线程中的用户态和内核态

内核态用户态是什么? 操作系统对程序的执行权限进行分级,分别为用户态和内核态。用户态相比内核态有较低的执行权限,很多操作是不被操作系统允许的,简单来说就是用户态只能访问内存,防止程序错误影响到其他程序,而内核态则是可以操作系统的…

「操作系统」什么是用户态和内核态?为什么要区分

「操作系统」什么是用户态和内核态?为什么要区分 参考&鸣谢 从根上理解用户态与内核态 程序员阿星 并发编程(二十六)内核态和用户态 Lovely小猫 操作系统之内核态与用户态 fimm 文章目录 「操作系统」什么是用户态和内核态?为…

用户态与内核态之间切换详解

用户空间和内核空间 用户程序有用户态和内核态两种状态。用户态就是执行在用户空间中,不能直接执行系统调用。必须先切换到内核态,也就是系统调用的相关数据信息必须存储在内核空间中,然后执行系统调用。 操作硬盘等资源属于敏感操作&#…

用户态和内核态 中断处理机制

操作系统 一、操作系统基础知识 1.1 用户态和内核态 1.1.1 定义:什么是用户态和内核态? Kernel 运行在超级权限模式(Supervisor Mode)下,所以拥有很高的权限。按照权限管理的原则,多数应用程序应该运行…

用户态和内核态:用户态线程和内核态线程有什么区别?

转载 文章来源于 拉钩教育 重学操作系统 林䭽 用户态和内核态:用户态线程和内核态线程有什么区别? 什么是用户态和内核态 Kernel 运行在超级权限模式(Supervisor Mode)下,所以拥有很高的权限。按照权限管理的原则&a…

什么是用户态和内核态

什么是用户态和内核态 从图上我们可以看出来通过系统调用将Linux整个体系分为用户态和内核态(或者说内核空间和用户空间)。 那内核态到底是什么呢?其实从本质上说就是我们所说的内核,它是一种特殊的软件程序,特殊在哪儿…

用户态和内核态之间的切换

用户态和内核态之间的切换 切换方式 从用户态到内核态切换可以通过三种方式,或者说会导致从用户态切换到内核态的操作: 系统调用,这个上面已经讲解过了,在我公众号之前的文章也有讲解过。其实系统调用本身就是中断,…

OS用户态和内核态

1、linux进程有4GB地址空间,如图所示: 3G-4G大部分是共享的,是内核态的地址空间。这里存放整个内核的代码和所有的内核模块以及内核所维护的数据。 2、特权级的概念: 对于任何操作系统来说,创建一个进程是核心功能。…

用户态和内核态区别

操作系统用户态和内核态之间的切换过程 1. 用户态和内核态的概念区别 究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能…

操作系统用户态和内核态之间的切换过程

操作系统用户态和内核态之间的切换过程 1. 用户态和内核态的概念区别 究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和…

用户态和内核态的内存管理

内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。 用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥…

CPU的用户态和内核态

内核从本质上看是一种软件——控制计算机的硬件资源 用户态和内核态也可以说是对应系统执行权限的一个分级 个人理解慎浅,多是参考别人的文章,日后工作之于在研究 文章目录 指令集一、用户态二、内核态三、用户态和内核态切换状态四、态切换的消耗4.1、上…

用户态和内核态切换

1. 切换方式 从用户态到内核态切换可以通过三种方式,或者说会导致从用户态切换到内核态的操作: 系统调用,这个上面已经讲解过了,在我公众号之前的文章也有讲解过。其实系统调用本身就是中断,但是软件中断&#xff0c…

计算机内核态和用户态,用户态和内核态的区别是什么

用户态和内核态的区别是,内核态运行操作系统程序,操作硬件,用户态运行用户程序;当程序运行在3级特权级上时,可以称之为运行在用户态,当程序运行在0级特权级上时,称之为运行在内核态。 本文操作环…

从根上理解用户态与内核态

欢迎来到操作系统系列,采用图解 大白话的形式来讲解,让小白也能看懂,帮助大家快速科普入门。 本篇文章开始探秘用户态与内核态,虽然一般面试不会问这个,但搞清楚这块,对我们理解整个计算机系统是及其有意…

详解内核态与用户态

介绍下内核态与用户态 内核态和用户态是操作系统中的两种不同的运行状态,它们的区别如下: 权限不同:内核态是操作系统拥有最高权限的运行状态,可以访问系统的所有资源,而用户态只能访问受限的资源。 系统调用&#x…

用户态和内核态的简单理解

文章目录 linux基础系统调用和库函数的区别为什么要区分用户态和内核态?用户态和内核态的切换耗费时间的原因哪些情况会出出现用户态和内核态的切换用户态切换到内核态的三种方式 linux基础 linux的kernel内核外是系统调用,系统调用外是shell、库函数&a…

度量学习和pytorch-metric-learning的使用

度量学习是学习一种特征空间的映射,把特征映射到具有度量属性的空间中,所谓度量属性是指在某种度量距离(可以是欧氏距离、余弦相似性等)下类内距离更小,类间距离更大。有了这种属性之后,就可以仅根据特征间…

深度度量学习 (metric learning deep metric learning )度量函数总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_16234613/article/details/81210320 曼哈顿距离(CityBlockSimilarity) 同欧式距离相似&#x…