pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)

1. SRCNN

1.1. Contribution

end-to-end深度学习应用在超分辨领域的开山之作(非 end-to-end 见 Story.3 )。

指出了超分辨方向上传统方法( sparse-coding-based SR methods )与深度学习方法的关系,insightful 。

SRCNN网络非常简单,PSNR、SSIM 等却有小幅提升(< 1dB)。

应用(测试)时是完全 feed-forward ,因此网络速度比传统方法快。

1.2. Inspiration

SR 的本质 & 可行性

This problem (SR) is inherently ill-posed since a multiplicity of solutions exist for any given low-resolution pixel.

Such a problem is typically mitigated by constraining the solution space by strong prior information.

用样本训练 CNN ,就是在利用先验知识。

CNN 为什么比传统方法更简单还更好用

传统方法中,各个组件是分离的,比如图像预处理和字典学习。

传统方法着重于学习和优化 dictionaries ,但对其他部分鲜有优化。

但 SRCNN 是一个 LR 和 HR 之间的端到端网络。

其训练过程中的优化是一体的,比如,其卷积层负责 patch extraction and aggregation ,隐藏层充当 dictionaries ,统一被优化。

因此,我们只需要极少的 pre/post-processing ,同时能实现对整体框架的全面优化。

特征表示方法的不同

过去,我们用 a set of pre-trained bases such as PCA, DCT, Haar 来表示 patches 。

现在,我们用不同的卷积核,就实现了多样化的表示。

更简单:由于 overlapping ,因此卷积使用的像素信息比简单的字典映射更多。

1.3. Network

1.3.1. Pre-processing

将低分辨率的图片,通过 Bicubic interpolation 得到 \(\mathbf Y\) 。

注意我们仍然称之为 low-resolution image 。

1.3.2. Patch extraction and representation

从 \(\mathbf Y\) 提取出 overlapping patches ,每一个 patch 都代表一个 high-dimensional vector 。

这些向量共同组成 a set of feature maps 。

每一个 vector 的维数,既是总特征数,也是 feature map 的总数。

\[

F_1(\mathbf Y) = max(0, W_1 * \mathbf Y + B_1)

\]

1.3.3. Non-linear mapping

通过一个非线性变换,由原 high-dimensional vector 变换到另一个 high-dimensional vector 。

该 high-dimensional vector 又组成了一个 set of feature maps ,在概念上代表着 high-resolution patch 。

\[

F_2(\mathbf Y) = max(0, W_2 * F_1(\mathbf Y) + B_2)

\]

1.3.4. Reconstruction

生成接近 ground truth: \(\mathbf X\) 的 output 。

过去常用取平均的方法。实际上,平均也是一个特殊的卷积。

因此我们不妨直接用一个卷积。

此时,输出patch不再是简单的平均,还可以是频域上的平均等(取决于 high-dimensional vector 的性质)。

\[

F_3(\mathbf Y) = W_2 * F_2(\mathbf Y) + B_3

\]

注意不要再非线性处理。

1.4. Story

深度CNN日益受欢迎的3大诱因:

更强大的GPU;

更多的数据(如ImageNet);

ReLU的提出,加快收敛的同时保持良好质量。

CNN此前被用于 natural image denoising and removing noisy patterns (dirt/rain) ,用于 SR 是头一回。

这就是讲好故事的重要性,无非是映射 pairs 不同。

auto-encoder 也曾被用于超分辨网络,但仍没有摆脱 separated framework 的弊端。

1.5. Further Learning

Traditional sparse-coding-based SR methods.

从低分辨率图像到 \(\mathbf Y\) 采用的是 Bicubic interpolation ,实际上也是卷积。但为什么不当作卷积层呢?

文中解释,因为输出比输入还大,为了有效利用 well-optimized implementations sucha as cuda-convnet ,就暂且不当作一个“层”。

事实上,当输出大于输入时,CNN的效率会很低。可以继续往下学,后面就会逐渐体会。

2. FSRCNN

2.1. 亮点

将单个 wide mapping layer 分解成多个 layers with fixed filter size \(3 \times 3\) 。

复杂的非线性映射是最消耗运算资源的。减小尺寸,加大层数,极大提高了运算速度。

取消了 SRCNN 前端的双三次插值,将 LR 直接输入网络。

进一步减小了参数数量,进而提高了运算速度。

在 FSRCNN 末端采用反卷积层,而不是简单的插值升采样。

反卷积层从 high-dimensional feature maps 和真实 HR 中学习多个卷积核,实现了超越一般插值的恢复效果。

由于放在网络末端,因此网络运算速度与 HR 尺寸无关。

HR 尺寸可调,并且只需要重新训练利用特征的反卷积层,而不需要重新训练提取特征的CNN网络。

用PReLU替换ReLU,可以避免由 0 梯度带来的 dead features 现象。实验证明它更稳定。

2.2. Improvement

与SRCNN相比,速度提升了17到40倍(小型FSRCNN),在一般的CPU上实现了实时性。

原SRCNN在3倍 upsample \(240 \times 240\) 图像时,帧率只有1.32。但实时性要求24fps,差17倍。

恢复质量不减反升。

2.3. Analysis

限制原SRCNN运算速度的两大主谋:

升采样。设升采样因子为 \(n\) ,则运算时间增长至 \(n^2\) 倍。

非线性映射。该层越大,恢复质量越高,但时间越长。

对应的解决方法:

取消网络前端的升采样,在网络末端采用反卷积 deconvolution 。

此时,由于输入网络的是 LR ,因此运算时间只和 LR 图像的尺寸成比例。

把单个大的非线性映射层,分解为多个小的固定大小的滤波器。

2.4. Network

整体形状像一个前端小,后端大的沙漏:

我们着重理解一下最后的反卷积。

先回顾卷积:

假设输出维数为 \(d\) ,则对于每一维,都有一个特定的卷积核(相当于一个匹配模板)。

同一个卷积核,要对输入的每一个通道的每一个patch进行相同系数的卷积运算。

这样,输出的每一维都是一个 feature map ,组成一个有厚度的 feature maps 。

而反卷积恰好相反。

对于输入的 feature maps ,网络需要找到最佳的卷积核,使得输出经卷积运算后逼近 feature maps 。

前面的CNN,在大小固定,计算量受限的情况下,尽全力让 feature maps 承载足够的信息;

后面的反卷积层,即根据 \(d\) 种不同的特征,尽全力恢复 HR 图像。

由于每一个 map 的含义都不尽相同,因此如果将反卷积替换成一般的插值,PSNR将剧烈下降。

这是实验得到的反卷积图像,显然都学到了不同的特征:

反卷积还有一个好处:

当我们希望输出不同大小的 HR 图片时,我们只需要对该层进行调整,而不需要重新训练前面的CNN网络。

实验结果表明,PSNR基本没有变化。

理论解释是,前面的CNN只起到抽象特征的作用,如何从有限的特征恢复图像,基本上属于反卷积的任务。

2.5. Inspiration

通过减小单个层的体积,可以有效减小运算复杂度。

后面的 expanding 的表面作用是辅助升采样,本质作用是提高恢复质量(提高学习复杂度)。

实验证明,如果取消这一环节,PSNR会有0.3dB左右的下降。

理解:把一个相对 low-dimensional 的 feature maps 直接交给反卷积层学习,是困难的。

2.6. Further Learning

De-convolution.

下一节介绍。

CNNs acceleration.

PReLU.

3. ESPCN

3.1. Similarity & Network

作者的观点与FSRCNN有许多相似之处。在论文中提到:

Additionally, as noted by Dong et al. [6], there are no efficient implementations of a convolution layer whose output size is larger than the input size and well-optimized implementations such as convnet [21] do not trivially allow such behaviour.

因此,本文作者同样没有将 upscaling 放到CNN网络之中,并且也是在网络的最末端设置了一个额外的 upscaling 层: sub-pixel convolution layer ,以增强网络的实时性。

总而言之,卷积层不能在 HR space 上运作,否则计算成本就会很高。

3.2. The Drawback of Transposed Convolution ( Deconvolution )

本文也提到了转置卷积操作,同时指出:

However, any reduction (summing) after convolution is expensive.

关于转置卷积及其低效的解释,有以下推荐参考(点击超链接):

图解:

在原像素点周围补零;

将 kernel 转置(为什么?首先卷积可以看作一个稀疏矩阵乘法,则为了从相同尺寸的输出得到相同尺寸的“输入”,乘法矩阵就要转置);

然后进行正常卷积即可。

注意,我们是将kernel转置而不是求逆,因此转置卷积准确来说不应该称为逆卷积。

转置卷积可以用于 feature maps 可视化,但在运算速度上存在致命缺点:

首先,卷积是 highly parallelizable 的,原因在于卷积核对于某一维特征而言是固定的,因此可以并行计算各个patch。相比之下,转置卷积却很复杂。

We should add zero values to the upscale the image, that have to be later filled in with meaningful values.

Maybe even worse, these zero values have no gradient information that can be backpropagated through.

3.3. Efficient Sub-pixel Convolution Layer

为此,作者提出了新的 upscaling 结构:Efficient subpixel convolution layer 。

虽然名字带“卷积”,但具体实现居然只是一个简简单单的“PS”(重排)!!

重排方式见 Network 。其中要求通道数为 \(r^2\) ,这样才能实现重排。

为什么高效?

CNN仍然是在 LR space 上进行。

upscaling 是简单的重排,没有卷积运算。

为什么精度不降反升?

尽管重排是线性的,但前面的CNN是非线性的。

CNN的训练不再注重于简单的特征提取,而是注重于组合规则下的特征提取,并且速度更快的同时层数还能更多。

3.4. 亮点

A key assumption that underlies many SR techniques is that much of the high-frequency data is redundant and thus can be accurately reconstructed from low frequency components.

4. VDSR

学习这个网络前,要了解残差学习网络:我的另一篇博客

关于 SR 问题,作者指出3大限制因素:

It relies on the context of small image regions;

Training converges too slowly;

The network only works for a single scale.

为此,本文提出以下措施:

不再只从 LR 的小 patch 中获取信息,而利用 very big image regions ;

不再用重排和转置卷积,而是和 SRCNN 一样用插值法,一开始就得到同输出尺寸的图片。

采用残差学习;

作者认为,LR 图片中的低频信息被保留到 HR 图片中,需要重构的只有高频信息。

因此,低频映射没有必要学习,而是直接迁移即可。这是残差学习的一个比较好的解释。

采用较高的学习率( SRCNN 的 \(10^4\) 倍)以及 Adjustable gradient clipping ;

让梯度保持在一个较好的范围内。

Scale factor 可调,可以包含分数。比如需要缩放图片观看时很有用。

不需要重复训练网络,网络适应性非常好。

方法:训练集中包含多种尺寸的图片,同时训练。

其他特别之处:

由于深度的贡献非常明显,因此采用20层网络结构。

虽然滤波器尺寸固定为 \(3 \times 3\) ,但感受野仍然很大。

在图片边缘,由于卷积不能很好地执行,因此传统方法往往会裁掉边缘区域再输出。

而 VDSR 在每一层卷积前都填充 0 ,包括最后的输出也填充0。

这样做的效果非常好,图像边缘也被很好的预测了。

当图像信息被充分挖掘后,0 位置再填上有意义的数。

springcloud-netflix组件学习-未完待续!!!

SpringCloud学习 Spring Cloud是什么鬼? Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现 ...

浅析Oracle PL&sol;SQL 学习--未完待续

这是一篇关于Oracle Pl/SQL数据库编程的课程学习分享... 首先说明几点: 学习这门课程之前,已经学过并且掌握一些基础的SQL语句.数据库结构分析.ER图设计等知识: 这里也只是较为大概地将 ...

【tomcat】sessionId学习&lpar;未完待续&rpar;

这里主要研究tomcat中session的管理方式以及sessionId的原理,下文将研究sessionid存到redis中以及基于redis实现session共享. 平时也就是了解session是基 ...

可持久化Treap&lpar;fhq Treap,非旋转式Treap&rpar;学习&lpar;未完待续&rpar;

简介:     Treap,一种表现优异的BST 优势:     其较于AVL.红黑树实现简单,浅显易懂     较于Splay常数小,通常用于树套BST表现远远优于Splay     或许有人想说S ...

jmeter 工具学习 未完待续

about Apache JMeter是Apache组织的开源项目,是 一个纯Java桌面应用,用于压力测试和性能测试,它最初被设计用于 web应用测试,后来逐渐的扩展到其他领域 jmeter可以用于 ...

Go web编程学习笔记——未完待续

1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...

Java开发中的23&plus;2种设计模式学习个人笔记(未完待续)

注:个人笔记 一.设计模式分三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模 ...

CC2530学习路线-基础实验-串口通讯发送字符串&lpar;4 未完待续&rpar;

目录 1. 前期预备知识 1.1 串口通讯电路图 1.2 实验相关寄存器 1.2 常用波特率设置 本章未完待续..... 原来写的文章已经丢失了,只能找到这一小部分,看什么时候有时间再补上. 1. 前 ...

堆学习笔记(未完待续)(洛谷p1090合并果子)

上次讲了堆,别人都说极其简单,我却没学过,今天又听dalao们讲图论,最短路又用堆优化,问懂了没,底下全说懂了,我???,感觉全世界都会了堆,就我不会,于是我决定补一补: ——————来自百度百科 所 ...

随机推荐

jquery 使用方法

jQuery是目前使用最广泛的javascript函数库.据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库.对于网页开发者来 ...

ASP&period;NET 5探险(5):利用AzureAD实现单点登录

题记:在ASP.NET 5中虽然继续可以沿用ASP.NET Identity来做验证授权,不过也可以很容易集成支持标准协议的第三方服务,比如Azure Active Directory. 其实,在AS ...

Unity中制作游戏的快照游戏支持玩家拍快照

Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家“拍快照”,也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介绍:截取矩形区域内游 ...

POJ3254Corn Fields&lpar;状压DP&rpar;

题意: John 有一个豪华的M*N个格子组成的新牧场 他想种美味的玉米 但是有些位置不能种 而且他种地不选择相邻的格子 求所有可能的种地方法 (不种也算一种选择)输入:第一行M和N, 第二行M*N地 ...

mysql创建新用户及新用户不能本地登陆的问题

最近在搭建hadoop集群,主节点上面安装的MySQL数据库,对着方面不熟悉,为hive.Ooize等服务统一使用的root账号和密码,为了安全一些库对于某些用户是不可见的,所以需要针对不同的服务设置 ...

SpringBoot和druid数据源集成Jpa

1.pom文件 <?xml version="1.0" encoding="UTF-8"?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5类主题词汇(2)

社会热点 信息科技 cyber 网络 telecommunication电讯 network网络 website 网站 blog 博客 access接近 进入 profile概况 简介 database数据库 digital数字的 数码的 keyboard键盘 hardware硬件 software软件 application程序 surf冲浪 surf on the internet 网上冲浪 chat …

存储对手机性能的影响

前言几年以前&#xff0c;我被派去厦门上门去分析一个用户的手机卡顿问题&#xff0c;该用户的手机经常莫名无响应&#xff0c;刷机&#xff0c;恢复出厂都没有用&#xff0c;经过一通分析&#xff0c;原来该用户从熟人店里买到了一张盗版的SD卡&#xff08;这年头坑的就是朋友…

python周末吃什么_中午不知道吃什么?用Python爬取美团外卖评论帮你选餐!

分析url的网页源代码&#xff0c;在源代码里有我们想要的评论数据&#xff0c;我们可以用正则(在这里正则还是比较好用的)把我们想要的信息弄下来开启循环&#xff0c;批量抓取保存数据至文本和数据库defparse_one_page(html):pattern2 re.compile( "m_type":"…

5类主题词汇(3)

道德价值 business ethics商业道德 professional ethics个人道德 virtue美德 moral value道德价值 improve public morals改进社会风气 safeguard public morals维护社会风气 injure public morality损害公共道德 fight against piracy抵制盗版 observe/obey the laws守法 be …

进阶攻略|前端最全的框架总结

前端的技术日渐更新&#xff0c;最近得空&#xff0c;花了一上午的时间&#xff0c;将前端常见的UI框架总结了一下&#xff0c;在开发的过程之中&#xff0c;有了这些&#xff0c;不断能够提高自己的工作效率&#xff0c;还可以在工作之余了解更多。希望大家喜欢。1.Layui官方网…

你知道char *s和char s[]的区别吗?

在一个夜深人静的晚上&#xff0c;有一个读者给我发了一个C语言题目。他问我&#xff0c;发哥&#xff0c;帮我看看这个代码有什么问题。我看了代码之后&#xff0c;心里一阵恐慌。我自认为我不是C语言高手。但我确实是一个喜欢解决问题的男人。就是在这样的背景驱使下&#xf…

5类主题词汇(4)

求职就业类 unemployment失业 job-hunting找工作 position职位 job resume就业简历 job interview工作面试 job prospects职业背景application letter求职信 the want ads招聘工作 fill in/out application form填写申请表 accept/take the post接受职位 take over the post接…

python连连看小游戏_利用Python制作一个连连看小游戏,边学边玩!

导语今天我们将制作一个连连看小游戏&#xff0c;让我们愉快地开始吧~开发工具Python版本&#xff1a;3.6.4相关模块&#xff1a;pygame模块&#xff1b;以及一些Python自带的模块环境搭建安装Python并添加到环境变量&#xff0c;pip安装需要的相关模块即可。先睹为快在cmd窗口…

上Google Adsense个人的一点体验

最近我想开通一个Google Adsense帐号&#xff0c;因为以前注册过一个Google帐号&#xff0c;所以我以为两个是可以共通的&#xff0c;因为很久没上Google帐号&#xff0c;我记不太清密码了&#xff0c;所以我先是登录了Google&#xff0c;登上去了&#xff0c;密码没记错。然后…

通俗易懂,嵌入式Linux驱动基础

前言上一篇分享的&#xff1a;《从单片机工程师的角度看嵌入式Linux》中有简单提到Linux的三大类驱动&#xff1a;我们学习编程的时候都会从hello程序开始。同样的&#xff0c;学习Linux驱动我们也从最简单的hello驱动学起。驱动层和应用层 还记得实习那会儿我第一次接触嵌入式…

记,我在深圳买房

今天晚上&#xff0c;有点时间&#xff0c;把这次买房的经历写下来。我并不是想炫耀&#xff0c;也不是想说明什么&#xff0c;只是为了记录自己的生活。这是对自己的一个阶段性总结&#xff0c;也希望自己的意见和想法对读者们有些帮助。再者&#xff0c;凭自己的努力&#xf…

tif 高程_使用ArcGIS提取高程点

地球表面形状的最常见数字化数据便是基于像元的数字高程模型(DEM)&#xff0c;该数据可用作量化地表特征的输入。DEM属于一种连续表面的栅格制图表达&#xff0c;通常参考真实的地球表面&#xff0c;有的时候除了需要DEM还需要高程点&#xff0c;这里讲解一下如何使用ArcGIS从D…

《三毛。。。。》烂漫

&#xff08;初衷&#xff09;三毛&#xff0c;一个家喻户晓的人物&#xff0c;可她毕竟还不是流浪的三毛&#xff0c;她有深爱她的丈夫&#xff0c;父母&#xff0c;堂哥。。。。 &#xff08;概述&#xff09;本书介绍了三毛的人生遭遇&#xff0c;三毛还将自己的人生体验写成…

5类主题词汇(5)

日常应用类 complaint投诉 lodge the complaint投诉 fake products假冒产品 apply for 申请 apologize for 道歉 heartfelt welcome由衷地欢迎 letter of recommendation推荐信 decline a job offer婉拒工作机会 heartiest congratulation最衷心的祝贺 a farewell letter告别信…

你试试用心呼吸

我曾经历过掉水里&#xff0c;两次。第一次&#xff0c;是在水上乐园&#xff0c;不会游泳的我&#xff0c;从高滑梯上头朝下扎到水中。一下子&#xff0c;就感觉呼吸不了&#xff0c;非常惊恐&#xff0c;然后有人&#xff08;救生员&#xff09;揽住了我&#xff0c;我非常惊…

cython python3_30倍!使用Cython加速Python代码

原标题&#xff1a;30倍&#xff01;使用Cython加速Python代码作者&#xff1a;George Seif、Thomas Wolf、Lukas Frei编译&#xff1a;116 | 公众号海外部前言你可能经常会一次又一次地听到关于Python的抱怨&#xff0c;Python跑起来太慢了&#xff01;与许多其他编程语言相比…

Git安装及密钥的生成并上传本地文件到GitHub上

之前用的GitHub&#xff0c;不太熟练&#xff0c;一直在上传的过程中遇到了一些问题&#xff0c;看了网上诸多教程&#xff0c;总觉得很乱&#xff0c;特参考一些资料&#xff0c;总结了一篇完整的操作步骤&#xff0c;从下载安装到上传文件&#xff0c;亲测有效1.下载Git软件&…

100条常用写作谚语(1)(2)(3)(4)

文章目录勤奋 意志与成功学习方法与态度健康与心态品行与操守勤奋 意志与成功 where there is a will&#xff0c;there is a way有志者事竟成 No pains&#xff0c;no gains没有付出没有收获 Constant dropping wears away a stone水滴石穿&#xff0c;绳锯木断 Care and dil…

声明为数组定义为指针,声明为指针定义为数组

导语在这里我们做种强调的是在两个文件中&#xff0c;定义为数组声明为指针和定义为指声明为数组的这辆中情况。那么我们就需要两个源文件test.c和main.c。定义为数组&#xff0c;声明为指针test.cchar arr[] "abcdef";main.c#define _CRT_SECURE_NO_WARNINGS 1 #in…

100条常用写作谚语(5)(6)(7)(8)

文章目录金钱与财富珍惜时光择友与友谊常理与法则金钱与财富 Gold will not buy anything黄金不能买一切 The chief aim of man is not to get money 人的主要目的不是赚钱 The money the miser hoards will do him not good 守财奴积财&#xff0c;对自己毫无好处 What is we…