读论文SRCNN:Learning a Deep Convolutional Network for Image Super-Resolution
Learning a Deep Convolutional Network for Image Super-Resolution
SRCNN是深度学习应用于SR领域的开山之作。
Pytorch代码 与论文的细节设置有些不同。
实验细节总结:
1 数据集
set5:5张图片
set14:14张图片
用到的数据集为set5、set14、ImageNet。
其中,为和之前其他的方法保持相同的条件,先用91张图片作为训练集,set5、set14作为测试集,其中set5的5张图片用作x2x3x4的测试集,set14的14张图片用作x3的测试集。得出的模型效果比之前其他的方法更好。随后用ImageNet的大数据量训练(网络的参数发生了一些改变),得出训练数据集的增加,会给结果带来更好效果,同时训练时间和推理时间也会增加。
在文章的4 Experiments中,描述如下,
Datasets. For a fair comparison with traditional example-based methods, we use the same training set, test sets, and protocols as in [20].
Specifically, the training set consists of 91 images.
The Set5 [2] (5 images) is used to evaluate the performance of upscaling factors 2, 3, and 4, and Set14 [28] (14 images) is used to evaluate the upscaling factor 3.
In addition to the 91-image training set, we also investigate a larger training set in Section 5.2.
具体来说,训练集包含91张图片。set5的五张图片用来估计模型在上采样x2,x3,x4时的表现,set14用来估计模型在上采样x3的表现。除了91张图片之外,在5.2节也用了大数据集训练。
值得注意的是,文章中提出了sub-images(即子图)的概念。
在训练阶段,地面真实图像{Xi}是从训练图像中随机裁剪出来的32张32×32像素的子图像。我们所说的“子图像”是指这些样本被视为小的“图像”而不是“补丁”,在这个意义上,“补丁”是重叠的,需要一些平均作为后处理,但“子图像”不需要。为了合成低分辨率样本{Yi},我们用适当的高斯核模糊子图像,用放大因子进行子采样,并通过双边插值对相同的因子进行放大。这91张训练图像提供了大约24,800张子图像。子图像从原始图像中提取,步幅为14。我们尝试了较小的进步,但没有观察到显著的性能改善。从我们的观察来看,训练集足以训练所提出的深度网络。
2 实验流程
输入为32x32像素的子图sub-image,经过三层卷积,得到输出。
提前对输入input进行了双三次插值,所以网络的输入和输出是相同大小的。
第一层卷积的参数为:(kernel size)9x9,(input channel)1,(outputchannel)64
第二层卷积的参数为:1x1,64,32
第三层卷积的参数为:5x5,32,1
至于为什么第一层网络中输入通道为1,文章中这样说是为了和之前的方法进行对比,所以采用相同的通道数。
在[20]之后,我们在实验中只考虑亮度通道(在YCrCb颜色空间中),所以在第一/最后一层考虑c=1。
这两个色度通道仅为显示的目的而进行双边上采样,而不是用于训练/测试。
请注意,我们的方法可以通过设置c=3来扩展到直接的彩色图像训练。
我们使用c=1主要是为了与以前的方法进行公平的比较,因为大多数方法只涉及亮度通道。
步长s=1;训练时为避免边缘效应,无padding;测试时为保持和input image相同的大小,padding填充0。
所以,训练时的网络输出为20x20像素的子图。因为损失函数为MSE损失函数,所以调整损失函数为仅通过Xi(input image)的中心20×20与网络输出之间的差异来评估。
为了解决边界效应,在每个卷积层中,每个像素的输出(在ReLU之前)被有效输入像素的数量归一化,这可以预先计算。(ReLu激活之前归一化输入像素)
卷积核(kernel or filter)初始化为从一个均值为0,标准差为0.001(偏差为0)的高斯分布中随机抽取来初始化。
前两层的学习率为 \(10^{-4}\) ,最后一层的学习率为 \(10^{-5}\).作者通过经验发现,在最后一层的一个较小的学习速率对网络的收敛是很重要的(类似于去噪的情况[12])。
优化方式为普通的梯度下降SGD。
文章中没写epoch,batch-size。只写了训练 \(8 \times 10^8\) 个反向传播需要三天时间。
网络结构:
3 损失函数:MSE损失函数
其中,n为像素点的个数,F为网络的输出,X为网络的输入,i表示第i个图像。其中,训练集和测试集的计算方式有区别。
4 实验结果
表一 在set5数据集上的PSNR(dB)和测试时间(sec,秒)
表2 set14数据集上的PSNR(dB)和测试时间(sec)
5 实验配置
GTX 770 GPU
c++
IntelCPU3.10 GHz
16GB内存
读论文SRCNN:Learning a Deep Convolutional Network for Image Super-Resolution的更多相关文章
- 论文学习 :Learning a Deep Convolutional Network for Image Super-Resolution 2014
(Learning a Deep Convolutional Network for Image Super-Resolution, ECCV2014) 摘要:我们提出了一种单图像超分辨率的深度学习方 ...
- 论文笔记之:UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS
UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS ICLR 2 ...
- ASPLOS'17论文导读——SC-DCNN: Highly-Scalable Deep Convolutional Neural Network using Stochastic Computing
今年去参加了ASPLOS 2017大会,这个会议总体来说我感觉偏系统和偏软一点,涉及硬件的相对少一些,对我这个喜欢算法以及硬件架构的菜鸟来说并不算非常契合.中间记录了几篇相对比较有趣的paper,今天 ...
- ASRWGAN: Wasserstein Generative Adversarial Network for Audio Super Resolution
ASEGAN:WGAN音频超分辨率 这篇文章并不具有权威性,因为没有发表,说不定是外国的某个大学的毕业设计,或者课程结束后的作业.或者实验报告. CS230: Deep Learning, Sprin ...
- Deep Learning 27:Batch normalization理解——读论文“Batch normalization: Accelerating deep network training by reducing internal covariate shift ”——ICML 2015
这篇经典论文,甚至可以说是2015年最牛的一篇论文,早就有很多人解读,不需要自己着摸,但是看了论文原文Batch normalization: Accelerating deep network tr ...
- 论文笔记(6):Weakly-and Semi-Supervised Learning of a Deep Convolutional Network for Semantic Image Segmentation
这篇文章的主要贡献点在于: 1.实验证明仅仅利用图像整体的弱标签很难训练出很好的分割模型: 2.可以利用bounding box来进行训练,并且得到了较好的结果,这样可以代替用pixel-level训 ...
- DCGAN: "Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Network" Notes
- Alec Radford, ICLR2016 原文:https://arxiv.org/abs/1511.06434 论文翻译:https://www.cnblogs.com/lyrichu/p/ ...
- Discriminative Learning of Deep Convolutional Feature Point Descriptors 论文阅读笔记
介绍 该文提出一种基于深度学习的特征描述方法,并且对尺度变化.图像旋转.透射变换.非刚性变形.光照变化等具有很好的鲁棒性.该算法的整体思想并不复杂,使用孪生网络从图块中提取特征信息(得到一个128维的 ...
- 读论文Machine Learning for Improved Diagnosis and Prognosis in Healthcare
Deep Learning的基本思想 假设我们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为: I =>S1=>S2=>…..=>Sn => ...
- Paper | Compression artifacts reduction by a deep convolutional network
目录 1. 故事 2. 方法 3. 实验 这是继SRCNN(超分辨)之后,作者将CNN的战火又烧到了去压缩失真上.我们看看这篇文章有什么至今仍有启发的故事. 贡献: ARCNN. 讨论了low-lev ...
随机推荐
- day12 多线程1.进程与线程 & 2.线程生命周期 & 3.线程同步机制
day12 bigDecimal,用于计算钱的数据类型 多线程 线程与进程 进程 1)执行中的应用程序 2)一个进程可以包含一个或者多个线程 3)一个进程至少要包含一个线程(如main方法) 线程 线 ...
- <一>智能指针基础
代码1 int main(){ //裸指针,手动开辟,需要自己释放,如果忘记了或者因为 //程序逻辑导致p没有释放,那么就会导致内存泄漏 int *p=new int(10); if(***){ re ...
- 【大数据-课程】高途-天翼云侯圣文-Day1:互联网大数据揭秘(大数据介绍&MR实现双十一举牌)
一.大厂职级 P7:年薪百万 二.大数据发展 1.职业路线和岗位角色 2.大数据行业发展 三.大数据的位置 1.热门行业 大数据承上启下 2.三者关系 啤酒和尿不湿:启发可以放在一块 3.大数据作用 ...
- SAP程序发布流程
更改程序名称 如果你想要更改程序名称的话,首先进入程序,关闭编辑,只显示代码 点击重命名就可以了 或者直接输入事务代码se38进入APAP编辑器,输入程序名称,重命名 为程序创建事务代码 事务代码为s ...
- python算法初步(一)
python算法初步(一) 冒泡排序 时间效率O(n²)原理:依次比较相邻两个位置的元素大小,然后按照要求交换位置. #从中选出一个数据(作为最小数据),然后和其他的数据依次比较,如果有更小的数据,那 ...
- Yearning建立流程和数据源进行测试
1.前提说明 前面已经搭建好了平台,并且接入了LDAP.邮箱和钉钉,现在就是建立一下数据源和流程来进行测试,如果有什么疑问可以看上一篇文章安装Yearning审核平台 2.建立流程 2.1 新建流程 ...
- Python 为什么如此设计?
大概两年半前,我萌生了要创作一个新的系列文章的想法,也就是"Python为什么",试图对 Python 的语法及特性提出"为什么"式的问题,以此加深对它的理解, ...
- 【Linux】TCS34725 颜色传感器设备驱动
一.概述 此笔记主要是学习 Linux 中的 I2C 驱动,顺便验证一下 TCS34725 传感器的使用,主要内容还是程序记录,方便编写其他 I2C 设备驱动时做参考,所以关于 TCS34725 这里 ...
- python进阶之路6之 for循环方法
while循环补充说明 1.死循环 真正的死循环是一旦执行 CPU功耗会极速上升 直到系统采取紧急措施 尽量不要让CPU长时间不间断运算 2.嵌套及全局标志位 强调:一个break只能结束它所在的那一 ...
- 《深度探索C++对象模型》第四章 Function语意学
member function相对于nonmember function之间不存在效率之间的差别,因为编译器内部已经将"member 函数实体"转化为对等的"nonmem ...