SR-SRCNN及优化

2024-08-31 11:32
文章标签 优化 sr srcnn

本文主要是介绍SR-SRCNN及优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

                                             SR-SRCNN及优化

1.前言


Super Resolution(SR),这个方向做的事情是给你一张低分辨率的小图(Low Resolution,LR),通过算法将这张LR放大成一张高分辨率的大图(High Resolution,HR)。这个事情乍一听挺简单的,普通的插值算法即可胜任,其实大有玄机,主要的难点在于细节的恢复,如下两张图,第一张图是原图,第二张图是将原图进行3倍下采样后,用Bicubic插值算法[1]进行SR恢复的图像,从图像整体来看,第二张图比第一张图要显得糊一些,如果将蝴蝶的翅膀纹路放大看可以发现,第二张图的细节已经很不清晰,纹路间的边缘已经模糊。这正是SR这个方向所面临的挑战。

SR这个领域在深度学习之前就已经大量优秀的研究工作,如Sparse Code(SC),A+等,各自效果如图所示(1)原始图像(2)SC稀疏编码进行高分辨恢复(3)A*算法进行高分辨率恢复。

2.DL用于SR恢复的鼻祖

说到基于深度学习的SR工作,肯定得提起“开山鼻祖”——SRCNN,SRCNN是第一篇将深度卷积神经网络(CNN)引入SR领域。这篇文章的思想很清晰,算法也很简单,一般大牛的大作都是如此。。。这篇文章认为LR之所以能通过一定的算法升级为HR,主要是他们两者之间存在着一些“共通的特征”,因此,这篇文章将SR过程主要分为三个阶段:
LR 特征提取(Patch extraction and representation),这个阶段主要是对LR进行特征提取,并将其特征表征为一些feature maps;
特征的非线性映射(Non-linear mapping),这个阶段主要是将第一阶段提取的特征映射至HR所需的feature maps;
HR重建(Reconstruction),这个阶段是将第二阶段映射后的特征恢复为HR图像。
又想感慨一句,开山之作往往都是如此简单、清晰的思路,轻松收获一篇ECCV、一篇PAMI。这篇文章将上述的三个阶段很自然地翻译成三个卷积计算工作,轻松搞定:

LR特征提取可表征为“卷积层(c*f1*f1卷积核)+RELU”;
非线性映射可表征为“全连接层+RELU”,而全连接层又可表征为卷积核为1x1的卷积层,因此,本层最终形式为“卷积层(n1*1*1卷积核)+RELU”;
HR重建可直接表征为“卷积层(n2*f3*f3)”。
下面所示的是SRCNN网络框图:

SRCNN的损失函数也很“简单粗暴”,直接计算原图与SR大图之间所有像素点的MSE。至此,SRCNN的所有工作就介绍到这,接下来我们看下SRCNN的效果:

SRCNN非常简洁,不过SRCNN也存在着几个可以改进的点:

从SRCNN的整个网络来看,要求这个网络的参数需要足够“稠密”,才能直接从网络中映射出一张高清的HR图像,这在一定程度对SRCNN的训练要求比较高,另外也减缓了SRCNN的训练速度;
SRCNN特征提取只用了一层卷积层,存在着perceptive field比较小的问题,即提取出来的特征是非常局部的特征,而SR图像需要对纹理细节进行恢复,局部特征难以奏效。

3.优化及创新

在SRCNN之后,又有若干进一步优化的文章出现,如RED(NIPS2016)、CSCN(ICCV 2015)、SRGAN(我们复现之后发现效果并不是特别好)、DRCN(CVPR2016)等。
接下来我想分享的是CVPR2016的一篇很有创新的文章:VDSR(CVPR2016)。这篇文章有几个创新点:

引入更深的网络(VGG16)做SR;
将residual的思想引入SR,减轻了网络的“负担”,又加速了学习速率
构造了一个适用于不同放大尺度的网络,并通过实验验证了该网络的可靠性。
这篇文章将VGG16引入作为SR的网络,如果网络架构同SRCNN,从上述SRCNN第一个可改进点可知,VGG16的权重将会变得非常稠密,从而加大了网络的学习成本,很可能会碰到vanishing/exploding gradients problem,这个问题在SRCNN文章的4.3.3也提到过,在原文中,作者认为网络越深效果越好的这个定律不适用于SR领域。为了解决该问题,这篇文章的作者将redisual的思想引入了网络架构中,VGG不再需要学习如何恢复一张高清的HR图像,而是学习高清图像与LR图像拉伸之后的残差,网络架构如下:

这一点创新做得非常漂亮,由于只需要学习残差,而残差中大部分值都为0,从而大大降低了网络学习的成本,也加快了学习的速率,在这篇文章中,作者也对比了残差目标和非残差目标的学习速率,如下。可以看到残差思想的引入,极大地加速了训练速度,也提高了效果的稳定性,在这篇文章中,作者提到训练一个16层的网络用于SR只需要4个小时,这无疑极大地提升了训练速度。 

                                    残差目标和非残差目标学习速率对比

残差思想的引入,使得深度网络能够应用于SR领域,而随着深度的加深,网络的perceptive field变得越来越宽,使得网络不仅具备局部特征,也能捕捉到更加全局的特征,全局特征的加入更有利于SR纹理细节的恢复
一般的网络结构只能做特定尺度的upscale,如一个网络结构确定为放大尺度为2的网络,那么该网络训练后也就只能用于尺度为2的upscale,而随着网络结构的加深,训练成本相应增加,若网络只能做单一尺度的放大,那么网络的可重用性比较差。在这篇文章中,作者还引入了另一种令人惊讶的网络结构,该网络结构对外暴露多一个尺度参数,该尺度参数可控制图像放大的尺度。这种设计方案极大地提升了网络的可重用性。作者还在这篇文章中对比了单一尺度网络的效果和多尺度网络的效果,如表(10)。可以发现,多尺度网络的效果不仅不降低,反而提升了PSNR值。


最后文章给出了一些与SRCNN的效果对比,如下图。可以看出,VDSR由于更深网络的引入,在纹理细节上表现得更加的清晰。

           VDSR与SRCNN对比(上面为VDSR效果图,下面为SRCNN效果图)

4.参考文献


[1] Bicubic interpolation
[2] http://www.vision.ee.ethz.ch/publications/papers/proceedings/eth_biwi_01165.pdf
[3] http://www.columbia.edu/~jw2966/papers/YWHM10-TIP.pdf
[4] Learning a Deep Convolutional Network for Image Super-Resolution
[5] http://www.ifp.illinois.edu/~jyang29/papers/ICCV15-rnnsr.pdf
[6] https://arxiv.org/pdf/1603.09056.pdf
[7] [1609.04802] Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
[8] [1511.04491] Deeply-Recursive Convolutional Network for Image Super-Resolution
[9] https://arxiv.org/pdf/1511.04587.pdf

【转载】:https://blog.csdn.net/shenziheng1/article/details/72818588 

这篇关于SR-SRCNN及优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123785

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

构建高性能WEB之HTTP首部优化

0x00 前言 在讨论浏览器优化之前,首先我们先分析下从客户端发起一个HTTP请求到用户接收到响应之间,都发生了什么?知己知彼,才能百战不殆。这也是作为一个WEB开发者,为什么一定要深入学习TCP/IP等网络知识。 0x01 到底发生什么了? 当用户发起一个HTTP请求时,首先客户端将与服务端之间建立TCP连接,成功建立连接后,服务端将对请求进行处理,并对客户端做出响应,响应内容一般包括响应

DAY16:什么是慢查询,导致的原因,优化方法 | undo log、redo log、binlog的用处 | MySQL有哪些锁

目录 什么是慢查询,导致的原因,优化方法 undo log、redo log、binlog的用处  MySQL有哪些锁   什么是慢查询,导致的原因,优化方法 数据库查询的执行时间超过指定的超时时间时,就被称为慢查询。 导致的原因: 查询语句比较复杂:查询涉及多个表,包含复杂的连接和子查询,可能导致执行时间较长。查询数据量大:当查询的数据量庞大时,即使查询本身并不复杂,也可能导致

MySQL 数据优化

MySQL 数据优化的指南 MySQL 数据库优化是一个复杂且重要的过程,它直接影响到系统的性能、可靠性和可扩展性。在处理大量数据或高并发请求时,数据库的优化尤为关键。通过合理的数据库设计、索引使用、查询优化和硬件调优,可以大幅提高 MySQL 的运行效率。本文将从几个主要方面详细介绍 MySQL 的优化技巧,帮助你在实际应用中提升数据库性能。 一、数据库设计优化 1. 数据库的规范化与反规

C++编程:ZeroMQ进程间(订阅-发布)通信配置优化

文章目录 0. 概述1. 发布者同步发送(pub)与订阅者异步接收(sub)示例代码可能的副作用: 2. 适度增加缓存和队列示例代码副作用: 3. 动态的IPC通道管理示例代码副作用: 4. 接收消息的超时设置示例代码副作用: 5. 增加I/O线程数量示例代码副作用: 6. 异步消息发送(使用`dontwait`标志)示例代码副作用: 7. 其他可以考虑的优化项7.1 立即发送(ZMQ_IM