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

相关文章

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

MySQL中慢SQL优化方法的完整指南

《MySQL中慢SQL优化方法的完整指南》当数据库响应时间超过500ms时,系统将面临三大灾难链式反应,所以本文将为大家介绍一下MySQL中慢SQL优化的常用方法,有需要的小伙伴可以了解下... 目录一、慢SQL的致命影响二、精准定位问题SQL1. 启用慢查询日志2. 诊断黄金三件套三、六大核心优化方案方案

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

使用国内镜像源优化pip install下载的方法步骤

《使用国内镜像源优化pipinstall下载的方法步骤》在Python开发中,pip是一个不可或缺的工具,用于安装和管理Python包,然而,由于默认的PyPI服务器位于国外,国内用户在安装依赖时可... 目录引言1. 为什么需要国内镜像源?2. 常用的国内镜像源3. 临时使用国内镜像源4. 永久配置国内镜

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Java嵌套for循环优化方案分享

《Java嵌套for循环优化方案分享》介绍了Java中嵌套for循环的优化方法,包括减少循环次数、合并循环、使用更高效的数据结构、并行处理、预处理和缓存、算法优化、尽量减少对象创建以及本地变量优化,通... 目录Java 嵌套 for 循环优化方案1. 减少循环次数2. 合并循环3. 使用更高效的数据结构4

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom