超分辨率-RDN[通俗易懂]

超分辨率-RDN[通俗易懂]一、简介RDN——ResidualDenseNetwork——残差深度网络RDN是基于深度学习的超分方法之一二、结构RDN网络结构分为4个部分:1、SFENet(ShallowFeatureExtractionNet,浅层特征提取网络)2、RDBs(ResidualDenseBlocks,残差稠密块)3、DFF(DenseFeatureFusion,稠密特…

大家好,又见面了,我是你们的朋友全栈君。

一、简介

RDN——Residual Dense Network—— 残差深度网络
RDN是基于深度学习的超分方法之一,发表于CVPR 2018

二、结构

RDN网络结构分为4个部分:

1、SFENet(Shallow Feature Extraction Net, 浅层特征提取网络)
2、RDBs( Residual Dense Blocks, 残差稠密块)
3、DFF(Dense Feature Fusion, 稠密特征块 )
4、Up-Sampling Net(上采样网络)

在这里插入图片描述

2.1 SFENet

包含两个CONV层,用于提取浅层特征

2.2 RDBs

包含D个RDB,用于提取各层特征,一个RDB提取出一个局部特征。RDB结构如下图(c)所示:
在这里插入图片描述
可以看出,RDB = Residual block(残缺块) + Dense block(稠密块)
由于网络深度的增加,每层CONV层的特征会逐渐分级(得到hierarchical features),因为有不同的感受野(receptive fileds)。而Hierarchical features对图像重建提供了重要信息, 我们要充分利用所有层的信息和特征。

一个RDB结构分为3个部分:

2.2.1 CM(Contiguous Memory 近邻记忆)

RDB含有C个[CONV+ReLU],CM机制会将上一个RDB的状态发送到当前RDB中的每一个CONV层,也就是图(c)的小桥们

2.2.2 LFF(Local Feature Fusion 局部特征融合)

LLF将前一个RDB的各个状态与当前RDB的所有CONV层融合在一起。
RDN中,前一个RDB输出的feature-map 是直接与当前RDB串联起来的,这时,减少feature的数量就很有必要了。
我们使用一个11的CONV来减少feature的数量/控制输出信息:11CONV用于减少通道数,并保持nh,nw不变(具体看吴恩达深度学习4.2.5笔记)

2.2.3 LRL(Local Residual Learning 局部残差学习)

也就是将以下两者加起来,看c图下部的红箭头以及绿色加号:
前一RDB的输出 + 上面LFF的1*1CONV的输出
引入LRL以进一步提高信息流、提高网络表示能力,以达到更好的性能


2.3 DFF(Dense Feature Fusion, 稠密特征块 )

DFF在全局上提取各层特征。
包含两个部分:

2.3.1. GFF(global feature fusion 全局特征融合)

GFF 用于将所有RDB提取到的特征融合在一起,得到全局特征。GFF分为两部分:

 1x1 CONV 融合一系列的特征(1*1CONV的作用就是减少通道数,并保持Nh, Nw,详见吴恩达4.2.5)
 3x3 CONV 为下一步的GRL进一步提取特征
2.3.2. GRL(global residual learning 全局残差学习)

就是RDN结构图中的绿色加号
就是实现:
浅层特征 + 所有RDB提取到的特征

2.4 UPNet(Up-Sampling Net 上采样网络)

该模块表示网络最后的上采样+卷积操作。实现了输入图片的放大操作。


三、实现细节

  1. 除了用于融合局部或全局特征的CONV层的kernel size = 1×1 外,其他的CONV层都是 3×3的
  2. kernel size = 3×3的CONV层,都用SAME padding 以保持inputsize不变
  3. 浅层特征提取层、局部全局特征融合层的CONV的filter数量都是G0 = 64
  4. 其他层(RDB中)的CONV的filter数量都是G,并使用ReLU作为其激活函数
  5. 使用ESPCNN来提高粗分辨率特征,从而使得UPNet性能更好(???)
  6. RDN最后的CONV,若需要输出彩色高清图像,则可设置其输出的channel = 3;若需要输出灰度高清图像,可设置其输出的channel = 1

四、讨论(与其他网络的区别)

4.1 Difference to DenseNet

  1. 受DenseNet的启发,将局部密集连接加入到了RDB中
  2. 与DenseNet不同:移除了BN层,以提高运算速度降低计算复杂度和GPU内存的消耗
  3. 与DenseNet不同:移除了Pooling层,防止其将像素级的信息给去除掉
  4. 在RDN中,我们使用了局部残差学习,来将密集连接层和局部特征融合(LFF)结合起来
  5. 在RDN中,前一个RDB提取到的特征会与当前RDB的每一个CONV直接连接起来(局部特征融合LFF),更好地保障了信息流的贯通
  6. 与DenseNet不同:使用GFF将各RDB提取的特征全部concat起来,充分利用。而DenseNet 整个网络中只使用每一个DenseBlock最后的输出。

4.2 Difference to SRDenseNet

  1. RDN在三个方面对SRDenseNet的DenseNet进行了改进:
    1)加入了CM机制,使得先前的RDB模块和当前的RDB模块都有直接接触
    2)使用了LFF,使得RDB可以用更大的增长率
    3)RDB中的LRL模块增加了信息和梯度的流动
  2. 在RDB中,提取全局特征时不使用Dense Connection,取而代之的是DFF(Dense Feature Fusion, 稠密特征块,包含GFF和GRL)
  3. 损失函数:SRDenseNet使用L2 ;RDN使用L1(提高了性能,加快了收敛)

4.3 Difference to MemNet

  1. 损失函数:MemNet使用L2 ;RDN使用L1(提高了性能,加快了收敛)
  2. MemNet要用Bicubic插值方式对LR图片进行上采样,从而使LR图片达到所需的大小,这就导致特征提取和重建过程都在HR空间(高分辨率空间)中进行;而RDN从原始的LR图片(低分辨率图片)提取各层特征,很大程度上减少了计算的复杂度,并提高了性能
  3. MemNet中包含了递归和门限单元,这使得当前层不能接收上一层的输入,而RDB的前后模块是有交互的
  4. MemNet 没有全部利用中间的特征信息,而RDN通过Global Residual Learning 将所有信息都利用起来。

五、实验及结果

5.1 实验设置:

数据集
  1. 数据集: DIV2K(800 training imgs + 100 vali imgs + 100 testing imgs)
  2. 训练:DIV2K——800 training img + 5 vali img
  3. 测试:五个standard benchmark datasets:Set5 [1], Set14 [33], B100 [18], Urban100 [8], and Manga109 [19].
退化模型

训练的输入图片(LR)使用DIV2K的高清图片通过下面3种退化模型得到:

  1. BI模型:Bicubic插值方式对高清图片进行下采样, 缩小比例为x2,x3,x4
  2. BD模型:先对高清图片做(7*7卷积,1.6方差)高斯滤波,再对滤波后图片做下采样, 缩小比例为x3。
  3. DN模型:①Bicubic插值方式对高清图片进行下采样, 缩小比例为x3,②再加30%的高斯噪声。
训练设置
  1. 在每个训练batch中,随机取出16张RGB的LR patches(shape = 32 * 32)作为输入
  2. 随机地对patches做数据增强——上下翻转,垂直翻转90°等
  3. 一个epoch包含1000个iteration
  4. 使用Touch7框架来写RDN,并使用Adam作为优化器
  5. 所有层的学习率初始化都是10-4,并且每200个epoch就减少至一半
  6. 训练RDN需要一天的时间,泰坦GPU,200个epoch
超参D/C/G的设置

在这里插入图片描述
从上图看出,大的D/C/G值能提升性能,原因是加深了网络深度

Ablation Investigation(消融研究)

在这里插入图片描述
可看出, CM, LRL, and GFF 缺一不可,缺一个性能就下降

实验结果(退化模型下)
  1. 在BI退化模型下:
    在这里插入图片描述在这里插入图片描述
    可看出,RDN的重建效果最佳
  2. 在BD和DN退化模型下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    可看出,依然是RDN的重建效果最佳

实验结果(真是图片下)

在真实图片下,不再有原始的高清图片(如DIV2K),因此也当然没有退化模型,真实图片的退化模型(比如湍流大气和视宁度造成的模糊)都是未知规律的
在这里插入图片描述
从结果可以看出,分层特征对于不同或未知的退化模型执行依然有鲁棒性(强健)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150421.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python怎么安装matplotlib.pyplot_python安装matplotlib模块

    python怎么安装matplotlib.pyplot_python安装matplotlib模块总结经验,前排感谢CSDN大神…一、在Pycharm中安装matplotlib1、打开AnacondaPrompt,输入pipinstallmatplotlib输入pipinstallmatplotlib==3.3.0限制下载的版本为3.3.0.这是为了防止版本过新,之后在PyCharm运行时出现问题。2、打开PyCharm(1)依次点击File-Settings-…

  • jvm最全详解-05-JVM调优工具详解及调优实战[通俗易懂]

    jvm最全详解-05-JVM调优工具详解及调优实战[通俗易懂]jvm最全详解-05-JVM调优工具详解及调优实战前置启动程序事先启动一个web应用程序,用jps查看其进程id,接着用各种jdk自带命令优化应用Jmap此命令可以用来查看内存信息,实例个数以及占用内存大小jmap-histo14660#查看历史生成的实例jmap-histo:live14660#查看当前存活的实例,执行过程中可能会触发一次fullgc打开log.txt,文件内容如下:num:序号 instances:实例数量 b..

  • 史上最全设计模式导学目录(完整版)

    史上最全设计模式导学目录(完整版)圣诞献礼!2012年-2013年,Sunny在CSDN技术博客中陆续发表了100多篇与设计模式相关的文章,涵盖了七个面向对象设计原则和24个设计模式(23个GoF设计模式+简单工厂模式),为了方便大家学习,现将所有与设计模式学习相关文章的链接进行了整理,希望能给各位带来帮助!

  • 老电脑 升级 cpu性能排行 高性价比的cpu主板选择

    老电脑 升级 cpu性能排行 高性价比的cpu主板选择老电脑升级cpu性能排行高性价比的cpu主板选择4核ddr2ddr3

  • 小波变换–dwt2 与wavedec2

    小波变换–dwt2 与wavedec2https://www.cnblogs.com/xfzhang/p/7295041.htmlhttps://www.ilovematlab.cn/thread-45020-1-1.htmldwt2是二维单尺度小波变换,其可以通过指定小波或者分解滤波器进行二维单尺度小波分解。而wavedec2是二维多尺度小波分解.尺度可理解为级,即wavedec2可用于多级小波分解dwt2:[cA,cH,cV,cD]=dwt2(X,’wname’);wavedec2:[C,S]=wavede…

  • [分布式]:分布式系统的CAP理论

    [分布式]:分布式系统的CAP理论2000年7月,加州大学伯克利分校的EricBrewer教授在ACMPODC会议上提出CAP猜想。2年后,麻省理工学院的SethGilbert和NancyLynch从理论上证明了CAP。之后,CAP理论正式成为分布式计算领域的公认定理。CAP理论概述一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号