Deeply-Recursive Convolutional Network for Image Super-Resolution 笔记

来源:互联网 发布:c语言有一个函数 编辑:程序博客网 时间:2024/05/16 17:30

首先介绍下,2016 CVPR的两篇SR oral是同一作者.
Deeply-Recursive Convolutional Network for Image Super-Resolution(DRN)
Accurate Image Super-Resolution Using Very Deep Convolutional Networks(VDSN)

先介绍DRN

Abstract:
如果训练中一类边缘信息出现在感受野中,那么重建过程,这一类边缘可以被识别并且强化。
超分率重建、图片降噪都属于图片恢复问题,所以应用深度学习方法时没有采用pooling层,而是增加带有参数的网络层。同时也带来一个问题,容易过拟合,需要更多的训练数据,模型变得越来越大。针对这个问题,这篇文章提出了深度递归网络用于超分辨率重建,所谓递归指中间隐层参数共享,参数数量减少,不过优化递归网络同样也容易出现梯度消失或者梯度爆炸,所以文章提出两个技巧: recursive-supervision and skip-connection. 系统流程图3a所示:
这里写图片描述
这里写图片描述
整个网络分三个部分,每个部分都只有一层隐层,只有inference 网络是递归的。
Embedding network :用于从RGB和灰度图像产生feature map。
inference network :解决超分辨率。
reconstruction network :用于把多个通道的转成三个通道的图片。
recursive-supervision : :训练递归网络也会出现梯度爆炸和梯度消失,所以作者使用递归层监督,可以让损失通过多条路径传播。
skip-connection: :使用该技巧的原因是超分辨率重建,低分辨率图像和网络输出的高分辨率图像有很高的相关性,而随着递归网络深度加深学习不到这种线性映射,所以通过该技巧可以使用大部分低分辨率信息用于重建高分辨率图像。
这里写图片描述

文章涉及的概念:如果训练时候一类边缘信息出现在感受野中,那么重建过程,这一类边缘可以被识别并且强化。

创新一: 因为重建过程只是重建图片的高频细节,所以低分辨图片的大部分信息可以用到的, 相比图b,增加低分辨率图片,作为ReconNet的输入(使skip connection).

创新二: DRN中间隐层使用递归层,共享网络参数,使得网络参数变少。DRN网络层的中间隐层的输出也可以用于最后的重建,文章里训练的时候后向传播可以有多条路径传播误差。下图DRN的训练目标函数, 网络隐层的参数共享,隐层输出的feature map参与重建,加入损失函数:
这里写图片描述
NOTE:图3b是deeply-supervised Nets(DSN)文章的流程图.DSN这篇文章实现分类效果,DRN跟DSN有类似的地方也有区别:

两篇的共同点都有对中间隐层监督学习,比如DSN中间隐层单独跟随判别器,加入总体的损失函数;DRN中间隐层输出的feature map输入重建网络,也加入总体的损失函数;增加隐层的 directness and transparency(Q不知道怎么翻译????)不同的地方:DSN中间隐层跟一个分类器参与训练优化,增加参数数量,训练完就丢掉,没用于最终的测试。DRN有集成了隐层的feature map参与最后的重建,该做法显著提升了效果.下图是DSN各个隐层的feature map,DSN 学习到的feature map更加直观.
这里写图片描述

最后重建的结果是D个输出的权重和,这篇文章的效果应该是目前为止最好的。
这里写图片描述

* 再介绍VDSR*

DRN网络是单网络多尺度,VDSR后者是单网络单尺度(因为训练过程加入多尺度训练),
这里写图片描述

先来回顾下何开明SRCNN:
这里写图片描述

图1

这里写图片描述
图2

这里写图片描述
图3

图片讲解:图片中的一个patch生成第一层的n1维度的vector,该操作可以认为是patch extraction、representation.第二层的n2维度的vector认为非线性变换,第三层认为重建操作.作者认为卷积神经网络把低分辨率字典训练,高分辨率字典训练,非线性变换,平均减法,求平均,以上操作都在优化卷积核中完成。
这里写图片描述
图4

这里写图片描述
图5

这里写图片描述
图6

这篇文章里面作者提出3个ideal:

一、

the deeper, the better: 作者认为网络越深、卷积核尺寸大小固定、感受野越大,表示输出时,可以利用的局部信息越多。
如何开明SRCNN文章里面图6实验,层数越深,效果并没有提高,因为收敛困难或者有的filter没有被激活,SRCNN网络加深到20层则很难收敛,若学习率设置小,收敛太慢,若学习率设置大导致梯度消失或者梯度爆炸。
但这篇文章里面作者使用Adjustable Gradient Clipping(可调梯度剪裁)技巧,使得网络加深训练速度提升,效果更好。20层网络(不包括RELU层)的训练时间只需要4小时,3层的SRCNN却要使用一周左右的时间训练。网络加深还有一个好处:感受野如果完全覆盖了某一种纹理,则这种纹理在后面的测试可以被识别出来,可以用于重建.
注意何开明的SRCNN和VDSR网路里面都没有pooling层,感受野的计算方式:
每一层filter size:3X3
第一层感受野大小:3X3

D层感受野:(2D + 1)x(2D + 1)
Adjustable Gradient Clipping(可调梯度剪裁):
这里写图片描述

2、

Residual Learning:使用残差网络层作为输出,收敛更快、效果更好(Q????)

3、

单网络多尺度, 训练的时候使用多个尺度图片,效果比单网络单尺度效果还要好.

1 0