Accurate Image Super-Resolution Using Very Deep Convolutional Networks阅读笔记

代码地址:在我的csdn首页资源里下载
完全借鉴了kweisamx的代码,他的代码在复现原文的时候复现得非常棒,但是有2点问题,1.学习率自我调整;(作者其实也写了,只是注释掉了)2.测试结果只保存了最终的图图片,我认为还可以保存Bicbuic后的图片,以作对比。同时,我训练了两个模型,一个10层的一个20层的以作对比。但是我比较纳闷的是,生成的高清图像还是没有原始高清图像高清化,还望各位读者不吝赐教。
摘要:
我们提出了一种具有更高准确率的单张图像超分辨(SR)方法。我们受到用于imagenet分类的vgg-net的激励使用了一个非常深的卷积神经网络。我们发现增加网络深度在精度上表现出了一个重大意义的提高。我们的最终模型使用了20层的权重网络。 通过在深层网络结构中多次级联小型滤波器,可以高效利用大型图像区域的上下文信息。 然而,在网络非常深的情况下,收敛速度成为训练过程中的一个关键问题。 我们提出了一种简单而有效的训练过程。 我们通过可调梯度裁剪实现只学习残差并使用极高的学习率(比SRCNN的学习率 高出10000倍)。我们提出的方法在精度上表现优于现有的方法,并且在视觉上的改善也很引人注目。
1引言
srcnn很成功的引入了一个深度学习方法到sr问题,然而他有三个不足:
1.srcnn感受野太小
2.srcnn训练收敛太慢
3.srcnn只能用于一种放大倍数
所以我们提出以下三点去解决这些问题:
1.我们使用大的感受野
2.我们残差学习cnn和高学习率,但是高学习率又容易梯度爆炸,故采用梯度裁剪方法(gradient clipping)
3.使用不同倍数的降采样得到的低分辨图像进行训练
2相关工作
model :srcnn 包含三层,滤波器大小为9 × 9, 1 × 1, and 5 × 5 ,我们的网络模型包含20层,每层滤波器大小为 3 × 3,感受野就从原来 13 × 13增加到41 × 41 。
Training:srcnn直接将高清图像中的高频(高分辨细节)和低频(低分辨图像)信息全送入网络,导致训练收敛非常慢,而我们只对图像中的高频信息进行学习,效果当然好。
Scale :我们使用不同倍数的降采样得到的低分辨图像进行训练使网络可以多倍数的高清化图像。同时每层通过o padding使输出特征图大小一样且每层有一样的学习率。然后srcnn输出要比输入小且每层学习率不一样。
3提出的方法
vdsr网络结构
在此需要说明的是:
1.输入的lLR图像x是pdding扩充后的LR.因为输入本位低分辨图像,图像本来就小,感受野却很大,那么得到的特征图也就小,不好重构。
2.加relu是为了去除数据冗余,最大可能保留数据的特征
3.HR图像y=input+网络学习到的高分辨细节
损失=y-x-predic
4.通过使用基于反向传播的小批量梯度下降来优化回归目标来执行训练。初始参数0.9,通过权重衰减正则化(L2损失*0.0001)
5.可调梯度裁剪:我们将梯度限制到 [−θ/Y,θ/γ],Y指学习率。学习率越大,梯度越小。这让我们网络收敛得更快,我们20层的网络训练只要4个小时,而3层的srcnn训练要几天。
6.在准备多倍数低清图像时,使用了matconvNet包。因为训练的数据是用matlab生成的。
7.HR质量评估还是使用psnr、ssim这两个参数,时间作为网络模型性能的评估。本文方法均达到best performance
8.训练参数:epochs=80,bathsize=64,初始学习率0.1,往后每20个epochs10倍衰减。最后学习率降低了3倍,且在gpu tiranz上训练花了4个小时。
ok,欢迎同行交流。

猜你喜欢

转载自blog.csdn.net/u014727716/article/details/81432529